*** Com container dinâmico ***
* Definições declaradas no programa principal
*----------------------------------------------------------------
* Definições para o ALV
*----------------------------------------------------------------
DATA: gt_fieldcat TYPE lvc_t_fcat,
wa_fieldcat TYPE lvc_s_fcat,
gt_exc_tools TYPE ui_functions.
DATA: wa_variant TYPE disvariant,
wa_layout TYPE lvc_s_layo.
data: gt_selected TYPE lvc_t_row .
data: wa_selected TYPE lvc_s_row .
INCLUDE ZFIR284_C01. "(*** código completo no final ***)
DATA: lcl_alv_grid TYPE REF TO lcl_alv_grid.
* Definições para o ALV
*----------------------------------------------------------------
DATA: gt_fieldcat TYPE lvc_t_fcat,
wa_fieldcat TYPE lvc_s_fcat,
gt_exc_tools TYPE ui_functions.
DATA: wa_variant TYPE disvariant,
wa_layout TYPE lvc_s_layo.
data: gt_selected TYPE lvc_t_row .
data: wa_selected TYPE lvc_s_row .
INCLUDE ZFIR284_C01. "(*** código completo no final ***)
DATA: lcl_alv_grid TYPE REF TO lcl_alv_grid.
* Criar a tela 9000
* Normalmente no final do processamento chamar a rotina do ALV
perform f_alv_screen.
FORM F_ALV_SCREEN .
PERFORM: z_monta_fieldcat using 'ZTB......', "Estrutura / Tabela
z_monta_layout_tools using '' ''. "Com Layout / Variante
CALL SCREEN 9000.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.
SET PF-STATUS '9000_STATUS'.
SET TITLEBAR '9000'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'CANC' or 'EXIT'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
PERFORM: z_monta_fieldcat using 'ZTB......', "Estrutura / Tabela
z_monta_layout_tools using '' ''. "Com Layout / Variante
CALL SCREEN 9000.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.
SET PF-STATUS '9000_STATUS'.
SET TITLEBAR '9000'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'CANC' or 'EXIT'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form Z_MONTA_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_MONTA_FIELDCAT USING P_STRU.
DATA: vl_tabix TYPE sy-tabix.
* DATA: lw_alv_fieldcat LIKE LINE OF tg_fieldcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = p_stru
i_internal_tabname = 'GT_FINAL'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF NOT sy-subrc IS INITIAL.
RETURN.
ENDIF.
* Campos 'Chaves' - Colunas Fixas
LOOP AT gt_fieldcat INTO wa_fieldcat
WHERE fieldname EQ 'BUKRS'
OR fieldname EQ 'GSBER'
OR fieldname EQ 'AZDAT'
OR fieldname EQ 'AZIDT'
OR fieldname EQ 'HBKID'
OR fieldname EQ 'KUKEY'
OR fieldname EQ 'KTONR'
OR fieldname EQ 'VALUT'
OR fieldname EQ 'AZNUM'.
wa_fieldcat-KEY = 'X'.
MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
ENDLOOP.
* Edit
* LOOP AT gt_fieldcat INTO wa_fieldcat WHERE fieldname EQ 'ZSTATUS'.
* wa_fieldcat-edit = 'X'.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Hotspot
* LOOP AT gt_fieldcat INTO wa_fieldcat
* WHERE fieldname = 'BELNR'
* OR fieldname = 'PNOTA'
* OR fieldname = 'LIFNR'
* OR fieldname = 'DOCID_VIM'
* OR fieldname = 'BELNRF'
* OR fieldname = 'BELNRC'.
* wa_fieldcat-HOTSPOT = 'X'.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Campos escondidos
* LOOP AT gt_fieldcat INTO wa_fieldcat.
* if wa_fieldcat-fieldname = 'PNOTA_GJA' or
* wa_fieldcat-fieldname = 'UPD'.
* wa_fieldcat-no_out = 'X'.
* else.
* wa_fieldcat-no_out = ' '.
* endif.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Descrição de campos
* LOOP AT gt_fieldcat INTO wa_fieldcat.
* CASE wa_fieldcat-fieldname.
* WHEN 'BELNRF'.
* wa_fieldcat-REPTEXT = 'Nº Docto Fatur.'.
* WHEN 'BELNRC'.
* wa_fieldcat-REPTEXT = 'Nº Doc.Contábil'.
* WHEN 'GJAHRF'.
* wa_fieldcat-REPTEXT = 'Exercício'.
* WHEN 'GJAHRC'.
* wa_fieldcat-REPTEXT = 'Exercício'.
* WHEN 'MOTIVO_OPE'.
* wa_fieldcat-REPTEXT = 'Motivo operação'.
* WHEN 'EMAIL_SOLIC'.
* wa_fieldcat-REPTEXT = 'Endereço de e-mail solicitante'.
* ENDCASE.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Z_MONTA_LAYOUT_TOOLS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_MONTA_LAYOUT_TOOLS using p_layout p_varia.
CLEAR: wa_layout, wa_variant.
FREE gt_exc_tools.
APPEND: cl_gui_alv_grid=>mc_fc_loc_delete_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_insert_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_undo TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_append_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_copy TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_copy_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_move_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_paste TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_paste_new_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_cut TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_refresh TO gt_exc_tools.
wa_layout-zebra = 'X'.
wa_layout-no_rowmark = ' '.
wa_layout-sel_mode = 'A'.
wa_layout-cwidth_opt = 'X'.
wa_layout-col_opt = 'X'.
wa_layout-stylefname = 'FIELD_STYLE'.
wa_variant-report = sy-repid.
if p_layout = 'X'.
wa_variant-variant = p_varia.
endif.
ENDFORM.
*& Form Z_MONTA_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_MONTA_FIELDCAT USING P_STRU.
DATA: vl_tabix TYPE sy-tabix.
* DATA: lw_alv_fieldcat LIKE LINE OF tg_fieldcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = p_stru
i_internal_tabname = 'GT_FINAL'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF NOT sy-subrc IS INITIAL.
RETURN.
ENDIF.
* Campos 'Chaves' - Colunas Fixas
LOOP AT gt_fieldcat INTO wa_fieldcat
WHERE fieldname EQ 'BUKRS'
OR fieldname EQ 'GSBER'
OR fieldname EQ 'AZDAT'
OR fieldname EQ 'AZIDT'
OR fieldname EQ 'HBKID'
OR fieldname EQ 'KUKEY'
OR fieldname EQ 'KTONR'
OR fieldname EQ 'VALUT'
OR fieldname EQ 'AZNUM'.
wa_fieldcat-KEY = 'X'.
MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
ENDLOOP.
* Edit
* LOOP AT gt_fieldcat INTO wa_fieldcat WHERE fieldname EQ 'ZSTATUS'.
* wa_fieldcat-edit = 'X'.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Hotspot
* LOOP AT gt_fieldcat INTO wa_fieldcat
* WHERE fieldname = 'BELNR'
* OR fieldname = 'PNOTA'
* OR fieldname = 'LIFNR'
* OR fieldname = 'DOCID_VIM'
* OR fieldname = 'BELNRF'
* OR fieldname = 'BELNRC'.
* wa_fieldcat-HOTSPOT = 'X'.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Campos escondidos
* LOOP AT gt_fieldcat INTO wa_fieldcat.
* if wa_fieldcat-fieldname = 'PNOTA_GJA' or
* wa_fieldcat-fieldname = 'UPD'.
* wa_fieldcat-no_out = 'X'.
* else.
* wa_fieldcat-no_out = ' '.
* endif.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Descrição de campos
* LOOP AT gt_fieldcat INTO wa_fieldcat.
* CASE wa_fieldcat-fieldname.
* WHEN 'BELNRF'.
* wa_fieldcat-REPTEXT = 'Nº Docto Fatur.'.
* WHEN 'BELNRC'.
* wa_fieldcat-REPTEXT = 'Nº Doc.Contábil'.
* WHEN 'GJAHRF'.
* wa_fieldcat-REPTEXT = 'Exercício'.
* WHEN 'GJAHRC'.
* wa_fieldcat-REPTEXT = 'Exercício'.
* WHEN 'MOTIVO_OPE'.
* wa_fieldcat-REPTEXT = 'Motivo operação'.
* WHEN 'EMAIL_SOLIC'.
* wa_fieldcat-REPTEXT = 'Endereço de e-mail solicitante'.
* ENDCASE.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Z_MONTA_LAYOUT_TOOLS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_MONTA_LAYOUT_TOOLS using p_layout p_varia.
CLEAR: wa_layout, wa_variant.
FREE gt_exc_tools.
APPEND: cl_gui_alv_grid=>mc_fc_loc_delete_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_insert_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_undo TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_append_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_copy TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_copy_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_move_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_paste TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_paste_new_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_cut TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_refresh TO gt_exc_tools.
wa_layout-zebra = 'X'.
wa_layout-no_rowmark = ' '.
wa_layout-sel_mode = 'A'.
wa_layout-cwidth_opt = 'X'.
wa_layout-col_opt = 'X'.
wa_layout-stylefname = 'FIELD_STYLE'.
wa_variant-report = sy-repid.
if p_layout = 'X'.
wa_variant-variant = p_varia.
endif.
ENDFORM.
*&---------------------------------------------------------------------*
*& Module MONTA_TELA OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MONTA_TELA OUTPUT.
IF sy-batch IS INITIAL.
IF NOT go_alv IS INITIAL.
CALL METHOD go_alv->free.
CALL METHOD go_container->free.
ENDIF.
* Cria o Container para a tela do ALV
CREATE OBJECT go_docking
EXPORTING
side = cl_gui_docking_container=>dock_at_top
repid = sy-repid
dynnr = '9000'
extension = 9000
EXCEPTIONS
OTHERS = 6.
* Casting para o tipo genério
go_parent = go_docking.
* Cria o objeto do ALV
CREATE OBJECT go_alv
EXPORTING
i_parent = go_parent.
* Habilita os eventos
CREATE OBJECT lcl_alv_grid.
SET HANDLER lcl_alv_grid->handler_data_changed FOR go_alv.
SET HANDLER lcl_alv_grid->handle_toolbar FOR go_alv.
SET HANDLER lcl_alv_grid->handle_user_command FOR go_alv.
SET HANDLER lcl_alv_grid->handle_hotspot_click FOR go_alv.
CALL METHOD go_alv->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
CALL METHOD go_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
CALL METHOD go_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CALL METHOD go_alv->set_table_for_first_display
EXPORTING
is_variant = wa_variant
i_save = 'A'
is_layout = wa_layout
it_toolbar_excluding = gt_exc_tools[]
CHANGING
it_outtab = gt_saida[]
it_fieldcatalog = gt_fieldcat[].
* Background
ELSE.
CREATE OBJECT go_alv
EXPORTING
i_parent = go_DOCKING. "go_parent.
CALL METHOD go_alv->set_table_for_first_display
EXPORTING
is_variant = wa_variant
i_save = 'A'
is_layout = wa_layout
CHANGING
it_outtab = gt_saida[]
it_fieldcatalog = gt_fieldcat[].
ENDIF.
ENDMODULE.
*& Module MONTA_TELA OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE MONTA_TELA OUTPUT.
IF sy-batch IS INITIAL.
IF NOT go_alv IS INITIAL.
CALL METHOD go_alv->free.
CALL METHOD go_container->free.
ENDIF.
* Cria o Container para a tela do ALV
CREATE OBJECT go_docking
EXPORTING
side = cl_gui_docking_container=>dock_at_top
repid = sy-repid
dynnr = '9000'
extension = 9000
EXCEPTIONS
OTHERS = 6.
* Casting para o tipo genério
go_parent = go_docking.
* Cria o objeto do ALV
CREATE OBJECT go_alv
EXPORTING
i_parent = go_parent.
* Habilita os eventos
CREATE OBJECT lcl_alv_grid.
SET HANDLER lcl_alv_grid->handler_data_changed FOR go_alv.
SET HANDLER lcl_alv_grid->handle_toolbar FOR go_alv.
SET HANDLER lcl_alv_grid->handle_user_command FOR go_alv.
SET HANDLER lcl_alv_grid->handle_hotspot_click FOR go_alv.
CALL METHOD go_alv->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
CALL METHOD go_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
CALL METHOD go_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CALL METHOD go_alv->set_table_for_first_display
EXPORTING
is_variant = wa_variant
i_save = 'A'
is_layout = wa_layout
it_toolbar_excluding = gt_exc_tools[]
CHANGING
it_outtab = gt_saida[]
it_fieldcatalog = gt_fieldcat[].
* Background
ELSE.
CREATE OBJECT go_alv
EXPORTING
i_parent = go_DOCKING. "go_parent.
CALL METHOD go_alv->set_table_for_first_display
EXPORTING
is_variant = wa_variant
i_save = 'A'
is_layout = wa_layout
CHANGING
it_outtab = gt_saida[]
it_fieldcatalog = gt_fieldcat[].
ENDIF.
ENDMODULE.
*** Código do include ***
*&---------------------------------------------------------------------*
*& Include ZFIR282_C01
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Objetos & Containers *
*----------------------------------------------------------------------*
DATA: gv_repid TYPE syst-repid,
go_container TYPE REF TO cl_gui_custom_container,
go_docking TYPE REF TO cl_gui_docking_container,
go_parent TYPE REF TO cl_gui_container,
go_splitter TYPE REF TO cl_gui_splitter_container,
go_alv TYPE REF TO cl_gui_alv_grid.
*----------------------------------------------------------------------*
* Classes Locais *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* CLASS lcl_alv_grid DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv_grid DEFINITION.
PUBLIC SECTION.
METHODS:
handler_data_changed FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed,
handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object,
handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,
handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no.
ENDCLASS. "lcl_alv_grid DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_alv_grid IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv_grid IMPLEMENTATION.
METHOD handler_data_changed.
PERFORM z_data_changed CHANGING er_data_changed.
ENDMETHOD. "handler_data_changed
METHOD handle_toolbar.
PERFORM z_toolbar CHANGING e_object.
ENDMETHOD. "handle_toolbar
METHOD handle_user_command.
PERFORM z_user_command USING e_ucomm.
ENDMETHOD. "handle_user_command
METHOD handle_hotspot_click.
PERFORM z_hotspot_click USING es_row_no-row_id
e_column_id-fieldname.
ENDMETHOD. "HANDLE_HOTSPOT_CLICK
ENDCLASS. "lcl_alv_grid IMPLEMENTATION
*&---------------------------------------------------------------------*
*& Form Z_DATA_CHANGED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM z_data_changed CHANGING p_data_changed TYPE REF TO cl_alv_changed_data_protocol.
DATA: vl_erro TYPE c.
DATA: w_saida TYPE ty_saida,
vl_tabix TYPE sy-tabix,
vl_status type c LENGTH 128.
DATA: tl_modi TYPE TABLE OF lvc_s_modi,
sl_modi TYPE lvc_s_modi.
free: tl_modi.
tl_modi[] = p_data_changed->mt_good_cells[].
LOOP AT tl_modi INTO sl_modi.
vl_tabix = sy-tabix.
CASE sl_modi-fieldname.
* WHEN 'ZSTATUS'.
* vl_status = sl_modi-value.
*
* READ TABLE gt_saida INTO wa_saida INDEX sl_modi-row_id.
* IF sy-subrc IS INITIAL.
* wa_saida-zstatus = sl_modi-value.
* wa_saida-upd = 'X'.
* modify gt_saida from wa_saida index sl_modi-row_id.
* ENDIF.
ENDCASE.
ENDLOOP.
ENDFORM. " Z_DATA_CHANGED
*&---------------------------------------------------------------------*
*& Form Z_TOOLBAR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM z_toolbar CHANGING p_object TYPE REF TO cl_alv_event_toolbar_set.
DATA: sl_toolbar TYPE stb_button.
* CLEAR: sl_toolbar.
* MOVE 3 TO sl_toolbar-butn_type.
* APPEND sl_toolbar TO p_object->mt_toolbar.
*
* CLEAR sl_toolbar.
** sl_toolbar-icon = ICON_SAVE_AS_TEMPLATE . "icon_set_state.
* sl_toolbar-icon = ICON_DOCUMENT_MODEL_SPACE . "icon_set_state.
* sl_toolbar-function = 'LIBERAR'.
* sl_toolbar-text = text-t05.
* sl_toolbar-quickinfo = text-t06.
* sl_toolbar-disabled = space.
* APPEND sl_toolbar TO p_object->mt_toolbar.
*
* CLEAR: sl_toolbar.
* MOVE 3 TO sl_toolbar-butn_type.
* APPEND sl_toolbar TO p_object->mt_toolbar.
ENDFORM. " Z_TOOLBAR
*&---------------------------------------------------------------------*
*& Form Z_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM z_user_command USING p_ucomm TYPE sy-ucomm.
* CASE p_ucomm.
** WHEN 'GRAVAR'.
** PERFORM: z_grava_dados.
*
* WHEN 'LIBERAR'.
* PERFORM: f_liberar using p_ucomm.
*
* WHEN ''.
*
* ENDCASE.
** IF p_ucomm NE 'APLICAR'.
** PERFORM:
** f_inicialization,
** f_seleciona_dados,
** f_monta_saida.
** ENDIF.
CALL METHOD go_alv->refresh_table_display.
ENDFORM. " Z_USER_COMMAND
*&---------------------------------------------------------------------*
*& Form Z_HOTSPOT_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ES_ROW_NO_ROW_ID text
* -->P_E_COLUMN_ID_FIELDNAME text
*----------------------------------------------------------------------*
FORM Z_HOTSPOT_CLICK USING P_INDEX
P_FIELD.
READ TABLE gt_saida INTO wa_saida INDEX p_index.
IF NOT sy-subrc IS INITIAL.
RETURN.
ENDIF.
CASE p_field.
WHEN 'BELNR' .
* IF wa_saida-belnr IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'BLN' FIELD wa_saida-belnr.
* SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
* SET PARAMETER ID 'GJR' FIELD wa_saida-gjahr.
* CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
WHEN 'BELNRC'.
* IF wa_saida-belnrc IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'BLN' FIELD wa_saida-belnrc.
* SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
* SET PARAMETER ID 'GJR' FIELD wa_saida-gjahrc.
* CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
WHEN 'BELNRF'.
* IF swa_saida-belnrf IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'RBN' FIELD wa_saida-belnrf.
* SET PARAMETER ID 'GJR' FIELD wa_saida-gjahrf.
* CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
WHEN 'PNOTA'.
* IF wa_saida-pnota IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'BLN' FIELD wa_saida-pnota.
* SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
* SET PARAMETER ID 'GJR' FIELD wa_saida-gjahr.
* CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
WHEN 'DOCID_VIM'.
* IF wa_saida-docid_vim IS INITIAL.
* RETURN.
* ENDIF.
* CALL FUNCTION '/OPT/VIM_DISPLAY_DOCUMENT'
* EXPORTING
* docid = w_saida-docid_vim
* EXCEPTIONS
* invalid_document = 1
* OTHERS = 2.
*
* WHEN 'LIFNR'.
* IF wa_saida-lifnr IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'LIF' FIELD wa_saida-lifnr.
* SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
* CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Z_GRAVA_DADOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_GRAVA_DADOS .
* FREE: t_selected.
*
* CALL METHOD cl_alv_grid->get_selected_rows
* IMPORTING
* et_index_rows = t_selected.
*
* IF t_selected[] IS INITIAL.
** MESSAGE s022(zfi001) DISPLAY LIKE c_e.
** LEAVE LIST-PROCESSING.
* ENDIF.
data: l_cont type i.
LOOP AT gt_saida INTO wa_saida. " where upd = 'X'.
add 1 to l_cont.
exit.
ENDLOOP.
if l_cont is initial.
message s398(00) with 'Não há dados para atualização' '' '' ''.
else.
* LOOP AT gt_saida into wa_saida where upd = 'X'.
*
* clear w_ztb.......
* w_ztb......-BUKRS = wa_saida-BUKRS .
* w_ztb......-GSBER = wa_saida-GSBER .
* w_ztb......-AZDAT = wa_saida-AZDAT .
* w_ztb......-HBKID = wa_saida-HBKID .
* w_ztb......-AZNUM = wa_saida-AZNUM .
* w_ztb......-AZIDT = wa_saida-AZIDT .
* w_ztb......-KTONR = wa_saida-KTONR .
* w_ztb......-PNOTA = wa_saida-PNOTA .
* w_ztb......-ZSTATUS = wa_saida-ZSTATUS.
* w_ztb......-USUARIO = sy-uname.
* w_ztb......-DATA = sy-datum .
* w_ztb......-HORA = sy-uzeit .
* modify ztb------ from w_ztb------ .
*
* ENDLOOP.
endif.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Z_MONTA_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_MONTA_FIELDCAT USING P_STRU.
DATA: vl_tabix TYPE sy-tabix.
* DATA: lw_alv_fieldcat LIKE LINE OF tg_fieldcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = p_stru
i_internal_tabname = 'GT_FINAL'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF NOT sy-subrc IS INITIAL.
RETURN.
ENDIF.
* Campos 'Chaves' - Colunas Fixas
LOOP AT gt_fieldcat INTO wa_fieldcat
WHERE fieldname EQ 'BUKRS'
OR fieldname EQ 'GSBER'
OR fieldname EQ 'AZDAT'
OR fieldname EQ 'AZIDT'
OR fieldname EQ 'HBKID'
OR fieldname EQ 'KUKEY'
OR fieldname EQ 'KTONR'
OR fieldname EQ 'VALUT'
OR fieldname EQ 'AZNUM'.
wa_fieldcat-KEY = 'X'.
MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
ENDLOOP.
* Edit
* LOOP AT gt_fieldcat INTO wa_fieldcat WHERE fieldname EQ 'ZSTATUS'.
* wa_fieldcat-edit = 'X'.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Hotspot
* LOOP AT gt_fieldcat INTO wa_fieldcat
* WHERE fieldname = 'BELNR'
* OR fieldname = 'PNOTA'
* OR fieldname = 'LIFNR'
* OR fieldname = 'DOCID_VIM'
* OR fieldname = 'BELNRF'
* OR fieldname = 'BELNRC'.
* wa_fieldcat-HOTSPOT = 'X'.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Campos escondidos
* LOOP AT gt_fieldcat INTO wa_fieldcat.
* if wa_fieldcat-fieldname = 'PNOTA_GJA' or
* wa_fieldcat-fieldname = 'UPD'.
* wa_fieldcat-no_out = 'X'.
* else.
* wa_fieldcat-no_out = ' '.
* endif.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Descrição de campos
* LOOP AT gt_fieldcat INTO wa_fieldcat.
* CASE wa_fieldcat-fieldname.
* WHEN 'BELNRF'.
* wa_fieldcat-REPTEXT = 'Nº Docto Fatur.'.
* WHEN 'BELNRC'.
* wa_fieldcat-REPTEXT = 'Nº Doc.Contábil'.
* WHEN 'GJAHRF'.
* wa_fieldcat-REPTEXT = 'Exercício'.
* WHEN 'GJAHRC'.
* wa_fieldcat-REPTEXT = 'Exercício'.
* WHEN 'MOTIVO_OPE'.
* wa_fieldcat-REPTEXT = 'Motivo operação'.
* WHEN 'EMAIL_SOLIC'.
* wa_fieldcat-REPTEXT = 'Endereço de e-mail solicitante'.
* ENDCASE.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Z_MONTA_LAYOUT_TOOLS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_MONTA_LAYOUT_TOOLS using p_layout p_varia.
CLEAR: wa_layout, wa_variant.
FREE gt_exc_tools.
APPEND: cl_gui_alv_grid=>mc_fc_loc_delete_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_insert_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_undo TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_append_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_copy TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_copy_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_move_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_paste TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_paste_new_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_cut TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_refresh TO gt_exc_tools.
wa_layout-zebra = 'X'.
wa_layout-no_rowmark = ' '.
wa_layout-sel_mode = 'A'.
wa_layout-cwidth_opt = 'X'.
wa_layout-col_opt = 'X'.
wa_layout-stylefname = 'FIELD_STYLE'.
wa_variant-report = sy-repid.
if p_layout = 'X'.
wa_variant-variant = p_varia.
endif.
ENDFORM.
*& Include ZFIR282_C01
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Objetos & Containers *
*----------------------------------------------------------------------*
DATA: gv_repid TYPE syst-repid,
go_container TYPE REF TO cl_gui_custom_container,
go_docking TYPE REF TO cl_gui_docking_container,
go_parent TYPE REF TO cl_gui_container,
go_splitter TYPE REF TO cl_gui_splitter_container,
go_alv TYPE REF TO cl_gui_alv_grid.
*----------------------------------------------------------------------*
* Classes Locais *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* CLASS lcl_alv_grid DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv_grid DEFINITION.
PUBLIC SECTION.
METHODS:
handler_data_changed FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed,
handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object,
handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,
handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id es_row_no.
ENDCLASS. "lcl_alv_grid DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_alv_grid IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv_grid IMPLEMENTATION.
METHOD handler_data_changed.
PERFORM z_data_changed CHANGING er_data_changed.
ENDMETHOD. "handler_data_changed
METHOD handle_toolbar.
PERFORM z_toolbar CHANGING e_object.
ENDMETHOD. "handle_toolbar
METHOD handle_user_command.
PERFORM z_user_command USING e_ucomm.
ENDMETHOD. "handle_user_command
METHOD handle_hotspot_click.
PERFORM z_hotspot_click USING es_row_no-row_id
e_column_id-fieldname.
ENDMETHOD. "HANDLE_HOTSPOT_CLICK
ENDCLASS. "lcl_alv_grid IMPLEMENTATION
*&---------------------------------------------------------------------*
*& Form Z_DATA_CHANGED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM z_data_changed CHANGING p_data_changed TYPE REF TO cl_alv_changed_data_protocol.
DATA: vl_erro TYPE c.
DATA: w_saida TYPE ty_saida,
vl_tabix TYPE sy-tabix,
vl_status type c LENGTH 128.
DATA: tl_modi TYPE TABLE OF lvc_s_modi,
sl_modi TYPE lvc_s_modi.
free: tl_modi.
tl_modi[] = p_data_changed->mt_good_cells[].
LOOP AT tl_modi INTO sl_modi.
vl_tabix = sy-tabix.
CASE sl_modi-fieldname.
* WHEN 'ZSTATUS'.
* vl_status = sl_modi-value.
*
* READ TABLE gt_saida INTO wa_saida INDEX sl_modi-row_id.
* IF sy-subrc IS INITIAL.
* wa_saida-zstatus = sl_modi-value.
* wa_saida-upd = 'X'.
* modify gt_saida from wa_saida index sl_modi-row_id.
* ENDIF.
ENDCASE.
ENDLOOP.
ENDFORM. " Z_DATA_CHANGED
*&---------------------------------------------------------------------*
*& Form Z_TOOLBAR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM z_toolbar CHANGING p_object TYPE REF TO cl_alv_event_toolbar_set.
DATA: sl_toolbar TYPE stb_button.
* CLEAR: sl_toolbar.
* MOVE 3 TO sl_toolbar-butn_type.
* APPEND sl_toolbar TO p_object->mt_toolbar.
*
* CLEAR sl_toolbar.
** sl_toolbar-icon = ICON_SAVE_AS_TEMPLATE . "icon_set_state.
* sl_toolbar-icon = ICON_DOCUMENT_MODEL_SPACE . "icon_set_state.
* sl_toolbar-function = 'LIBERAR'.
* sl_toolbar-text = text-t05.
* sl_toolbar-quickinfo = text-t06.
* sl_toolbar-disabled = space.
* APPEND sl_toolbar TO p_object->mt_toolbar.
*
* CLEAR: sl_toolbar.
* MOVE 3 TO sl_toolbar-butn_type.
* APPEND sl_toolbar TO p_object->mt_toolbar.
ENDFORM. " Z_TOOLBAR
*&---------------------------------------------------------------------*
*& Form Z_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM z_user_command USING p_ucomm TYPE sy-ucomm.
* CASE p_ucomm.
** WHEN 'GRAVAR'.
** PERFORM: z_grava_dados.
*
* WHEN 'LIBERAR'.
* PERFORM: f_liberar using p_ucomm.
*
* WHEN ''.
*
* ENDCASE.
** IF p_ucomm NE 'APLICAR'.
** PERFORM:
** f_inicialization,
** f_seleciona_dados,
** f_monta_saida.
** ENDIF.
CALL METHOD go_alv->refresh_table_display.
ENDFORM. " Z_USER_COMMAND
*&---------------------------------------------------------------------*
*& Form Z_HOTSPOT_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ES_ROW_NO_ROW_ID text
* -->P_E_COLUMN_ID_FIELDNAME text
*----------------------------------------------------------------------*
FORM Z_HOTSPOT_CLICK USING P_INDEX
P_FIELD.
READ TABLE gt_saida INTO wa_saida INDEX p_index.
IF NOT sy-subrc IS INITIAL.
RETURN.
ENDIF.
CASE p_field.
WHEN 'BELNR' .
* IF wa_saida-belnr IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'BLN' FIELD wa_saida-belnr.
* SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
* SET PARAMETER ID 'GJR' FIELD wa_saida-gjahr.
* CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
WHEN 'BELNRC'.
* IF wa_saida-belnrc IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'BLN' FIELD wa_saida-belnrc.
* SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
* SET PARAMETER ID 'GJR' FIELD wa_saida-gjahrc.
* CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
WHEN 'BELNRF'.
* IF swa_saida-belnrf IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'RBN' FIELD wa_saida-belnrf.
* SET PARAMETER ID 'GJR' FIELD wa_saida-gjahrf.
* CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
WHEN 'PNOTA'.
* IF wa_saida-pnota IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'BLN' FIELD wa_saida-pnota.
* SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
* SET PARAMETER ID 'GJR' FIELD wa_saida-gjahr.
* CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
WHEN 'DOCID_VIM'.
* IF wa_saida-docid_vim IS INITIAL.
* RETURN.
* ENDIF.
* CALL FUNCTION '/OPT/VIM_DISPLAY_DOCUMENT'
* EXPORTING
* docid = w_saida-docid_vim
* EXCEPTIONS
* invalid_document = 1
* OTHERS = 2.
*
* WHEN 'LIFNR'.
* IF wa_saida-lifnr IS INITIAL.
* RETURN.
* ENDIF.
* SET PARAMETER ID 'LIF' FIELD wa_saida-lifnr.
* SET PARAMETER ID 'BUK' FIELD wa_saida-bukrs.
* CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Z_GRAVA_DADOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_GRAVA_DADOS .
* FREE: t_selected.
*
* CALL METHOD cl_alv_grid->get_selected_rows
* IMPORTING
* et_index_rows = t_selected.
*
* IF t_selected[] IS INITIAL.
** MESSAGE s022(zfi001) DISPLAY LIKE c_e.
** LEAVE LIST-PROCESSING.
* ENDIF.
data: l_cont type i.
LOOP AT gt_saida INTO wa_saida. " where upd = 'X'.
add 1 to l_cont.
exit.
ENDLOOP.
if l_cont is initial.
message s398(00) with 'Não há dados para atualização' '' '' ''.
else.
* LOOP AT gt_saida into wa_saida where upd = 'X'.
*
* clear w_ztb.......
* w_ztb......-BUKRS = wa_saida-BUKRS .
* w_ztb......-GSBER = wa_saida-GSBER .
* w_ztb......-AZDAT = wa_saida-AZDAT .
* w_ztb......-HBKID = wa_saida-HBKID .
* w_ztb......-AZNUM = wa_saida-AZNUM .
* w_ztb......-AZIDT = wa_saida-AZIDT .
* w_ztb......-KTONR = wa_saida-KTONR .
* w_ztb......-PNOTA = wa_saida-PNOTA .
* w_ztb......-ZSTATUS = wa_saida-ZSTATUS.
* w_ztb......-USUARIO = sy-uname.
* w_ztb......-DATA = sy-datum .
* w_ztb......-HORA = sy-uzeit .
* modify ztb------ from w_ztb------ .
*
* ENDLOOP.
endif.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Z_MONTA_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_MONTA_FIELDCAT USING P_STRU.
DATA: vl_tabix TYPE sy-tabix.
* DATA: lw_alv_fieldcat LIKE LINE OF tg_fieldcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = p_stru
i_internal_tabname = 'GT_FINAL'
CHANGING
ct_fieldcat = gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF NOT sy-subrc IS INITIAL.
RETURN.
ENDIF.
* Campos 'Chaves' - Colunas Fixas
LOOP AT gt_fieldcat INTO wa_fieldcat
WHERE fieldname EQ 'BUKRS'
OR fieldname EQ 'GSBER'
OR fieldname EQ 'AZDAT'
OR fieldname EQ 'AZIDT'
OR fieldname EQ 'HBKID'
OR fieldname EQ 'KUKEY'
OR fieldname EQ 'KTONR'
OR fieldname EQ 'VALUT'
OR fieldname EQ 'AZNUM'.
wa_fieldcat-KEY = 'X'.
MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
ENDLOOP.
* Edit
* LOOP AT gt_fieldcat INTO wa_fieldcat WHERE fieldname EQ 'ZSTATUS'.
* wa_fieldcat-edit = 'X'.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Hotspot
* LOOP AT gt_fieldcat INTO wa_fieldcat
* WHERE fieldname = 'BELNR'
* OR fieldname = 'PNOTA'
* OR fieldname = 'LIFNR'
* OR fieldname = 'DOCID_VIM'
* OR fieldname = 'BELNRF'
* OR fieldname = 'BELNRC'.
* wa_fieldcat-HOTSPOT = 'X'.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Campos escondidos
* LOOP AT gt_fieldcat INTO wa_fieldcat.
* if wa_fieldcat-fieldname = 'PNOTA_GJA' or
* wa_fieldcat-fieldname = 'UPD'.
* wa_fieldcat-no_out = 'X'.
* else.
* wa_fieldcat-no_out = ' '.
* endif.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
* Descrição de campos
* LOOP AT gt_fieldcat INTO wa_fieldcat.
* CASE wa_fieldcat-fieldname.
* WHEN 'BELNRF'.
* wa_fieldcat-REPTEXT = 'Nº Docto Fatur.'.
* WHEN 'BELNRC'.
* wa_fieldcat-REPTEXT = 'Nº Doc.Contábil'.
* WHEN 'GJAHRF'.
* wa_fieldcat-REPTEXT = 'Exercício'.
* WHEN 'GJAHRC'.
* wa_fieldcat-REPTEXT = 'Exercício'.
* WHEN 'MOTIVO_OPE'.
* wa_fieldcat-REPTEXT = 'Motivo operação'.
* WHEN 'EMAIL_SOLIC'.
* wa_fieldcat-REPTEXT = 'Endereço de e-mail solicitante'.
* ENDCASE.
* MODIFY gt_fieldcat FROM wa_fieldcat INDEX sy-tabix .
* ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form Z_MONTA_LAYOUT_TOOLS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM Z_MONTA_LAYOUT_TOOLS using p_layout p_varia.
CLEAR: wa_layout, wa_variant.
FREE gt_exc_tools.
APPEND: cl_gui_alv_grid=>mc_fc_loc_delete_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_insert_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_undo TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_append_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_copy TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_copy_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_move_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_paste TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_paste_new_row TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_loc_cut TO gt_exc_tools,
cl_gui_alv_grid=>mc_fc_refresh TO gt_exc_tools.
wa_layout-zebra = 'X'.
wa_layout-no_rowmark = ' '.
wa_layout-sel_mode = 'A'.
wa_layout-cwidth_opt = 'X'.
wa_layout-col_opt = 'X'.
wa_layout-stylefname = 'FIELD_STYLE'.
wa_variant-report = sy-repid.
if p_layout = 'X'.
wa_variant-variant = p_varia.
endif.
ENDFORM.