ABAPOOALV 选择模式触发事件

作者:ABAP猿 约 6 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图

After all, tomorrow is another day.

不管怎样,明天又是新的一天。

ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图

1

程序效果

ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图

2

源码分享

DATA gt_spfli TYPE TABLE OF spfli .

DATA go_alv TYPE REF TO cl_gui_alv_grid .

DATA gs_layout TYPE lvc_s_layo .

DATA gt_fieldcat TYPE lvc_t_fcat .

DATA gs_fieldcat TYPE lvc_s_fcat .

DATA gs_sort TYPE lvc_s_sort .

DATA gt_sort TYPE lvc_t_sort .

DATA gt_filter TYPE lvc_t_filt .

DATA gs_filter TYPE lvc_s_filt .

INITIALIZATION .

sy \- title = 'ABAP OOALV演示程序-公众号(ABAP猿)' .

START-OF-SELECTION .

SELECT * FROM spfli INTO TABLE gt_spfli UP TO 30 ROWS .

CREATE OBJECT go_alv

EXPORTING

i_parent = cl_gui_container => default_screen .

*------------------------------------*

DATA lo_evt_handler TYPE REF TO lcl_evt_handler .

CREATE OBJECT lo_evt_handler .

SET HANDLER

lo_evt_handler -> toolbar FOR go_alv ,

lo_evt_handler -> hotspot_click FOR go_alv ,

lo_evt_handler -> double_click FOR go_alv ,

lo_evt_handler -> before_user_command FOR go_alv ,

lo_evt_handler -> user_command FOR go_alv ,

lo_evt_handler -> after_user_command FOR go_alv .

*------------------------------------*

CLEAR gs_layout .

gs_layout \- zebra = 'X' .

gs_layout \- cwidth_opt = 'X' .

gs_layout \- sel_mode = 'D' . "<\-----

gs_layout \- keyhot = 'X' . "<\-----

"添加排序

CLEAR gs_sort .

gs_sort \- spos = '1' .

gs_sort \- fieldname = 'CARRID' .

gs_sort \- subtot = 'X' .

gs_sort \- up = '' .

gs_sort \- down = 'X' .

APPEND gs_sort TO gt_sort .

"添加过滤

CLEAR gs_filter .

gs_filter \- fieldname = 'CARRID' .

gs_filter \- sign = 'E' .

gs_filter \- option = 'EQ' .

gs_filter \- low = 'JL' .

APPEND gs_filter TO gt_filter .

"字段目录

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

EXPORTING

i_structure_name = 'SPFLI'

CHANGING

ct_fieldcat = gt_fieldcat .

FIELD-SYMBOLS <fcat> LIKE gs_fieldcat .

LOOP AT gt_fieldcat ASSIGNING <fcat> .

CASE <fcat> \- fieldname .

WHEN 'DISTANCE' .

<fcat> \- do_sum = 'X' .

WHEN OTHERS .

ENDCASE . ENDLOOP .
CALL METHOD go_alv -> set_table_for_first_display

EXPORTING

is_layout = gs_layout

• i_structure_name = 'SPFLI'

CHANGING

it_outtab = gt_spfli

it_fieldcatalog = gt_fieldcat

it_sort = gt_sort

it_filter = gt_filter .

cl_abap_list_layout => suppress_toolbar ( ).

WRITE space .

3

AI解释

ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图

仅供参考

ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图

ABAP OOALV 选择模式与事件触发演示

介绍:

这段ABAP代码演示了在ABAP OOALV(面向对象的ALV)中的选择模式和通过事件处理程序触发的不同用户交互。我们将逐步解释每个部分的作用和目的。

1\. 事件处理程序定义:

首先,我们定义了一个事件处理程序类 ` lcl_evt_handler `

,其中包含多个方法,每个方法对应一种ALV事件,如热区点击、双击、工具栏点击等。

2\. 事件处理程序实现:

在 ` lcl_evt_handler ` 类的实现部分,我们为每个事件方法编写了具体的处理逻辑,例如点击热区时的处理、双击时的处理等。

3\. 数据和ALV对象准备:

在主程序的 ` INITIALIZATION ` 部分,我们设置了程序的标题,并在 ` START-OF-SELECTION ` 部分从数据库表

` SPFLI ` 中选取了最多30行的数据,存储在内表 ` gt_spfli ` 中。同时,我们创建了一个ALV网格对象 ` go_alv `

4\. 选择模式与事件关联:

通过为ALV对象关联事件处理程序,我们在 ` START-OF-SELECTION ` 部分使用 ` SET HANDLER ` 语句将 `

lcl_evt_handler ` 的方法与相应的ALV事件关联起来。这样,当用户与ALV交互时,相应的事件将触发相关的处理方法。

5\. ALV显示设置:

我们设置了ALV显示的一些参数,包括斑马线、列宽优化、选择模式等。在这里,选择模式被设置为 'D',表示多选模式。同时,我们启用了按键热区。

6\. 排序、过滤、字段目录设置:

在ALV显示设置之后,我们添加了排序和过滤条件,以及字段目录。在字段目录中,我们特别关注了 'DISTANCE'

字段,设置了在ALV报表中对该字段进行求和。

7\. 用户交互事件处理:

最后,我们在事件处理程序的方法中添加了消息输出,用于演示当用户与ALV进行交互时,相应的事件处理方法会被触发。

通过这段代码,你可以学到如何在ABAP中创建一个交互式的ALV报表,并根据用户的操作触发不同的事件处理逻辑。

ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图

事件处理类 篇幅较长,后台回 复 " **20231112** " 获取

ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图

以上是今日分享,希望对你有所帮助~~~

欢迎点赞、留言、分享

ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图

往期推荐

[ ABAP SALV-选择模式、触发事件

](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247493599&idx=1&sn=646dad86bd6eebe55dde0e7e21378c1b&chksm=cf0a3331f87dba27b8113eb06f62127c18e98e889e1366269e86e7201367458e94f22fe6c6e5&scene=21#wechat_redirect)

[ ABAP SALV-演示程序 源码分享

](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247494081&idx=1&sn=671c4de5734c7131744f47fd6abeab65&chksm=cf0a3d2ff87db43943c9a773f2572b79df043fae880909bed6178a5c2e5a308cf16f39f75aba&scene=21#wechat_redirect)

ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图
ABAPOOALV 选择模式触发事 - 封面图

点个 在看 你最好看

ABAP猿

关于作者:ABAP猿

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAPOOALV选择模式触发事件.md」整理生成,仅用于内部技术分享与学习交流。