【ABAP】3分で学ぶDELETE文―レコード削除

ABAP

このページでは、テーブル(データベース)・内部テーブルからのレコード削除を行うDELETE文について解説しています。

サンプルコード付きで初心者でも理解できるよう分かりやすく解説します。

このページで学べる内容
  • DELETE命令の使い方
  • DELETE命令を利用したサンプルコード
  • DELETE命令の注意点

ABAPエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識です。是非最後までご覧ください。

スポンサーリンク

ABAP:DELETE文とは?

DELETEとは日本語で削除するという意す。その名の通り、テーブル(データベース)・内部テーブルから対象のレコードを削除する命令です。

これだけ説明するととても簡単な命令に思えますが、実はテーブルからレコード削除する場合と、内部テーブルからレコード削除を行う場合で構文が多少異なるため、しっかり両者の区別をしておくことが重要です。

まずは、テーブルからのレコード削除を解説します。

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

DELETE FROM (テーブル名) WHERE (条件式).

指定したテーブルに含まれるレコードからWHERE句で指定した条件に一致するレコードを削除します。

DELETE FROM Z_TABLE
  WHERE A = '1000'
   AND  B = 'ABCDE'.

上記のサンプルコードではアドオンテーブル「Z_TABLE」のうち、項目Aが「1000」かつ項目Bが「ABCDE」というレコードを削除します。

WHERE条件の記載は、SELECT命令と同じです。

WHERE条件でできるだけ削除条件を絞る

DELETE命令を利用する場合、WHERE条件で削除対象を絞り切ることが重要です。下記のような場合、項目Aが「1000」となっているレコードすべてが削除されてしまうのですが、意図しない削除を行っていしまう例を初心者のうちはしばしば目にします。

DELETE FROM Z_TABLE
 WHERE A = '1000'.

逆に、テーブルに格納されているデータベースを全件削除したい場合は、以下のようにワイルドカードを用いることができます。

DELETE FROM (テーブル名) WHERE (項目名) LIKE '%'.

ただし、この構文は非常に危険(後戻り不可能)なのであまり用いるのはお勧めしません。あくまでも条件を指定したうえで実行するのがDELETE文の基本です。

SY-SUBRCの値:DELETE文

少なくとも1つの行が削除されればSY-SUBRCにはがセットされます。逆に、1つも削除されなかった場合はがセットされます。

また、INSERTUPDATE同様処理に成功した場合(この場合は削除できた場合)、その件数はSY-DBCNTに格納されます。

SY-SUBRC vs SY-DBCNT
  • SY-SUBRC・・・処理の成功 or 失敗
  • SY-DBCNT・・・処理が成功した場合のレコード数

両者の違いに留意して、設計を心がけましょう。

DELETE命令:構文ルール②(テーブルからのレコード削除)

内部テーブルに格納されているレコードに基き、DELETEする行を指定することも可能です。

DELETE (テーブル名) FROM TABLE (内部テーブル名).

こちらの構文は内部テーブルに格納された値のキー項目と一致するレコードをテーブルから削除する命令です。

SELECT A B C
  FROM Z_TABLE
  INTO Z_INT_TABLE
  WHERE A = '1000'.

DELETE Z_TABLE FROM TABLE Z_INT_TABLE.

「Z_INT_TABLE」には項目Aが「1000」のレコードがすべて格納されています。

それらのレコードのキー項目が一致する全てのレコードが「Z_TABLE」から削除される命令です。

先ほどと同様、SY-SUBRCにがセットされるのは、内部テーブルで指定したレコードが全件正常に処理された場合。一つでも正常に処理がなされなかった場合、SY-SUBRCにはがセットされます。

DELETE命令:構文ルール③(内部テーブルからのレコード削除)

続いて、内部からのレコード削除方法です。

DELETE INT_TABLE WHERE A = '1000'.

テーブルからのレコード削除と異なり、対象の内部テーブルの前に「FROM」を指定する必要がないという点に注目です。

ABAPを1から勉強したい方は

SAP/ABAPを1から学習したい初心者の方向けに、できるだけ網羅的にABAPが理解できるよう以下ページに知識体系を整理しています。

特に初心者のうちは、どこから学べばよいか?どう勉強すれば良いか?すらわからない状態になりがち。

ある程度の知識を持ったうえで、はじめて実践的な理解へとつながります。

是非、一度ご覧になってみてください。

タイトルとURLをコピーしました