✒️SAP BASIS Los jobs de background
SAP BASIS Los jobs de background
Jobs de background
¿Qué es el procesamiento en background o de fondo?
El procesamiento en background 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).
Los programas que deban ejecutarse regularmente y consuman mucho tiempo son planificados como jobs de background en el sistema SAP.
Funciones
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 pueden provocar cuellos de botella en el tiempo de respuesta de diálogo. El parámetro rdisp/max_wprun_time existe por este motivo, limita el máximo tiempo de ejecución de un paso de diálogo en un work process de diálogo.
Transacción RZ21: 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.
Los procesos de background se utilizan para tareas que consumen mucho tiempo, también se conocen como procesos batch. Los procesos de background no se utilizan solamente para ejecuciones largas, sino que también para tareas repetitivas.
Un Job de background consiste de uno o más pasos (steps), un paso puede ser:
- Un programa ABAP
- Un comando externo
- Un programa externo
Cada Job se procesa sin interrupción por un ú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)
Si un Job es planificado para ser ejecutado en un servidor particular o un grupo de servidores, este tendrá preferencia con respecto a otros Jobs de la misma clase. Esta preferencia solamente aplica si múltiples Jobs con la misma prioridad solicitan el procesamiento en background al mismo tiempo, por ejemplo, porque se planificaron para que se ejecuten a la misma hora.
Esto debería aplicar para el 90% o más de todas las tareas de background.
- Un programa ABAP pude planificarse como un paso de un Job. Si el programa ABAP tiene una o más pantallas de selección, tendremos que crear las entradas previamente en una variante. Una variante hace posible ejecutar un programa ABAP en background, aunque el programa requiera valores de entrada. Los valores almacenados en la variante son luego utilizados durante la ejecución del programa. Si un programa ABAP tiene una pantalla de salida como resultado, esto es dirigido a una lista de spool.
Podríamos también especificar un recipiente de email para esta lista de spool durante la definición del Job.
Debemos especificar una impresora para la creación de la lista de spool, aunque no necesariamente tenga que ser impreso en un dispositivo de salida como resultado del procesamiento en background. Esto por ejemplo podría hacerse posteriormente.
-Un comando externo es un llamado a un script predefinido, un comando, o un programa a nivel del sistema operativo. Con comandos externos, podemos enmascarar llamadas al sistema operativo y guardarlos en el sistema SAP bajo un nombre. Podemos usar también el concepto de autorización de SAP para proteger la ejecución de un comando externo. Esto permite que podamos determinar que usuarios están permitidos a ejecutar que comandos externos (sobre que servidores y/o sistemas operativos)
-Un programa externo es un comando del sistema operativo. El concepto de autorización de SAP solamente especifica si un usuario puede llamar un programa externo o no. Una asignación más detallada de autorizaciones, por ejemplo, a nivel de los nombres de programa, no es provista con la ejecución de programas externos. Utilicemos comandos externos para esto.
Un job puede ser iniciado:
- Mediante la planificación en una fecha y hora particular.
- Mediante la ocurrencia de un evento particular definido en el sistema SAP. Esto incluye jobs que se iniciaran luego de la finalización de otros jobs o en los cambios de modo de operación o jobs con inicio inmediato si existen background work processes libres al momento.
Planificación y monitoreo
Podemos utilizar la transacción SM36 para definir nuevos jobs. Puedes también llamar al asistente de job, transacción SM36WIZ o desde la transacción SM36.
Las especificaciones que requiere la definición de un job son:
- Especificaciones generales tales como nombre de job, prioridad del job y opcionalmente un servidor de ejecución o un grupo.
- Definición de uno o más pasos.
- Definición de una condición de inicio
El asistente de job nos ayuda en la creación del job guiándonos de manera facil a través del proceso de creación.
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 también configurar si será el diseño (layout) estándar para el usuario actual o todos los usuarios.
Para el análisis de jobs, una columna que no se visualiza por defecto y es importante, es la columna de servidor de ejecución. Muchas veces algún problema en la ejecución de un job puede estar relacionado al servidor de aplicación donde se ejecuta.
Podemos también navegar a otras vistas específicas del job desde la visualización de job mostrada en la figura: Lista de Spool contiene las listas de salida de los programas de ABAP (si es que existen).
Detalle del Job 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. Solamente un administrador o un usuario con las autorizaciones necesarias para el procesamiento de background puede liberar un job. Esto asegura que usuarios sin autorización no puedan ejecutar jobs sin aprobación.
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.
NOTA: 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:
1. El administrador deliberadamente termina el job en la transacción SM37 mediante la selección de Job → Cancel active job.
2. Un paso del job terminó con error.
Podemos modificar un job mientras este tenga los estados Planificado 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.
 
 
 
Sobre el autor
Publicación académica de Wander Jorge Andujar Ortiz, en su ámbito de estudios para la Carrera Consultor Basis NetWeaver.
Wander Jorge Andujar Ortiz
Profesión: Ingeniero en Sistemas y Computación - Republica Dominicana - Legajo: XO87G
✒️Autor de: 104 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Certificación Académica de Wander Andujar