================= ******** UNIDAD 4 ******** =================
******** Lección 7: "Batch - Ejecucion de fondo" *********
Son 2 formas de ejecutar un programa ONLINE que se ejecuta de manera inmediata y el BATCH que es un programa con duracion alta debido a su complejibilidad.
AUDIO: Es sumamente importante si el programa se ejecutara en forma ONLINE o BATCH, para verificar su programacion.
JOB: es un programa que se lanza consecutivamente en proceso de fondo.
Para hacer la ejecucion de un JOB, primero debemos de crear uno, luego asignamos la funcion JOB_OPEN y vamos a crear la subrutina ABRIR_JOB.
Sintaxis:
CONCATENATE 'ZPRUEBA_FONDO_' sy-datum
INTO v_jobname.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = v_jobname
IMPORTING
jobcount = v_jobcount
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc <> 0
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-magno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
Lo que sigue es lanzar el JOB, creamos la subrutina LANZAR_JOB que ejecutara la sentencia SUBMIT.
FORM lanzar_job
SUBMIT z_prueba_fondo_b
VIA JOB v_jobname
NUMBER v_jobcount
AND RETURN.
ENDFORM.
Con AND RETURN, espera que el programa se ejecute y luego cuando termina devuelve el control al programa llamador.
Debemos cerrar el JOB mediante la funcion JOB_CLOSE con la siguiente subrutina.
FORM cerrar_job.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = v_jobcount
jobname = v_jobname
strtimmed = 'X'
EXCEPTIONS
cant_start_inmmediate = 1
invalid_job_startdata = 2
jobname_missing = 3
OTHERS = 4.
IF sy-subrc <> 0
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-magno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE
WRITE: 'Se lanzo el JOB, para visualizarlo ir a la SM37'
ENDIF.
ENDFORM.
USAREMOS LA TRANSACCIÓN SM37 para visualizar los JOBS procesados.