ABAPSALV 合计小计

作者:ABAP猿 约 5 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图

点击上方 蓝字 关注我们

ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图

Once you surrender to your vision, success begins to chase you.

当你把自已交给愿景后,成功开始追逐你。

功能说明

上篇:ABAP SALV-排序、过滤

本系列将通过模拟用户与开发者之间的对话场景, 来逐步演示SALV的使用。在本篇中,我们将继续上一篇内容,以解决用户提出的另外两个需求: ** 合计、小计

** **。** 让我们来看看是如何实现的吧。

赶 快动手试一试 ,掌握它的用法。

功能效果

ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图

第 8 天 用户说

需要对距离进行合计。

IF p_day08 EQ 'X' .

DATA lo_aggregations TYPE REF TO cl_salv_aggregations .

lo_aggregations = go_salv -> get_aggregations ( ) .

lo_aggregations -> add_aggregation (

EXPORTING

columnname = 'DISTANCE'

aggregation = if_salv_c_aggregation => total

) .

. . .

ENDIF .
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图

第 9 天 用户说

需要在合计基础上,进一步对航线进行小计。

DATA lo_sort TYPE REF TO cl_salv_sort .

"小计前需先进行排序

IF p_day06 EQ 'X' . lo_sort = lo_sorts -> get_sort ( columnname = 'CARRID' ) .

lo_sort -> set_subtotal ( 'X' ) .

ELSE .

lo_sorts = go_salv -> get_sorts ( ) .

lo_sorts -> add_sort (

EXPORTING

columnname = 'CARRID'

sequence = if_salv_c_sort => sort_down

subtotal = 'X'

) .

ENDIF .

. . .

ENDIF .
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图

源码分享

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1 . SELECTION-SCREEN BEGIN OF LINE . SELECTION-SCREEN COMMENT 1 ( 79 ) day01 . SELECTION-SCREEN END OF LINE .

...

SELECTION-SCREEN BEGIN OF LINE . SELECTION-SCREEN COMMENT 1 ( 79 ) day06 . SELECTION-SCREEN END OF LINE .

...

SELECTION-SCREEN BEGIN OF LINE . SELECTION-SCREEN COMMENT 1 ( 79 ) day08 . SELECTION-SCREEN END OF LINE . SELECTION-SCREEN BEGIN OF LINE . SELECTION-SCREEN COMMENT 1 ( 79 ) day09 . SELECTION-SCREEN END OF LINE . SELECTION-SCREEN END OF BLOCK b1 .
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t2 .

PARAMETERS p_day01 AS CHECKBOX DEFAULT 'X' . "01、基本展示

...

PARAMETERS p_day06 AS CHECKBOX DEFAULT 'X' . "06、添加排序

...

PARAMETERS p_day08 AS CHECKBOX DEFAULT 'X' . "08、添加合计

PARAMETERS p_day09 AS CHECKBOX DEFAULT 'X' . "09、添加小计

SELECTION-SCREEN END OF BLOCK b2 .

INITIALIZATION .

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

t1 = '用户说' .

t2 = '你来做' .

day01 = '01、从表SPFLI获取数据,并进行基本展示。' .

...

day06 = '06、需要按照航线降序。' .

...

day08 = '08、需要对距离进行合计。' .

day09 = '09、需要在合计基础上,进一步对航线进行小计。' .

%_p_day01_%_app_% \- text = '01、基本展示' .

...

%_p_day06_%_app_% \- text = '06、添加排序' .

...

%_p_day08_%_app_% \- text = '08、添加合计' .

%_p_day09_%_app_% \- text = '09、添加小计' .

START-OF-SELECTION .

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

CHECK p_day01 EQ 'X' .

DATA gt_spfli TYPE TABLE OF spfli .

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

DATA go_salv TYPE REF TO cl_salv_table .

cl_salv_table => factory (

IMPORTING

r_salv_table = go_salv

CHANGING

t_table = gt_spfli ).

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

...

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

IF p_day06 EQ 'X' .

DATA lo_sorts TYPE REF TO cl_salv_sorts .

lo_sorts = go_salv -> get_sorts ( ).

lo_sorts -> add_sort (

EXPORTING

columnname = 'CARRID'

sequence = if_salv_c_sort => sort_down

).

...

ENDIF .

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

...

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

IF p_day08 EQ 'X' .

DATA lo_aggregations TYPE REF TO cl_salv_aggregations .

lo_aggregations = go_salv -> get_aggregations ( ).

lo_aggregations -> add_aggregation (

EXPORTING

columnname = 'DISTANCE'

aggregation = if_salv_c_aggregation => total

).

...

ENDIF .

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

IF p_day09 EQ 'X' AND p_day08 = 'X' .

DATA lo_sort TYPE REF TO cl_salv_sort .

"小计前需先进行排序

IF p_day06 EQ 'X' . lo_sort = lo_sorts -> get_sort ( columnname = 'CARRID' ).

lo_sort -> set_subtotal ( 'X' ).

ELSE .

lo_sorts = go_salv -> get_sorts ( ).

lo_sorts -> add_sort (

EXPORTING

columnname = 'CARRID'

sequence = if_salv_c_sort => sort_down

subtotal = 'X'

).

ENDIF .

...

ENDIF .

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

go_salv -> display ( ).

**小贴士:**

• **** 可使用BC_DATA_GEN生成数据,以便查看演示效果;

• 以上纯属个人总结,如有纰漏请联系我,谢谢;

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

欢迎点赞、留言、分享

ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图

往期推荐

[ ABAP SALV系列文章

](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247492672&idx=1&sn=a10709828c6f167ecb91bdd11b43a226&chksm=cf0a30aef87db9b8555e554e4cc15d215c5f6aeae59ac9041b99ffb3124b212e25f57c130e27&scene=21#wechat_redirect)

[ ABAP SALV-基本显示、外观设置、列设置

](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247493394&idx=1&sn=59eb6a2448a28c6c9d0e6d57b9f1e16a&chksm=cf0a33fcf87dbaea56fc1e465ec11caa4dc078e8fb6c0404634c2cac4393aa1dfd94fd371ea9&scene=21#wechat_redirect)

[ ABAP SALV-按钮设置、布局设置

](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247493426&idx=1&sn=9238e91fcc56e3a23748361e04432922&chksm=cf0a33dcf87dbacabf7fa63a97a777e705deac0e0eed48e48090ba87c6d6d1793958051197ca&scene=21#wechat_redirect)

[ ABAP SALV-排序、过滤

](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247493435&idx=1&sn=f4edc084193c7cd518bdf75b719f5543&chksm=cf0a33d5f87dbac30cbeff6ee4cf2333f6dc977e5e25e4cab22d17abdeb011ea750ecdb45015&scene=21#wechat_redirect)

ABAPSALV 合计小计 - 封面图
ABAPSALV 合计小计 - 封面图

点个 在看 你最好看

ABAP猿

关于作者:ABAP猿

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

来源说明:本文内容由「ABAPSALV合计小计.md」整理生成,仅用于内部技术分享与学习交流。