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

READ TABLE itbl ASSIGNING
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.
24 de Julho de 2014 às 11:06
Touché! :)
31 de Julho de 2014 às 13:32
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. :)
4 de Agosto de 2014 às 12:00
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.
5 de Agosto de 2014 às 18:43
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?
8 de Agosto de 2014 às 3:41
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.
8 de Agosto de 2014 às 3:44
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.