
¿Qué es el procesamiento en background o de fondo?
El procesamiento debería esencialmente separar tareas periódicas y que insumen mucho tiempo de aquellas de interacción de usuarios. Tareas que requieran mucho tiempo y ocuparían un work process en diálogo pueden ser secuencialmente procesadas en background sin afectar la performance de diálogo.
Un requisito importante para conseguir este objetivo es un dimensionamiento apropiado del sistema, ya que, demasiados procesos de background podría terminar compitiendo por recursos compartidos con procesos de diálogo (memoria principal, CPU).
1. Los fundamentos
El work processes de diálogo deberían estar disponibles para responder a las solicitudes de los usuarios rápidamente. los recursos de diálogo deberían por lo tanto no ser utilizados para ejecuciones prolongadas ya que puede provocar cuellos de botella en el tiempo de respuesta de diálogo.
El parámetro rdisp/max_wprun_time existe por este motivo justamente. Limita el máximo tiempo de ejecución de un paso de diálogo en un work process de diálogo.
Transacción RZ11
La transacción RZ11 es utilizada para la visualización de parámetros del sistema y la modificación de los que el sistema permita editar sin reinicio de la instancia.
Esto debería asegurar que los procesos de diálogo no sean bloqueados por programas que requieren demasiado tiempo de ejecución, interfiriendo la operación online. Luego de que el máximo tiempo se ha superado, el programa es terminado.
La manera en que el parámetro rdisp/max_wprun_time funciona está descripto en la nota de SAP 25528
Un job de backgroun consiste de uno o más pasos (steps):
- Un programa ABAP
- Un comando externo
- Un programa externo
Cada job se procesa sin interrupción por único background work process. Los jobs de background pueden ser planificados con diferentes prioridades:
- Clase A (prioridad alta)
- Clase B (prioridad media)
- Clase C (prioridad normal)
Deberíamos asegurarnos que la mayor parte de los jobs de background sean planificados con prioridad normal, clase C, sin especificación de servidor de ejecución.
Esto debería aplicar para el 90% o más de todas las tareas de background.
2. La planificación y el monitoreo
Podemos utilizar la transacción SM36 para definir nuevos jobs. Puedes también llamar el Asistente de Job, transacción SM36WIZ o desde la transacción SM36 también.
Las transacciones SM36 y SM36WIZ
Estas dos transacciones son utilizadas para la creación de Jobs tanto estándar como propios, permitiendo definir más de un paso de ejecución en cada uno.
Las especificaciones que requiere la definición de un job son:
- Especificaciones generales tales como nombre de job, prioridad del job (por defecto: C) y opcionalmente un servidor de ejecución o grupo.
- Definición de uno o más pasos.
- Definición de una condición de inicio (de tiempo o controlada por evento).
El asistente de Job nos ayuda en la creación del job guiándonos de manera fácil a través del proceso de creación.
El método de creación de un job de background (clásico o mediante el asistente de Job) no tiene incidencia en el resultado. Algunas funciones (especificar el usuario SAP en la definición del paso de job, modificación del orden de ejecución de los pasos) no están disponibles para el asistente de Job.
Transacción SM37
La transacción SM37 nos permite monitorear los jobs. Podemos seleccionar los jobs utilizando diversos criterios en la pantalla inicial de esta transacción. Algunas opciones serían visualizar los jobs que contienen un paso determinado, que tienen un estado particular o que reaccionan a un evento definido.
Luego de que seleccionamos Execute, una vista de job aparece que es creada por el visor de listas SAP (SAP List Viewer: ALV). Seleccionando del menú Settings podemos determinar las columnas que se mostrarán y el orden, entre otras cosas. Podemos configurar si será el diseño estándar para el usuario actual o todos los usuarios.
Detalle del jon contiene, entre otras cosas, información sobre la definición del job, duración del procesamiento del job y la fecha y hora de inicio del job.
Todos los mensajes de salida por un programa de background son almacenados en el log del job. Podemos visualizar el log para obtener información sobre un programa que finalizó con error o para realizar una investigación detallada sobre la ejecución de un job de background.
Un job puede tener los siguientes estados:
- Planificado (Scheduled): Los pasos que requieren la creación del job han sido definidos ya, de todas formas la condición de inicio aún necesita ser definida.
- Liberado (Released): El job ha sido completamente definido, incluyendo la condición de inicio. Un job no puede ser liberado sin una condición de inicio.
- Listo (Ready): La condición de inicio de un job liberado se ha cumplido. Sin embargo el job se encuentra en la cola de espera por un work process de background libre.
- Activo (Active): El job está siendo ejecutado y no puede ser borrado ni modificado. Si un job activo no se ejecuta normalmente, por ejemplo, demora mucho más del tiempo normal, podemos analizar el job en modo de depuración. Luego podemos finalizar el job definitivamente o liberarlo nuevamente. Para esto, en la transacción SM37, seleccionamos Job ---> Capture: active job.
Para capturar un job de background, debemos iniciar sesión en el servidor SAP donde el job está corriendo.
- Finalizado (Finished): Todos los pasos del job fueron ejecutados sin problemas.
- Cancelado (Canceled): El job finaliza anormalmente, esto puede suceder de dos maneras:
- El administrador deliberadamente termina el job en la transacción SM37 mediante la selección de Job ---> Cancel active job.
- Un paso del job terminó con error.
También podemos modificar un job mientras este tenga los estados planificados o liberado. Si la ejecución de un job ya ha comenzado, podemos monitorear el procesamiento en el log del job. Si el job tiene programas ABAP que crean listas de salida, estas se almacenan en las listas de spool.
Podemos crear un nuevo job copiando otro existente. Desde el menú selecciona Job ---> Copy.