"
Supported by

When an internal table is not structured

When you want to select some lines in an internal table you normally do something like this:


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.

But what if the table is not structured and you want to search on the line as a whole? Well in this case here’s a tip. Use the special word 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.

(Thanks to Aaron Escobar for the photo.)

Greetings from Abapinho.

2 comentários a “When an internal table is not structured”

  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


About Abapinho
Abapinho runs on WordPress
Articles (RSS) e Comments (RSS).