Llamar programa mediante JOB programado
Caso: se busca crear un job de un programa ABAP, programado a una cierta fecha-hora para que sea ejecutado.
*&———————————————————————*
*& Form crear_datos_job
*&———————————————————————*
* Crear datos vía JOB
*———————————————————————-*
FORM crear_datos_job.
DATA: lv_respuesta TYPE c,
lv_error TYPE c,
lv_jobname TYPE tbtcjob-jobname,
lv_jobcount TYPE tbtcjob-jobcount,
lv_jobdate TYPE tbtcjob-sdlstrtdt,
lv_jobtime TYPE tbtcjob-sdlstrttm,
lv_fec_ini TYPE ztmm_ep_secuenc-fecha_ini,
lv_fec_fin TYPE ztmm_ep_secuenc-fecha_fin.
CALL FUNCTION ‘POPUP_TO_CONFIRM’
EXPORTING
titlebar = ‘Creación de Datos vía JOB’
text_question = ‘¿Confirma la creación de datos vía JOB?.’
default_button = ‘2’
display_cancel_button = ‘X’
IMPORTING
answer = lv_respuesta
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
IF lv_respuesta EQ ‘1’.
* Llamada al JOB
CONCATENATE ‘ZJOB_CREAR’ sy-datum sy-uname INTO lv_jobname SEPARATED BY ‘_’.
CALL FUNCTION ‘JOB_OPEN’
EXPORTING
jobname = lv_jobname
jobclass = ‘B’ ” Prioridad media
IMPORTING
jobcount = lv_jobcount
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE e208(00) WITH ‘Error al crear JOB’.
ENDIF.
SUBMIT zmm_crear_datos WITH p_fecini = ‘20130101’
WITH p_fecfin = ‘20131231
VIA JOB lv_jobname NUMBER lv_jobcount USER sy-uname AND RETURN.
IF sy-subrc <> 0.
MESSAGE e208(00) WITH ‘Error al programar JOB’.
ENDIF.
CALL FUNCTION ‘JOB_CLOSE’
EXPORTING
jobcount = lv_jobcount ” Nro. interno del JOB
jobname = lv_jobname ” Nombre del JOB
sdlstrtdt = lv_jobdate ” Fecha inicio JOB
sdlstrttm = lv_jobtime ” Hora inicio JOB
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
OTHERS = 9.
IF sy-subrc <> 0.
MESSAGE e208(00) WITH ‘Error al cerrar Job’.
ELSE.
MESSAGE i001(00) WITH ‘JOB creado:’ lv_jobname ‘->’ lv_jobcount.
ENDIF.
ENDIF.
ENDFORM. “crear_datos_job
Link útil:
http://www.mundosap.com/foro/showthread.php?t=27990&highlight=open_job