ABAP AT NEW 和 AT END OF 的使用

在写abap 的过程中,可能需要统计,求和等那么如何实现呢?

其实在loop … endloop 中间,有个AT ,<…>,ENDAT循环. 其中的包括: FRIST, LAST, NEW , END OF.这些可以用来进行内表中按某个字段进行分组统计.
FIRST 内 表的第一行
LAST 内 表的最后一 行
NEW 行组 的开头,与 字段 和 剩余字段中 的内容相同
END Of 行组 的结尾,与 字段 和 剩余字段中 的内容相同

AT - ENDAT 块中的语句 块使用这些 行条件代表 预定义的控 制结构。用 户可以使用 它们处理内 表中的控制 断点,而不 必使用 编程分支和循环 中所述的控 制语句自己 编程。
在 AT - ENDAT 语句块中, 工作区域没有用当前表格行进行填充。初始化 所有不是标 准关键字部 件的字段( 参见
标识表格行 )。对于行 条件 FIRST 和 LAST, 系统用星号 () 改写所有标 准关键字段 。对于行条 件 NEW 和 END OF ,系 统用星号 () 改写所有出 现在工作区 域中指定字 段 右边的标准 关键字段。 用户可根据 自己的需求 在 AT - ENDAT 语句块中填 充工作区域 。

AT New事件触发说明
如 AT New A.
f 是内表的一个字段,当 A 字段或者 A 字段左边的字段内容发生变化是该事件后面的语句都会执行。

注意:

使用at new, at first, at last, at end of 的时候要注意:

loop的时候不能加条件;at和endat之间不能使用loop into的working area。

手动实现atnew, at end of的时候,需要注意,容易出错,尤其是在at end of的时候。

使用 AT NEW f. 和 .AT END OF f 时需要注意:

1,f 必须是内表的第一个字段。(也可以不是第一个字段,但要将内表赋给其他的工作区来进行数据的处理)

at end of ,是以所对应的字段及其前面的字段为比照的对象,如果其发生了变化,则执行at end of...end at之间的代码。你会发现该字段及其前面的字段的值没有变化,而其后面的值就变成了*。 这很好理解,后面的值不是比照的对象,从上次执行到这次执行期间每个字段可能会有多个值的可能。
通常的做法是定义一个临时的工作区,在 at end of 外面保存下,然后再 at end of 中使用

2,内表中f 之后的字段的值都会变成 *

猜你喜欢

转载自blog.csdn.net/fengxin_/article/details/107019902
今日推荐