Sunteți pe pagina 1din 4

report ZTESTE.

TYPE-POOLS: slis, kkblo, icon, sym.


data: t_fieldcatalog TYPE lvc_t_fcat,
w_headerfield TYPE lvc_s_fcat,
t_new_table TYPE REF TO data,
t_new_line TYPE REF TO data,
t_list_top TYPE kkblo_t_listheader,
w_list_header TYPE kkblo_listheader.
FIELD-SYMBOLS: <fs_table> TYPE STANDARD TABLE,
<fs_line> TYPE ANY,
<fs_field> TYPE ANY.
constants: c_top TYPE slis_formname VALUE 'TOP_OF_PAGE'.
data: w_layout TYPE slis_layout_alv,
t_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
start-of-selection.
* Limpando objetos
UNASSIGN: <fs_table>, <fs_line>, <fs_field>.
CLEAR: t_fieldcatalog, t_fieldcatalog[], t_new_table, t_new_line,
w_headerfield.
* Alimentando tabela de campos
w_headerfield-fieldname = 'ICONE'.
w_headerfield-outputlen = 30.
APPEND w_headerfield TO t_fieldcatalog.
CLEAR w_headerfield.
w_headerfield-fieldname = 'CODIGO'.
w_headerfield-outputlen = 18.
APPEND w_headerfield TO t_fieldcatalog.
CLEAR w_headerfield.
w_headerfield-fieldname = 'DESCRICAO'.
w_headerfield-outputlen = 40.
APPEND w_headerfield TO t_fieldcatalog.
CLEAR w_headerfield.
w_headerfield-fieldname = 'QUANTIDADE'.
w_headerfield-outputlen = 17.
w_headerfield-ref_table = 'MARD'.
w_headerfield-ref_field = 'LABST'.
APPEND w_headerfield TO t_fieldcatalog.
CLEAR w_headerfield.
break-point.
* Cria Campos
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = t_fieldcatalog
IMPORTING
ep_table = t_new_table
EXCEPTIONS
generate_subpool_dir_full = 1
OTHERS = 2.
IF sy-subrc IS INITIAL.
* Cria uma field-symbol como tabela interna
ASSIGN t_new_table->* TO <fs_table>.
CREATE DATA t_new_line LIKE LINE OF <fs_table>.
* Cria uma field-symbol como work area
ASSIGN t_new_line->* TO <fs_line>.
* Apendando valores na tabela interna
ASSIGN COMPONENT 'ICONE' OF STRUCTURE <fs_line> TO <fs_field>.
<fs_field> = ICON_COLLAPSE.
ASSIGN COMPONENT 'CODIGO' OF STRUCTURE <fs_line> TO <fs_field>.
<fs_field> = '000000000000000001'.
ASSIGN COMPONENT 'DESCRICAO' OF STRUCTURE <fs_line> TO <fs_field>.
<fs_field> = 'Descrição do código 000000000000000001'.
ASSIGN COMPONENT 'QUANTIDADE' OF STRUCTURE <fs_line> TO <fs_field>.
<fs_field> = '12345.67'.
INSERT <fs_line> INTO TABLE <fs_table>.
ASSIGN COMPONENT 'ICONE' OF STRUCTURE <fs_line> TO <fs_field>.
<fs_field> = ICON_EXPAND.
ASSIGN COMPONENT 'CODIGO' OF STRUCTURE <fs_line> TO <fs_field>.
<fs_field> = '000000000000000002'.
ASSIGN COMPONENT 'DESCRICAO' OF STRUCTURE <fs_line> TO <fs_field>.
<fs_field> = 'Descrição do código 000000000000000002'.
ASSIGN COMPONENT 'QUANTIDADE' OF STRUCTURE <fs_line> TO <fs_field>.
<fs_field> = '76543.21'.
INSERT <fs_line> INTO TABLE <fs_table>.
* Chamada de ALV
PERFORM f_alv.
endif.
end-of-selection.
*&---------------------------------------------------------------------*
*& Form f_alv
*&---------------------------------------------------------------------*
form f_alv.
clear: w_layout, t_fieldcat, t_fieldcat[].
w_layout-coltab_fieldname = space.
w_layout-group_buttons = 'X'.
w_layout-group_change_edit = 'X'.
w_layout-colwidth_optimize = 'X'.
w_layout-zebra = 'X'.
w_layout-no_colhead = space.
t_fieldcat-col_pos = 1.
t_fieldcat-fieldname = 'ICONE'.
t_fieldcat-tabname = 'T_TAB'.
t_fieldcat-seltext_l = 'Ícone'.
t_fieldcat-key = 'X'.
t_fieldcat-icon = 'X'.
t_fieldcat-outputlen = 5.
APPEND t_fieldcat.
CLEAR t_fieldcat.
t_fieldcat-col_pos = 2.
t_fieldcat-fieldname = 'CODIGO'.
t_fieldcat-tabname = 'T_TAB'.
t_fieldcat-seltext_l = 'Código'.
t_fieldcat-key = 'X'.
t_fieldcat-outputlen = 18.
APPEND t_fieldcat.
CLEAR t_fieldcat.
t_fieldcat-col_pos = 3.
t_fieldcat-fieldname = 'DESCRICAO'.
t_fieldcat-tabname = 'T_TAB'.
t_fieldcat-seltext_l = 'Descrição'.
t_fieldcat-outputlen = 40.
APPEND t_fieldcat.
CLEAR t_fieldcat.
t_fieldcat-col_pos = 4.
t_fieldcat-fieldname = 'QUANTIDADE'.
t_fieldcat-tabname = 'T_TAB'.
t_fieldcat-seltext_l = 'Quantidade'.
t_fieldcat-outputlen = 17.
t_fieldcat-do_sum = 'X'.
APPEND t_fieldcat.
CLEAR t_fieldcat.
PERFORM f_chamar_grid_display TABLES <fs_table>.
endform. " f_alv
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
* Definir o Cabeçalho do relatório ALV
*----------------------------------------------------------------------*
FORM TOP_OF_PAGE.
CLEAR: w_list_header, t_list_top, t_list_top[].
* Título
w_list_header-typ = 'H'.
w_list_header-key = ' '.
w_list_header-info = 'Título'.
APPEND w_list_header TO t_list_top.
CLEAR w_list_header.
* Subtítulo
w_list_header-typ = 'S'.
w_list_header-key = 'Subtitulo'.
w_list_header-info = 'Descrição do Subtítulo'.
APPEND w_list_header TO t_list_top.
CLEAR w_list_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_list_top.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form f_chamar_grid_display
*&---------------------------------------------------------------------*
* Função de exibição do relatório ALV
*----------------------------------------------------------------------*
FORM f_chamar_grid_display TABLES t_tab.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = w_layout
i_callback_top_of_page = 'TOP_OF_PAGE'
it_fieldcat = t_fieldcat[]
i_default = 'X'
TABLES
t_outtab = t_tab
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE e298(00) with 'Erro!'.
ENDIF..
ENDFORM. " f_chamar_grid_display

S-ar putea să vă placă și