SAP Basis
SAP SM37でバックグラウンドジョブを監視・分析する実務手順
SAPのSM37でバックグラウンドジョブを検索し、SM36のスケジュール設定、ジョブログ、実行時間、失敗原因を確認する実務手順を解説します。
SAPのバックグラウンドジョブは、帳票出力、データ連携、定期集計、クリーンアップなどを対話処理から切り離して実行します。運用では、単にジョブが終了したかを見るだけでなく、予定どおり開始したか、実行時間が急増していないか、同じ失敗が繰り返されていないかを確認します。中心となるトランザクションは、ジョブの監視と分析に使うSM37、登録とスケジュール設定に使うSM36です。
SM37でジョブを検索する
SAP GUIでSM37を開き、検索条件を絞って対象ジョブを表示します。最初から広い期間や全ユーザーを指定すると一覧が見づらくなるため、ジョブ名、ユーザー名、開始日、開始時刻、ステータスを業務に合わせて入力します。ジョブ名が分からない場合は、ワイルドカードを使った名前検索と実行期間の組み合わせが実用的です。
主な確認対象は次のステータスです。
- Scheduled:実行条件を持つスケジュール済みの状態
- Released:実行待ちとして解放された状態
- Ready:実行開始を待つ状態
- Running:処理を実行中の状態
- Finished:正常終了した状態
- Canceled:キャンセルまたは異常終了した状態
一覧では、ジョブ名、ジョブ番号、作成ユーザー、開始条件、開始日時、終了日時を確認します。同じ名前のジョブが複数存在する場合は、ジョブ番号と実行日時を組み合わせて対象を特定します。定期ジョブでは、前回実行と今回実行の間隔も確認すると、スケジュールのずれを見つけやすくなります。
ジョブログを読む
対象ジョブを選択してジョブログを開き、処理ステップごとのメッセージを確認します。ジョブログには、プログラムが出力した情報、選択条件、処理件数、警告、エラーの手掛かりが含まれます。最終行だけで判断せず、最初に異常が発生した時刻と、その直前のメッセージから読み進めます。
ログを読むときは、次の順番で整理します。
- ジョブが実行された対象クライアント、ユーザー、実行日時を確認する
- 実行されたABAPプログラムまたはレポート名を確認する
- エラー、警告、選択条件、対象データ件数を確認する
- 同じジョブの過去ログと結果を比較する
- 業務担当者に影響範囲と再実行の可否を確認する
権限エラー、選択条件の不備、対象データのロック、論理ファイルやバリアントの問題は、ジョブログに直接的な手掛かりが出ることがあります。ABAP実行時のダンプが記録されている場合は、ST22でダンプの発生時刻とユーザー、プログラム、エラー内容を照合します。詳しい切り分けには、ABAPダンプ分析(ST22)も参照できます。
失敗ジョブを切り分ける
ジョブがCanceledになったら、まず再実行せずにジョブログ、ジョブステップ、実行ユーザー、バリアントを保存します。再実行によって同じデータを二重登録したり、外部システムへ重複送信したりする処理があるためです。特に請求、支払、在庫更新、インターフェース送信を含むジョブでは、業務側の確認を先に行います。
代表的な切り分けは次のとおりです。
- 権限不足:実行ユーザーに必要な権限があるか、同じユーザーで対象処理を対話実行できるかを確認する
- バリアント不備:日付、会社コード、プラント、ファイル名などの値を確認する
- データロック:対象伝票やマスタを別処理が保持していないか確認する
- リソース不足:実行時間の急増、ワークプロセスの混雑、OSやデータベースの負荷を確認する
- 外部連携の停止:RFC宛先、ファイル配置、受信側の稼働状態を確認する
- プログラムエラー:ST22のダンプ、システムログ、アプリケーションログを時刻で照合する
システム全体のイベントやプロセス関連の記録を確認する場合は、SM21のシステムログを使います。SAPシステムログ(SM21)の確認手順では、発生時刻を起点にログを絞り込む考え方を確認できます。
実行時間と遅延を監視する
ジョブ監視では、失敗だけでなく性能劣化も重要です。毎日30分で終わるジョブが突然2時間かかる場合、ジョブ自体がFinishedでも後続処理や業務開始時刻に影響します。SM37で実行時間を過去の正常実績と比較し、開始待ち時間と実行時間を分けて確認します。
開始前から長く待っている場合は、解放条件、開始条件、バックグラウンドワークプロセスの空き状況を確認します。実行開始後に時間が延びている場合は、処理対象件数、データベース負荷、ロック、外部通信、プログラムの実行計画などを調べます。業務上の締め処理と重なる時間帯に遅延が集中するなら、ジョブの開始時刻や実行順序を見直します。
監視表には、ジョブ名、ジョブ番号、実行ユーザー、予定時刻、実績開始時刻、実績終了時刻、ステータス、処置、担当者、確認日時を記録します。ジョブ名だけをキーにせず、ジョブ番号と実行日時を記録することで、同名ジョブの取り違えを防げます。
SM36でスケジュールを確認する
SM36では、ジョブ名、実行ユーザー、ステップ、バリアント、開始条件を登録します。定期実行では、開始日時、周期、休日の扱い、イベント開始、先行ジョブ終了後の開始などを確認します。監視で未実行を検知した場合は、SM37の状態だけでなく、SM36で設定された開始条件まで確認します。
スケジュール確認では、次の項目を記録します。
- 実行頻度と次回実行日時
- ジョブを登録したユーザーと実行ユーザー
- 使用するプログラム、バリアント、ステップ
- 先行ジョブまたはイベントの依存関係
- 対象クライアントと業務上の実行時間帯
- 失敗時の通知先と再実行手順
スケジュール変更後は、変更前後の設定を保存し、次回実行の結果を確認します。定期ジョブを複製すると、同じ処理が複数のスケジュールから起動することがあるため、既存の同名ジョブと開始条件を確認してから登録します。
再実行とキャンセルを安全に行う
失敗ジョブの再実行は、原因とデータ影響を確認してから行います。再実行前に、対象期間、伝票範囲、外部送信の有無、コミット済みデータ、後続ジョブの状態を確認します。部分的に処理が完了しているジョブでは、同じ範囲をそのまま再実行せず、アプリケーション担当者と再処理方法を決めます。
実行中ジョブをキャンセルする場合は、業務影響とデータ整合性を確認します。キャンセル後にロックや一時ファイルが残る処理では、関連する後処理も必要になります。大量データを扱うジョブを即時に再実行すると、同じリソース競合が再発するため、負荷の低い時間帯に計画します。
トランザクションの役割を横断的に確認したい場合は、SAPトランザクションコード一覧を参照すると、SM36、SM37、SM21、ST22などの位置付けを整理できます。
日次の監視手順を標準化する
日次運用では、当日分のCanceledジョブ、開始予定時刻を過ぎても開始していないジョブ、実行時間が基準を超えたジョブを確認します。続いて、重要な定期ジョブのFinished件数、後続ジョブの待機状態、外部連携の送受信結果を確認します。
週次では、失敗回数の多いジョブ、実行時間が伸びているジョブ、不要なスケジュール、古いジョブログの増加を確認します。月次では、業務カレンダーや締め処理に合わせて、休日設定、実行順序、通知先、担当者を見直します。
運用手順書には、監視対象、確認時刻、正常判定、異常判定、一次対応、エスカレーション先、再実行の承認者を明記します。障害発生時は、SM37の一覧、ジョブログ、ST22やSM21の関連記録を時刻付きで保存すると、原因分析と引き継ぎが容易になります。
SAP Basisの運用全体でジョブ監視の位置付けを整理する場合は、SAP Basisシステム管理の実務ガイドと組み合わせて確認してください。