今回は、SAP運用で避けては通れないSAPジョブの解説とJOBログの確認方法について解説していきます。
夜間や日中に自動起動させているSAPジョブですが、多くの場合は、JP1やA -AUTO、Joc Centerなど外部のジョブ管理ツールにてスケジューリングしたタイミングでSAPのプログラムを起動する形で本番運用していると思います。
プログラムでエラーが生じた場合は、それらのツールからシステム担当者にエラー通知が発信され、アプリケーション担当者に連絡が来くることがあると思います。この時に、エラー内容をどのように確認し、ログを確認するかについて説明していきますので、ぜひ参考にしてみてください!
この記事のポイント
SAPジョブとは
SAPジョブとは、指定した 実行条件 を満たした場合に、指定した プログラム を事前に指定した 設定内容(バリアント) で実行し、結果を 出力先 に出力する処理のことです。
基本的に、T-CODE:SM36を使用しSAP内で登録していきますが、上述した通り、JP1などの外部システムからサーバーやプログラムID、バリアントを指定し実行することも可能です。
基本的な設定項目は下記のとおりです。
- プログラムID:実行するプログラムIDを設定
- バリアント:プログラムの選択条件値を保存したもの
- 出力デバイスと出力設定:処理結果の出力先と出力設定(ステップ単位で設定)
- 実行条件:処理を開始する条件(ジョブ単位で設定)*
*外部システムを使用する場合は、そちらで設定することがほとんどです。
もっと詳しく💡“バックグランド実行とフォアグラウンド実行”
SAPのプログラム実行には、バックグランド実行とフォアグラウンド実行(オンライン実行)があります。
SAPジョブはバックグランド実行で行われ、GUIの画面上ではその処理をリアルタイムで見ることはできません。その代わり、実行タイミングの設定やジョブログとして実行結果が残ることが特徴です。バックグランド実行の実行の仕方は、T-CODE:SE38の第1画面やプログラムの選択画面(下記スクショを参照)、T-CODE:SM36でのジョブ設定からそれぞれ行うことができます。
バックグランド実行
一方で、フォアグラウンド実行は、特定のプログラム画面から時計マークの実行ボタンを押下して実行することを指します。ユーザーが行う処理は、この実行を使うことが多いです。
実行ログの参照方法(SM37)
夜間や日中に自動起動させているプログラムにエラーが発生した場合には、まずはジョブログの確認をすることになります。
ジョブログを確認するために使用するのがT-CODE:SM37です。
このトランザクションでは、ジョブ実行したプログラムが正常終了したのか、エラー終了したのかや、どのようなログを出力しているのかを確認することができます。ジョブログを見れば、どのメッセージクラスのどのメッセージを出力したのかが確認できるため、該当のメッセージの詳細な内容や使用先などをT-CODE:SE91から確認することができます。
1.対象のジョブを特定
T-CODE:SM37の選択画面から、プログラムIDや実行ユーザー(SAPジョブの登録者ID)、実行日付/時間、ABAPプログラムなどの条件を指定し対象のジョブを特定していきます。
尚、ジョブステータスの“計画済み”については、SM36でスケジュールされたジョブのみが該当します。JP1などの外部の管理ツールを使用している場合は、即時実行がほとんどな為、計画済みのSAPジョブとしては登録されていません。
今回の例では、受注伝票からの出力プログラム(T-CODE:VA71)のSAPジョブを参照していきます。
SM37の選択画面
あわせて読みたい
【SAP SD】販売出力マスタ(Output Master)について解説
この記事を読むメリット SAPのSDモジュールでの出力マスタ(Output Master)の概要と登録方法が理解できます。 博士!伝票から帳票を出力したいのですが、どうすればいい…
参照されたListの1行目はエラーが起きたSAPジョブで、2行目は正常終了したSAPジョブです。
この2つの実行結果を例に、それぞれの結果を見ていきましょう!
※Statusが分かりやすく異常終了となっている場合もありますが、今回の場合はジョブログを見てエラーと分かるパターンになります。
SM37の検索結果
1行目はT-CODE:VA71の画面から直接バックグランド実行をし、2行目は2行目はT-CODE:SM36でSAPジョブを登録してバックグランド実行させたものです。
そのため、1行目はVA71のプログラム名がそのままJOB名として採用された一方、2行目はSAPジョブを登録した時に入力したJOB名が採用されています。
2.ジョブログの確認
ステップ
ステップでは、そのジョブのステップ一覧が参照でき、ステップごとのプログラムIDやバリアント、スプールが参照できます。今回の例ではステップは1つしかないですが、
例えば、ステップ1:ATPチェック→ステップ2:D/O作成→ステップ3:Picking List出力のように連続したSAPジョブを組んでいる場合は、このステップからそれぞれの実行結果を確認できます。
SM37)ステップ
もっと詳しく💡“バリアントの中身を確認”
プログラムエラーの原因を特定するために、どのような条件でプログラムが実行されたのかを確認するケースはよくあると思います。そのような時に、ジョブログからバリアントをダブルクリックすると下記のように、その時使用した設定値を参照することができます。
さらに、詳細のバリアント情報を確認したい場合は、ジョブログからバリアントを特定し、下記の手順で参照することができます。
- T-CODE:SE38を開く
- プログラムIDを入力し、サブオブジェクトでバリアントを選択し照会する
- 更に該当のバリアントを選択し照会する
- “値✎”ボタンから具体的な選択画面も照会できる
- “バリアント属性”から日付などの選択変数も照会できる
ジョブログ
ジョブログでは、処理が始まってから終了するまでの処理結果を時系列に並べて一覧化してくれています。これを見ると、処理対象のオブジェクトの件数や、それぞれの処理結果のメッセージ内容、クラスおよび番号がわかります。これらにより、おおよそどの処理でエラーが発生したのかを推測することができます。また、各処理の処理時間も確認できます。
SM37)ジョブログ
今回のエラーは、対象の伝票が変更モードで開かれており、テーブルが排他ロックになっていたことが原因でした。今回のケースは、ABAPのショートダンプでもなく、T-CODE:SE91でも原因特定が難しいため、オンライン実行で処理を順を追って見ていくと実行ログから「対象がブロック中」という文言が読み取れ、排他ブロックがかかっていると気が付くことができました。
スプール
スプールは、ジョブの出力内容を記録するSAPシステム上のデータ領域であり、今回の例ではPDFデータであったが、他にもList形式などがあります。実行系のプログラムでは、対象の伝票番号と実行結果をリスト化したものがスプールとして出力されることが多いです。
SM37からスプール参照
まとめ
今回は、SAPジョブの概要とジョブログの確認方法について紹介しました。
SAPジョブでエラーが発生した場合、まずはT-CODE:SM37でジョブログを見るのが王道のアプローチです。
実際の保守業務などでは、そこからさらにショートダンプの確認やアプリケーションログを確認したりして原因分析をしていく手段があります。そのあたりは別の機会で解説していきますね!
最後まで読んでいただきありがとうございました!