✒️SAP BASIS Los jobs de background
SAP BASIS Los jobs de background
UNIDAD 7 - LECCIÓN 5: JOBS DE BACKGROUND
¿QUÉ ES EL PROCESAMIENTO DE 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 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ían terminar compitiendo por recursos compartidos con procesos de diálogo (memoria principal, CPU).
FUNDAMENTOS
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 justamente. Limita el máximo tiempo de ejecución de un paso de diálogo en un work process de diálogo.
Los programas que deban ejecutarse regularmente y consuman mucho tiempo son planificados como jobs de background en el sistema SAP. El administrador planifica los jobs de background y monitorea la correcta ejecución de los mismos.
Transacción RZ11: Permite la visualización de parámetros del sistema y la modificación del o 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.
Podemos utilizar los procesos de background para tareas que consumen mucho tiempo. También se conocen estos como procesos de batch.
Normalmente, los procesos de background no se utilizan solamente para ejecuciones largas, sino que también para tareas repetitivas. Ejemplos de estos son los backups diarios de base de datos o los cierres de mes financieros y contables.
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, éste 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.
Nota: 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.
Un paso dentro de un job puede ejecutar una de estas 3 acciones:
- Un programa ABAP puede planificarse como un paso de un job. Si el programa ABAO 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 SAO 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 qué usuarios están permitidos a ejecutar qué comandos externos (sobre qué 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 (esto incluye el inicio inmediato, si no hay background work processes libres disponibles al momento en que debe iniciar el job según la planificación).
- Mediante la ocurrencia de un evento particular definido en el sistema SAP. Esto incluye jobs que se iniciarán 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 libre al momento.
PLANIFICACIÓN Y MONITOREO
Podemos utilizar la transacción SM36 para definir nuevos jobs. Pueden también llamar el Asistente de job, transacción SM36WIZ o desde la transacción SM36 también.
Transacción SM36 y SM36WIZ: La transacción SM36 al igual que la SM36WIZ 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 requieren 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 guardá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: Permite monitorear los jobs.
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.
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.
- Finalizado (Finished): Todos los pasos del job fueron ejecutados sin problemas.
- Cancelado (Canceled): El job finaliza anormalmente, esto puede suceder de 2 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.
 
 
 
Agradecimiento:
Ha agradecido este aporte: Jorge Alanoca
Sobre el autor
Publicación académica de Tatiana Ruiz Flores, en su ámbito de estudios para la Carrera Consultor Basis NetWeaver.
Tatiana Ruiz Flores
Profesión: Ingeniera en Sistemas - Bolivia - Legajo: JW46O
✒️Autor de: 49 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Tatiana Ruiz