Com muita alegria publico um artigo de Nuno Godinho, autor do site Abapinho, escrito a convite do UI5Brasil. Neste post será mostrado uma forma nova de se utilizar o comando MOVE-CORRESPONDING.
por: Nuno Godinho
O Abapinho não tem falado muito sobre o 7.40 porque as suas novidades têm já sido amplamente descritas em vários sites. Tentamos não inventar a roda.
Mas há pequenas pérolas úteis que ainda são pouco conhecidas. Esta é sobre uma delas.
Tens como objectivo preencher esta tabela T_DATA com itens de documentos financeiros:
O Abapinho saúda-vos.
por: Nuno Godinho
O Abapinho não tem falado muito sobre o 7.40 porque as suas novidades têm já sido amplamente descritas em vários sites. Tentamos não inventar a roda.
Mas há pequenas pérolas úteis que ainda são pouco conhecidas. Esta é sobre uma delas.
BSEG-BUKRS
BSEG-BELNR
BSEG-GJAHR
BSEG-BUZEI
BSEG-LIFNR
LFA1-NAME1
Imagina a tabela já está preenchida com dados da BSEG, faltando preencher a coluna NAME1 que tem de ser obtida na LFA1. E que tens já outra tabela interna T_LFA1 preenchida com os dados da LFA1:
LFA1-LIFNR
LFA1-NAME1
Até à 7.40 terias de fazer algo neste género:
LOOP AT t_data ASSIGNING <s_data>.
READ TABLE t_lfa1 ASSIGNING <s_lfa1> WITH KEY lifnr = <s_data>-lifnr.
IF sy-subrc = 0.
<s_data>-name1 = <s_lfa1>-name1.
ENDIF.
ENDLOOP.
Agora olha só esta maravilha na 7.40:
t_data = CORRESPONDING #( t_data FROM t_lfa1 USING lifnr = lifnr ).
Coisa mais linda! Num único comando, a coluna NAME1 da T_DATA fica preenchida a partir das tabela T_LFA1, respeitando a chave LIFNR. E podes adicionar-lhe um MAPPING caso alguns dos campos não sejam iguais nas duas estruturas.
O que até aqui dava um trabalhão porque obrigava a LOOP, READ TABLE, variáveis auxiliares e atribuições manuais, reduz-se agora a uma única operação de uma linha, que ainda por cima é mais legível e fácil de compreender! O Abapinho saúda-vos.
Comentários
Postar um comentário