Segue o código.
1) Criar
uma tabela com exibir os dados na tela
2) Usar
os campos: * Programa Teste
DATA: V_NOME(20) TYPE C,
V_SOBRENOME(20) TYPE C.
3) Usar a tabela
DATA: BEGIN OF I_TAB OCCURS 10,
CONTADOR LIKE SY-TABIX,
NOME(20) TYPE C,
SOBRENOME(20) TYPE C,
SALARIO TYPE P DECIMALS 2,
END OF I_TAB.
4)
Carregar uma
tabela com o campo de contador e imprimir os dados
v_nome = 'Fulano'.
v_sobrenome = 'de Tal'.
i_tab-nome = 'KATIA'.
i_tab-sobrenome = 'ALVES'.
i_tab-salario = 10000.
i_tab-depto = 'treinamento'.
append i_tab.
i_tab-nome = 'ELVISE'.
i_tab-sobrenome = 'BRESCIANI'.
i_tab-salario = 20000.
i_tab-depto = 'informatica'.
append i_tab.
i_tab-nome = 'CRISTIANE'.
i_tab-sobrenome = 'CAETANO VELOZO'.
i_tab-salario = 200000.
i_tab-depto = 'treinamento'.
append i_tab.
i_tab-nome = 'SERGIO'.
i_tab-sobrenome = 'KRÜGER'.
i_tab-salario = 50000.
i_tab-depto = 'treinamento'.
append i_tab.
i_tab-nome = 'ALTAMIR'.
i_tab-sobrenome = 'NUNES JUNIOR'.
i_tab-salario = 100000.
i_tab-depto = 'treinamento'.
append i_tab.
i_tab-nome = 'TARCISIO'.
i_tab-sobrenome = 'MEIRA'.
i_tab-salario = -200.
i_tab-depto = 'treinamento'.
append i_tab.
Efetuar um sort por DEPTO
NOME SOBRENOME.
Fazer um loop e usar os
recursos do comando
AT - usar
AT NEW DEPTO. Sumarizar os valores
AT END OF DEPTO.
AT LAST.
5) Emitir
listagem com os totais
REPORT ZCURSO2 NO STANDARD PAGE HEADING
LINE-SIZE 90
LINE-COUNT
60.
*-----------------------------------------------------------*
* Programa Teste
*-----------------------------------------------------------*
data: v_nome(20) type c,
v_sobrenome(20) type c.
data: begin of i_tab occurs 10,
depto(15) type c,
contador like sy-tabix,
nome(20) type c,
sobrenome(20) type c,
salario type p decimals 2,
end of i_tab.
v_nome = 'Fulano'.
v_sobrenome = 'de Tal'.
i_tab-nome = 'KATIA'.
i_tab-sobrenome = 'ALVES'.
i_tab-salario = 10000.
i_tab-depto = 'treinamento'.
append i_tab.
i_tab-nome = 'ELVISE'.
i_tab-sobrenome = 'BRESCIANI'.
i_tab-salario = 20000.
i_tab-depto = 'informatica'.
append i_tab.
i_tab-nome = 'CRISTIANE'.
i_tab-sobrenome = 'CAETANO VELOZO'.
i_tab-salario = 200000.
i_tab-depto = 'treinamento'.
append i_tab.
i_tab-nome = 'SERGIO'.
i_tab-sobrenome = 'KRÜGER'.
i_tab-salario = 50000.
i_tab-depto = 'treinamento'.
append i_tab.
i_tab-nome = 'ALTAMIR'.
i_tab-sobrenome = 'NUNES JUNIOR'.
i_tab-salario = 100000.
i_tab-depto = 'treinamento'.
append i_tab.
i_tab-nome = 'TARCISIO'.
i_tab-sobrenome = 'MEIRA'.
i_tab-salario = -200.
i_tab-depto = 'treinamento'.
append i_tab.
clear i_tab.
sort i_tab by depto nome sobrenome.
loop at i_tab.
at new depto.
sum.
write: /001 'departamento:',015 i_tab-depto.
skip.
endat.
write: /001 i_tab-depto, 020
i_tab-nome,
035 i_tab-sobrenome, 074
i_tab-salario.
*
uline.
at end of depto.
sum.
write: /064 '-----------------------------',
/064 'total:', 074 i_tab-salario,
/064 '-----------------------------'.
endat.
at last.
sum.
write: /064 '-----------------------------',
/064 'geral:', 074 i_tab-salario,
/064 '-----------------------------'.
endat.
endloop.
top-of-page.
* write: 'programa teste - Curso2',
070 'página:', sy-pagno.
write: text-001, 070 text-002,
sy-pagno.
uline.
Resultado é:
Nenhum comentário:
Postar um comentário