abap删除相邻的重复项

时间:2011-10-18 21:11:13

标签: abap

如果有相同密钥的条目。

  

按键排序。   从itab比较密钥中删除相邻的重复项。

如果删除相邻的重复数据,有没有人知道哪一个会被删除?比较密钥? 第一个或第二个?

3 个答案:

答案 0 :(得分:11)

来自F1帮助“删除相邻副本”

  

在几条双线相互跟随的情况下,全部   除了第一行之外的行被删除。

因此应删除第二行(相同)

此致

答案 1 :(得分:4)

您可以考虑将另一个内部表声明为具有与您要比较的字段相对应的唯一键的相同类型的已排序表,而不是对标准表进行排序,以消除重复项。它更快,允许您保持原始表不变,并且在我看来,使您的代码更具可读性,因为它更容易理解保留哪些行以及哪些行不保留。例如:

LOOP AT itab ASSIGNING <itab_row>.
  INSERT <itab_row> INTO TABLE sorted_itab.
ENDLOOP.

答案 2 :(得分:0)

如果你的数据库中的数据是从DB中获取的,那么它比你在SELECT中使用ORDER BY添加更好,而且你可以使用删除相邻的重复项。排序算法花费nlog(n)并且DBMS更好地执行这些类型的操作而不是ABAP。 显然,如果您可以在SQL中执行DISTINCT或GROUP BY,则可以避免同时使用SORT并删除相邻的重复项,并且应该解决所有性能问题