REPORT zini_002.
CLASS ZCl_MY_JOB DEFINITION.
PUBLIC SECTION.
TYPES: BEGIN OF ty_JOB,
count TYPE tbtcjob-jobcount,
name TYPE tbtcjob-jobname,
start_now TYPE btch0000-char1,
start_date TYPE tbtcjob-sdlstrtdt,
start_time TYPE tbtcjob-sdlstrttm,
error TYPE sysubrc,
END OF ty_job.
DATA: params TYPE ty_job.
METHODS:
constructor IMPORTING I_params TYPE ty_job OPTIONAL,
job_open,
job_close.
ENDCLASS.
CLASS ZCl_MY_JOB IMPLEMENTATION.
METHOD constructor.
IF I_params IS SUPPLIED.
params = i_params.
ENDIF.
IF params-start_date IS INITIAL.
CLEAR params-start_time.
params-start_now = 'X'.
ENDIF.
ENDMETHOD.
METHOD job_open.
CLEAR params-error.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
* DELANFREP = ' '
* JOBGROUP = ' '
jobname = params-name
* SDLSTRTDT = NO_DATE
* SDLSTRTTM = NO_TIME
* JOBCLASS =
* CHECK_JOBCLASS =
IMPORTING
jobcount = params-count
* INFO =
* CHANGING
* RET =
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
params-error = sy-subrc.
ENDMETHOD.
METHOD job_close.
CHECK params-error IS INITIAL.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
* AT_OPMODE = ' '
* AT_OPMODE_PERIODIC = ' '
* CALENDAR_ID = ' '
* EVENT_ID = ' '
* EVENT_PARAM = ' '
* EVENT_PERIODIC = ' '
jobcount = params-count
jobname = params-name
* LASTSTRTDT = NO_DATE
* LASTSTRTTM = NO_TIME
* PRDDAYS = 0
* PRDHOURS = 0
* PRDMINS = 0
* PRDMONTHS = 0
* PRDWEEKS = 0
* PREDJOB_CHECKSTAT = ' '
* PRED_JOBCOUNT = ' '
* PRED_JOBNAME = ' '
* SDLSTRTDT = NO_DATE
* SDLSTRTTM = NO_TIME
* STARTDATE_RESTRICTION = BTC_PROCESS_ALWAYS
strtimmed = params-start_now
* TARGETSYSTEM = ' '
* START_ON_WORKDAY_NOT_BEFORE = SY-DATUM
* START_ON_WORKDAY_NR = 0
* WORKDAY_COUNT_DIRECTION = 0
* RECIPIENT_OBJ =
* TARGETSERVER = ' '
* DONT_RELEASE = ' '
* TARGETGROUP = ' '
* DIRECT_START =
* INHERIT_RECIPIENT =
* INHERIT_TARGET =
* REGISTER_CHILD = ABAP_FALSE
* TIME_ZONE =
* EMAIL_NOTIFICATION =
* IMPORTING
* JOB_WAS_RELEASED =
* CHANGING
* RET =
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
invalid_target = 8
invalid_time_zone = 9
OTHERS = 10.
params-error = sy-subrc.
ENDMETHOD.
ENDCLASS.
END-OF-SELECTION.
DATA(g_my_job) = NEW ZCl_MY_JOB( i_params = VALUE #( name = |{ sy-repid }{ sy-uzeit }| ) ).
g_my_job->job_open( ).
IF g_my_job->params-error IS INITIAL.
SUBMIT (sy-repid) AND RETURN " BOOOOOM
USER sy-uname
VIA JOB g_my_job->params-name
NUMBER g_my_job->params-count.
g_my_job->job_close( ).
IF g_my_job->params-error EQ 0.
MESSAGE s398(00) WITH TEXT-j03.
ENDIF.
ENDIF.