3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

内部テーブルの重複を削除する時は事前にソートする事

Posted at

DELETE ADJACEMENT DUPLICATES FROM 内部テーブル COMPARING 項目.で内部テーブルの重複を削除する場合は、事前にソートされた状態にしましょう。

REPORT ZTEST.
TYPES:
  BEGIN OF TYP_TEST,
    INTG TYP I,
  END OF TYP_TEST,
  TYP_IT_TEST TYPE STANDARD TABLE OF TYP_TEST.

DATA:
  ST_TEST TYPE TYP_TEST,
  IT_TEST TYPE TYP_TD_TEST.

START-OF-SELECTION.

ST_TEST-INTG = 1.
APPEND ST_TEST TO IT_TEST.

ST_TEST-INTG = 3.
APPEND ST_TEST TO IT_TEST.

ST_TEST-INTG = 2.
APPEND ST_TEST TO IT_TEST.

ST_TEST-INTG = 1.
APPEND ST_TEST TO IT_TEST.

ST_TEST-INTG = 1.
APPEND ST_TEST TO IT_TEST.

ST_TEST-INTG = 3.
APPEND ST_TEST TO IT_TEST.

ST_TEST-INTG = 2.
APPEND ST_TEST TO IT_TEST.

ST_TEST-INTG = 1.
APPEND ST_TEST TO IT_TEST.

ST_TEST-INTG = 1.
APPEND ST_TEST TO IT_TEST.

DELETE ADJACEMENT DUPLICATES FROM IT_TEST COMPARING INTG.

LOOP AT IT_TEST INTO ST_TEST.

  WRITE:
    /006(5) ST_TEST-INTG.

ENDLOOP.

DELETE ADJACEMENT DUPLICATESで重複を削除する前のIT_TESTは、

  • IT_TEST
# INTG
1 1
2 3
3 2
4 1
5 1
6 3
7 2
8 1
9 1

↑こうなっています。

LOOP AT IT_TEST INTO ST_TEST.の時点でIT_TESTがどうなっているかと言うと、

  • IT_TEST
# INTG
1 1
2 3
3 2
4 1
5 3
6 2
7 1

↑こうなっています。
DELETE ADJACEMENT DUPLICATESは隣接する行で重複しているか判断するので、ソートされてないと
うまくいかないんですよね。

DELETE ADJACENT DUPLICATE ENTRIES FROM itab
[COMPARING f1 f2 ... |ALL FIELDS].
内部テーブル itab から、すべての隣接する重複エントリが削除されます。
https://help.sap.com/doc/saphelp_nw70/7.0.12/ja-JP/06/aafd54fc4011d195280000e8353423/content.htm?no_cache=true

これを回避するためには、重複を削除する前にIT_TESTにSORTをかけます。

*中略
APPEND ST_TEST TO IT_TEST.

SORT IT_TEST BY INTG ASCENDING.

DELETE ADJACEMENT DUPLICATES FROM IT_TEST COMPARING INTG.

LOOP AT IT_TEST INTO ST_TEST.

  WRITE:
    /006(5) ST_TEST-INTG.

ENDLOOP.

こうすれば、↓のようにちゃんと重複が削除されます。

  • IT_TEST
# INTG
1 1
2 2
3 3

と言うかSTANDARD TABLEなんか今時使うなって事なんでしょうか??

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?