一、 at end of、at new、at last
1)在写abap 的过程中可能需要统计、求和等,那么在loop ... endloop 中间,有个AT ,,ENDAT循环。其中的包括: FRIST,LAST, NEW , END OF。
2)这些可以用来进行内表中按某个字段f 进行分组统计。
3)当f字段或者f字段左边的字段内容发生变化时该事件后面的语句都会执行。
以下以处理工资报表数据为例(简化例子):
工资内表结构字段及填充后的数据如下表:
工资内表字段.jpg
与loop配合使用汇总(loop不加where条件)
注意要先对内表数据进行排序
SORT it_data BY werks orgeh pernr.
LOOP AT it_data.
*在内表循环过程中遇到新的人事范围则执行
AT NEW werks.
SKIP.
ULINE.
WRITE :/8(35) '按人事范围汇总:'.
WRITE:/8(20) '人事范围编码',28(12)'部门编码',40(10)'员工号',50(8)'姓名',58(12)'基本工资',70(12)'职务工资',82(8)'税金',90(8)'实发'.
ENDAT.
WRITE :/8(20) it_data-werks,28(12) it_data-orgeh ,40(10) it_data-pernr,50(8