【IT168 技术文章】
1 定义选择屏幕
SELECTION-SCREEN BEGIN OF SCREEN 9999 ."as SUBSCREEN.
PARAMETERS p_werks LIKE ekpo-werks OBLIGATORY.
SELECT-OPTIONS:
s_ebeln FOR ekko-ebeln ,
s_lifnr FOR ekko-lifnr,
s_aedat FOR ekko-aedat ."OBLIGATORY.
SELECTION-SCREEN END OF SCREEN 9999.
2 调用
START-OF-SELECTION.
CALL SELECTION-SCREEN 9999.
CALL SCREEN '100'.
3 从屏幕100返回选择屏幕
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN200'.
gs_variant-report = sy-repid.
"注册事件到alv
IF g_custom_container IS INITIAL.
CREATE OBJECT g_custom_container
EXPORTING container_name = g_container.
IF go_grid IS INITIAL.
CREATE OBJECT go_grid
EXPORTING
i_parent = g_custom_container."不能使用默认容器cl_gui_container=>screen0.,否则不能返回到选择屏幕。
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_f4 FOR go_grid.
CALL METHOD go_grid->register_f4_for_fields
EXPORTING
it_f4 = gt_f4."gt_f4用于保存产生f4事件的字段
SET HANDLER event_receiver->catch_doubleclick FOR go_grid.
IF sy-batch IS INITIAL.
CALL METHOD go_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
ENDIF.
PERFORM load_data_into_grid.
ENDIF.
ENDIF.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE ok_code."注意在屏幕中必须定义ok_code
WHEN 'EXIT' OR 'BACK'.
FREE: g_custom_container, go_grid.
call SELECTION-SCREEN 9999 .
WHEN 'SAVE'.
PERFORM save.
WHEN 'SEL'.
PERFORM all.
WHEN 'CAL'.
PERFORM none.
ENDCASE.
CLEAR ok_code .
ENDMODULE. " USER_COMMAND_0100 INPUT