我有一个由变量mo_alv_grid
引用的CL_GUI_ALV_GRID
实例。
我在这个网格中有一个按钮列,经过一些逻辑,更新表mt_alv_grid
(支持mo_alv_grid
)。
我需要能够在此时触发事件DATA_CHANGED
。
我尝试了很多CL_GUI_ALV_GRID
的方法,比如CHECK_DATA_CHANGED
和REFRESH_TABLE_DISPLAY
甚至CL_GUI_CFW=>FLUSH
和CL_GUI_CFW=>SET_NEW_OK_CODE( 'ENTER' ).
,但这些都不起作用。
是否有触发DATA_CHANGED
事件的方法,或者我应该做的事情完全不同?
我不知道这是否解决了您的问题,但是为了更新PAI中的ALV内部表,您可以使用以下方法:
DATA lv_entries_are_consisted TYPE abap_bool.
mo_grid->check_changed_data(
IMPORTING
e_valid = lv_entries_are_consisted
).
好吧,这是可能的。
1)不通过程序改变内部表的值2)创建一个LVC_T_MODI类型的更改协议,并为所需的行设置新值
然后调用
CALL METHOD lo_grid->change_data_from_inside
EXPORTING
it_style_cells = lt_cells.
其中lo_grid是cl_gui_alv_grid和lt_cells表类型LVC_T_MODI的实例。请注意,当第一次调用ALV网格时,您需要将布局结构(LVC_S_LAYO)的字段VAL_DATA设置为'X',以使此工作。
在此之后,类将自动为您更改内部表并调用DATA_CHANGE事件