LOOP at tbl ASSIGNING <linha> CASTING
2014-12-01
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.