如何手动触发ALV DATA_CHANGE事件



我有一个由变量mo_alv_grid引用的CL_GUI_ALV_GRID实例。

我在这个网格中有一个按钮列,经过一些逻辑,更新表mt_alv_grid(支持mo_alv_grid)。

我需要能够在此时触发事件DATA_CHANGED

我尝试了很多CL_GUI_ALV_GRID的方法,比如CHECK_DATA_CHANGEDREFRESH_TABLE_DISPLAY甚至CL_GUI_CFW=>FLUSHCL_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事件

相关内容

  • 没有找到相关文章

最新更新