![](/img/trans.png)
[英]data_change using cl_gui_alv_grid - not reacting to Enter key
[英]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_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 事件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.