3

我有一个CL_GUI_ALV_GRID变量引用的实例mo_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事件,或者我应该做完全不同的事情?

4

2 回答 2

3

我不知道这是否解决了您的问题,但是为了更新 PAI 中的 ALV 内部表,您可以使用以下方法:

DATA lv_entries_are_consisted TYPE abap_bool.
mo_grid->check_changed_data(
  IMPORTING
    e_valid = lv_entries_are_consisted
).
于 2014-10-22T13:17:44.597 回答
1

嗯,这是可能的。

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 事件

于 2013-08-26T09:37:49.180 回答