ABAP新语法REDUCE提供内表字段汇总:
测试代码如下:
DATA:BEGIN OF ls_data,
a TYPE char1,
b TYPE numc2,
END OF ls_data,
lt_data LIKE TABLE OF ls_data.
lt_data = VALUE #( ( a = 'A' b = 10 )
( a = 'B' b = 30 )
( a = 'C' b = 50 ) ) .
DATA(lv_sum) = REDUCE #( INIT sum TYPE menge_d"定义求和的字段SUM类型QUAN,名字随便
FOR ls_wa IN lt_data "创建一个工作区ls_wa对应内表
WHERE ( a = 'A' OR a = 'B' ) "汇总如果有条件,可以添加汇总条件
NEXT sum = sum + ls_wa-b )."把值和工作区wa取的值相加
WRITE lv_sum.
得到结果如下,汇总了内表中A字段等于A和B的值:
REDUCE语句相当于是一个LOOP,对内表的数据进行处理,累加汇总在一个字段内,并不会提高运行效率,在数据量小的时候使用,大数据量的累计还是推荐GROUP BY。