Sample Program: Wait for Predecessor Job with JOB_CLOSE

Use

 Start at successful completion of predecessor job. In this
* example, the user selects the predecessor job from a list of
* jobs. The jobs are selected with BP_JOB_SELECT and displayed
* for selection to the user with BP_JOBLIST_PROCESSOR. 
*
* Important: If you specify a predecessor job directly in your 
* program (not interactively chosen), then be sure that the 
* predecessor job has the status Scheduled or Released when 
* you schedule the successor job. Otherwise, the successor 
* scheduling will fail. That is, a job that is active or 
* already completed cannot be specified as a predecessor job. 
*
* Data declarations: BP_JOB_SELECT and BP_JOBLIST_PROCESSOR 
* 
DATA JSELECT LIKE BTCSELECT.
DATA SEL_JOBLIST LIKE TBTCJOB OCCURS 100 WITH HEADER LINE. 
DATA SELECTED_JOB LIKE TBTCJOB. 

* Generate list of jobs as with the background processing
* management transaction (SM37).

* Sample selection criteria 
* 
JSELECT-JOBNAME = 'NAME OF JOB'. 
JSELECT-JOBCOUNT = '<Job count>'. 
JSELECT-USERNAME = SY-UNAME. 

CALL FUNCTION 'BP_JOB_SELECT' 
EXPORTING 
JOBSELECT_DIALOG = BTC_YES " Display list to user
JOBSEL_PARAM_IN = JSELECT " default job selection 
" criteria
IMPORTING 
JOBSEL_PARAM_OUT = JSELECT " User's job selection
" criteria 
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. 
*
* Ask the user to pick a job from the list. The selected job is 
* the predecessor job.
* 
call function 'BP_JOBLIST_PROCESSOR' 
exporting 
joblist_opcode = btc_joblist_select 
" Starts processor in mode which 
" allows user to pick a job from 
" list. Selected job is returned 
" in the joblist_sel_job parameter. 
joblist_refr_param = jselect 
" User's job selection parameters 
" for Refresh function 
importing 
joblist_sel_job = selected_job 
" Returns the job selected from the 
" job list by the user. 
tables 
joblist = sel_joblist 
" Input from BP_JOBLIST_SELECT 
exceptions 
invalid_opcode = 1 
joblist_is_empty = 2 
joblist_processor_canceled = 3 
others = 4. 
* 
* Schedule job using the predecessor picked by the user.
* 
CALL FUNCTION 'JOB_CLOSE' 
EXPORTING 
JOBCOUNT = SELECTED_JOB-JOBCOUNT 
" Job ID from BP_JOBLIST_PROCESSOR 
JOBNAME = SELECTED_JOB-JOBNAME 
" Job ID from BP_JOBLIST_PROCESSOR 
PREDJOB_CHECKSTAT = 'X' " Start job only if 
" predecessor job was 
" successfully completed. 
PRED_JOBCOUNT = SEL_JOBLIST-JOBCOUNT 
" ID of predecessor job, 
" from BP_JOB_SELECT. 
PRED_JOBNAME = SEL_JOBLIST-JOBNAME 
IMPORTING 
JOB_WAS_RELEASED = JOB_RELEASED
" Check: was job released? 
EXCEPTIONS 
CANT_START_IMMEDIATE = 1 
INVALID_STARTDATE = 2 
JOBNAME_MISSING = 3 
JOB_CLOSE_FAILED = 4 
JOB_NOSTEPS = 5
JOB_NOTEX = 6 
LOCK_FAILED = 7 
OTHERS = 99.