01 功能说明
本系列将通过模拟用户与开发者之间的对话场景,来逐步演示SALV的使用。在本篇中,我们将延续前文内容,解决用户最新提出的需求,并同时介绍 SALV部分事件的触发时机 ,为后续新增功能的实现提供必要的知识储备。让我们一起来探索吧。
赶紧动手试一试,以便更好地掌握这些新的知识点。
02 功能效果
第12天 用户说:选择模式
现在每次只能复制单行数据,我想选择多行进行复制。
IF p_day12 EQ 'X'.
DATA lo_selections TYPE REF TO cl_salv_selections.
lo_selections = go_salv->get_selections( ).
lo_selections->set_selection_mode( if_salv_c_selection_mode=>cell ).
...
ENDIF.
第13天 用户说:触发事件
用户今天啥也没说,你来研究下SALV的触发事件吧!
IF p_day13 EQ 'X'.
DATA lo_events_table TYPE REF TO cl_salv_events_table.
lo_events_table = go_salv->get_event( ).
DATA lo_evt_handler TYPE REF TO lcl_evt_handler.
CREATE OBJECT lo_evt_handler.
SET HANDLER lo_evt_handler->on_link_click FOR lo_events_table.
SET HANDLER lo_evt_handler->on_double_click FOR lo_events_table.
SET HANDLER lo_evt_handler->on_added_function FOR lo_events_table.
SET HANDLER lo_evt_handler->before_salv_function FOR lo_events_table.
SET HANDLER lo_evt_handler->after_salv_function FOR lo_events_table.
...
ENDIF.
03 源码分享
CLASS lcl_evt_handler DEFINITION.
PUBLIC SECTION.
METHODS on_link_click "单击(热点)
FOR EVENT link_click OF cl_salv_events_table
IMPORTING row column.
METHODS on_double_click "双击
FOR EVENT double_click OF cl_salv_events_table
IMPORTING row column.
METHODS on_added_function "新增按钮点击
FOR EVENT added_function OF cl_salv_events_table
IMPORTING e_salv_function.
METHODS before_salv_function "标准按钮点击前
FOR EVENT before_salv_function OF cl_salv_events_table
IMPORTING e_salv_function.
METHODS after_salv_function "标准按钮点击后
FOR EVENT after_salv_function OF cl_salv_events_table
IMPORTING e_salv_function.
ENDCLASS.
CLASS lcl_evt_handler IMPLEMENTATION.
METHOD on_link_click.
MESSAGE i001(00) WITH 'on_link_click:' row ' - ' column.
ENDMETHOD