タスク概要 : 完全制御ジョブスケジューリング 

完全制御方式を使用してプログラムからバックグラウンドジョブをスケジュールする場合は、以下の手順で処理を行わなければなりません。

  1. 汎用モジュール JOB_OPEN を使用してジョブを登録してください。
  2. JOB_OPEN は名称をバックグラウンドシステムに渡します。システムはジョブカウント、ジョブを識別する固有の ID 番号、そしてジョブ名を返します。

  3. ジョブに対する指定条件 ( 実行するレポートまたはプログラム、開始時刻など ) を取得してください。
  4. 独自にジョブの指定条件を取得できます。あるいは、以下の汎用モジュールを使用してジョブの指定条件を取得できます。

    - BP_START_DATE_EDITOR: バックグラウンドジョブの開始時刻指定をユーザに対して促します。

    - GET_PRINT_PARAMETERS: ユーザに印刷およびイメージアーカイブの指定を促します。また、 GET_PRINT_PARAMETERS を使用し、非対話モードでこれらの指定を自分自身で行うことができます。

    GET_PRINT_PARAMETERS はテストプログラム、あるいは印刷出力を作成しない (WRITE キーワードを持たない ) プログラムでは必須ではありません。たとえば、一連のデータベースの変更処理のみを行うバックグラウンドジョブは、 GET_PRINT_PARAMETERS のコールをインクルードする必要はありません。

    ただし、出力を生成するジョブをスケジュールする本稼動プログラムでは、必ず GET_PRINT_PARAMETERS のコールをインクルードする必要があります。インクルードしない場合、 R/3 スプールシステムはジョブが生成する出力のフォーマッティングと印刷に関してデフォルト値を使用します。結果として得られるプリントアウトは意図したものとは異なる可能性があります。

  5. 汎用モジュール JOB_SUBMIT または ABAP キーワードの SUBMIT を使用して、ジョブにステップを追加してください。
  6. ジョブにインクルードされる各プログラムは別々のジョブステップを形成します。各ジョブステップに対し、ジョブを実行する開始日付と対象システム以外の属性を個別に指定することができます。たとえば、ジョブ内のジョブステップごとに、印刷と権限に関する指定が異なっていても構いません。

    ジョブには必要数のジョブステップを追加することができます。 ABAP プログラムと外部プログラムを起動するジョブステップを混在させることができます。

    JOB_SUBMIT ABAP SUBMIT には違いが 1 つだけあります。 SUBMIT の場合、バックグラウンドジョブの開始時に、 ABAP レポートの選択基準を動的に指定することができます。 JOB_SUBMIT の場合は、レポートの既存バリアントのみが指定可能です。

    たとえば、実行時にプログラムのユーザによって対話式で ABAP レポートの選択基準が用意される場合は、 SUBMIT を使用する必要があります。 JOB_SUBMIT の場合、レポートに既存バリアントのみが指定可能です。

  7. 汎用モジュール JOB_CLOSE を使用してジョブをクローズし、バックグラウンド処理システムにそのジョブを渡します。ジョブの開始属性と実行時属性を JOB_CLOSE に指定します。

" クローズ " が完了するまでジョブを開始することはできません。

JOB_CLOSE を使用すると、ジョブがスケジュールされただけか、あるいは実行のためのリリースも行なわれたかどうかを調べることができます。ジョブがスケジュールされただけの場合は、そのジョブの実行前に管理者はそれをリリースする必要があります。ジョブが自動的にリリースされた場合は、指定された開始時刻になると直ちにこのジョブはバックグラウンド処理システムにより開始されます。

以下のいずれかが真の場合は、ジョブは単にスケジュールされるだけでリリースされません。

定期的に反復予定のジョブをスケジュールする際は、汎用モジュール BP_CALCULATE_NEXT_JOB_STARTS を使用してジョブの実行予定日を調べることができます。