✒️ABAP La ejecución de fondo
ABAP La ejecución de fondo
Unidad n°4: Las subrutinas, los módulos de funciones y el procesamiento batch
Lección n°7: La ejecución de fondo
Formas de ejecución de un programa:
Hay dos formas de ejecutar un programa
- Ejecución online: el programa se ejecuta al momento de presionar F8/ Icono de ejecutar y los resultados de la ejecución se producen inmediatamente, ya se mostrándonos por pantalla o modificando las tbd.
Esta ejecución conviene para los programas donde se necesita interacción con los usuarios. - Ejecución batch o de fondo: es la ejecución de un programa o proceso 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 terminó de ejecutarse.
Se usa cuando el tiempo de procesamiento de un programa es muy alto. Esto puede pasar porque el programa tiene muchos accesos a tbd (ya que son muy grandes).
Los resultados de esta ejecución no se visualizan en la misma pantalla de ejecución, debemos ir a buscar los resultados a la trans SM37.
Ej: tenemos el programa ZTEST_ONLINE, el cual imprime por pantalla el registro de la tbd de usuarios ZTABLA_USUARIOS, cuyo DNI se introduce en el select-options del campo DNI de la pantalla de selección del programa:
- Ejecutamos el programa.
- Veremos la pantalla de selección del programa ZTEST_ONLINE y la lista para que introduzcamos valores en DNI y ejecutemos.
- Vamos al menú Programa, hay dos formas de ejecutar el programa, de forma online (F8) o de fondo (F9).
- Si ejecutamos de forma online veremos el resultado de la ejecución del programa:
- Si ejecutamos de fondo, vemos la ventana de diálogo de parám. para impresión de fondo, donde podemos modificar distintos parám. de salida como el dispositivo de salida, la impresora de Windows, etc. Hacemos clic en la tilde.
- La sig. pantalla donde podemos planificar la fecha de inicio de la ejecución del programa de fondo, veamos cada opción:
Inmediato: permite iniciar el programa de fondo en el momento.
Fecha/Hora: indicar el día y hora en la que comenzará la ejecución. Podemos marcar si queremos que sea periódica, es decir, que se repita cada cierto tiempo.
Tras job: podemos encadenar la ejecución de un programa de fondo con otro, es decir, indicaremos al proceso B que se ejecute cuando finalice A.
Tras evento: comenzará cuando se produzca en el sistema el evento que indiquemos.
Seleccionaremos "Inmediato" y grabamos. - A continuación, veremos en la barra de estado el msj "Previsión de job creada para el programa ZTEST_ONLINE".
- Ahora con la trans SM37, buscaremos el resultado de la ejecución de fondo de nuestro programa.
*Trans SM37: para ver los jobs procesados en el sist. De cada job podemos ver datos como ID, usuario que lo ejecutó, el status, fecha y hora de inicio, duración y retraso.
*Jobs: programas o procesos ejecutados de fondo en el sistema. - Dentro de la trans. dejamos los camposde la pantalla inicial cargados por defecto y ejecutamos.
- Ahora visualizamos la ejecución del programa ZTEST_ONLINE, que se encuentra con el status terminado; la tildamos y hacemos clic en SPOOL para ver la salida de la ejecución de fondo.
- Pasamos automáticamente a la trans SP01, ya que el proceso de fondo que ejecutamos genera una salida por pantalla, entonces visualizamos el icono de la Lista ABAP. Hacemos clic en el icono para visualizar la salida por pantalla del programa
*Trans. SP01: conocida como el spool, administraremos todas las solicitudes de impresión que se generen en el sist. - Finalmente vemos la salida por pantalla de la ejecución de fondo del ZTEST_ONLINE:
Hay que tener en cuenta el tipo de ejecución que elegiremos ya que no solo afectará a la ejecución, sino también la forma en la que programaremos.
La creación de un programa ABAP de fondo:
EJ: al programa ABAP ZTEST_ONLINE lo redefiniremos, suponiendo que de antemano se ejecutará exclusivamente de fondo. Para ello, crearemos el programa ZTEST_FONDO_B, el cual obtiene los registros de las tbd ZTABLA_USUARIOS y los imprime por pantalla.
Creamos un nuevo programa "ZTEST_FONDO" que cumplirá el rol de programa padre del "ZTEST_FONDO_B", es decir, primero se ejecutará ZTEST_FONDO y luego este llamará a ejecución del programa ZTEST_FONDO_B:
El código del ZTEST_FONDO es:
Analicemos cada subrutina que vemos en el evento STAT-OF-SELECTION del ZTEST_FONDO.
- Antes que nada creamos un Job. Para esto le asignamos un nombre a la var "V_JOBNAME" y luego ejecutamos el mód. de fun. JOB_OPEN. Para modularizar creamos la subrut. ABRIR_JOB:
- Ahora lanzamos el Job. Para esto, creamos la subrut. LANZAR_JOB que ejecutará la sentencia SUBMIT, la cual se usa para ejecutar un programa dentro de otro; y con el agrega de la cláusula VIA JOB NUMBER la ejecución del programa se hará de fondo:
Por la sentencia SUBMIT se pueden pasar parám. al programa llamado, los cuales deben existir en la pantalla de selección de este.
Con la cláusula AND RETURN, el programa llamador permaneces en espera mientras se ejecuta el programa llamado. Cuando el programa llamado termina, se devuelve el control al programa llamador. - Finalmente cerramos el Job mediante el mód. de fun JOB_CLOSE. Para esto creamos la subru. CERRAR_JOB y por ultimo mostraremos el msj "Se lanzó el Job, para visualizar ir a la Trans. SM37":
- Ahora ejecutaremos de forma online el programa ZPRUEBA_FONDO y veremos en el inferior izq. el msj "Se lanzó el Job, para visualizarlo ir a la trans SM37".
- Veremos el resultado de la trans. y ahí Ejecutamos
- Identificamos el proceso, lo tildamos y presionamos el botón "SPOOL".
- Visualizaremos la orden de spool correspondiente a nuestro programa ejecutado de fondo. Seleccionamos la orden y hacemos clic en Visualizar (anteojos) para ver el resultado del procesamiento.
- Finalmente vemos el resultado:
 
 
 
Sobre el autor
Publicación académica de Candela Estefanía Calzada, en su ámbito de estudios para la Carrera Consultor ABAP.
Candela Estefanía Calzada
Profesión: Técnica Electrónica - Argentina - Legajo: JW91W
✒️Autor de: 160 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Me encuentro estudiando la ingeniería en sistemas de información. poseo amplia experiencia en edición de videos. tengo bases entorno a la programación que quiero continuar consolidando.
Certificación Académica de Candela Calzada