バックグラウンドジョブのスケジュール
SAPでは、定期的に実行したい処理や長時間かかる大量データ処理などを「ジョブ」としてバックグラウンドで実行することができます。ジョブを登録する際に利用する代表的なトランザクションが「SM36」です。本記事では、SM36を使ってジョブを登録する方法をステップごとに解説します。
1. バックグラウンドジョブとは
バックグラウンドジョブとは、SAPシステム上でユーザーの対話(インタラクティブ)操作なしに実行されるプログラムのことを指します。通常のオンライン対話処理と異なり、以下のような特徴があります。
- ユーザーがログオンしていなくても自動で実行される
- 一定のスケジュールや条件に従って自動実行できる
- 大量データの処理、定期バッチの実行などに適している
SAPでは、SM36を使用してジョブを登録・設定し、その実行状況をSM37で確認するのが一般的な手順となります。
2. SM36の起動
- SAPログオンパッドで対象のSAPシステムにログインします。
- コマンドフィールド(画面上部の入力欄)に
/nSM36
と入力し、「Enter」キーを押下します。
SM36のメイン画面が表示されます。
3. ジョブの基本情報を入力
3.1 ジョブ名の入力
- 画面上部の「ジョブ名」欄に任意のジョブ名を入力します。
例:Z_SAMPLE_JOB
など
※ システム上、一意に識別できる名前をつけておくと後から参照しやすくなります。
3.2 ジョブクラスの指定
- 「ジョブクラス」は通常、デフォルトの“C”のままで問題ありません。
ジョブクラスは優先度を表しており、A > B > Cの順で優先度が高くなります。特別な理由がない場合はCクラスを使用します。
3.3 ターゲットサーバの指定(任意)
- 「ターゲットサーバ」に特定のアプリケーションサーバを指定することで、そのサーバ上でジョブを実行できます。空欄にしておくと、ジョブ実行時に最も負荷が少ないサーバが自動選択されますので、通常は空欄のままにします。
以上の情報を入力したら、「ジョブを定義」ボタン(または「ステップ」ボタン)をクリックして次のステップに進みます。
4. ステップ(ジョブに登録する処理)の設定
ジョブに登録するプログラムやコマンドを「ステップ」として定義します。複数ステップを設定することで、複数のプログラムや処理を連続して実行させることができます。
4.1 ステップの追加
- 「新規ステップ」ボタンをクリックし、以下の項目を入力します。
- ユーザ:ジョブの実行ユーザを指定(デフォルトはログイン中のユーザ名)
- ABAPプログラム:実行したいABAPプログラムを指定(
RSBTCDEL2
,RSPO0041
,Z_◯◯◯
など) - 外部プログラム:OS上のスクリプトやプログラムを指定
- 外部コマンド:SAPに登録された外部コマンドを指定
- バリアント:プログラムがパラメータを受け取る場合はバリアント(パラメータセット)を指定
- 入力が完了したら、「確認」ボタンを押下してステップ定義を保存します。
4.2 ステップの登録完了
- 複数のプログラムを連続実行したい場合は、同様にステップを追加していきます。
- 登録が終わったら、前の画面に戻ります。
5. ジョブの開始条件(Start Condition)の設定
ジョブの実行タイミングを指定します。通常は以下のような設定を行います。
- SM36のメイン画面で「開始条件」ボタンをクリック
- 日時指定:ジョブをいつ開始するか日付や時刻を指定
- 即時(Immediate): ジョブを保存した直後に即時実行
- 日付/時刻(Date/Time): 指定した日付・時刻にジョブを開始
- ジョブ後(After Job): 他のジョブが正常終了した後に自動で実行
- 先行イベント(After Event): 指定したイベントが発生したタイミングでジョブを起動
- 操作モード(Operation Mode): 運用モード切り替えの瞬間をトリガーにジョブを開始
- 追加設定(Further Settings): 稼働日やカレンダーなどの追加オプションを指定
- 入力が完了したら、「確認」ボタンを押下してステップ定義を保存します。
6. ジョブの保存
ジョブ名、ステップ、開始条件の設定が完了したら、SM36の画面で「保存(Save)」をクリックします。これでジョブがバックグラウンドで実行できるように登録されます。
7. ジョブの確認(SM37)
登録したジョブが正しく設定され、実行されるかどうかを確認するには、トランザクション「SM37」を使用します。
- コマンドフィールドに
/nSM37
と入力し「Enter」 - 検索条件として「ジョブ名」や「ユーザー名」、「ジョブのステータス(予定、実行中、終了、キャンセル)」などを指定
- 「実行」ボタンをクリックして検索結果を表示
- 表示されたジョブのステータスを確認
- Scheduled:スケジュールされている(開始待ち)
- Released:開始条件を満たしたら実行される状態
- Active:実行中
- Finished:実行正常終了
- Cancelled:エラー終了
ジョブログやスプールなどを確認したい場合は、各ジョブ行を選択して「ジョブログ」や「スプール」ボタンをクリックします。
8. トラブルシューティングのポイント
- ジョブが開始されない:
- 開始条件(日時やイベント)が正しく設定されているか
- ジョブがReleased状態になっているか
- ジョブがキャンセル(Cancelled)になった:
- ジョブログ(SM37から確認)をチェックし、エラーメッセージを確認
- 実行プログラム内で不正なパラメータや権限エラーなどがないかを確認
- スプールが生成されない:
- プログラムのスプール設定を見直し
- ジョブステップのスプールパラメータを設定しているかチェック
3. 開始条件(Start Condition)の詳細
3.1 即時(Immediate)
- 即時(Immediate)
- これを選択すると、ジョブを「保存」した瞬間に “Released” 状態となり、すぐにジョブが実行されます。
- 文字どおり「今すぐに実行したい」場合に選択するオプションです。
- 繰り返し設定(日次、週次など)はできないので、一度きりの実行となります。
3.2 日付/時刻(Date/Time)
- 日付/時刻(Date/Time)
- いつジョブを開始するか、具体的な「日付」と「時刻」を開始予定(Scheduled Start)入力します。
- 例:
- 日付:
2025/01/20
- 時刻:
01:00:00
- 日付:
- この日時に1回だけ実行されますが、**周期ジョブ(定期ジョブ)**にしたい場合は、下記の「Further Settings」などから繰り返し間隔を指定します。
- いつジョブを終了するかは、最終実行日(No Start After)に入力します。
- システムゾーン(System Zone)は、通常はそのシステムで設定されたタイムゾーンを利用します。他のタイムゾーンを利用する必要がある場合は、代替タイムゾーンを使用(Use Alternative Time Zone)にチェックを入れ、タイムゾーンを指定します。
3.3 ジョブ後(After Job)
- ジョブ後(After Job)
- ほかのジョブが正常終了したタイミングをトリガーとして、今回登録するジョブを開始できます。
- 例:
- 「ジョブ名:
SAP_REORG_SPOOL
が終了したらこのジョブを開始する」
- 「ジョブ名:
- 処理の依存関係を明確にし、順序どおりにジョブを連鎖実行したい場合に便利です。
- 指定したジョブがキャンセル終了(エラー終了)した場合は、後続ジョブが開始されません。
3.4 先行イベント(After Event)
- 先行イベント(After Event)
- SAP内部でイベントが発行されたタイミングでジョブを起動する設定です。
- イベント名を指定し、必要に応じてパラメータを入力します。
- インターフェース連携のトリガーにも応用可能です。
3.5 操作モード(Operation Mode)
- 操作モード(Operation Mode)
- SAPシステムでは、時間帯や負荷状況に応じて「オペレーションモード」が切り替わることがあります(背景ワークプロセスやダイアログワークプロセスの割り当てを変更する機能)。
- ここを指定すると、指定したオペレーションモードに切り替わったタイミングでジョブを起動できます。
- 主に大規模システムの運用などで、夜間帯に背景処理に多くのリソースを割くようにし、オペレーションモードが変わった瞬間にジョブを開始する場合などに利用します。
3.6 追加設定(Further Settings)
- 追加設定(Further Settings) では、稼働日やカレンダーなどの追加オプションを設定できます。
まとめ
SAPのバックグラウンドジョブは、大量データの処理や定期的なバッチ処理を自動化するうえで非常に便利な機能です。SM36でジョブを登録し、実際の実行状況やログはSM37で確認する流れが基本となります。本記事で紹介した手順を踏めば、容易にジョブを登録し、スケジューリングやログ確認が可能です。
中~大規模なシステムではSM36ではなく、JP1などのジョブ管理システムでSAPジョブをスケジュールすることが通常ですが、SAP標準ジョブやSM36の方が都合の良い処理、小規模なシステムでは現在も利用されていると思います。
また、JP1などでスケジュールしたジョブの実際の処理はSAP側で実行されるので、ジョブの仕組みを理解するうえではSM36でジョブ作成の練習をしておくと良いでしょう。
コメント