繁体   English   中英

如何手动触发 ALV DATA_CHANGE 事件?

[英]How to trigger the ALV DATA_CHANGE event manually?

我有一个实例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事件,还是我应该完全不同地做事?

我不知道这是否能解决您的问题,但为了更新 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 事件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM