O abap é uma fonte rica, contendo ferramentas para trabalhar com manipulação de dados, existe diversa ferramentas, para manipulação, será descritos algumas funcionalidades e suas sintaxes:
Trocando palavras, textos ou frases:
Para exemplificar, iremos fazer a troca de um (.) ponto por uma (,) vírgula, onde pode-se usar o comando TRANSLATE, ficando sua sintaxe:
TRASNLATE VARIAVEL USING ‘. ,’, a troca é feita através da ordem….
Devido o ponto (.), estar antes da vrigula (,) o comando entende que é para fazer a troca do ponto pela vírgula.
O comando translate faz diversos tipos de trocas de textos dentro de um texto, este texto não necessita ser uma variável do tipo c ou string pode ser qualquer tipo de dado, desde que a troca seja feita com valores reais dos tipos. (Exemplo um tipo i somente aceita trocas por valores numericos)
Uma outra opção é o comando replace, que tem como finalidade a mesma do comando translate, sua sintaxe:
TRANSLATE abap TO UPPER CASE. Transforma a palavra abap para MAIUSCULO “ABAP”
REPLACE ‘texto a ser alterado no texto’ IN variável WITH ‘texto que irá substituir’.
Ex.:
data: v_valor type string value ‘50.0000’. replace ‘.’ in v_valor with ‘,’.
Trocando o ponto pela vírgula, observe que está sintaxe somente troca a primeira ocorrência, neste exemplo se tivéssemos mais de uma virgula somente a primeira virgula seria trocada.
Para que todas as ocorrências encontradas no textos seja trocanda é necesario utilizar a seguinte sintaxe do replace:
REPLACE ALL OCCORRENCES OF ‘texto a ser alterado no texto’ IN variável WITH ‘texto que irá substituir’.
DATA: v_string type string value ‘Abap é uma linguagem muito facil’.
DATA: text TYPE STRING.text = ‘abcdefgh’. REPLACE ‘d’ IN text WITH ‘XXXX’.
REPLACE ALL OCCURRENCES OF ‘a’ IN v_string WITH ‘-‘.
Retirando caracteres de um texto.
Para retira zeros (00000), a esquerda pode-se usar os comandos PACK juntamente do comando CONDENSE, ou o comando SHITF.
Sintaxe do comando SHIFT:
DATA: variável type p value ‘0000202030’, vari_zero type c value ‘0’. SHITF variável LEFT DELEATING LEADIND vari_zero.
Onde a variável “vari_zero”, pode ser trocada para qualquer caracter, inclusice o espaço, lembrando que o caractere espaço pode ser trocado pelo comando SPACE.
O comando SHIFT permite retirar os zeros a direita, onde é somente trocar a posição LEFT por RIGHT, com este comando é possível retirar qualquer dado das extremidades.
O camando SHIFT, permite fazer a troca de txto em forma circular,
DATA: ALPHA1(11) TYPE C VALUE ‘ABCDEFGHIJ’, ALPHA2 TYPE STRING.
ALPHA2 = ALPHA1.
DO.
IF SY-INDEX = 12.
EXIT.
ENDIF.
SHIFT ALPHA1 CIRCULAR.
SHIFT ALPHA2 CIRCULAR.
ENDDO.
O comando Pack serve para retira os 0 (zeros) a esquerda de uma variável, porem existe um problema, ele troca os 0s (zeros ou zero), por espaços, isso faz com que uma variável, por exemplo: data: v_esp_zero(10) type c value ‘0000095678’. Caso o comando seja usado nesta variável, ela ficará assim “ 95768”, para resolver este problema existe o comando CONDENSE ou o comando SHIFT que retira todos os espaços de uma variável.
Sintaxe do Pack
PACK variavel_com_zeros TO variavel_sem_zero.
Sintaxe do condense:
CONDENSE variavel_retira_espaço.
Exe.:
data: v_esp_zero(10) type c value ‘0000095678’
v_esp_sem_sero(10) type c.
pack v_esp_zero to v_esp_sem_sero. >> ficando ‘ 95678’
condense v_esp_sem_sero. >> ficando ‘95678’.
Pesquisa em Strings (Textos)
O comando SEARCH , procura determinadas ocorrências dentro de um textos.
Existe diversa sintaxe, vejamos as mais utilizadas:
SEARCH TEXTO FOR ‘PALAVRA/SILABA/FRASE’ AND MARK.
Esta sintaxe retorna a variável de sistema sy-subrc igual a 0 (zero), caso o texto foi encontrado, e no texto transfere para maiúsculo a parte procurada estiver em minúsculo ou transfere para minúsculo caso a parte procurada estiver em maiúsculo.
Exemplo:Data: v_texto type string value ‘Uderson Luis é o autor deste tutorial’.
SEARCH v_texto for ‘fato’ AND MARK.
if sy-subrc = 0.
write: ‘Encontrou’, v_texto.
else.
write: ‘não encontrou’.
endif.
Como a palavra procurada existe no texto será impresso a FRASE: Encontrou UDERSON Luis é o autor deste tutorial
SEARCH TEXTO FOR ‘palavra-abraviada’ ABBREVIATED.
Esta sintaxe retorna a variável de sistema sy-subrc igual a 0 (zero), caso o texto foi encontrado, ela verificará se existe uma palavra que tenha está abraviação.
Data: frase(50) type c value ‘Alaska Texas e California’.
SEARCH FRASE FOR ‘CLFRN’ ABBREVIATED.
if sy-subrc = 0.
write: ‘Encontrou’, v_textoelse.
write: ‘não encontrou’.
endif.
Filed under: Artigos ABAP/4 - Basicos | Leave a comment »