Você está na página 1de 6

Manipulao de Textos

STRLEN
Retorna o tamanho de um texto. Obs: Se usar cdigo no Unicode de dois bytes, o
caracter que usa dois bytes contado duas vezes.
Exemplo:
DATA: v_texto(40) TYPE c,
v_numero TYPE i.
v_texto = 'Abap Recife'.
v_numero = STRLEN( v_texto ).
WRITE v_numero.
"Sada: 11

NUMOFCHAR
Retorna o tamanho de um texto. Obs: Se usar cdigo no Unicode de dois bytes, o
caracter que usa dois bytes s contado uma vez.
Exemplo
DATA: v_texto TYPE STRING,
v_numero TYPE i.
v_texto = 'Ol! sou abap recife'.
v_numero = NUMOFCHAR( v_texto ).
WRITE v_numero.
"Sada: 20

CONCATENATE
Retorna dois ou mais textos concatenados em uma nica varivel.
Exemplo:
DATA: v_texto1 TYPE char10 VALUE 'Isto',
v_texto2 TYPE string VALUE 'concatenao',
v_saida TYPE string.
CONCATENATE v_texto1 '' v_texto2 INTO v_saida SEPARATED BY SPACE.
WRITE v_saida.
"Sada: Isto concatenao

O comando SEPARATED BY indica que todos os textos unidos podem ser separados por um
delimitador, neste caso foi um espao vazio (SPACE).
O comando RESPECTING BLANKS mantm o tamanho do elemento texto envolvido na concatenao.
Exemplo:
DATA: N(3) TYPE N VALUE 7,
C(10) TYPE C VALUE 'ABAP',
S TYPE STRING VALUE 'Recife'.
CONCATENATE C S N INTO S RESPECTING BLANKS.
WRITE S.
* Sada: ABAP Recife007

REPLACE
Realiza substituies em um texto.
Exemplo:
DATA: TEXT(40) TYPE C VALUE 'Gol do brasil gol de placa'.
REPLACE ALL OCCURRENCES OF 'gol' IN TEXT WITH 'golao' IGNORING CASE.
WRITE: / TEXT.
* Sada: golao do brasil golao de placa
O comando IGNORING CASE faz com que seja ignorado o fato de possuir letras maisculas ou
minsculas.
SHIFT
Desloca caracteres em um texto. Acompanhe o exemplo a seguir:
Exemplo:
DATA: v_texto TYPE string VALUE 'Copa do Mundo no Brasil',
v_textoaux TYPE string.
v_textoaux = v_texto.
SHIFT v_textoaux. "Apenas desloca uma posio esquerda.
WRITE: / v_textoaux. "Sada: opa do Mundo no Brasil
v_textoaux = v_texto.
SHIFT v_textoaux BY 5 PLACES LEFT. "Desloca 5 posies a esquerda
WRITE: / v_textoaux. "Sada: do Mundo no Brasil
v_textoaux = v_texto.
SHIFT v_textoaux BY 5 PLACES RIGHT. "Desloca 5 posies a direita
WRITE: / v_textoaux. "Sada: Copa do Mundo no Brasil
v_textoaux = v_texto.
SHIFT v_textoaux BY 5 PLACES CIRCULAR. "Desloca 5 posies de forma circular esq/dir
WRITE: / v_textoaux. "Sada: do Mundo no BrasilCopa
Outros usos do SHIFT
DATA: v_texto(30) TYPE C VALUE ' 99.999,00',
v_texto_aux LIKE v_texto.
WRITE: / v_texto.
v_texto_aux = v_texto.
* Desloca para a esquerda, removendo o espao em branco no incio
SHIFT v_texto_aux LEFT DELETING LEADING SPACE IN CHARACTER MODE.
WRITE: / v_texto_aux.
v_texto_aux = v_texto.
* Desloca para a direita, removendo o espao em branco no fim
SHIFT v_texto_aux RIGHT DELETING TRAILING SPACE IN CHARACTER MODE.
WRITE: / v_texto_aux.
* Desloca para a direita, removendo ',00' do fim do texto
SHIFT v_texto_aux RIGHT DELETING TRAILING ',00'.
WRITE: / v_texto_aux.
* Sada
*
* 99.999,00
*99.999,00
* 99.999,00
* 99.999

