"
Apoiado por

Quando a tabela interna não é estruturada

Quando queres seleccionar linhas numa tabela interna normalmente fazes algo assim:


DATA: BEGIN OF itbl,
            campo1 TYPE c,
            campo2 TYPE c,
          END OF itbl.

READ TABLE itbl WITH KEY campo1 = 'X' campo2 = 'Y'.

LOOP AT itbl WHERE campo1 = 'X' and campo2 = 'Y'.
  COISO.
ENDLOOP.

Mas, e se a tabela não for estruturada e quiseres pesquisar na linha como um todo? Bem, nesse caso, fica aqui a dica: usas a palavra especial TABLE_LINE:


DATA: itbl TYPE STANDARD TABLE OF string,
            wa LIKE LINE OF itbl.

READ TABLE itbl WITH KEY table_line = 'X'.

LOOP AT itbl INTO wa WHERE table_line = 'X'.
  COISO.
ENDLOOP.

(Obrigado a Aaron Escobar pela foto.)

O Abapinho saúda-vos.

2 comentários a “Quando a tabela interna não é estruturada”

  1. Custodio Diz:

    Ola Nuno,

    Excelente dica. Aproveito para adicionar que essa dica eh ainda mais valiosa para ler tabela interna cuja linha eh um objeto. Podemos usar o table_line para referir um attributo do objeto:

    CLASS my_class DEFINITION.
    PUBLIC SECTION.
    DATA campo TYPE string.
    ENDCLASS. “my_class DEFINITION

    *———————————————————————-*
    * CLASS my_class IMPLEMENTATION
    *———————————————————————-*
    *
    *———————————————————————-*
    CLASS my_class IMPLEMENTATION.
    ENDCLASS. “my_class IMPLEMENTATION

    DATA lt_objetos TYPE TABLE OF REF TO my_class.

    DATA lo_objeto TYPE REF TO my_class.

    READ TABLE lt_objetos INTO lo_objeto WITH KEY table_line->campo = ‘123’.

    Abracos,
    Custodio

  2. admin Diz:

    Olá Custodio,

    Essa também é uma excelente dica.
    Aprendi e vou tomar nota para eventualmente fazer um post sobre isso.

    Obrigado!
    Nuno

Deixe um comentário


Acerca do Abapinho
O Abapinho é suportado pelo WordPress
Artigos (RSS) e Comentários (RSS).