
¿Qué es la ejecución de fondo?
En ABAP existen dos formas principales de ejecutar un programa. Mientras que la ejecución online (F8) es interactiva y muestra resultados inmediatos en pantalla, la ejecución de fondo (batch) consiste en procesar un programa sin interacción directa con el usuario.
Al lanzar un proceso de fondo, el sistema devuelve el control al usuario inmediatamente, permitiéndole seguir trabajando mientras el programa se ejecuta "detrás de escena". Se utiliza principalmente cuando el tiempo de procesamiento es muy alto o cuando el programa debe acceder a millones de registros en la base de datos.
Cómo ejecutar en fondo (Usuario)
Para ejecutar un programa estándar en fondo:
- Desde la pantalla de selección, se va al menú Programa > Ejecutar en proceso fondo o se presiona la tecla F9.
- Parámetros de impresión: Aparece una ventana para configurar el dispositivo de salida (impresora) y formato, ya que el resultado no saldrá en pantalla.
- Fecha de inicio: Se debe definir cuándo comenzará el proceso. Las opciones principales son:
- Inmediato: Comienza apenas se termina la definición.
- Fecha/Hora: Se programa para un momento específico (puede ser periódico).
- Tras job: Se encadena para que inicie solo cuando otro proceso (Job A) haya finalizado (útil para dependencias).
- Tras evento: Se inicia cuando ocurre un evento específico del sistema.
Monitoreo y Resultados (SM37)
A diferencia de la ejecución online, los resultados no aparecen automáticamente.
- Transacción SM37: Es la herramienta estándar para visualizar y administrar los Jobs (trabajos de fondo).
- Estados de un Job: En la SM37 podemos ver si el job está Previsto, Liberado, Preparado, Activo, Terminado o Cancelado.
- Visualizar la salida (Spool): Si el job generó un reporte, para verlo debemos seleccionarlo en la SM37 (cuando esté en estado "Terminado") y hacer clic en el botón SPOOL. Esto nos llevará a la lista de impresión donde podremos ver el contenido.
Programación de procesos de fondo
Si como desarrolladores sabemos de antemano que un programa debe correr exclusivamente de fondo, podemos diseñar un "programa padre" que lance al programa principal automáticamente en modo batch. La secuencia de comandos ABAP es la siguiente:
-
Apertura (JOB_OPEN): Se utiliza este módulo de funciones para crear el Job. El sistema devuelve un número de identificación para el job.
-
Lanzamiento (SUBMIT): Se utiliza la sentencia SUBMIT <nombre_programa> VIA JOB <nombre> NUMBER <numero> AND RETURN. Esto ejecuta el reporte dentro del job que acabamos de abrir, en lugar de hacerlo online.
-
Cierre (JOB_CLOSE): Este módulo de funciones finaliza la configuración y libera el job para que el sistema lo procese.
Analogía: Imagina que vas a una pizzería:
- Ejecución Online (F8): Pides una rebanada en el mostrador, esperas ahí de pie mirando al empleado, te la dan y te la comes ahí mismo. Si tarda mucho, te quedas bloqueado esperando.
- Ejecución de Fondo (F9): Haces un pedido a domicilio (o para recoger más tarde).
- Entregas tu pedido (Lanzas el Job).
- Te vas a tu casa a hacer otras cosas (El sistema te devuelve el control).
- El cocinero trabaja sin que tú estés presente.
- SM37 es la App de rastreo donde ves si dice "En el horno" (Activo) o "Entregado" (Terminado).
- El Spool es la caja de la pizza que abres al final para ver el resultado.