sap-abap-at first at last at new at end
AT FIRST: 循环内表的第一行时触发执行的代码。只执行一次。
AT LAST: 循环内表的最后一行数据时执行代码。即在LOOP里把该执行的都执行完了才执行它。
AT NEW F1: 如果字段F及F的左则全部字段的数据,与上一行数据不一致,则执行代码。 先执行一行,开始判断,如果第二行和第一行值不一样,执行 AT END OF F1;
如果值一样,继续循环AT NEW F1.
AT END OF F1: 如果字段F及F的左则全部字段的数据,与下一行数据不一致时,则执行代码。
AT....End AT语句块内:循环每一行数据时都执行.
REPORT ZKAVEN_002.
DATA: BEGIN OF gs_i,
n1 TYPE i,
n2 TYPE i,
c1 TYPE c,
i TYPE i,
i_summary TYPE i,
END OF gs_i.
DATA: gs_i2 LIKE gs_i.
DATA: gs_i3 LIKE gs_i.
DATA: gt_i LIKE STANDARD TABLE OF gs_i.
DATA: gt_i2 LIKE STANDARD TABLE OF gs_i.
DATA: gt_i3 LIKE STANDARD TABLE OF gs_i.
gs_i-n1 = 1.
gs_i-n2 = 1.
gs_i-c1 = 'a'.
gs_i-i = 1.
APPEND gs_i TO gt_i.
gs_i-n1 = 1.
gs_i-n2 = 2.
gs_i-c1 = 'a'.
gs_i-i = 8.
APPEND gs_i TO gt_i.
gs_i-n1 = 2.
gs_i-n2 = 1.
gs_i-c1 = 'a'.
gs_i-i = 3.
APPEND gs_i TO gt_i.
gs_i-n1 = 2.
gs_i-n2 = 2.
gs_i-c1 = 'a'.
gs_i-i = 4.
APPEND gs_i TO gt_i.
*MOVE-CORRESPONDING
CLEAR gs_i.
DATA: g_tabix LIKE sy-tabix.
*使用at first和at last使用时,所有的非数字字段值变为*
*at new 和 at end 使用时,new后面的非数值字段值变为 *,
*at new 和 at end 使用sum均是计算区间内的数字字段内容之和
*通过READ TABLE gt_i INTO gs_i INDEX g_tabix. 解决使用时出现的*的问题。
LOOP AT gt_i INTO gs_i.
g_tabix = sy-tabix.
WRITE: /, 'original',gs_i-n1, gs_i-n2,gs_i-c1, gs_i-i, gs_i-i_summary.
AT FIRST.
WRITE: /, 'first',gs_i-n1, gs_i-n2,gs_i-c1, gs_i-i, gs_i-i_summary.
ENDAT.
AT NEW n1.
READ TABLE gt_i INTO gs_i INDEX g_tabix. "通过读取行内表至工作区,
MOVE gs_i TO gs_i2. "不需要汇总的字段,赋值
SUM.
gs_i2-i_summary = gs_i-i. "需要汇总的字段
APPEND gs_i2 TO gt_i2.
ENDAT.
AT END OF n1.
READ TABLE gt_i INTO gs_i INDEX g_tabix. "通过读取行内表至工作区,
MOVE gs_i TO gs_i3. "不需要汇总的字段,赋值
SUM.
gs_i3-i_summary = gs_i-i. "需要汇总的字段
APPEND gs_i3 TO gt_i3.
ENDAT.
AT LAST.
WRITE: /, 'last' ,gs_i-n1, gs_i-n2,gs_i-c1, gs_i-i, gs_i-i_summary.
ENDAT.
ENDLOOP.
CLEAR gs_i.
LOOP AT gt_i2 INTO gs_i.
WRITE: /, 'gt_i2', gs_i-n1, gs_i-n2,gs_i-c1, gs_i-i, gs_i-i_summary.
ENDLOOP.
LOOP AT gt_i3 INTO gs_i.
WRITE: /, 'gt_i3 ', gs_i-n1, gs_i-n2,gs_i-c1, gs_i-i, gs_i-i_summary.
ENDLOOP.
作者: 轻烟随风
当前文章地址: https://www.zyxpp.com/sap-abap-at-first-at-last-at-new-at-end/
来源: 轻烟随风的博客
文章版权归作者所有,欢迎转载
当前文章地址: https://www.zyxpp.com/sap-abap-at-first-at-last-at-new-at-end/
来源: 轻烟随风的博客
文章版权归作者所有,欢迎转载
THE END
二维码
文章目录
关闭
共有 0 条评论