Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
*---------------------------------------------------------------------*
* Programa modelo para ALV
* Academia ABAP/4 - 2005
* Procwork BH
* Marden Lopes Coelho
*---------------------------------------------------------------------*
*---------------------------------------------------------------------*
* Definio de grupos de tipos
*---------------------------------------------------------------------*
* SLIS tipos fundamentais para sada de um relatrio ALV
TYPE-POOLS: slis.
* Para cabealho
TYPE-POOLS: kkblo.
*&---------------------------------------------------------------------*
* Parmetros gerais para as funes do ALV
*&---------------------------------------------------------------------*
* Parmetros gerais
DATA: s_layout
DATA: layout
DATA: l_lay
DATA: l_spg
* Para o cabealho
* Somente para ALV
DATA: header
DATA: it_header
do layout do relatrio
TYPE slis_layout_alv.
TYPE kkblo_layout.
TYPE slis_layout_alv.
TYPE slis_t_sp_group_alv.
(form f_monta_cabecalho)
Grid
TYPE kkblo_listheader.
TYPE kkblo_t_listheader.
DATA:
* Variante de exibio
PARAMETERS p_vari LIKE disvariant-variant.
*---------------------------------------------------------------------*
* Incio processamento
*---------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM f_seleciona_dados.
PERFORM f_monta_cabecalho.
PERFORM f_preenche_fieldcat.
PERFORM f_monta_campos_quebra.
perform f_monta_tabela_final.
PERFORM f_reuse_alv_transfer_data_back.
PERFORM f_imprime_relatorio.
*&---------------------------------------------------------------------*
*&
Form f_seleciona_dados
*&---------------------------------------------------------------------*
FORM f_seleciona_dados.
SELECT * FROM t005 INTO TABLE it_t005_aux.
ENDFORM.
" f_seleciona_dados
*&---------------------------------------------------------------------*
*&
Form f_monta_cabecalho
*&---------------------------------------------------------------------*
FORM f_monta_cabecalho.
* Preenche a tabela interna IT_HEADER com trs linha de cabealho
CLEAR header.
header-typ = 'H'.
header-info = 'Lista header H'.
APPEND header TO it_header.
CLEAR header.
header-typ =
header-key =
header-info =
APPEND header
CLEAR header.
header-typ =
header-key =
header-info =
APPEND header
ENDFORM.
'S'.
'Cabealho'.
'Header S'.
TO it_header.
'A'.
'Outra Linha'.
'Outra linha do cabealho A'.
TO it_header.
" f_monta_cabecalho
*&---------------------------------------------------------------------*
*&
Form f_preenche_fieldcat
*&---------------------------------------------------------------------*
* Preenche o catlogo de campos. Todos os campos que aparecero no
* relatrio devero ser definidos aqui.
FORM f_preenche_fieldcat.
DATA i TYPE i.
i = i + 1.
CLEAR afield.
afield-col_pos
= i.
afield-fieldname
= 'LAND1'.
afield-ref_fieldname = 'LAND1'.
afield-ref_tabname = 'T005'.
afield-key
= 'X'.
APPEND afield TO i_fieldcat.
i = i + 1.
CLEAR afield.
afield-col_pos
= i.
afield-fieldname
= 'LANDK'.
afield-ref_fieldname = 'LANDK'.
afield-ref_tabname = 'T005'.
afield-key
= 'X'.
APPEND afield TO i_fieldcat.
i = i + 1.
CLEAR afield.
afield-col_pos
= i.
afield-fieldname
= 'INTCA'.
afield-ref_fieldname = 'INTCA'.
afield-ref_tabname = 'T005'.
APPEND afield TO i_fieldcat.
i = i + 1.
CLEAR afield.
afield-col_pos
= i.
afield-fieldname
= 'LNPLZ'.
afield-ref_fieldname = 'LNPLZ'.
afield-ref_tabname = 'T005'.
* afield-do_sum
= 'X'.
APPEND afield TO i_fieldcat.
ENDFORM.
" f_preenche_fieldcat
*&---------------------------------------------------------------------*
*&
Form f_monta_campos_quebra
*&---------------------------------------------------------------------*
* Se o relatrio possuir quebras, os campos das quebras devero ser
* definidos aqui.
FORM f_monta_campos_quebra.
DATA i TYPE i.
REFRESH it_sort.
i = i + 1.
CLEAR it_sort.
it_sort-spos
it_sort-fieldname
it_sort-group
it_sort-subtot
=
=
=
=
i.
'LAND1'.
'X'.
'X'.
it_sort-up
APPEND it_sort.
= 'X'.
i = i + 1.
CLEAR it_sort.
it_sort-spos
= i.
it_sort-fieldname = 'LANDK'.
* it_sort-up
= 'X'.
APPEND it_sort.
i = i + 1.
CLEAR it_sort.
it_sort-spos
= i.
it_sort-fieldname = 'INTCA'.
* it_sort-up
= 'X'.
APPEND it_sort.
ENDFORM.
" f_monta_campos_quebra
*&---------------------------------------------------------------------*
*&
Form f_REUSE_ALV_TRANSFER_DATA_BACK
*&---------------------------------------------------------------------*
* Define parmetros gerais do layout do relatrio
FORM f_reuse_alv_transfer_data_back.
* layout-box_fieldname
= 'X'.
layout-coltab_fieldname
= 'COLINFO'.
layout-no_zebra
= ' '.
layout-group_buttons
= ' '.
* layout-totals_only
= 'X'.
* layout-cell_merge
= 'X'.
layout-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_TRANSFER_DATA_BACK'
EXPORTING
it_fieldcat
= i_fieldcat
is_layout
= layout
IMPORTING
et_fieldcat
= l_fcat
es_layout
= l_lay
et_special_groups = l_spg.
ENDFORM.
" f_REUSE_ALV_TRANSFER_DATA_BACK
*&---------------------------------------------------------------------*
*&
Form f_imprime_relatorio
*&---------------------------------------------------------------------*
FORM f_imprime_relatorio.
break-point.
MOVE sy-repid TO v_repid.
MOVE v_repid TO g_variant-report.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program
= v_repid
is_layout
= l_lay
it_fieldcat
= l_fcat
it_special_groups
= l_spg
i_callback_user_command = 'AT_USER_COMMAND'
i_callback_top_of_page
i_background_id
it_sort
i_save
i_default
is_variant
TABLES
t_outtab
EXCEPTIONS
program_error
OTHERS
=
=
=
=
=
=
'F_TOP_OF_PAGE'
'ALV_BACKGROUND'
it_sort[]
g_save
'X'
g_variant
= it_t005
= 1
= 2.
" f_imprime_relatorio
*&---------------------------------------------------------------------*
*&
Form f_monta_tabela_final
*&---------------------------------------------------------------------*
form f_monta_tabela_final.
* Neste form, a tabela que ser exibida montada. Aqui possvel
* trocar a cor das colunas. Neste exemplo, troca-se a cor
* da clula onde o cdigo do pas(LAND1) for BR
LOOP AT it_t005_aux.
CLEAR it_t005.
move-corresponding it_t005_aux to it_t005.
*
IF it_t005_aux-land1 = 'BR'.
colinfo-color-col = 6.
colinfo-fieldname = 'LAND1'.
APPEND colinfo TO it_t005-colinfo.
ENDIF.
APPEND IT_T005.
ENDLOOP.
endform.
" f_monta_tabela_final