目录
业务说明
在ABAP编程过程中,如果出现相同的行,如何删除?类似EXCEL表中在VLOOKUP后,可能出现不同的行有重复内容的情况,所以现进行排序,这样就把相同重复行集中在一起了,然后再进行相邻重复行去重操作。在ABAP语法中,语句' DELETE ADJACENT DUPLICATES FROM ' 就是用于删除从内表中进行相邻重复数据去重作用。
语法解释
语句:DELETE ADJACENT DUPLICATES FROM
在SAP ABAP中,DELETE ADJACENT DUPLICATES FROM 语句用于从内部表中删除相邻的重复行。该语句通过指定一个或多个字段来比较行,并删除那些在这些字段上具有相同值的相邻行,只保留第一行或最后一行(取决于GIVING子句的使用,如果没有GIVING子句,则默认保留第一行)。
例句代码展示
DELETE ADJACENT DUPLICATES FROM lt_releasegroup COMPARING frggr frgco.
例句代码解释
lt_releasegroup:是要进行去重操作的内部表(内表)的名称。
COMPARING frggr frgco:指定了用于比较行是否重复的字段。在这个例子中,frggr 和 frgco 是lt_releasegroup内表中的字段,ABAP将比较相邻行的这两个字段的值。
模拟代码执行
当执行这条语句时,ABAP会遍历lt_releasegroup内表中的行,并检查每一行与下一行在frggr和frgco字段上的值是否相同。如果找到相邻的两行在这两个字段上的值都相同,那么它会删除其中的一行(默认是后一行,但可以通过GIVING子句来改变这个行为)。
frggr | frgco | ...(其他字段)
------|-------|-----------------
A | 1 | ...
A | 1 | ...(这行会与上一行比较并被删除)
B | 2 | ...
A | 1 | ...(这行不会与上一行比较,因为它们不是相邻的)
执行DELETE ADJACENT DUPLICATES FROM lt_releasegroup COMPARING frggr frgco.后,内表将变为:
frggr | frgco | ...(其他字段)
------|-------|-----------------
A | 1 | ...
B | 2 | ...
A | 1 | ...
注意,第三行(A | 1)没有被删除,因为它与第一行不是相邻的。
Done.
Created on 25th January, 2025