"
Apoiado por

Boas prácticas
Usarás FIELD-SYMBOLs em vez de variáveis de estrutura

READ TABLE itbl ASSIGNING é sempre mais rápido que READ TABLE itbl INTO wa.
Além disso, quando precisares de alterar dados em registos de uma tabela interna, assim não precisas de usar o comando MODIFY nem da variável auxiliar que às vezes usas para guardar o SY-TABIX.
A única situação em que uma variável de estrutura é aconselhada é quando queres adicionar linhas novas a uma tabela interna.
Algumas pessoas defendem que as variáveis de estrutura devem ser usadas sempre que não se quiser alterar os dados da tabela interna. Isto é mais lento, mas como convenção pode ser mais intuitivo.

6 comentários a “Usarás FIELD-SYMBOLs em vez de variáveis de estrutura”

  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


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