PR

【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から勉強したい方は

初めてABAPを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。

ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?

あなたの技術、もっと価値ある場所で活かしませんか?
SAPエンジニアのキャリア支援はこちらから↓

No.1 > 外資系・IT業界などハイクラスの転職なら【アクシスコンサルティング】blank
4人に1人のコンサルタントが選ぶパートナー!
ビッグ4やアクセンチュアへの転職を実現し年収1000万へ。

No.2 > IT・Web転職特化エージェント【レバテックキャリアblank
blank
サービス利用者数20万人突破。

平均年収アップ率77%であなたの転職成功を保証します。

No.3 > blankリクルートエージェント
blank
\転職支援実績NO.1/

応募が殺到しすぎるが故に・・・非公開にせざるを得ない魅力的な求人が多数!

読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
ABAPSAP
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました