✒️SAP BASIS Los jobs de background
SAP BASIS Los jobs de background
7.5 - Los Jobs de background
Que 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 WP en diálogo pueden ser secuencialmente procesadas en background sin afectar el performance de diálogo.
Un requisto 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).
Loos programas que deban ejecutarse regularmente y consuman mucho tiempo son planificadas como jobs de background en el sistema SAP. El administrador planifica los jobs de background y monitorea la correcta ejecución de los mismos.
- Los fundamentos.
WP 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 respuestas 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 WP de diálogo.
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 funcionao está descrito en la nota SAP 25528.
Podemos utilizar los procesos de background para tareas que consuman 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 estas son los backups diarios de base de datos o los cierres de mes financieros y contables.
Un job en 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 WP. 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 en 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 ejecute a la misma hora.
Un paso dentro de un job, puede ejecutar una de estas tres acciones:
- Un programa ABAP puede 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 background. Esto por ejemplo podría hacerse posteriormmente.
Un comando externo es un llamado a un script predefinido, un comando, o un programa a nivel del sistema operativo. Con comando externos, podemos enmascarar llamadas al sistema operativo y guardarlos en el sistema SAP bajo un nombre. 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 automatizació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 process 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 WP libres al momento.
- La planificación y el monitoreo:
Mediante la transacción M36 para definir nuevos jobs. Puedes también llamar al Asistente de Job, transacción SM36WIZ o desde la transacción SM36 también.
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 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 etán disponibles para el asistente de job.
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. También podemos 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 jobs desde la visualización de job mostrará en la figura:
Lista de spool contiene las listas de salida de los programas 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 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 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 tiempo normal, podemos analizar el job en modo de depuración. Luego podemos finalizar el job definitvamente o liberarlo nuevamente. Para esto, en la transacción SM37, seleccionamos job - Capture: active job.
- Finalidado (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.
Podemos modificar un job mientras este tenga los estados planificados o liberados. 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 Israel Cespedes Penaloza, en su ámbito de estudios para la Carrera Consultor Basis NetWeaver.
Israel Cespedes Penaloza
Profesión: Ingeniero Electrónico - Bolivia - Legajo: DO67A
✒️Autor de: 88 Publicaciones Académicas
🎓Cursando Actualmente: Consultor BASIS Nivel Avanzado
🎓Egresado del módulo:
Disponibilidad Laboral: PartTime
Certificación Académica de Israel Cespedes