DELETE
15.4 DELETE
4. DELETE
DELETE命令:構文ルール①(条件によるテーブルからのレコード削除)
条件による削除は、次のような構文になります。
![](https://kanda-it-school-kensyu.com/wp-content/uploads/6b25edeb0ffc20144653d5e0b03bbb20.png)
前述で説明したその他の内部テーブル操作命令と同様に「条件式」を加えた場合は、それに当てはまるレコードをすべて削除します。
さらに、DELETEを使えば、重複削除を行うことができます。
次の構文は、内部テーブル内の隣接する重複レコードを削除する構文です。
![](https://kanda-it-school-kensyu.com/wp-content/uploads/09081c0025918034b4126cb59afeb906.png)
テーブル内の隣接するキー項目が同値の場合、2行目以降の重複行を削除します。
COMPARINGで項目名を指定している場合は、その項目名が重複している場合、2行目以降の重複行を削除します。
注意点として、この構文では隣接していない重複行は削除されません。
内部テーブル内のすべての重複行を削除する場合は、事前にソートをかけておくとよいでしょう。
DELETE命令:構文ルール②(項目キーによるテーブルからのレコード削除)
![](https://kanda-it-school-kensyu.com/wp-content/uploads/c768332393ac1c2d42ec54fc98144d8a.png)
上記の構文では、<構造>は、<内部テーブル>と中身が一致している必要があります。
またこの構文を使用する際は、宣言する内部テーブルにキー項目を設定しておく必要があります。
![](https://kanda-it-school-kensyu.com/wp-content/uploads/5635998ab9a3e636484d840134bc306c.png)
上記の構文では、 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.
実行結果
![](https://kanda-it-school-kensyu.com/wp-content/uploads/b5e350ff7ab27410393e5d414eeb7485.png)
「サンプルコード」②
![](https://kanda-it-school-kensyu.com/wp-content/uploads/dec186d054f012f8882b7d9b0d972519.png)
実行結果
![](https://kanda-it-school-kensyu.com/wp-content/uploads/6c56af57d4f1f6109253c261d6aac37a.png)