✒️ABAP La ejecución de fondo
ABAP La ejecución de fondo
Ejecución de fondo
Hay dos formas de ejecutar un programa ABAP:
-Online: el programa se ejecuta al momento de presionar F8 y los resultados de la ejecucion se producen de manera inmediata. Esta forma de ejecucion es conveniente para los programas donde se requiere interaccion con el usuario o cuando el tiempo de ejecucion es muy poco.
-Batch o de fondo: se suele usar cuando el tiempo de procesamiento de un programa es muy alto debido a que tenga muchos accesos a bases de datos con muchos registros, ejecucion de multiples transacciones, etc.
Es muy importante analizar previamente a la realizacion de la programacion de un requerimiento en ABAP si el programa que debemos realizar se ejecutará en forma online o de fondo (batch) ya que no solo cambiara la forma de ejecucion del programa sino tambien la forma en la que se programa dicho programa. Por ejemplo en ABAP se usa el Batch Input, es decir, una tecnica muy usada para realizar la carga masiva de datos en el sistema.
Si la ejecucion se va a realizar de fondo entonces las sentencias que se usaran no son las mismas que las que se usan para ejecutar el mismo proceso en forma online, otro ejemplo son los reportes en ABAP, si nos piden un reporte que se ejecutara de fondo entonces no tendra sentido usar tecnicas de reporte con la ALV que le brinda al usuario interactuar con herramientas en los distintos listados ya que no podra interactuar con ellas y la programacion cambiara totalmente.
Suponiendo que tenemos el programa ABAP ZPRUEBA_FONDO_B que obtiene los registros de la tabla ZTABLA_USUARIOS y los imprime por pantalla.
Luego vamos a crear el nuevo programa ABAP ZPRUEBA_FONDO que cumplirá el rol de programa padre del programa ZPRUEBA_FONDO_B.
Lo primero que debemos hacer es crear un Job. Para esto le asignamos un nombre a la variable V_JOBNAME y luego ejecutamos la funcion JOB OPEN. Para modularizar vamos a crear 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 usa 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.
Agregando la cláusula AND RETURN el programa llamador permanece en espera mientras se ejecuta el programa llamado. Cuando el programa llamado termina, se devuelve el control al programa llamador.
Luego debemos cerrar el job mediante la funcion JOB CLOSE. Para esto vamos a crear la subrutina CERRAR_JOB.
Por último, luego de cerrar el job imprimimos por pantalla el mensaje "Se lanzó el Job, para visualizarlo ir a la Trx SM37".
Al ejecutar online el programa ZPRUEBA_FONDO presionando F8 veremos en la pantalla el mensaje "Se lanzó el Job, para visualizarlo ir a la Trx SM37", por lo tanto vamos a ir a buscar el resultado a la transacción SM37.
Transaccion SM37: La usamos 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 status (planeado, liberado, listo, activo, terminado o cancelado), la fecha y hora de inicio, la duración y el retraso.
Identificamos nuestro proceso, lo tildamos y presionamos el botón Spool, luego vemos el pedido del Job correspondiente a nuestro programa y finalmente presionamos el botón de visualización y vemos el resultado del procesamiento.
En los casos en que nos pidan un programa ABAP que se ejecute tanto en forma online como de fondo, la mejor solución será desarrollar un único programa ABAP que presente en la pantalla de selección la posibilidad de elegir el modo de procesamiento, para esto colocaremos dos radio buttons, uno para ejecución online y otro para ejecución de fondo y le permitiremos al usuario del programa que elija el modo de procesamiento según sus necesidades.
 
 
 
Sobre el autor
Publicación académica de Manuel Antonio Moncada Vera, en su ámbito de estudios para la Carrera Consultor ABAP.
Manuel Antonio Moncada Vera
Profesión: Ingeniero en Informatica - Colombia - Legajo: JT58S
✒️Autor de: 68 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Manuel Moncada