发布网友 发布时间:2022-04-23 06:25
共2个回答
热心网友 时间:2023-10-25 04:18
AT NEW field是当内表中连续出现不同的field或之前的字段时,执行它与ENDAT之间的语句。一般使用之前需要以字段field及之前的字段为key对内表进行排序。这句话可能很抽象,下面举个例子来说明。
例:
DATA: BEGIN OF wa,
col01 TYPE char10,
col02 TYPE char10,
col03 TYPE char10,
END OF wa,
itab LIKE TABLE OF wa.
* 省略初始化内表itab
SORT itab by col01 col02.
LOOP AT itab into wa.
AT NEW col02.
* 当wa-col01不等于上一条数据的col01的值或者wa-col02不等于上一条数据的col01的值的时候执行
* 由于执行语句AT NEW之后,工作区中类型为char的字段值会变成*,所以在AT NEW之后需要重新读取该条数据
READ TABLE itab INTO wa INDEX sy-tabix.
* 省略其它语句
ENDAT.
ENDLOOP.
如果排序后内表itab中的数据为上图中的数据,则当序号为1、4、8、10时会执行AT NEW和ENDAT之间的语句。
热心网友 时间:2023-10-25 04:19
F1的帮助就有啊。追答loop at itab.
at new comp1.
i = 0.
endat.
i = i + 1.
at end of comp1.
if i ne 1.
数据重复
endif.
endat.
endloop.
来自:求助得到的回答