"
Apoiado por

LOOP at tbl ASSIGNING <linha> CASTING

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:  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.

Deixe um comentário


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