OOalv 实现带出栏位描述
1.类定义 CLASS lcl_event_handler DEFINITION. PUBLIC SECTION. METHODS: handle_data_changed_finished FOR EVENT data_changed_finished OF cl_gui_alv_grid IMPORTING e_modified et_good_cells, handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid IMPORTING e_object e_interactive. ENDCLASS. "lcl_event_handler DEFINITION DATA gs_toolbar TYPE stb_button. *----------------------------------------------------------------------* * CLASS lcl_event_handler IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_event_handler IMPLEMENTATION. METHOD handle_data_changed_finished. PERFORM f_data_changed_finished USING e_modified et_good_cells. ENDMETHOD. "handle_data_changed_finished METHOD handle_toolbar. ENDMETHOD. ENDCLASS. 2。data_changed_finished 所响应的事件 FORM f_data_changed_finished USING p_modified TYPE char1 pt_good_cells TYPE lvc_t_modi. DATA: w_ih_modi TYPE lvc_s_modi, w_ih_output TYPE typ_output. DATA: w_pernr TYPE zwmt036-pernr, w_zwmt036 TYPE zwmt036, w_zwmt035 TYPE zwmt035, w_zwmt126 TYPE zwmt126, w_t300t TYPE t300t, w_t30at TYPE t30at. CHECK pt_good_cells IS NOT INITIAL. CALL METHOD g_grid_9021->check_changed_data * IMPORTING * e_valid = * CHANGING * c_refresh = 'X' . CLEAR flg_error. LOOP AT pt_good_cells INTO w_ih_modi. CLEAR w_ih_output. READ TABLE g_it_output_show INTO w_ih_output INDEX w_ih_modi-row_id. CASE w_ih_modi-fieldname. WHEN 'PERNR'. IF w_ih_modi-value IS INITIAL. IF w_ih_output-perna IS NOT INITIAL. CLEAR w_ih_output-perna. MODIFY g_it_output_show[] FROM w_ih_output INDEX w_ih_modi-row_id. ENDIF. ELSE. CLEAR: w_pernr,w_zwmt036. SELECT SINGLE * FROM zwmt036 INTO w_zwmt036 WHERE pernr = w_ih_modi-value. IF sy-subrc IS INITIAL. w_ih_output-perna = w_zwmt036-perna. w_ih_output-werks = w_zwmt036-werks. w_ih_output-lgnum = w_zwmt036-lgnum. w_ih_output-kqbsf = w_zwmt036-kqbsf. w_ih_output-kqtxt = w_zwmt036-kqtxt. IF w_ih_output-werks NE p_werks. flg_error = '1'. ENDIF. CLEAR w_t300t. SELECT SINGLE * FROM t300t INTO w_t300t WHERE spras = '1' AND lgnum = w_zwmt036-lgnum. w_ih_output-lnumt = w_t300t-lnumt. MODIFY g_it_output_show[] FROM w_ih_output INDEX w_ih_modi-row_id. ELSE. flg_error = '2'. ENDIF. ENDIF. ENDCASE. ENDLOOP. CALL METHOD g_grid_9021->refresh_table_display * EXPORTING * is_stable = * i_soft_refresh = EXCEPTIONS finished = 1 OTHERS = 2 . IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. 3.注册事件 这一步放在,pbo创建alv的时候。 CREATE OBJECT gcl_event_handler. SET HANDLER gcl_event_handler->handle_data_changed_finished FOR g_grid_9021. CALL METHOD g_grid_9021->register_edit_event EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_modified EXCEPTIONS error = 1 OTHERS = 2. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
本人常年接收SAP运维和远程项目,ECC,S/4HANA,CRM,WDA.
远程人天可谈,终身售后,有活请联系V信:18925782767(问问题免费,欢迎交流!)
!!请关注本人技术分享公众号:SAP翔子(可扫头像二维码)
每天分享新知识,博客文章也会陆续整理并迁移至公众号,与您一起共同学习

浙公网安备 33010602011771号