Manipulando Strings – Find e Replace – Abap

Publicado: 19 de fevereiro de 2014 em Abap

A declaração FIND é usada para encontrar ocorrências de um padrão dentro de uma string. Ela também pode ser usado para localizar o padrão de sequência dentro de uma tabela interna.

A declaração REPLACE substitui uma string por uma outra e possui os mesmos parâmetros da declaração FIND, apenas acrescentando o comando WITH.

Sintaxe:

REPLACE s1 WITH s2 INTO c [LENGTH l].

e

FIND s1 IN s2.

FIND [FIRST OCCURRENCE OF ou ALL OCCURENCES OF] s1 IN s2.

FIND s1 IN s2 [IGNORING CASE ou RESPECTING CASE].

Resultado da operação de localização são armazenados na constante sy-SUBRC:

  • sy-SUBRC definido como 0, se for encontrado.
  • sy-SUBRC definido para 4 se não for encontrado.

Exemplo:

Neste exemplo procuramos a palavra “Amora” dentro de outro campo string, contamos o numero de ocorrências e usamos parâmetros de caso sensitivo e insensitivo.

*&---------------------------------------------------------------------*
*& Report  ZENCONTRAR
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Encontrar Strings
*&---------------------------------------------------------------------*

REPORT  ZENCONTRAR.

DATA : desc   TYPE c LENGTH 30,
       campo1 TYPE c LENGTH 50,
       campo2 TYPE c LENGTH 50,
       campo3 TYPE c LENGTH 100,
       x      TYPE i.

campo1 = 'Amora'.
campo2 = 'amora'.
campo3 = 'Você deve encontrar a string Amora dentro deste campo Amora, Amora, Amora'.

WRITE : / campo3.

desc = 'Valor default da constante:'.
WRITE : / 'A Constante sy-subrc determina o resultado do comando Find encontrou=0 não encontrou =4',
        / desc, 'sy-subrc = ', sy-subrc.

desc = 'Primeira ocorrencia '.
FIND FIRST OCCURRENCE OF campo1 IN campo3 MATCH COUNT x.
PERFORM resultadoFind USING campo1 x.

desc = 'Todas as ocorrencias'.
FIND ALL OCCURRENCES OF  campo1 IN campo3 MATCH COUNT x.
PERFORM resultadoFind USING campo1 x.

desc = 'Ignora Case'.
FIND campo2 IN campo3 IGNORING CASE MATCH COUNT x.
PERFORM resultadoFind USING campo2 x.

desc = 'Respeita Case'.
FIND campo2 IN campo3 RESPECTING CASE MATCH COUNT x.
PERFORM resultadoFind USING campo2 x.

REPLACE ALL OCCURRENCES OF campo1 IN campo3 With 'Banana'.
WRITE : / 'O campo3 foi modificado para:',
        / campo3.

FORM resultadoFind USING VALUE(X1) VALUE(X2).
   IF sy-subrc EQ 0.
      WRITE : / sy-subrc, X1, desc, ' encontrou', X2, 'strings'.
   ELSE.
      WRITE : / sy-subrc, X1, desc, ' não encontrou', X2, 'strings'.
   ENDIF.
ENDFORM.
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s