
EJECUCIONES DE FONDO o BATCH
Hay dos formas de ejecutar un programa ONLINE o BATCH.
Es muy importante analizar si el requerimiento que nos solicita tendrá una ejecución online o una ejecución BATCH ya que la forma de programar y las sentencias son diferentes.
Pasos:
Tenemos un programa MOSTAR_DATOS
Creamos un programa padre MOSTAR_DATOS_P
Creamos un JOB:
creamos una subrutina
Asignamos un valor a la variable v_jobname
Ejecutamos la función JOB_OPEN
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.
Lanzamos el JOB:
para ello creamos una subrutina en el programa padre que ejecutará la sentencia SUBMIT la cual se utiliza para ejecutar un programa dentro de otro programa agregando el modificador VIA JOB NUMBER la ejecución del programa se hará de fondo.
Mediante SUBMIT se pueden pasar parámetros al programa los cuales deben exisitr en la pantalla de selección de este.
Con el modificador AND RETURN el programa padre permanece en espera mientras se ejecuta el programa hijo cuando el hijo termina se devuelve el control al padre.
Sintaxis:
SUBMIT <programa>
USER sy-uname "usuario que ejecuta
VIA JOB v_jobname
NUMBER v_jobcount
AND RETURN.
Cerramos el JOB:
para ello creamos una subrutina en el programa padre que ejecutará la función JOB_CLOSE
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = v_jobcount
jobname = v_jobname
strtimmed = 'X' "Comienza de inmediato
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.
Transacción SM37
Con esta transacción podemos ver los JOBS procesados por el sistema. En cada JOB podemos visualizar distintos datos como el ID, el usuario SAP que lo ejecutó, el status (planeado, liberado, listo, activo, terminado o cancelado), la fecha y hora de inicio, la duración y el retraso.