DELETE

15.4 DELETE

4. DELETE

DELETE命令:構文ルール①(条件によるテーブルからのレコード削除)

条件による削除は、次のような構文になります。

前述で説明したその他の内部テーブル操作命令と同様に「条件式」を加えた場合は、それに当てはまるレコードをすべて削除します。

さらに、DELETEを使えば、重複削除を行うことができます。
次の構文は、内部テーブル内の隣接する重複レコードを削除する構文です。

テーブル内の隣接するキー項目が同値の場合、2行目以降の重複行を削除します。
COMPARINGで項目名を指定している場合は、その項目名が重複している場合、2行目以降の重複行を削除します。

注意点として、この構文では隣接していない重複行は削除されません。
内部テーブル内のすべての重複行を削除する場合は、事前にソートをかけておくとよいでしょう。

DELETE命令:構文ルール②(項目キーによるテーブルからのレコード削除)

上記の構文では、<構造>は、<内部テーブル>と中身が一致している必要があります。
またこの構文を使用する際は、宣言する内部テーブルにキー項目を設定しておく必要があります。

上記の構文では、 WITH TABLE KEY の後の 式 <内部テーブル内の項目> = <内部テーブル内の項目に該当する値> に基づいて<内部テーブル>の行を削除します。

DELETE(サンプルコード)

「サンプルコード」①

REPORT ZCUSLIST1_K_DELETE.
DATA: BEGIN OF LINE1,
               COLP TYPE I,
               COLQ TYPE I,
            END OF LINE1.
DATA MYTABLE LIKE HASHED TABLE OF LINE1 WITH UNIQUE KEY COLP.

DO 8 TIMES.
LINE1-COLP = SY-INDEX.
LINE1-COLQ = SY-INDEX + 4.
INSERT LINE1 INTO TABLE MYTABLE.
ENDDO.
*&---------------------------------------------------------------------*
*& DELETE
*&---------------------------------------------------------------------*
LINE1-COLP = 1.

DELETE TABLE MYTABLE: FROM LINE1,
WITH TABLE KEY COLP = 3.

LINE1-COLQ = SY-INDEX + 4.
MODIFY TABLE MYTABLE FROM LINE1.

LOOP AT MYTABLE INTO LINE1.
WRITE:
  / LINE1-COLP, LINE1-COLQ.
ENDLOOP.

実行結果

「サンプルコード」②

実行結果


NEXT>> 第16章 ABAP SQL①