✒️ABAP La ejecución de fondo
ABAP La ejecución de fondo
1. Las formas de ejecución de un programa ABAP
En ABAP existen dos formas de ejecutar un programa:
- Ejecución online: en donde el programa se ejecuta el momento de presionar la tecla f8 o el icono de ejecutar y los resultados de la ejecución se producen de manera inmediata, ya sea mostrandolos por pantalla o modificando las tablas base de datos de SAP.
La ejecución online es conveniente para los programas en donde se requiere interacción con el usuario, Es decir, para poder continuar con el procesamiento del programa se espera que el usuario presione una tecla o haga clic en un botón. También es adecuada su utilización cuando el tiempo de procesamiento del programa es poco.
- Ejecución batch o de fondo: consiste en ejecución de un proceso o programa sin interacción con el usuario, es decir, que lanzamos el proceso y el SAP GUI nos devuelve el control, aunque el programa todavía no ha acabado de ejecutarse.
Se utiliza cuando el tiempo de procesamiento de un programa es muy alto. Esto se debe a que el programa tiene muchos accesos a las tablas de la base de datos, que tienen millones de registros, a la ejecución de múltiples transacciones o a otras varias razones.
Los resultados de la ejecución de fondo de un programa ABAP no se visualizan en la misma pantalla de ejecución del programa tal como sucede en la ejecución online, sino que debemos ir a buscar los resultados de la ejecución a otra transacción de SAP.
Si ejecutamos de fondo o batch el programa, presionando la tecla F9, entonces vamos a visualizar la ventana de diálogo de parámetros para impresión de fondo, en donde podemos modificar distintos parámetros de la salida como el dispositivo de salida, la impresora de Windows, la cantidad de impresiones, entre otras posibles configuraciones.
Una vez que hacemos clic en el botón de la tilde verde para continuar, en la siguiente pantalla vamos a ver que podemos planificar la fecha de inicio de ejecución del programa de fondo.
A continuación se presenta cada una de las opciones de inicio:
- Inmediato: como su nombre indica nos permite iniciar el programa de fondo en el momento de acabar su definición.
- Fecha/Hora: deberemos indicarle un día y una hora en la que queramos que comience la ejecución de fondo. Además, podemos marcar de ejecución como periódica, es decir, que se repetirá su ejecución cada cierto periodo de tiempo.
- Tras Job: con esta indicación de comienzo podemos encadenar la ejecución de un programa de fondo con otro, es decir, indicaremos al proceso B que empiece a ejecutarse cuando finalice el proceso A. También podemos especificar que solo comience cuando la finalización del proceso A sea correcta, en caso de que el proceso haya sido cancelado en mitad de su ejecución el proceso B no se ejecutará.
- Tras evento: la ejecución comenzará cuando se produzca en el sistema el evento que le indiquemos. Un evento es un suceso que se produce automáticamente en el sistema SAP o que podemos provocar manualmente. Previamente, el evento debe estar definido en la correspondiente tabla base de datos. SAP viene con una serie de eventos predefinidos como pueden ser, el arranque o parada de las instancias, el cambio de modo de operación de nocturno a diurno, etc.
Luego hacemos clic en guardar una vez seleccionado el tipo.
Transacción SM37
Se utiliza para visualizar los jobs procesados en el sistema SAP.
De cada job podremos visualizar distintos datos tales como el ID, el usuario SAP que lo ejecutó, el estatus (previsto, liberado, preparado, activado, terminado o cancelado), la fecha y hora de inicio, la duración y el retraso.
Jobs
Son los programas o procesos ejecutados de fondo en el sistema SAP.
Transacción SP01
Mediante la transacción estándar SP01 conocida como "El Spool" administraremos todas las solicitudes de impresión que se generen en el sistema SAP.
2. La creación de un programa ABAP de fondo.
Si sabemos desde el momento en el que se solicita la creación de un programa ABAP nuevo, que debido a las características del requerimiento y del sistema, el programa debe ejecutarse exclusivamente de fondo, entonces el diseño y el desarrollo del programa será completamente diferente a que si dicho programa se ejecuta de forma online.
Lo primero que vamos a hacer es crear un Job. Para esto le asignamos un nombre a la variable V_JOBNAME y luego ejecutamos el módulo de funciones JOB_OPEN, Para modularizar creamos la subrutina ABRIR_JOB.
Lo que sigue es lanzar el Job. Para esto vamos a crear la subrutina LANZAR_JOB que ejecutará la sentencia SUBMIT, la cual se utiliza para ejecutar un programa dentro de otro programa y con el agregado de la cláusula VIA JOB NUMBER la ejecución del programa se realizará de fondo.
Mediante la sentencia SUBMIT se pueden pasar parámetros al programa llamado, los cuales deben existir en la pantalla de selección de este.
Con el agregado de la cláusula AND RETURN en la sentencia SUBMIT, el programa llamador permanece en espera mientras se ejecuta el programa llamado. Cuando el programa llamado termina se devuelve el control del programa llamador.
Finalmente Cerramos el Job mediante el módulo de funciones JOB_CLOSE. Para esto vamos a crear la subrutina CERRAR_JOB y por último mostramos el mensaje "Se lanzó el Job, para visualizarlo ir a la TRX SM37".
 
 
 
Sobre el autor
Publicación académica de Alexis Jesus Perez Ramirez, en su ámbito de estudios para la Carrera Consultor ABAP.
Alexis Jesus Perez Ramirez
Profesión: Licenciado en Computaci?n - Venezuela - Legajo: LK96B
✒️Autor de: 69 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Presentación:
Licenciado en computaci?n egresado de la ucv, con amplia experiencia en base de datos, an?lisis de sistemas y programaci?n; tanto en ambiente web, cliente/servidor como en computaci?n central.
Certificación Académica de Alexis Perez