"
Apoiado por

Modificar uma campo em todas as linhas de tabela interna

O que vos vou mostrar não é propriamente uma novidade. Até já foi usado antes no Abapinho. Mas como se continua a ver por aí muita gente a fazer LOOPs a tabelas internas para alterar um campo, achei que valia a pena recordar.

Tens uma tabela com um milhão e duzentas mil linhas e queres que o campo ICON tenha sempre o valor ‘@FM@’.

Em vez de fazeres isto:


LOOP AT lt_data ASSIGNING <data>.
  <data>-icon = '@FM@'.
ENDLOOP.

Experimenta fazer antes isto:


ls_data-icon = '@FM@'.
MODIFY lt_data FROM ls_data TRANSPORTING icon WHERE icon <> 'PATO DONALD'.

Como é óbvio, na condição podes escolher outra personagem qualquer dos Tio Patinhas.

Obrigado Sérgio Serra por sugerires que poderia ser interessante ensinar isto.
Obrigado Andrew Becraft pela foto.

O Abapinho saúda-vos.

Um comentário a “Modificar uma campo em todas as linhas de tabela interna”

  1. Leandro Diz:

    Muito boa essa dica. Uma outra dica boa que poderia dar é do uso do comando CONCATENATE LINES OF pois ainda vejo muitos abaps usando da maneira antiga, criei um exemplo se quiser publicar fique a vontade:

    *&———————————————————————*
    *& Report ZTESTE_GAMBIM_LINES
    *&
    *&———————————————————————*
    *& Programa exemplo do CONCATENATE LINES OF
    *& Autor: Leandro Gambim
    *&———————————————————————*

    REPORT zteste_gambim_lines NO STANDARD PAGE HEADING.

    TYPES: BEGIN OF ty_output,
    field1 TYPE char10,
    field2 TYPE char10,
    field3 TYPE char10,
    END OF ty_output.

    DATA: gt_output_1 TYPE TABLE OF ty_output,
    gt_output_2 TYPE TABLE OF ty_output,
    lw_output_1 TYPE ty_output,
    lv_output_1 TYPE string,
    lv_output_2 TYPE string.

    START-OF-SELECTION.

    ” preenche a primeira tabela
    DO 5 TIMES.
    CLEAR lw_output_1.
    lw_output_1-field1 = ‘- Campo 01’.
    lw_output_1-field2 = ‘- Campo 02’.
    lw_output_1-field3 = ‘- Campo 03′.
    APPEND lw_output_1 TO gt_output_1.
    ENDDO.

    ” equaliza as duas tabelas
    gt_output_2 = gt_output_1.

    ” opção 1, ler a tabela e ir concatenando
    LOOP AT gt_output_1 INTO lw_output_1.
    CONCATENATE lv_output_1 lw_output_1-field1 lw_output_1-field2 lw_output_1-field3
    INTO lv_output_1 SEPARATED BY space.
    ENDLOOP.

    ” opção 2, concatenar diretamente
    CONCATENATE LINES OF gt_output_2 INTO lv_output_2 SEPARATED BY space.

    ” Exibe os dados em tela
    ULINE.
    WRITE: /’Opção 1:’, lv_output_1.
    ULINE.
    WRITE: /’Opção 2:’, lv_output_2.
    ULINE.

Deixe um comentário


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