Abap 如何手动触发ALV数据变更事件?

Abap 如何手动触发ALV数据变更事件?,abap,alv,Abap,Alv,我有一个由变量mo\u ALV\u GRID引用的CL\u GUI\u ALV\u GRID实例 我在这个网格中有一个按钮列,在经过一些逻辑之后,它会更新表mt\u alv\u grid(backingmo\u alv\u grid) 此时我需要能够触发事件DATA\u CHANGED 我尝试了许多CL\u GUI\u ALV\u GRID的方法,比如CHECK\u DATA\u CHANGED和REFRESH\u TABLE\u DISPLAY 甚至CL\u GUI\u CFW=>FLUSH和

我有一个由变量
mo\u ALV\u GRID
引用的
CL\u GUI\u ALV\u GRID
实例

我在这个网格中有一个按钮列,在经过一些逻辑之后,它会更新表
mt\u alv\u grid
(backing
mo\u alv\u grid

此时我需要能够触发事件
DATA\u CHANGED

我尝试了许多
CL\u GUI\u ALV\u GRID
的方法,比如
CHECK\u DATA\u CHANGED
REFRESH\u TABLE\u DISPLAY
甚至
CL\u GUI\u CFW=>FLUSH
CL\u GUI\u CFW=>SET\u NEW\u OK\u code('ENTER')。
但这些都不起作用

有没有办法触发
数据更改事件,或者我应该以完全不同的方式做事?

嗯,这是可能的

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 grid时,您需要将布局结构(LVC_S_LAYO)的字段VAL_数据设置为“X”,以实现此功能

在此之后,类将自动为您更改内部表并调用数据更改事件

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 grid时,您需要将布局结构(LVC_S_LAYO)的字段VAL_数据设置为“X”,以实现此功能


在此之后,类将自动为您更改内部表并调用数据更改事件

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

DATA lv_entries_are_consisted TYPE abap_bool.
mo_grid->check_changed_data(
  IMPORTING
    e_valid = lv_entries_are_consisted
).

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

DATA lv_entries_are_consisted TYPE abap_bool.
mo_grid->check_changed_data(
  IMPORTING
    e_valid = lv_entries_are_consisted
).

只是想澄清一下-ALV网格中有一个按钮触发ABAP代码,该代码会更改后端内部表中的数据,并希望更新显示?所有这些,但显示会更新,我需要自动触发数据更改事件(之后甚至不点击
ENTER
)如果数据以编程方式更新,则不应调用DATA_CHANGED(更改的数据)。只有当用户更改数据时,才应调用DATA|u CHANGED(更改的数据)。最终,我重新设计了整件事:| thx(无论如何)只是为了澄清-您在ALV网格中有一个按钮,该按钮触发ABAP代码,该代码更改后端内部表中的数据,并希望更新显示?所有这些,但是显示是更新的,我需要自动触发DATA_CHANGED(数据更改)事件(之后甚至不点击[code>ENTER
),如果以编程方式更新数据,则不应调用DATA_CHANGED(数据更改),仅当用户更改数据时才调用。最终,我重新设计了整个事件:|无论如何,thx