サンプルプログラム
: JOB_CLOSE
の先行ジョブ待機
*
先行のジョブの正常終了時に開始されます。この例では、ユーザはジョブ一覧から先行ジョブを選択します。ジョブは
BP_JOB_SELECT
を使用して選択され、
BP_JOBLIST_PROCESSOR
を使用してユーザに選択肢を表示します。
*
*
重要
:
プログラムで
(
対話式に選択するのではなく
)
先行ジョブを直接指定する場合、後続ジョブのスケジュールの際に、先行ジョブのステータスが
スケジュール済またはリリース済となっていることを確認してください。これ以外のステータスの場合、後続スケジュール処理はエラーとなります。つまり、有効なジョブあるいはすでに完了しているジョブは先行ジョブとして指定できません。
*
*
データ宣言
: BP_JOB_SELECT
および
BP_JOBLIST_PROCESSOR
*
DATA JSELECT LIKE BTCSELECT.
DATA SEL_JOBLIST LIKE TBTCJOB OCCURS 100 WITH HEADER LINE.
DATA SELECTED_JOB LIKE TBTCJOB.
*
バックグラウンド処理管理トランザクション
(SM37)
の場合と同様にジョブ一覧を生成
*
サンプル選択基準
*
JSELECT-JOBNAME = '
ジョブの名称
'.
JSELECT-JOBCOUNT = '<
ジョブカウント
>'.
JSELECT-USERNAME = SY-UNAME.
CALL FUNCTION 'BP_JOB_SELECT'
EXPORTING
JOBSELECT_DIALOG = BTC_YES “
ユーザに一覧を表示
JOBSEL_PARAM_IN = JSELECT “
デフォルトジョブ選択基準
IMPORTING
JOBSEL_PARAM_OUT = JSELECT “
ユーザのジョブ選択基準
TABLES
JOBSELECT_JOBLIST = SEL_JOBLIST
EXCEPTIONS
INVALID_DIALOG_TYPE = 1
JOBNAME_MISSING = 2
NO_JOBS_FOUND = 3
SELECTION_CANCELED = 4
USERNAME_MISSING = 5
OTHERS = 99.
*
*
ユーザに一覧からジョブを選択するように要求します。選択されたジョブは
*
先行ジョブです。
*
call function 'BP_JOBLIST_PROCESSOR'
exporting
joblist_opcode = btc_joblist_select
"
ユーザが一覧からジョブを選択可能な
"
モードでプロセッサを起動。選択されたジョブは
" joblist_sel_job
パラメータに返されます。
joblist_refr_param = jselect
"
リフレッシュ機能向けの
"
ユーザのジョブ選択パラメータ
importing
joblist_sel_job = selected_job
"
ユーザがジョブ一覧から
"
選択されたジョブを返します。
tables
joblist = sel_joblist
" BP_JOBLIST_SELECT
からの入力
exceptions
invalid_opcode = 1
joblist_is_empty = 2
joblist_processor_canceled = 3
others = 4.
*
*
ユーザにより選択された先行ジョブを使用するスケジュールジョブ。
*
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
JOBCOUNT = SELECTED_JOB-JOBCOUNT
“ BP_JOBLIST_PROCESSOR
からのジョブ
ID
JOBNAME = SELECTED_JOB-JOBNAME
“ BP_JOBLIST_PROCESSOR
からのジョブ
ID
PREDJOB_CHECKSTAT = 'X' “
先行ジョブが正常に完了した
“
場合にのみジョブを開始
PRED_JOBCOUNT = SEL_JOBLIST-JOBCOUNT
“ BP_JOB_SELECT
からの
“
先行ジョブの
ID
PRED_JOBNAME = SEL_JOBLIST-JOBNAME
IMPORTING
JOB_WAS_RELEASED = JOB_RELEASED
“
チェック
:
ジョブはリリースされたか
?
EXCEPTIONS
INVALID_STARTDATE = 2
JOBNAME_MISSING = 3
JOB_CLOSE_FAILED = 4
JOB_NOSTEPS = 5
JOB_NOTEX = 6
LOCK_FAILED = 7
OTHERS = 99.