データベースへのコミットを発行する命令。
対になる命令の[[ROLLBACK WORK>ABAP/ROLLBACK WORK]]もあわせてどうぞ。
* 概要 [#f80afbd6]
データベースの更新は、実は[[SQL>ABAP/SQL]]命令単体では「確定」せず、DB更新→コミットでニコイチとなる。
ここでいうコミットとは、「DBにふわっと乗せたデータを定着させるような行為」とイメージしてもらえたらよいかもしれない。
しかし、意識して実施していない場合も多いだろう。
何故それでokかというと、[[Dynpro>ABAP/Dynpro]]の切り替えや[[MESSAGE>ABAP/MESSAGE]]命令でもコミットが走るからである。
逆とも言える[[SQL>ABAP/SQL]]の戻しは、[[ROLLBACK WORK>ABAP/ROLLBACK WORK]]となる。
** 用法 [#xb0eb77d]
ヘッダと明細のある[[アドオンテーブル>SAPのオブジェクト/アドオンテーブル]]の更新など、ニコイチの処理の両方が成功した場合など。
** サンプル [#d231a9ed]
IF ( SY-SUBRC = 0 ).
COMMIT WORK.
ENDIF.
* その他 [#k2db22b5]
** MESSAGE命令に注意 [#r2652cdc]
確定したり戻したりしたい場合でも、上述の通り[[Dynpro>ABAP/Dynpro]]の切り替えや[[MESSAGE>ABAP/MESSAGE]]命令でもコミットが走ることとなる。
そのため、下記の様なコードは意味が無かったり意図したとおりに動作しないので注意。
IF ( SY-SUBRC = 0 ).
MESSAGE Sxxx(ZZxx).
COMMIT WORK.
ENDIF.
ちなみに、一般的に[[バッチインプット>SAPの拡張手段/バッチインプット]]でなく[[BAPI>SAPのオブジェクト/BAPI]]を使えと言われる理由の一つに、この命令が利用できるか否かがあり、前者は標準の画面で標準の流れに沿っているが故[[MESSAGE>ABAP/MESSAGE]]命令が発行されるため、ニコイチの処理ができないことが挙げられる。
** 関連ページ [#c2636ce2]
[[データベース変更のコミット>http://help.sap.com/saphelp_470/helpdata/ja/fc/eb3b64358411d1829f0000e829fbfe/content.htm]]
[[データベース作業論理単位 (LUW)>https://help.sap.com/saphelp_nw70/helpdata/ja/41/7af4bca79e11d1950f0000e82de14a/content.htm]]
[[データベース更新のプログラミング>http://help.sap.com/saphelp_470/helpdata/ja/41/7af4b6a79e11d1950f0000e82de14a/content.htm]]
[[SAP LUW>http://help.sap.com/saphelp_470/helpdata/ja/41/7af4bfa79e11d1950f0000e82de14a/content.htm]]
~
~
CENTER:【スポンサードリンク】
#htmlinsert(amazon_book_sap_system_implement)
~
~
----
#pcomment(reply)