"
Supported by

Best practices
Thou shalt use FIELD-SYMBOLs instead of working areas

READ TABLE itbl ASSIGNING is always faster than READ TABLE itbl INTO wa.
Besides, when making changes to internal tables, not only it doesn’t require the explicit MODIFY but it also does away with the auxiliary TABIX variable.
The only situation in which a working area is better is when adding new lines to an internal table.
Some people contend that working areas should still be used when no changes are to be made to the data. This is still slower, but visually can be more intuitive.

6 comentários a “Thou shalt use FIELD-SYMBOLs instead of working areas”

  1. RSousa Diz:

    Touché! :)

  2. José Vília Diz:

    Olá Bom dia!

    Também podemos utilizar field symbols para fazer append a tabelas internas:

    data lta_kna1 type standard table of kna1.
    field-symbols: type kna1.

    append initial line to lta_kna1 assigning .
    -kunnr = ‘0123456789’.

    No entanto, se quisermos utilizar uma sorted table, já não é possível. :)

  3. Leandro Gambim Diz:

    Olá a todos. Venho aqui também demonstrar uma maneira de incluir registros novos em tabela usando field-symbol, isso também é possível! Vejam só:

    *&———————————————————————*
    *& Report ZTESTE_GAMBIM
    *&
    *&———————————————————————*
    *&
    *&
    *&———————————————————————*

    REPORT zteste_gambim NO STANDARD PAGE HEADING.

    TYPES: BEGIN OF ty_output,
    field1 TYPE char100,
    END OF ty_output.

    DATA: t_output TYPE TABLE OF ty_output.

    FIELD-SYMBOLS: TYPE ty_output.

    START-OF-SELECTION.

    APPEND INITIAL LINE TO t_output ASSIGNING .
    -field1 = ‘Appendando linhas novas com field-symbol!’.

    LOOP AT t_output ASSIGNING .
    WRITE: / -field1.
    ENDLOOP.

  4. Gilson Souza Diz:

    Qual a vantagem de usar Work area quando queres inserir uma nova linha na Tabela? Não podes Simplesmente usar o INSERT INITIAL LINE INTO i_tab INDEX ( LINES( i_tab ) + 1 ) ASSIGNING . ou o APEND INITIAL LINE TO i_tab ASSIGNING e aposentar de vez as variáveis de Estrutura?

  5. Nuno Godinho Diz:

    Olá José, sim, é verdade. Mas se fizeres a experiência vais descobrir que, por alguma razão que me ultrapassa, o APPEND INITIAL LINE ASSIGNING é mais lento do que o APPEND normal de uma estrutura. Bizarro.

  6. Nuno Godinho Diz:

    Este comentário é para o José e, claro, para todos os outros que entretanto vi terem dado a mesma sugestão. É estranho mas é mais lento. Pena.

Deixe um comentário


About Abapinho
Abapinho runs on WordPress
Articles (RSS) e Comments (RSS).