セクション 5 / 10

バックグラウンドジョブ

バックグラウンドジョブの構成、スケジュールの設計、ジョブの監視と失敗時の対応を解説します。

目次を開く

バックグラウンドジョブは、対話操作を伴わずに処理を実行する仕組みです。夜間バッチ、定期的なデータ連携、長時間かかる集計処理などに使われます。

なぜバックグラウンド処理が必要か

  • ダイアログ処理には実行時間の上限がある(既定600秒)
  • 大量データの処理は、業務時間外に実行するほうがシステム負荷を分散できる
  • 定期的な処理を人手を介さず自動実行できる
  • 処理の実行履歴とログが残る

ジョブの構成

ジョブは、SM36で定義します。1つのジョブは、複数のステップから構成できます。

ジョブの構成要素
要素内容
ジョブ名識別名。命名規約を決めておくと管理しやすい
ジョブクラスA(高)、B(中)、C(低)。優先度
ステップ実行するプログラムまたは外部コマンド
バリアントプログラムに渡す選択条件
開始条件いつ実行するか
ターゲットサーバどのインスタンスで実行するか

開始条件の種類

ジョブの開始条件
条件内容用途
日時指定指定した日時に実行毎日深夜の定期処理
即時すぐに実行手動での長時間処理
先行ジョブ指定したジョブの終了後に実行処理順序の制御
イベントイベントが発生したら実行外部システムからの起動
オペレーションモードモード切替時に実行運用モードの変更に連動

先行ジョブによる連鎖は、依存関係のある処理を確実に順序どおり実行するために使います。「在庫更新が終わってから集計を実行する」といった制御が可能です。

バリアント

バリアントは、プログラムの選択画面に入力する値を保存したものです。バックグラウンド実行では画面入力ができないため、バリアントが必須になります。

ジョブの監視

SM37で、ジョブの実行状況を確認します。ステータスによって状態が分かります。

ジョブのステータス
ステータス意味
計画済ジョブは定義されたが開始条件が未設定
解放済開始条件が設定され、実行待ち
準備完了実行の直前
実行中処理中
完了正常終了
取消異常終了。ログの確認が必要

ジョブが実行されない原因

実行されないときの確認項目
原因確認方法
バックグラウンドプロセスが不足SM50でBTCプロセスの空きを確認
ジョブがリリースされていないSM37でステータスを確認
実行ユーザーの権限不足SM37のジョブログを確認
実行ユーザーがロックされているSU01でユーザーの状態を確認
ターゲットサーバが停止SM51でインスタンスの状態を確認
オペレーションモードでBTCがゼロRZ04でモード設定を確認

ジョブ設計の注意点

  • 同じジョブが多重起動しないよう、名前を一意にするか排他制御を入れる
  • 長時間ジョブは分割し、失敗時の再実行範囲を小さくする
  • 処理件数が増えても終わるよう、選択条件を絞る
  • 失敗時に通知が飛ぶ仕組みを作る(メール通知、監視ツール連携)
  • 古いジョブログは定期的に削除する(SM37から、またはRSBTCDEL2で)

📖 わからない用語は SAP用語辞典 で調べられます。

理解度チェック

このセクションの内容を確認しましょう。

確認問題 1

バックグラウンドジョブの定義(スケジュール)に使用するトランザクションコードはどれか。

確認問題 2

バックグラウンドジョブの監視・管理に使用するトランザクションコードはどれか。

確認問題 3

バックグラウンドジョブが異常終了した場合のステータスはどれか。

確認問題 4

バックグラウンドジョブの開始条件として、別のジョブの完了後に実行する設定ができる。

確認問題 5

ジョブクラスで最も優先度が高いのはどれか。

確認問題 6

周期ジョブ(Periodic Job)は1回実行した後に自動的に削除される。