SAP用語
SAPバックグラウンドジョブとは?バッチ処理の基本と運用手順
SAPのバックグラウンドジョブについて、ダイアログ処理との違い、SM36での登録、SM37での監視、ジョブログやスプールの確認、失敗時の切り分けまでを実務向けに解説します。
SAPのバックグラウンドジョブは、利用者が画面を開いたまま操作し続けるのではなく、登録した処理をSAPシステムのバックグラウンドで実行する仕組みです。大量データの集計、定期的な帳票作成、インターフェース処理、夜間のデータ更新など、開始時刻や実行条件を管理したい処理で使われます。
画面操作を伴う処理はダイアログ処理、利用者の操作から切り離して実行する処理はバックグラウンド処理として扱います。バックグラウンドジョブでは、実行ユーザー、プログラム、バリアント、開始条件、周期、前後関係をあらかじめ定義します。処理の結果はジョブログやスプールに残るため、実行後の確認と障害調査を行いやすい点も重要です。
バックグラウンドジョブの基本
ジョブを構成する要素
バックグラウンドジョブは、処理本体だけでなく、実行に必要な条件を組み合わせて登録します。代表的な要素は次のとおりです。
- ジョブ名:運用担当者が検索しやすい名前を付けます。
- 実行ユーザー:プログラムが使用する権限の基準になります。
- ステップ:ABAPプログラムや外部コマンドなど、実行する処理を定義します。
- バリアント:選択画面の値を保存し、毎回同じ条件を再利用します。
- 開始条件:日時、即時実行、前のジョブの終了などを指定します。
- 周期条件:毎日、毎週、一定間隔などの繰り返し条件を指定します。
ジョブ名は、対象業務と周期が分かる形式にすると監視しやすくなります。たとえば、売上集計、在庫連携、請求書作成など、業務領域を名前に含めると検索時の負担を減らせます。
SAPの業務領域を把握しておくと、ジョブ名や処理内容の意味を読み取りやすくなります。FI、MM、SDなどの領域とジョブの関係を整理するときは、SAPモジュールの基本も参照できます。
ダイアログ処理との使い分け
ダイアログ処理は、画面応答を確認しながら少量のデータを処理する場面に適しています。一方、バックグラウンドジョブは、処理時間が長いもの、大量の明細を扱うもの、利用者が操作しない時間帯に実行したいものに向いています。
バックグラウンド化によって画面の待ち時間を減らせますが、処理が自動化されるほど、入力値や実行ユーザーの権限を事前に確認する必要があります。特に更新処理では、テスト用バリアントと本番用バリアントを分け、対象会社コード、期間、対象組織などを明確に管理します。
ジョブを登録する手順
SM36で基本情報を設定する
ジョブの登録とスケジュール設定には、SAP GUIのSM36を使用します。実務では次の順序で登録すると、設定漏れを抑えられます。
- SM36を開き、ジョブ名とジョブクラスを入力します。
- 実行ユーザーを確認します。
- ステップを登録し、ABAPプログラム、バリアント、必要な印刷設定を指定します。
- 開始条件を登録します。
- 定期実行の場合は周期条件を設定します。
- 保存後、ジョブの状態と次回実行日時を確認します。
ジョブクラスは、処理の優先度やシステム運用上の扱いに関係します。通常の定期処理、業務上の優先処理、緊急性の高い処理など、運用ルールに沿って選択します。高い優先度を多用すると、他の処理やオンライン利用者に影響するため、業務責任者と合意した基準を用います。
ジョブを登録する前に、同じプログラムをダイアログで実行したときの選択条件を確認します。バリアントに固定値が残っていると、意図しない期間や組織のデータを処理する可能性があります。
実行ユーザーと権限を確認する
バックグラウンドジョブは、登録画面を操作した利用者ではなく、ジョブに設定された実行ユーザーの権限で処理されます。対象プログラムの実行権限、対象データへの権限、バリアントの利用権限などを確認します。
権限不足の場合、ジョブは開始されてもステップで失敗することがあります。開発環境で成功した設定を本番環境へ移送する場合は、実行ユーザー、バリアント、対象データ、接続先の差異を確認してからスケジュールします。
SAPの用語を整理しながら運用設計を進める場合は、SAPクライアントの意味と使い分けも役立ちます。クライアントをまたぐ処理では、ログイン先とデータ対象を必ず確認してください。
ジョブの実行状態を監視する
SM37で検索する
ジョブの監視には、SAP GUIのSM37を使用します。ジョブ名、ユーザー、日付、時刻、状態などの条件を指定して検索し、対象ジョブの実行状況を確認します。
代表的な状態には、登録済み、リリース済み、実行中、終了済み、キャンセルがあります。登録直後に開始条件が未設定の場合、ジョブは実行可能な状態にならず、次回実行日時も設定されません。周期ジョブでは、現在の実行結果だけでなく、次回実行の予定も確認します。
監視担当者が日常的に確認する項目は次のとおりです。
- 長時間実行中のジョブがないか
- 予定時刻を過ぎても開始していないジョブがないか
- キャンセルされたジョブがないか
- 周期ジョブの次回実行が設定されているか
- ジョブログにエラーや警告が出ていないか
- 必要なスプールが作成されているか
より具体的な検索条件やログ確認の流れは、SAPバックグラウンドジョブをSM37で監視する方法にまとめています。
ジョブログとスプールを確認する
ジョブログには、ジョブの開始、ステップ、終了、メッセージなどが記録されます。処理がキャンセルされた場合は、最初にジョブログを開き、エラーが発生したステップとメッセージ番号を確認します。
帳票や一覧を出力するジョブでは、スプールの有無と内容も確認します。ジョブが正常終了していても、出力先や印刷設定が適切でなければ、利用者が必要な帳票を受け取れないことがあります。
IDocを扱うジョブでは、ジョブの成否だけでなく、作成または処理されたIDocの状態も確認します。ジョブとIDocの関係を整理する場合は、SAPのIDocとは何かも参照してください。
ジョブが失敗したときの切り分け
まず確認する順序
ジョブが失敗したときは、次の順序で確認すると原因を絞り込みやすくなります。
- SM37で対象ジョブの状態、開始時刻、終了時刻を確認します。
- ジョブログで、失敗したステップとエラーメッセージを確認します。
- ステップのプログラム名、バリアント、実行ユーザーを確認します。
- 同じバリアントをダイアログで実行し、入力条件の妥当性を確認します。
- 対象データ、ロック、接続先、ファイルパスなどの前提条件を確認します。
- 再実行の可否と、重複更新を防ぐ手順を判断します。
ジョブログに権限エラーがある場合は、実行ユーザーの権限と対象データを確認します。対象データが存在しない場合は、前提となるジョブが正常終了したか、処理対象期間が正しいかを確認します。
長時間実行と重複実行への対応
長時間実行のジョブは、処理対象件数、データベース負荷、ロック、外部システムとの通信待ちなどを確認します。実行中のジョブを停止する前に、途中まで更新される処理か、再実行時に重複登録が起きるかを業務仕様で判断します。
周期ジョブが重複して登録されると、同じデータを並行して処理したり、不要な負荷を発生させたりします。ジョブ名、実行ユーザー、周期条件、開始条件を検索し、同じ処理の登録状況を整理します。
外部ファイルを扱う場合は、ファイルの存在、読み取り権限、文字コード、ディレクトリ、処理済みファイルの扱いを確認します。ファイル連携では、ジョブが正常終了しても連携先で受信できているとは限らないため、送受信側のログも照合します。
運用で定着させるポイント
命名と記録を標準化する
ジョブ名、ステップ名、バリアント名に一定の規則を設けると、監視と障害対応が速くなります。業務領域、処理内容、周期、環境を表す情報を組み合わせ、名前だけで対象を推測できるようにします。
運用台帳には、ジョブ名、目的、実行ユーザー、プログラム、バリアント、開始条件、周期、担当者、異常時の連絡先、再実行手順を記録します。ジョブの移送や設定変更を行った場合は、変更日と変更理由も残します。
SAPのトランザクションコードを業務別に整理したい場合は、SAPトランザクションコード一覧を参照できます。SM36とSM37を含む運用手順を一覧化すると、担当者間の引き継ぎにも利用できます。
変更後に確認する
プログラム、バリアント、権限、接続先、ファイル配置を変更した場合は、次回の本番実行を待たずに確認用の実行を行います。変更対象が周期ジョブの場合、次回実行時刻と有効な周期条件を確認します。
障害後に再実行する場合は、失敗した処理がどこまで完了したかを確認します。再実行による二重計上、二重送信、重複登録を防ぐため、業務データと外部連携の状態を確認してから実行します。
バックグラウンドジョブは、登録して終わりではなく、実行結果を定期的に確認し、不要になったジョブや古いスプールを運用ルールに従って整理することで、安定した運用につながります。