こんにちは。
今回は、SAPプログラムをジョブ実行した場合の、多重実行処理を防ぐ標準プログラムについての情報です。参考にさせていただきましたのはこちらの記事です。
HOW TO PREVENT JOBS FROM RUNNING MULTIPLE TIMES IN PARALLEL
一例としてですが、周期ジョブ(サイクリックジョブ)の多重実行防止をアドオン不要で実装でき、設計やテスト工数を大きく削減できます。要件定義者や設計者の方には有用な知識になるものと思います。
内容
-
設定方法
-
試してみた
-
まとめ
設定方法
RSBTONEJOB2を実行すると以下のような選択画面が表示されます。
各項目には以下を設定します。
・JOBNAME:このプログラムをジョブ実行する際のジョブID
・REPORT:多重実行したくない実行ログラムID
・VARIANT:上記REPORTのプログラムで使用するバリアントID
このプログラムは、自身のジョブを重複チェック対象として、今実行されているのが自分自身のみだと判定した場合にREPORTで指定したプログラムを実行する(俗にいう、「キックする」)仕様となっています。自分と同じジョブIDが自分以外にも動いている時は何もせず処理を終了することで、多重実行処理を防ぐ仕様となっています。逆に言うと、REPORT:BBBBBを直接実行するジョブが存在する場合は多重実行を防ぐことはできません。
試してみた
RSBTONEJOB2のジョブ設定(トランザクション:SM36)
※ジョブ名は、RSBTONEJOB2のJOBNAMEと同じ(自分自身)
ジョブを実行の実行結果確認(トランザクション:SM37)
最初の1つのみが実行され、あとの2つはすぐ終了している。多重実行が行われていないことが確認できる。
多重実行と判定されすぐに終了したジョブのジョブログを確認。実行中の1つと自分自身で実行中ジョブが2とカウントされている。
まとめ
・RSBTONEJOB2を使用することで、アドオン不要で指定プログラムの多重実行を防ぐことができる
今回は以上となります。ありがとうございました。