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.