FIND
Retorna a posio de um subtexto dentro de um texto.
Exemplo
DATA: v_texto(40) TYPE c VALUE 'O ABAP Recife ABAP na sua vida',
v_resultado TYPE MATCH_RESULT.
FIND FIRST OCCURRENCE OF 'abap' IN v_texto IGNORING CASE RESULTS v_resultado.
write: v_resultado-offset.
* Sada: 2
* Esta a posio inicial em v_texto de 'abap'

TRANSLATE
Baseada em uma cadeia de caracteres esta funo altera caracteres em um texto. Por
exemplo se tivermos a cadeia de caracteres 'ae', onde houver '' ser substitudo por
'a' e onde houver '' ser substitudo por 'e'.
Exemplo
DATA v_texto TYPE string VALUE 'ABCDE'.
TRANSLATE v_texto USING 'AaBeCiDoEu'.
WRITE v_texto.
"Sada: aeiou

clear: v_texto.
v_texto = 'S Tm Carres'.
skip.
TRANSLATE v_texto USING 'oeo'.
WRITE v_texto.
"Sada: So Tem Carroes
CONDENSE
Remove espaos em branco do incio e fim de um texto.
Exemplo
DATA v_texto(30) TYPE C VALUE ' Abap Recife '.
CONDENSE v_texto.
WRITE v_texto.
"Sada: Abap Recife

CONDENSE v_texto NO-GAPS.
WRITE: / v_texto."Sada: AbapRecife
SPLIT
Separa um texto em partes individuais atravs de um delimitador.
Exemplo
DATA: v_texto(10) TYPE C VALUE '11.12.2013',
v_parte1(10) TYPE C,
v_parte2(10) TYPE C,
v_parte3(10) TYPE C.

SPLIT v_texto AT '.' INTO v_parte1 v_parte2 v_parte3.
WRITE: v_parte1,
/ v_parte2,
/ v_parte3.

* Sada:
*
* 11
* 12
* 2013


WRITE TO
A instruo WRITE alm de imprimir sadas de tela, permite a atribuio com formatao de
textos.
Exemplo
DATA: v_texto1 TYPE P VALUE '66056.3-',
v_texto2(15) TYPE C,
v_texto3(15) TYPE C.
WRITE v_texto1.
WRITE v_texto1 TO v_texto2 NO-GAP NO-GROUPING.
WRITE: / v_texto2.
WRITE v_texto1 TO v_texto2 DECIMALS 5 LEFT-JUSTIFIED NO-SIGN.
WRITE: / v_texto2.
WRITE v_texto2 TO v_texto3 RIGHT-JUSTIFIED.
WRITE: / v_texto3.

* Sada
*
* 66.056-
* 66056-
* 66.056,00000
* 66.056,00000


O comando USING EDIT MASK permite que sejam aplicadas mscaras a um texto, como:
telefone, cpf, cnpj, data, hora, entre outros.

Exemplo


DATA: l_dt(10) TYPE c,
l_hr(5) TYPE c,
l_cpf(14) TYPE c.
WRITE sy-datum USING EDIT MASK '__/__/____' TO l_dt.
WRITE sy-uzeit USING EDIT MASK '__:__' TO l_hr.
WRITE '86463258491' USING EDIT MASK '___.___.___-__' TO l_cpf.
WRITE: l_dt,
/ l_hr,
/ l_cpf.
* Sada:
*
* 02/04/2013
* 10:25
* 864.632.584-91


Overlay
Sobrepe caracteres em um texto a partir de outro texto.
Exemplo
DATA: v_texto1(60) TYPE C VALUE 'Abap para Abapeiros',
v_texto2 TYPE STRING VALUE 'Abap_para_Abapeiros',
v_texto3(6) TYPE C VALUE 'A B C ',
v_texto4(6) TYPE C VALUE '1_B_3 ',
v_texto5(2) TYPE C VALUE 'AB'.


OVERLAY v_texto1 WITH v_texto2.
WRITE: / v_texto1.

OVERLAY v_texto3 WITH v_texto4 ONLY v_texto5.
WRITE: / v_texto3.

* Sada:
*
* Abap_para_Abapeiros
* 1 B C

Obs: Se no for passada a instruo ONLY, apenas sobrepem espaos vazios, se no os
texto colocados aps o ONLY.

Você também pode gostar