使用at new, at first, at last, at end of的时候要注意:loop的时候不能加条件;at和endat之间不能使用loop into的working area。
假设内表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 OF xxx以xxx以及其左边的所有字段为分组条件,在每组的第一条记录或者最后一条记录时执行。
进入AT NEW和AT END OF语句后,工作区里的数字型会清零,字符型会变成*,所以不能直接使用工作区进行数据操作。可以使用READ TABLE gt_ab INTO gs_ab INDEX SY-TABIX语句重新读到该行数据。