BAPIとバッチインプット、どっちを実装しよう・・・と考えることがある。
判断基準は個々人あると思うが、しいて言えば”コミット制御”が必要かどうか、だと思う。
BAPIの場合、基本的にBAPIの汎用モジュールを通した後でCOMMIT WORKを実行しなければDBが更新されない。※一部内部コミットするBAPIもある
一方、バッチインプットは結局標準の画面を操作してるのと同じであるため、自動でコミットがかかる。
例えば1つのアドオンの中で最初に①伝票取消、次に②伝票登録、という処理を行うとする。
①②の処理でバッチインプットを採用している場合、②でエラーが発生し処理終了したとしても①のみDB更新された状態になってしまう。
一方BAPIであれば②でエラー発生時にROLLBACKを組み込むことで①②ともにアドオン実行前の状態で処理終了することができる。
①②ともに正常だった場合は、最後にCOMMIT WORKすればDB更新がかけられる。
タイトルの通りだが、このようにコミットのタイミングを調整できるのがBAPIの利点かな。