abap удалить соседние дубликаты - PullRequest
6 голосов
/ 19 октября 2011

Если есть записи с одинаковым ключом.

сортировка по ключу.удалить соседние дубликаты из ключа сравнения itab.

Кто-нибудь знает, какой из них будет удален, если удалить соседний ключ duplicates..comparing?Первый или второй?

Ответы [ 3 ]

11 голосов
/ 19 октября 2011

Из справки F1 по «Удалить соседний дубликат»

В случае нескольких двойных строк, следующих друг за другом, все строки, кроме первой, удаляются.

Таким образом, вторая (идентичная) строка должна быть удалена

С уважением,

4 голосов
/ 19 октября 2011

Вместо сортировки стандартной таблицы вы могли бы рассмотреть объявление другой внутренней таблицы как отсортированной таблицы того же типа с уникальным ключом , соответствующим полям, которые вы сравниваете, чтобы исключить дубликаты. Это быстрее, позволяет вам сохранить исходную таблицу без изменений и, на мой взгляд, делает ваш код более читабельным, потому что легче понять, какие строки хранятся, а какие нет. Пример:

LOOP AT itab ASSIGNING <itab_row>.
  INSERT <itab_row> INTO TABLE sorted_itab.
ENDLOOP.
0 голосов
/ 28 ноября 2013

Если данные в вашем itab извлекаются из БД, это лучше, чем использовать добавление ORDER BY в SELECT и чем вы можете использовать удаление соседних дубликатов. Алгоритм сортировки стоит nlog (n) и лучше, чем СУБД выполняет эти операции вместо ABAP. Очевидно, что если вы можете использовать DISTINCT или GROUP BY в SQL, вы избегаете использовать как SORT, так и удалять соседние дубликаты, и вам следует решить все проблемы с производительностью

...