✒️ABAP La ejecución de fondo
ABAP La ejecución de fondo
Ejecución de Fondo
Existen 2 formas de ejcutar un programa ABAP, Online y de fondo o Batch.
En la ejecución Online, el proceso se dispara de forma inmediata, generalmente hay una interacción con el usuario y el tiempo de procesamiento es corto.
Cuando el tiempo de proceso es largo y no hay interacción con el usuario, es recomendable usar el método de fondo, por ejemplo con lecturas de millones de registros, muchos accesos a la base, etc.
En ABAP dividiremos en 2 los programas para hacer una ejecución en fondo.
Por un lado el proceso en si, ejemplo un reporte que lea los millones de registros necesarios; y por otro lado el proceso que creará el Job y llamará al primer proceso.
El programa llamador lo dividimos en 3 partes
1) Crear el Job
2) Lanzar el Job
3) Cerrar el Job
1) Para crear el Job usamos la función JOB_OPEN al que la pasaremos el nombre del job.
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.
2) Para lanzar el Job usamos la sentencia SUBMIT que nos permite ejecutar un programa dentro de otro. También nos permite pasarle parámetros que hayamos seleccionado en nuestra pantalla.
Con la cláusula VIA JOB NUMBER, la ejecución se realiza de fondo.
Con la cláusual AND RETURN, el programa llamador permanece en espera mientras se ejecuta el de fondo. Al finalizar este se devuelve el control al llamador.
SUBMIT zprueba_fondo_b
USER sy-uname "usuario que ejecuta
VIA JOB v_jobname
NUMBER v_jobcount
AND RETURN.
3)Por último cerrar el job con 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.
Siempre que ejecutamos una función debemos verificar el resultado, si el sy-subrc no es 0 podemos ver los mensajes guardados en las variables del sistema:
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
Con la SM37 veremos el resultado de los jobs, no solo los nuestros sino de todos los que hayan sido lanzados en el período seleccionado.
Podemos ver el ID, el usuario que lo lanzó, el estado, fecha de inicio y fin, la duración , etc
En el caso del job tratado arriba, una vez que lo veamos finalizado en la SM37, lo seleccionamos y presionamos el botón SPOOL, luego seleccionamos el spool que quieramos ver y presionamos el botón Visualizar
Si se quiere dar la opción al usuario que seleccione la forma de ejecutar el programa, si Online o de Fondo, lo ideal es hacer un sólo programa, y darle al usuario en pantalla la opción de elegir cómo lo desea ejecutar.
 
 
 
Sobre el autor
Publicación académica de Daniel Martinez Chaer, en su ámbito de estudios para la Carrera Consultor ABAP.
Daniel Martinez Chaer
Profesión: Analista Programador - Uruguay - Legajo: SK29Z
✒️Autor de: 76 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Con experiencia en sap fi y mm, migración desde sistema legacy, extracción de datos de la base oracle sap y generación de reportes.
Certificación Académica de Daniel Martinez