abap--REUSE_ALV_GRID_DISPLAY事件子过程和cl_gui_grid类的事件对应关系

本文详细介绍了ABAP中ALV与CL_GUI_ALV_GRID的事件定义及处理方式,包括事件名称、获取事件的方法及与事件对应的用户定义子程序。此外还提供了不同类型的列表显示方式及其参数说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、SLIS定义的ALV的事件名称
* Events
slis_ev_item_data_expand    type slis_formname value 'ITEM_DATA_EXPAND',
slis_ev_reprep_sel_modify  type slis_formname value 'REPREP_SEL_MODIFY',
slis_ev_caller_exit_at_start  type slis_formname value 'CALLER_EXIT',
slis_ev_user_command        type slis_formname value 'USER_COMMAND',
slis_ev_top_of_page         type slis_formname value 'TOP_OF_PAGE',
slis_ev_data_changed        type slis_formname value 'DATA_CHANGED',
slis_ev_top_of_coverpage    type slis_formname value 'TOP_OF_COVERPAGE',
slis_ev_end_of_coverpage    type slis_formname value 'END_OF_COVERPAGE',
slis_ev_foreign_top_of_page  type slis_formname value 'FOREIGN_TOP_OF_PAGE',
slis_ev_foreign_end_of_page  type slis_formname value 'FOREIGN_END_OF_PAGE',
slis_ev_pf_status_set       type slis_formname value 'PF_STATUS_SET',
slis_ev_list_modify         type slis_formname value 'LIST_MODIFY',
slis_ev_top_of_list         type slis_formname value 'TOP_OF_LIST',
slis_ev_end_of_page         type slis_formname value 'END_OF_PAGE',
slis_ev_end_of_list         type slis_formname value 'END_OF_LIST',
slis_ev_after_line_output   type slis_formname value 'AFTER_LINE_OUTPUT',
slis_ev_before_line_output  type slis_formname value  'BEFORE_LINE_OUTPUT',
slis_ev_subtotal_text       type slis_formname value  'SUBTOTAL_TEXT',
slis_ev_context_menu        type slis_formname value 'CONTEXT_MENU'.

二、和事件相关的函数
2.1 获取所有事件到内表
  data  ct_events type slis_t_event.
  call function 'REUSE_ALV_EVENTS_GET'
    exporting
      i_list_type     = 4
    importing
      et_events       = ct_events
    exceptions
      list_type_wrong = 1
      others          = 2.
注意: i_list_type值说明:
0 = simple list                          REUSE_ALV_LIST_DISPLAY
1 = hierarchcal-sequential list          REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 = simple block list                    REUSE_ALV_BLOCK_LIST_APPEND
3 = hierarchical-sequential block list   REUSE_ALV_BLOCK_LIST_HS_APPEND
4 =simple  grid   REUSE_ALV_GRID_DISPLAY

2.2 获取所有事件名称
REUSE_ALV_EVENT_NAMES_GET

三、CL_GUI_ALV_GRID的事件和 REUSE_ALV_GRID_DISPLAY定义的子过程对应关系

CL_GUI_GRID's EventREUSE_ALV_GRID_DISPLAY函数设置的用户定义子过程
end_of_listcallback_html_end_of_list
callback_end_of_list
print_end_of_listcallback_end_of_list
end_of_pagecallback_end_of_page
top_of_pagecallback_html_top_of_page
callback_top_of_page
print_top_of_pagecallback_top_of_page
user_command callback_user_command
data_changedcallback_data_changed
after_user_commandcallback_user_command(注意:根据函数设置先后触发CL_GUI_GRID的"TOP_OF_PAGE"和"END_OF_LIST"事件)
before_user_commandcallback_user_command
after_refresh无,系统根据选中设置grid的行选中处理
call method gt_grid-grid->set_selected_rows
      exporting
        it_index_rows = lt_rows.
double_clickcallback_user_command
hotspot_click(同double_click)callback_user_command
subtotal_textcallback_subtotal_text
context_menu_requestcallback_context_menu
 
### ABAP REUSE_ALV_GRID_DISPLAY_LVC `DATA_CHANGED` 事件处理 在ABAP中,当使用 `REUSE_ALV_GRID_DISPLAY_LVC` 方法展示数据时,可能会遇到 `DATA_CHANGED` 事件触发不正常的情况。此问题通常发生在用户修改表格中的某些单元格后,系统未能正确识别这些更改并执行相应的逻辑。 为了确保 `DATA_CHANGED` 能够被正确捕获,在调用 `REUSE_ALV_GRID_DISPLAY_LVC` 函数模块之前,需配置特定的网格设置选项[^2]: ```abap DATA: ls_setting TYPE lvc_s_glay. ls_setting-edt_cll_cb = 'X'. ``` 上述代码片段设置了允许编辑功能,使得 ALV 表格内的单元格可以响应用户的输入操作,并能激活后续的数据变更检测机制。 一旦完成了必要的初始化工作,则可以通过定义一个自定义的方法来接收来自 `DATA_CHANGED` 的回调通知。下面是一个简单的例说明如何创建这样一个处理器函数: ```abap METHODS on_data_changed FOR EVENT data_changed OF cl_gui_alv_grid IMPORTING e_modified. ... ENDMETHOD. ``` 在这个方法内部,可以根据实际需求编写业务逻辑以应对不同型的改动情况。例如验证新录入的信息是否合法、更新关联记录或是保存最新的状态到数据库等动作都可以在此处完成。 最后一步是在启动 ALV 显示前注册该监听器对象给对应的实例变量: ```abap SET HANDLER me->on_data_changed FOR go_alv_grid. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' ... ENDMETHOD. ``` 通过这种方式就可以有效地监控管理由终端用户引起的任何变动,从而保障应用程序的一致性可靠性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值