ジョブステータスの表示 : SHOW_JOBSTATE 

汎用モジュール SHOW_JOBSTATE を使用してジョブのステータスを調べることができます。この汎用モジュールにジョブ名とジョブ番号を指定してください。ジョブの 6 つのステータスのうちのいずれかが返されます。

次の例では、 BP_FIND_JOBS_WITH_PROGRAM を使用して特定レポートあるいは外部プログラムを含むジョブを検索しています。次に SHOW_JOBSTATE を使用して検索された各ジョブのステータスをチェックします。 IF キーワードを使用して、プログラムは汎用モジュールにより返されるステータスを評価し、ステータスを表すアイコンを使用して一覧表示します。

REPORT EXAMPLE.
INCLUDE LBTCHDEF.“
バックグラウンド処理の定義。
INCLUDE <LIST>.“ アイコン、行、その他の定義の一覧表示

* データ宣言 : BP_FIND_JOBS_WITH_PROGRAM
DATA SEL_JOBLIST LIKE TBTCJOB OCCURS 100 WITH HEADER LINE.

検出されたジョブの内部テーブル

* データ宣言 : SHOW_JOBSTATE
DATA: “
候補ジョブステータス
ABORTED TYPE C,
FINISHED TYPE C,
PRELIMINARY TYPE C,
READY TYPE C,
RUNNING TYPE C,
SCHEDULED TYPE C.

* ABAP
プログラム RSCRIDX4 を含むジョブの検出。プログラムおよびバリアント名は大文字で指定しなければなりません。外部プログラムを実行するジョブを検出することもできます。
CALL FUNCTION 'BP_FIND_JOBS_WITH_PROGRAM'
EXPORTING
ABAP_PROGRAM_NAME = 'RSCRIDX4'
ABAP_VARIANT_NAME = 'V_ALL'
EXTERNAL_PROGRAM_NAME = ' '

非対話式モードで、プログラム名、バリアント名、あるいはその両方を使用して検索できます。
これらの指定すべてを省略すると、 PROGRAM_SPECIFICATION_MISSING になります。
DIALOG = BTC_NO
“ BTC_NO:
非対話式モード。コールには最低でも 1 つのプログラム名を指定する必要があります。
“ BTC_YES: ユーザがプログラム名とバリアントを入力します。
TABLES
JOBLIST = SEL_JOBLIST
検索された任意のジョブを含む書式 TBTCJOB
内部テーブル
EXCEPTIONS
NO_JOBS_FOUND = 1
PROGRAM_SPECIFICATION_MISSING = 2
INVALID_DIALOG_TYPE = 3
JOB_FIND_CANCELED = 4
OTHERS = 5.

IF SY-SUBRC <> 0.
<
エラー処理 >
ENDIF.


* 一覧ヘッダ行の書込み
WRITE: / ' ステータス , 9 ' ジョブ名 , 25 ' ジョブ番号 .
ULINE AT /1(85).

* BP_FIND_JOBS_WITH_PROGRAM で検出されたジョブ中のループ
LOOP AT SEL_JOBLIST.

CALL FUNCTION 'SHOW_JOBSTATE'
EXPORTING
JOBCOUNT = SEL_JOBLIST-JOBCOUNT
JOBNAME = SEL_JOBLIST-JOBNAME
チェック対象ジョブの特定。名称とカウントの両方が必要。
IMPORTING
候補ステータスジョブのステータスは値 ‘X’ に設定されます。
ABORTED = ABORTED
ジョブ異常終了
FINISHED = FINISHED
ジョブ正常終了
PRELIMINARY = PRELIMINARY
ジョブ開始不可 : ジョブはスケジュール済ですが
実行に対してリリースされていないか、開始条件を付けずに
ジョブがスケジュールされています。
READY = READY
ジョブはスケジュール済、リリース済、開始条件の指定済
ですが、ジョブはまだ開始されていません。
RUNNING = RUNNING
ジョブ実行中
SCHEDULED = SCHEDULED
ジョブはスケジュール済、リリース済で、開始条件
が整うまで待機中です。
EXCEPTIONS
JOBCOUNT_MISSING = 1
JOBNAME_MISSING = 2
JOB_NOTEX = 3
OTHERS = 4.


IF SY-SUBRC <> 0.
<
エラー処理 >
ENDIF.


* SHOW_JOBSTATE によりチェックされたジョブのステータスを判定。適切なステータスアイコンの割当と、一覧への書込み
IF ABORTED = 'X'.
WRITE: /3 ICON_FAILURE AS ICON,
AT 9 SEL_JOBLIST-JOBNAME,
AT 25 SEL_JOBLIST-JOBCOUNT.

ELSEIF FINISHED = 'X'.
WRITE: /3 ICON_CHECKED AS ICON,
AT 9 SEL_JOBLIST-JOBNAME,
AT 25 SEL_JOBLIST-JOBCOUNT.

ELSEIF PRELIMINARY = 'X'.
WRITE: /3 ICON_INCOMPLETE AS ICON,
AT 9 SEL_JOBLIST-JOBNAME,
AT 25 SEL_JOBLIST-JOBCOUNT.

ELSEIF READY = 'X'.
WRITE: /3 ICON_INCOMPLETE AS ICON,
AT 9 SEL_JOBLIST-JOBNAME,
AT 25 SEL_JOBLIST-JOBCOUNT.

ELSEIF RUNNING = 'X'.
WRITE: /3 ICON_INCOMPLETE AS ICON,
AT 9 SEL_JOBLIST-JOBNAME,
AT 25 SEL_JOBLIST-JOBCOUNT.

ELSEIF SCHEDULED = 'X'.
WRITE: /3 ICON_INCOMPLETE AS ICON,
AT 9 SEL_JOBLIST-JOBNAME,
AT 25 SEL_JOBLIST-JOBCOUNT.
ENDIF.
ENDLOOP.