![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️SAP BASIS Los jobs de background
SAP BASIS Los jobs de background
![SAP BASIS Los jobs de background SAP BASIS Los jobs de background](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/310.jpg)
Jobs de Background
¿Que es el procesamiento en background o de fondo?
El procesamiento en background deberia esencialmente separar tareas periodicas y que insumen mucho tiempo de aquellas de interaccion de usuarios. Tareas que requieren mucho tiempo y ocuparian un work process en dialogo pueden ser secuencialmente procesadas en background sin afectar la performance de dialogo.
Un requisito importante para conseguir este objetivo es un dimensionamiento apropiado del sistema, ya que, demasiados procesos de background podria terminar compitiendo por recursos compartidos con procesos de dialogo (memoria principal, CPU).
Los programas que deban ejecutarse regularmente y consuman mucho tiempo son planificado como jobs de background en el sistema SAP. El administrador planifica los jobs de background y monitorea la correcta ejecucion de los mismos.
1. Fundamentos:
Las siguientes preguntas responderemos en esta leccion:
¿Por que necesitamos procesamiento en background?
¿Que es un job de background?
¿Que podemos realizar en background?
¿Que condiciones de inicio existen?
¿Como son planificados y monitoreados los jobs?
¿Que estados puede tener un job?
Work processes de dialogo deberian estar disponibles para responder a las solicitudes de los usuarios rapidamente. Los recursos de dialogo deberian por lo tanto no ser utilizados para ejecuciones prolongadas ya que puedan provocar cuellos de botella en el tiempo de respuesta de dialogo.
El parametro rdisp/max_wprun_time existe por este motivo justamente. Limita el maximo tiempo de ejecucion de un paso de dialogo en un work process de dialogo.
Transaccion RZ11:
La TXRZ11 es utilizada para la visualizacion de parametros del sistema y la modificacion de los que el sistema permita editar sin reinicio de la instancia.
Esto deberia asegurar que los procesos de dialogo no sean bloqueados por programas que requieren demasiado tiempo de ejecucion, interfiriendo la operacion online. Luego de que el maximo tiempo se ha superado, el programa es terminado.
La manera en que el parametro rdisp/max_wprun_time funciona esta descripto en la nota de SAP 25528.
Podemos utilizar los procesos de background para tareas que consuman mucho tiempo. Tambien se conocen estos como procesos de batch.
Normalmente, los procesos de background no se utilizan solamente para ejecuciones largas, sino que tambien para tareas repetitivas. Ejemplos de estas son los backups diarios de base de datos o los cierres financieron contables.
Un job de background consiste de uno o mas pasos (steps). Un paso puede ser:
- Un programa ABAP
- Un comando externo
- Un programa externo
Cada job se procesa sin interrupcion por un unico backgroun 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 tendra preferencia con respecto a otros jobs de la misma clase. Esta preferencia solamente aplica si multiples 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.
Deberiamos asegurarnos que la mayor parte de los jobs de background sean planificados con prioridad normal, clase C, sin especificacion de servidor de ejecucion.
Esto deberia aplicar para el 90% o mas de todas las tareas de background.
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 mas pantallas de seleccion, 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 ejecucion del programa. Si un programa ABAP tiene una pantalla de salida como resultado, esto es dirigido a una lista de spool.
Podriamos tambien especificar un recipiente de email para esta lista de spool durante la definicion del job.
Debemos especificar una impresora para la creacion 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 podria 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 tambien el concepto de autorizacion de SAP para proteger la ejecucion de un comando externo. Esto permite que podamos determinar que usuarios estan permitidos a ejecutar que comando externos (sobre que servidores y/o sistemas operativos)
- Un programa externo es un comando del sistema operativo. El concepto de autorizacion de SAP solamente especifica si un usuario puede llamar un programa externo o no. Una asignacion mas detallada de autorizaciones, por ejemplo a nivel de los nombres de programa, no es provista con la ejecucion de programas externos. Utilicemos comandos externos para esto.
Un job puede ser iniciado:
- Mediante planificacion 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 segun la planificion).
- Mediante la ocurrencia de un evento particular definido en el sistema SAP. Esto incluye jobs que se iniciaran luego de la finalizacion de otros jobs o en los cambios de modo de operacion o jobs con inicio inmediato si existen background work processes libres al momento.
2. Planificacion y Monitoreo:
Podemos utilizar la TX SM36 para definir nuevos jobs. Puedes tambien llamar el Asistente de Job, TX SM36WIZ o desde la TX SM36 tambien.
TX SM36 y SM36WIZ: son utilizadas para la creacion de Jobs tanto estandar como propios, permitiendo definir mas de un paso de ejecucion en cada uno.
Las especificaciones que requiere la definicion de un job son:
- Especificaciones generales tales como nombre de job, prioridad del job (por defecto: C) y opcionalmente un servidor de ejecucion o grupo.
- Definicion de uno o mas pasos
- Definicion de una condicion de inicio (de tiempo o controlada por evento)
El asistente de Job nos ayuda en la creacion del job guiandonos de manera facil a traves del proceso de creacion.
El metodo de creacion de un job de background (clasico o mediante el Asistente de Job) no tiene incidencia en el resultado. Algunas funciones (especificar el usuario SAP en la definicion del paso de job, modificacion del orden de ejecucion de los pasos) no estan disponibles para el Asistente de Job.
TX SM37: permite monitorear los jobs. Podemos seleccionar los jobs utilizando diversos criterios en la pantalla inicial de esta transaccion. Algunas opciones serian 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 menu Settings podemos determinar las columnas que se mostraran y el orden, entre otras cosas. Podemos tambien configurar si sera diseño (Layout) estandar para el usuario actual o todos los usuarios.
Para el analisis de jobs, una columna que no se visualiza por defecto y es importante, es la columna de servidor de ejecucion. Muchas veces algun problema en la ejecucion de un job puede estar relacionado al servidor de aplicacion donde se ejecuta.
Podemos tambien navegar a otras vistas especificas del job desde la visualizacion de job.
Listas de Spool contiene las listas de salida de los programas de ABAP (si es que existen).
Detalle del job contiene, entre otras cosas, informacion sobre la definicion del job, duracion 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 informacion sobre un programa que finalizo con error o para realizar una investigacion detallada sobre la ejecucion de un job de background.
Un job puede tener los siguientes estados:
- Planificado (Scheduled): Los pasos que requieren la creacion del job han sido definidos ya, de todas formas la condicion de inicio aun necesita ser definida.
- Liberado (Released): El job ha sido completamente definido, incluyendo la condicion de inicio. Un job no puede ser liberado sin una condicion de inicio. Solamente un administrador o un usuario con las autorizacones necesarias para el procesamiento de background puede liberar un job. Esto asegura que usuarios sin autorizacion no pueden ejecutar jobs sin aprobacion.
- Listo (Ready): La condicion 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 esta siendo ejecutado y no puede ser borrado ni modificado. Si un job activo no se ejecuta normalmente, por ejemplo, demora mucho mas del tiempo normal, podemos analizar el job en modo de depuracion. Luego podemos finalizar el job definitivamente o liberarlo nuevamente. Para esto, en la TX SM37, seleccionamos Job --> Capture: active job.
Para capturar un job de background, debemos iniciar sesion en el servidor SAP donde el job esta 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 Tx SM37 mediante la seleccion de Job --> Cancel active job.
2. Un paso del job termino con error.
Podemos modificar un job mientras este tenga los estados Planificando o Liberado. Si la ejecucion 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 menu selecciona Job --> Copy.
 
 
 
Sobre el autor
Publicación académica de Guillermo Andres Reyes Navarro, en su ámbito de estudios para la Carrera Consultor Basis NetWeaver.
Guillermo Andres Reyes Navarro
Profesión: Ingeniero de Sistemas - Colombia - Legajo: LU47E
✒️Autor de: 51 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime