TOP
"设置fildcat
DEFINE set_fieldfcat.
gs_fieldcat_lvc-fieldname = &1. "字段名
gs_fieldcat_lvc-coltext = &2. "字段描述
gs_fieldcat_lvc-scrtext_l = &2.
gs_fieldcat_lvc-scrtext_m = &2.
gs_fieldcat_lvc-scrtext_s = &2.
gs_fieldcat_lvc-ref_table = &3.
gs_fieldcat_lvc-ref_field = &4.
gs_fieldcat_lvc-edit = &5.
gs_fieldcat_lvc-no_out = &6.
APPEND gs_fieldcat_lvc TO gt_fieldcat_lvc.
CLEAR gs_fieldcat_lvc.
END-OF-DEFINITION.
DATA: gt_fieldcat_lvc TYPE lvc_t_fcat,
gs_fieldcat_lvc TYPE lvc_s_fcat,
gs_layout TYPE lvc_s_layo,
* s_disvariant TYPE disvariant,
gr_grid TYPE REF TO cl_gui_alv_grid,
g_docking TYPE REF TO cl_gui_docking_container.
ALV调用
DATA: lt_tools TYPE TABLE OF sy-ucomm. "用于排除按钮
IF g_docking IS INITIAL.
CREATE OBJECT g_docking
EXPORTING
repid = sy-repid
dynnr = '9001'
side = cl_gui_docking_container=>dock_at_top
* SIDE = 10
extension = 99999
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE s001(00) WITH '屏幕初始化失败'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
CREATE OBJECT gr_grid
EXPORTING
i_parent = g_docking.
*
SET HANDLER lcl_event_receiver=>toolbar FOR gr_grid.
SET HANDLER lcl_event_receiver=>after_user_command FOR gr_grid.
CALL METHOD gr_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CLEAR lt_tools[].
APPEND '&LOCAL&DELETE_ROW' TO lt_tools.
APPEND '&LOCAL©_ROW' TO lt_tools.
APPEND '&LOCAL©_ROW' TO lt_tools.
APPEND '&LOCAL©' TO lt_tools.
APPEND '&LOCAL&APPEND' TO lt_tools.
APPEND '&LOCAL&INSERT_ROW' TO lt_tools.
APPEND '&LOCAL&CUT' TO lt_tools.
APPEND '&LOCAL&PASTE_NEW_ROW' TO lt_tools.
APPEND '&LOCAL&PASTE' TO lt_tools.
APPEND '&LOCAL&UNDO' TO lt_tools.
APPEND '&PRINT' TO lt_tools.
APPEND '&GRAPH ' TO lt_tools.
APPEND '&INFO' TO lt_tools.
CALL METHOD gr_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layout
i_save = 'A'
* is_variant = s_disvariant
it_toolbar_excluding = lt_tools
CHANGING
it_fieldcatalog = gt_fieldcat_lvc
it_outtab = <dt_table>.
CLASS
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object
,
after_user_command FOR EVENT after_user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS. "LCL_EVENT_RECEIVER DEFINITION
*&---------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD toolbar.
PERFORM frm_event_toolbar CHANGING e_object
.
ENDMETHOD.
METHOD after_user_command.
PERFORM frm_ucomm USING e_ucomm .
PERFORM frm_refresh.
ENDMETHOD.
ENDCLASS.
FORM frm_event_toolbar CHANGING e_object TYPE REF TO cl_alv_event_toolbar_set.
DATA: ls_toolbar TYPE stb_button.
IF p_cj = 'X'.
CLEAR ls_toolbar.
MOVE 'REFRESH' TO ls_toolbar-function .
MOVE '刷新' TO ls_toolbar-text .
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE 'SAVE' TO ls_toolbar-function .
MOVE '保存' TO ls_toolbar-text .
APPEND ls_toolbar TO e_object->mt_toolbar..
ENDIF.
ENDFORM.
FORM frm_ucomm USING u1.
CASE u1.
WHEN 'REFRESH'.
PERFORM frm_get_data.
WHEN 'SAVE'.
PERFORM frm_save.
WHEN OTHERS.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_REFRESH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_refresh .
* CALL METHOD lr_grid->set_frontend_layout
* EXPORTING
* is_layout = gs_layout_lvc.
gr_grid->refresh_table_display( is_stable = VALUE lvc_s_stbl( row = 'X'
col = 'X' ) ).
ENDFORM.
*&---------------------------------------------------------------------*