トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

ABAP/DELETE

Last-modified: 2016-05-16 (月) 18:44:00
Top/ABAP/DELETE

内部テーブルまたはアドオンテーブルのデータの削除に使用する。

概要

用法

不要な行データの削除に使用する。

内部テーブルアドオンテーブルの双方に共通するのは、条件に合致する行を一括で削除した方が良いことで、プログラムのトレースやパフォーマンスの観点から個別に削除するよりも優れる。

なお、あるべき論で言えば必要なデータを必要なだけ過不足のなく抽出すればよいのだが、あまり抽出条件がややこしくなるとSELECTなどSQL命令のパフォーマンスが悪化してしまう。

そのため、テーブルからは「荒め」な条件でデータを抽出し、抽出後の処理で読み飛ばしたり、この命令で削除したりというのも実践的なコーディングなのかと思う。

サンプル

内部テーブル

DELETE L_IT_ORDER
 WHERE VTWEG <> P_VTWEG
   AND MATKL  = P_MATKL.  

アドオンテーブル

DELETE FROM ZZLINEITEM 
      WHERE VTWEG <> P_VTWEG
        AND MATKL  = P_MATKL.

データベーステーブルに対して行う場合は、DELETE命令の後にCOMMITまたはROLLBACK命令を発行する必要があり、これを意識しておかないと後続のMESSAGE文などにより意図しない結果となる可能性がある。

その他

LOOP内で内部テーブルの行を削除する場合は特に注意が必要で、対象となる内部テーブルのINDEXを把握しておく必要があり、これを考慮しないとショートダンプが発生する場合もある。 まぁ、そもそもLOOPに回しているテーブルを削除するのはあまり良いロジックではないのだが。



【スポンサードリンク】
amazon_book_sap_system_implement is not found or not readable.




コメントはありません。 Comments/ABAP/DELETE

お名前: