关于abap 如何高效获取内表重复数据?

关于abap 如何高效获取内表重复数据?,第1张

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之间的语句。

直接删除重复项。

SORT 内表 BY 字段一 字段二 字段三.

DELETE ADJACENT DUPLICATES FROM 内表 COMPARING 字段一 字段二 字段三.

这样内表剩下的就是三个字段值不一样的记录了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6848609.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-29
下一篇 2023-03-29

发表评论

登录后才能评论

评论列表(0条)

保存