ローカル更新では、更新プログラムは要求を処理したのと同じワークプロセスによって実行されます。ダイアログユーザは更新が終了するまで待ってから追加データを入力しなければなりません。データベースへのアクセス量を減らしたいときに、この更新が便利です。ローカル更新のデメリットはその並列性にあります。更新は多くの異なるワークプロセスが処理することができます。非同期更新や同期更新の場合はこれとは異なり、更新ワークプロセスが少ない(おそらく1つしか存在しない)ため、更新はシリアル化されます。
ローカル更新に切り替えるときは、 ABAP 命令 SET UPDATE TASK LOCAL を使用します。この命令で‘ローカル更新切替’が設定されます。この切替が設定されると、 CALL FUNCTION IN UPDATE TASK がローカル更新要求として認識されます。更新は COMMIT WORK を含むダイアログステップと同じワークプロセスで処理されます。トランザクションは更新が終了するまで待ってから処理を続行します。
1つの例として、通常はダイアログモードで実行する非同期更新を使用するプログラムがあるとします。しかし、今度はそのプログラムをバックグラウンドで実行したいとします。プログラムをバックグラウンドで実行するときはシステム応答時間は無関係であり、更新が実際に終了したときはプログラムに処理を続行させたいだけなので、プログラムに SET UPDATE TASK LOCAL スイッチを設定することができます。そのうえでシステム変数を使って、プログラムが現在バックグラウンドで実行中かどうか、実行時にチェックすることができます。
デフォルトでは、ローカル更新スイッチは設定されず、各 COMMIT WORK または ROLLBACK WORK 後にリセットされます。したがって、各 SAP LUW の前に SET UPDATE TASK LOCAL 命令をインクルードする必要があります。
ローカル更新のなかでデータをリセットすると、 ROLLBACK WORK 命令がトランザクションのダイアログ部と更新部の両方に適用されます。なぜならば、新規の SAP LUW がその更新に対して開始されないからです。
参考文献