本文共 2035 字,大约阅读时间需要 6 分钟。
DATA_CHANGED_FINISHED 中使用刷新方法REFRESH_TABLE_DISPLAY 会导致sort 出现强制弹出选择字段的窗口的异常情况. CLASS LCL_EVENTS DEFINITION. METHODS DATA_CHANGED_FINISHED FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID IMPORTING E_MODIFIED ET_GOOD_CELLS SENDER. METHODS HANDLE_DATA_CHANGED FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID IMPORTING ER_DATA_CHANGED. PRIVATE SECTION. DATA G_REFRESH TYPE C. ENDCLASS. " 类实现 CLASS LCL_APPLICATION IMPLEMENTATION. METHOD DATA_CHANGED_FINISHED. PERFORM DATA_CHANGED_FINISHED USING E_MODIFIED ET_GOOD_CELLS SENDER G_REFRESH. ENDMETHOD. METHOD HANDLE_DATA_CHANGED. G_REFRESH = 'X'. PERFORM EVENT_DATA_CHANGED USING ER_DATA_CHANGED ERROR_IN_DATA ME. ENDMETHOD. "data_changed ENDCLASS. "刷新oo alv subroutine: PERFORM REFRESH_TABLE_DISPLAY USING SENDER. FORM REFRESH_TABLE_DISPLAY USING SENDER TYPE REF TO CL_GUI_ALV_GRID. DATA: STBL TYPE LVC_S_STBL. STBL-ROW = ‘X’." 基于行的稳定刷新 STBL-COL = 'X'." 基于列稳定刷新 CALL METHOD SENDER->REFRESH_TABLE_DISPLAY EXPORTING IS_STABLE = STBL I_SOFT_REFRESH = SPACE. ENDFORM. " REFRESH_TABLE_DISPLAY 经过自己研究,可用以下方案解决: event class 中设置 private 变量 1) PRIVATE SECTION. DATA G_REFRESH TYPE C. 2) 激活 DATA_CHANGED 事件. 将全局变量赋值. METHOD HANDLE_DATA_CHANGED. G_REFRESH = ‘X’. ENDMETHOD. "DATA_CHANGED 3) DATA_CHANGED_FINISHED 事件中. 调用增加判断变量 METHOD DATA_CHANGED_FINISHED. PERFORM DATA_CHANGED_FINISHED USING E_MODIFIED ET_GOOD_CELLS SENDER G_REFRESH. ENDMETHOD. "DATA_CHANGED_FINISHED FORM DATA_CHANGED_FINISHED USING E_MODIFIED ET_GOOD_CELLS TYPE LVC_T_MODI SENDER TYPE REF TO CL_GUI_ALV_GRID REFRESH. IF REFRESH = 'X'. PERFORM REFRESH_TABLE_DISPLAY USING SENDER. CLEAR REFRESH . ENDIF. ENDFORM. " DATA_CHANGED_FINISHED 解决思路: 首先,当我们使用标准的排序功能由于是system event 不触发user command 事件 不触发data changed事件,以及不触发data changed finished 事件 其次由于data changed finished 事件中无法获取 system event 的 ucomm ,所以无法直接判断是否刷新. cl_gui_alv_grid中的u_ucomm 是protected 属性,无法直接读取。 最后,如果我们操作内表数据(check box 选取),必然触发data changed 事件,只有触发data changed事件的动作,我们才去刷新OO ALV 内表. 直接使用system event 事件的排序功能, 必然在data changed finished 不走REFRESH_TABLE_DISPLAY ,从而不会弹出sort 窗口. 转载地址:http://qloaf.baihongyu.com/