ABAP 新语法 REDUCE

作者:ABAP猿 约 5 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, 开发, 数据工程
ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图

If I have seen further, it is by standing on the shoulders of giants.

如果我能看得更远,是因为站在巨人的肩膀上。

ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图

1

程序效果

ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图

2

源码分享

ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图

*&\----------------------------------------------------------------------

*& 11\. Reduce关键字 理解:内表处理

*&\----------------------------------------------------------------------

*& 语法:... REDUCE type(

*& [let_exp]

*& INIT {x1 = rhs1}|{<x1> = wrexpr1}|{x1|<x1> TYPE dtype1}

*& {x2 = rhs2}|{<x2> = wrexpr2}|{x2|<x2> TYPE dtype2}

*& ...

*& FOR for_exp1

*& FOR for_exp2

*& ...

*& NEXT ...

*& {x1 = rhs1}|{<x1> = wrexpr1}

*& {x2 = rhs2}|{<x2> = wrexpr2}

*& ... ) ...

*&

*& 处理场景:计数、求和、最大值、最小值、平均值、文本拼接等

*&\----------------------------------------------------------------------

TYPES

BEGIN OF gty_student ,

name ( 10 ) TYPE c , "姓名

gender TYPE c , "性别

age TYPE i , "年龄

id ( 10 ) TYPE n , "学生ID

class ( 10 ) TYPE c , "班级

score TYPE p DECIMALS 1 , "成绩

level ( 10 ) TYPE c , "级别

ispass TYPE c , "是否通过

END OF gty_student ,

gty_t_student TYPE TABLE OF gty_student WITH EMPTY KEY .

DATA ( gt_student ) = VALUE gty_t_student ( LET pre = 'Student'

random = cl_abap_random_int => create ( seed = CONV # ( sy \- timlo

) min = 0 max = 100 ) IN

FOR n = 1 UNTIL n > 5

( id = n

name = |{ pre } { n }|

gender = COND # ( WHEN n < 3 THEN '男' ELSE '女' )

age = 10 \+ n

class = |{ n }班|

score = random -> get_next ( ) ) ).

DATA ( lv_lines ) = REDUCE i ( INIT lines = 0

FOR <stu> IN gt_student WHERE ( gender = '女' )

NEXT lines = lines \+ 1 ).

DATA ( lv_ages ) = REDUCE i ( INIT ages = 0

FOR <stu> IN gt_student WHERE ( gender = '女' )

NEXT ages = ages + <stu> \- age ).

TYPES

BEGIN OF lty_reduce ,

idx TYPE i ,

cnt TYPE i ,

sum TYPE i ,

max TYPE i ,

min TYPE i ,

avg TYPE i ,

str TYPE string ,

END OF lty_reduce ,

lty_t_reduce TYPE TABLE OF lty_reduce WITH EMPTY KEY .

DATA ( ls_reduce ) = REDUCE lty_reduce ( INIT res = VALUE lty_reduce

( min = 10 )

FOR <stu> IN gt_student INDEX INTO idx WHERE ( gender = '女' )

NEXT res \- idx = idx

res \- cnt = res \- cnt \+ 1 "计数

res \- sum = res \- sum \+ <stu> \- age "求和

res \- max = nmax ( val1 = res \- max val2 = <stu> \- age )

"最大值

res \- min = nmin ( val1 = res \- min val2 = <stu> \- age )

"最小值

res \- avg = res \- sum / res \- cnt "平均值

res \- str = res \- str && <stu> \- name && <stu> \- gender && <stu>

\- age && ';' "文本拼接

).

3

AI解释

ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图

仅供参考

ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图

这段ABAP代码主要介绍了ABAP中新引入的 REDUCE 关键字的用法,其中核心点如下:

` REDUCE ` 关键字是一种用于对内表进行聚合操作的简化语法。它可以用于处理内表的场景,如计数、求和、最大值、最小值、平均值、文本拼接等。

关键点:

• ` INIT ` 子句用于初始化聚合结果的变量。

• ` FOR ` 子句用于迭代内表,类似于 ` LOOP AT ` .

• ` NEXT ` 子句用于定义迭代过程中每次循环的操作。

示例解释:

• ` lines ` 变量用于计算女生的数量。

• ` ages ` 变量用于计算女生的年龄总和。

• ` ls_reduce ` 结构体用于同时计算女生的计数、求和、最大值、最小值、平均值、文本拼接。

通过 ` REDUCE ` 关键字,可以在一个结构中灵活处理多个聚合操作,简化了对内表的处理逻辑。

ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图

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

欢迎点赞、留言、分享

ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图

往期推荐

[ ABAP 新语法-CONV

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

[ ABAP 新语法-FOR

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

[ ABAP 新语法-SWITCH、COND

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

[ ABAP 新语法-LET

](https://mp.weixin.qq.com/s?__biz=Mzg3OTE2Njg0OQ==&mid=2247495544&idx=1&sn=11a10fc7f45113282e9b0e600c49e9e8&chksm=cf0a3b96f87db280c12b7c18df0823a4207c9d52b56b9d773135e12d6173c9636ce091a79cf4&scene=21#wechat_redirect)

ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图
ABAP 新语法 REDUC - 封面图

点个 在看 你最好看

ABAP猿

关于作者:ABAP猿

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

来源说明:本文内容由「ABAP新语法REDUCE.md」整理生成,仅用于内部技术分享与学习交流。