"
Apoiado por

INSERT e APPEND com ASSIGNING FIELD-SYMBOL

A verdade nua e crua, custe o que custar, é que as estruturas estão fora de moda. Agora o que está em voga é FIELD-SYMBOLS.

Quando fazes um LOOP a uma tabela interna, claro que também usas ASSIGNING FIELD-SYMBOL em vez de INTO estrutura, não é?

Mas o que me lixava era o APPEND e o INSERT. Ainda não sabia como evitar usar uma estrutura para adicionar registos.

E até há uns dias ainda fazia assim:


DATA: T_ABC TYPE STANDARD TABLE OF ZABC,
      W_ABC LIKE LINE OF T_ABC.

W_ABC-XYZ = 'Olá'.
APPEND W_ABC TO T_ABC. 

O que é uma pena porque, lá está, usar estruturas… enfim… é como ainda ter o Windows 7 quando o Windows 8 já saiu há mais de uma semana. Ou como ainda ouvir Madonna agora que já há Lady Gaga. Ou mesmo como ainda ouvir Lady Gaga agora que já há Die Antwoord.

Mas tudo mudou quando recentemente o Sérgio Fraga me mostrou que afinal sempre dá para usar FIELD-SYMBOLS com INSERT e APPEND:


DATA: T_ABC TYPE STANDARD TABLE OF ZABC.
FIELD-SYMBOLS: <ABC> LIKE LINE OF T_ABC.

INSERT INITIAL LINE INTO TABLE T_ABC ASSIGNING <ABC>.
<ABC>-XYZ = 'Olá'.

Obrigado Sérgio Fraga porque isto é tão bom, tão bom, que apetece encontrar já uma tabela a necessitar de que lhe insiram registos para ir a correr usar isto.

Obrigado mscaprikell pela foto.

O Abapinho saúda-vos.

6 comentários a “INSERT e APPEND com ASSIGNING FIELD-SYMBOL”

  1. RSousa Diz:

    Excelente dica! Esta também não conhecia e de facto é muito bom!

    Mereces um like só pelo Die Antwoord! (demasiado alternativo para ser considerado o que seja)

  2. Fawcs Diz:

    fiz um teste aqui(que pode estar errado), dando loop numa tabela e alimentando outra, um dava append e o outro utilizava esse segundo método usando field-symbol. Incrivelmente o teste se mostrou mais rápido usando append do que o field-symbol!

  3. Nuno Godinho Diz:

    Ui a sério? Podes meter o código online no gist (https://gist.github.com/) ou algo do género para outros poderem testar?

  4. Fawcs Diz:

    Segue: https://gist.github.com/4136775

    verifiquei uma diferença se o código for feito corretamente no primeiro loop, colocando um clear na work area no começo do loop os dois tempos ficam relativamente semelhantes.

    posso elaborar mais em cima do código(obter média e desvio padrão), mas isso já da pra começar a discussao=P

  5. GSouza Diz:

    E Então senhores, alguém (Além do nosso Amigo Fawcs) de fato testou essa questão da performance? Se sim, podem compatilhar os resultados?

    Abs.

  6. Nuno Godinho Diz:

    Olá, há vontade, mas estou há um mês com uma tendinite no ombro e como tal tenho reduzido ao mínimo indispensável a minha interacção com teclados. Hei-de, quando ficar melhor.

Deixe um comentário


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