AT new at end of

2018-11-20  本文已影响0人  想跳出大海的鱼

假设内表gt_ab有 col1,col2,col3三个字段。

DATA gt_ab TYPE STANDARD TABLE OF ty_ab.”内表

DATA gs_ab TYPE ty_ab. ”结构

第一条记录:col1=’1000’,col2=’AAA1’,col3=1

第二条记录:col1=’1000’,col2=’AAA2’,col3=2

第三条记录:col1=’2000’,col2=’AAA2’,col3=3

第四条记录:col1=’2000’,col2=’AAA2’,col3=4

第五条记录:col1=’2000’,col2=’AAA3’,col3=5

第六条记录:col1=’3000’,col2=’AAA3’,col3=6

AT NEW col1:以col1为分组条件,在每组的第一条记录时执行,在上述例子里会在在第一条,第三条,第六条记录时会执行。

AT END OF col1:以col1为分组条件,在每组的最后一条记录时执行,在上述例子里会在在第二条,第五条,第六条记录时会执行。

AT NEW col2:以col1和col2为分组条件,在每组的第一条记录时执行,在上述例子里会在第一条,第二条,第三条,第五条,第六条记录时会执行。

AT END OF col2:以col1和col2为分组条件,在每组的最后一条记录时执行,在上述例子里会在在第一条,第二条,第四条,第五条,第六条记录时会执行。

AT NEW或者AT END OFxxx以xxx以及其左边的所有字段为分组条件,在每组的第一条记录或者最后一条记录时执行。

进入AT NEW和AT END OF语句后,工作区里的数字型会清零,字符型会变成*,所以不能直接使用工作区进行数据操作。可以使用READ TABLEgt_ab INTO gs_ab INDEX SY-TABIX语句重新读到该行数据。

AT NEW和AT END OF可以用来进行字段的列求和或者汇总,虽然COLLECT也可以实现汇总,但是COLLECT是对内表里所有的数字型字段进行汇总,如果需要比较复杂的功能,还是需要使用AT NEW和AT END OF。

上一篇 下一篇

猜你喜欢

热点阅读