One-step approach
* Entries: 1000, Duplicates: 250
* Line width: 100, Key width: 20
* ITAB2 takes 750 entries with unique key K
REFRESH ITAB2.
LOOP AT ITAB1 INTO WA.
READ TABLE ITAB2 WITH KEY K = WA-K
BINARY SEARCH
TRANSPORTING NO FIELDS.
IF SY-SUBRC <> 0.
INSERT WA INTO ITAB2
INDEX SY-TABIX.
ENDIF.
ENDLOOP.
Three-steps: move, sort, delete dupl.
* Entries: 10000, Duplicates: 2500
* Line width: 100, Key width: 20
* ITAB2 takes 750 entries with unique key K
ITAB2[] = ITAB1[].
SORT ITAB2 BY K.
DELETE ADJACENT DUPLICATES FROM ITAB2
COMPARING K.
Documentation
If the data amount is small (< 20 entries), or if you need read-
access to the internal table while it is being filled, the one-step
approach using READ/INSERT is the right choice.
If, however, the data amount is larger and you need read-access only
to the completely-filled table, the three-step algorithm is
preferable.
See also the comparable test for SORTED vs. HASHED TABLEs