1. 定义和注册事件接受器类
*----------------------------------------------------------------------* * CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED *----------------------------------------------------------------------* * LCL_EVENT_RECEIVER *----------------------------------------------------------------------* CLASS lcl_event_receiver DEFINITION DEFERRED. DATA gv_flg TYPE char01. *----------------------------------------------------------------------* * CLASS LCL_EVENT_RECEIVER DEFINITION *----------------------------------------------------------------------* * lcl_event_receiver的类定义: *----------------------------------------------------------------------* CLASS lcl_event_receiver DEFINITION. PUBLIC SECTION. METHODS: handle_modify FOR EVENT data_changed_finished OF cl_gui_alv_grid IMPORTING e_modified et_good_cells. METHODS: handle_f4 FOR EVENT onf4 OF cl_gui_alv_grid IMPORTING e_fieldname es_row_no er_event_data et_bad_cells. ENDCLASS. "LCL_EVENT_RECEIVER DEFINITION *----------------------------------------------------------------------* * CLASS LCL_EVENT_RECEIVER IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_event_receiver IMPLEMENTATION. METHOD handle_modify. DATA: lv_enter TYPE REF TO cl_gui_event, lv_eventid TYPE i. * 获取当前事件 lv_enter = tem_grid->cur_event. * 实例化成功的时候 IF lv_enter IS NOT INITIAL. lv_eventid = lv_enter->eventid. ENDIF. * 只有在[回车]事件的时候,再进行检查(19:代表回车事件) IF lv_eventid = 19 AND sy-ucomm = ''. IF p_mmvds = 'X'. * 设置供应商描述字段和物料描述字段 PERFORM set_name1_maktx. * 设置后,alv稳定刷新 PERFORM refresh_table_alv. * 添加行项目检查(多频次包装基础表) PERFORM check_line_mmvds. ELSEIF p_detail = 'X'. * 添加行项目检查(窗口时间表) PERFORM check_line_dtdetail. ELSEIF p_vds = 'X'. * 设置供应商描述字段(供应商供货信息基础表) PERFORM set_name1_vds. * 设置后,alv稳定刷新 PERFORM refresh_table_alv. * 添加行项目检查(供应商供货信息基础表) PERFORM check_line_vds. ENDIF. ENDIF. * 设置后,al