Patrocinado por
Patrocinado por Inetum

LOOP at tbl ASSIGNING <linha> CASTING

images/thumbnail.jpg - Thumbnail

Sabias que podes fazer LOOP de uma tabela interna com uma estrutura A para dentro de uma estrutura do tipo B?

Imagina que tens os seguintes tipos:

TYPES: BEGIN OF ty_s_linha1,
               kunnr TYPE kunnr,
               name1 TYPE name1,
          END OF ty_s_linha1,

          BEGIN of ty_s_linha2,
               kunnr TYPE kunnr,
          END OF ty_s_linha2.
 

Tens uma tabela com registos do tipo LINHA1 e queres passar cada registo para uma estrutura tipo LINHA2.

Normalmente terias de converter manualmente a LINHA1 para a LINHA2:

    DATA: t_linha1 TYPE STANDARD TABLE OF ty_s_linha1,
              s_linha2 TYPE ty_s_linha2.

    FIELD-SYMBOLS: <s_linha1> TYPE ty_s_linha2.

   LOOP AT t_linha1 ASSIGNING <s_linha1>.
     MOVE-CORRESPONDING <s_linha1> TO s_linha2.
     faz_algo( s_linha2 ).
  ENDLOOP.

Mas basta a palavrinha CASTING para a coisa ficar mais simples:

    DATA: t_linha1 TYPE STANDARD TABLE OF ty_s_linha1.
    FIELD-SYMBOLS: <s_linha2> TYPE ty_s_linha2.

   LOOP AT t_linha1 ASSIGNING <s_linha2> CASTING.
    faz_algo( s_linha2 ).
  ENDLOOP.

Nota: não funciona com o INTO, só com o ASSIGNING.

Obrigado Nuno Morais pela dica.

Obrigado Eelco pela foto.