DATA: gr_alvgrid TYPE REF TO cl_gui_alv_grid ,"ALV对象 gt_fieldcat TYPE lvc_t_fcat , "ALV字段控制 gs_layout TYPE lvc_s_layo , "ALV布局控制 gs_variant TYPE disvariant, "当前程序 alv_container TYPE scrfname VALUE 'T_COL', "屏幕元素名称,ALV展示数据存放在此容器中 alv_custom_container TYPE REF TO cl_gui_custom_container,ALV容器对象 *定义一个类 CLASS lcl_event_handler DEFINITION. PUBLIC SECTION. METHODS: handle_double_click "方法handle_double_click用于处理cl_gui_alv_grid类中的双击事件double_click FOR EVENT double_click of cl_gui_alv_grid IMPORTING e_row e_column. PRIVATE SECTION. ENDCLASS *方法的实现 CLASS lcl_event_handler IMPLEMENTATION. METHOD handle_double_click. PERFORM handle_double_click USING e_row e_column es_row_no. "定义处理双击事件方法, 如果双机alv某一行时,需要弹出子窗口中的alv的话这边,可以在此方法中获取需要显示的数据,还要类似于CALL SCREEN 0200 STARTING AT 10 5 ENDING AT 100 25.call出子屏幕 ENDMETHOD. "handle_double_click ENDCLASS. DATA: gr_event_handler TYPE REF TO lcl_event_handler. "定义对象引用,用于双击事件 *alv实现 gs_variant-report = sy-repid. IF gr_alvgrid IS INITIAL. CREATE OBJECT gr_alvgrid "创建gr_alvgrid对象 EXPORTING i_parent = cl_gui_container=>screen0. CREATE OBJECT gr_event_handler. 创建gr_event_handler对象 SET HANDLER gr_event_handler->handle_double_click FOR gr_alvgrid. "注册处理双机事件的方法 PERFORM display_alv. "ALV实现 ELSE. call METHOD gr_alvgrid->refresh_table_display. 刷新alv报表 ENDIF. FORM DISPLAY_ALV . "调用ALV的实现方法 CALL METHOD gr_alvgrid->set_table_for_first_display EXPORTING is_variant = gs_variant "当前程序 i_save = 'A' is_layout = gs_layout "ALV布局 CHANGING it_outtab = gt_zc_main[] "内表 it_fieldcatalog = gt_fieldcat "需要输出的字段 EXCEPTIONS invalid_parameter_combination = 1 program_error = 2 too_many_lines = 3 OTHERS = 4. IF sy-subrc <> 0. ENDIF. ENDFORM
相关文章: