DELETE ADJACENT DUPLICATES FROM 语句,我们知道他的基本功能是:删除相邻行的重复数据。
但是他最终保留哪一行数据呢?
下面看看一个Demo:
-
DATA : BEGIN OF itab OCCURS 0,
-
vbeln TYPE lips-vbeln,
-
version TYPE c LENGTH 2,
-
END OF itab.
-
-
itab-vbeln = '0084000010'.
-
itab-version = '1'.
-
APPEND itab.
-
itab-vbeln = '0084000010'.
-
itab-version = '2'.
-
APPEND itab.
-
itab-vbeln = '0084000010'.
-
itab-version = '3'.
-
APPEND itab.
-
-
itab-vbeln = '0084000011'.
-
itab-version = '2'.
-
APPEND itab.
-
itab-vbeln = '0084000011'.
-
itab-version = '3'.
-
APPEND itab.
-
itab-vbeln = '0084000009'.
-
itab-version = '2'.
-
APPEND itab.
-
itab-vbeln = '0084000009'.
-
itab-version = '1'.
-
APPEND itab.
-
-
WRITE:/ '原始数据:'.
-
LOOP AT itab.
-
WRITE: / itab-vbeln,itab-version.
-
ENDLOOP.
-
-
SORT itab BY vbeln ASCENDING version DESCENDING.
-
WRITE:/ '排序数据:'.
-
LOOP AT itab.
-
WRITE: / itab-vbeln,itab-version.
-
ENDLOOP.
-
-
DELETE ADJACENT DUPLICATES FROM itab COMPARING vbeln.
-
WRITE:/ '排序数据:'.
-
LOOP AT itab.
-
WRITE: / itab-vbeln,itab-version.
-
ENDLOOP.
复制代码
测试结果:
可见DELETE ADJACENT DUPLICATES FROM只保留相邻重复行的第一行数据,大家也可以测试测试其他场景验证。
实战中用法举例:
主数据下发:一种主数据下发,可能有多个版本号,我们只保留版本号最大的一条数据,作为最新数据。用这种方法最简单啦
|