PROMO JULIO en CVOSOFT United States Of America: 💎Calidad, 🔥Bonificaciones, 🥶Precios Congelados y MÁS!

 X 

✒️SAP El procesamiento de fondo

SAP El procesamiento de fondo

SAP El procesamiento de fondo

1. Los conceptos del procesamiento de fondo (procesamiento batch o procesamiento en segundo plano)

  • Además de la opción de ejecutar programas y transacciones online, SAP nos da la posibilidad de ejecutar procesos de fondo.
  • Consiste en la ejecución de un proceso o programa sin interacción con el usuario, es decir, que lanzamos el proceso y el SAP GUI nos devuelve el control, aunque el programa todavía no ha acabado de ejecutarse.
  • Este modo de ejecución de procesos tiene una gran importancia cuando tratamos con programas que tardan mucho tiempo en completarse.
  • Se considera un buen tiempo de respuesta para un sistema online que no transcurran más de dos segundos entre dos acciones del usuario sobre el programa. No es probable que un usuario este esperando mas de 5 minutos la respuesta del sistema sin pensar que se ha quedado bloqueado o que ha fallado el programa, por esto cuando se prevea que un proceso va a durar más tiempo debería ser lanzado de fondo
  • Lo anterior se debe hacer cuando los procesos no son críticos para la obtención de datos en tiempo real, es la dirección de la empresa la que debe decidir. Por ejemplo, si sus pedidos de compra deben emitirse online o si pueden espera todos a la noche.

TIP

  • A partir de la implementación de la plataforma SAP HANA en las empresas, muchos procesos muy pesados que antes demoraban mucho en ejecutarse de fondo o batch cuando los resultados se requerían en minutos, redujeron significativamente su tiempo de ejecución gracias a la potencia de la base de datos en memoria.
  • Alguno de estos procesos pasaron a ejecutarse directamente en forma online, y otros de demorar días o horas a minutos. Mas procesos de fondo se pueden lanzar al mismo tiempo gracias a SAP HANA sin limitar en exceso los recursos de la base de datos y aquellas tareas particularmente costosas se pueden realizar de a una en vez de dividirlas en varias tareas

2. Los Job

  • Conjunto de uno o más programas o transacciones que se lanzan consecutivamente en un proceso de fondo.
  • Para crear un job utilizaremos la transacción estándar SM36 (y definir y planificar los procesos de fondo que se definan en el sistema SAP)
  • La definición de un job tiene tres áreas principales: información general, hora de inicio o evento de ejecución, pasos.
  • Se debe dar un nombre que defina el propósito que tiene el Job, se pueden crear varios Jobs con el mismo nombre (ej. actualizar estadísticas enero). Internamente SAP les asigna un numero (desconocido para nosotros)
  • Otro dato es la clase de Job que indica a SAP la prioridad de ejecución de los procesos que le mandamos y en función de ello asigna los recursos adecuadamente. Las clases son
  1. A- La más alta prioridad: procesos críticos para el funcionamiento del sistema
  2. B- Prioridad media: procesos periódicos que aseguran el mantenimiento del sistema.
  3. C- Prioridad normal: clase normal que se asigna a los jobs de usuario.

2.1. La hora de inicio o evento

Después de las características generales debemos indicar cuando debe ejecutarse el job, formas:

  • Ejecución inmediata
  • Ejecución por fecha/hora: y periodicidad por ej. para la planificación de jobs de mantenimiento o de recolección de estadísticas.
  • Por job: encadenando jobs, por ej. job B que empiece a ejecutarse cuando finalice el job A
  • Por evento: el job comenzará cuando se produzca en el sistema el evento que le indiquemos. Evento es un suceso que se produce automáticamente en el sistema SAP o que podemos provocar manualmente. Debe estar definido en la correspondiente tabla de SAP (Ej cambio de modo de operación de nocturno a diurno)

2.2. Los pasos de un job

  • Después de definir cómo y cuándo queremos que se procese el job vamos a decirle que es lo que queremos que haga. Los pasos de un job los componen los diferentes programas que queremos que se ejecuten. Estos programas son de 3 tipos
  1. Un programa ABAP estandar o creado por nosotros: al que le indicaremos una variante que contenga los parámetros de selección de ese programa.
  2. Un comando externo: que se ejecutará en el sistema operativo donde este el servidor de aplicaciones que procesa el job.
  3. Un programa externo que reside en otro sistema distinto a SAP: se usa cuando tenemos otros sistemas de gestión distintos a SAP y necesitamos tener interfaces entre ellos.
  • Los pasos de un Job constituyen un proceso unificado (si el primero sufre una cancelación, ninguno de los otros pasos se procesará.

TIPS:

Pasos necesarios para crear un Job de fondo, ingresar a la transacción SM36 y escribir en el campo Job el nombre del job y presionar enter, en la pantalla flotante siguiente introducimos el nombre del programa abad que deseamos planificar de fondo en el campo nombre programa abad y presionamos el botón verificar y luego grabar. A continuación presionamos el botón back o retroceder de la barra de navegación para configurar la condición de inicio del job seleccionamos el botón condición inicio que se encuentra en el extremo super izq en la barra de herramienta, en la pantalla siguiente seleccionamos el boton fecha e introducimos en el campo inicio previsto la fecha de arranque y la hora de ejecución del job, luego seleccionamos el botón valores de periodo para establecer con que frecuencia se ejecutara el job, aquí podemos optar entre cada hora, diario, semanal y otro periodo y luego grabamos, por ultimo volvemos a grabar y habremos creado y planificado el job

2.3. El análisis de un job

Podemos analizar y monitorizar el job a través de la transacción SM37, se puede visualizar: el ID, el usuario SAP que lo ejecutó, el status (previsto, liberado, preparado, activo, terminado o cancelado), la fecha y hora de inicio, la duración y el retraso.

2.4. Los estados de un job

  • Previsto: estado inicial en el que se encuentra cuándo hemos definido los datos generales y los pasos del job, pero no hemos dicho nada acerca de cuando debe ejecutarse; nunca se ejecutará a menos que lo liberemos o modifiquemos la sección de datos de inicio.
  • Liberado: cuando definimos completamente un job con la transacción SM36 o liberamos un job que estaba en estado previsto, para a liberado. Así permanecerá hasta que se cumpla la condición de su fecha de inicio o se produzca el evento que lo lanza
  • Preparado: cuando se cumplan las condiciones de inicio del job para al estado preparada en el que estará esperado a que haya recursos libres en el sistema para ejecutarse.
  • Activo: el job se está procesando, podemos ver el log desde este momento y ver lo que está haciendo
  • Terminado: el job completó su ejecución correctamente
  • Cancelado: algún problema se presento para que el job finalizara de manera incorrecta, como cancelaciones por errores del los programas que componen el job o problemas de acceso a la base de datos. En el log del job podemos ver el motivo de cancelación

2.5. Las operaciones sobre jobs

Si pulsamos en el menú Job correspondiente a la transacción SM37 veremos todas las operaciones posibles que podemos hacer para alterar el estado o composición de un job. Operaciones que podemos realizar sobre los procesos en fondo:

  • Verificar status: en algunas ocasiones podemos descubrir que un job que creemos que está activo (porque la transacción SM37 así nos lo dice) realmente no lo está. Con esta opción forzamos a SAP a comprobar que el estado que nos da para el job es realmente el que tiene en el sistema operativo.
  • Cancelar job activo: con esta opcion detenemos un job activo y lo pasamos directamente a estado cancelado. Si tuviera un job encadenado a continuación este no se procesará.
  • Borrar: una vez terminado o cancelado un job podemos borrarlo manualmente de la lista.
  • Liberar - previsto: utilizaremos esta opción para deshacer la liberación de un job. Es útil par ano tener que borrar y redefinir un job que hemos liberado a una hora concreta y después nos hemos dado cuenta de que no queremos lanzarlo aún.
  • Copiar: si queremos que un job se ejecute dos o tres veces lo copiaremos con esta opción y liberaremos cada una de las copias convenientemente. Si queremos que se ejecute más veces deberíamos pensar en la posibilidad de crear un job periódico.
  • Modificar: siempre y cuando no haya comenzado la ejecución del job (mientras este en previsto o liberado) podremos modificar cualquier dato de la definición del mismo.
  • Repetir previsión: esta opción es muy similar a la de copiar, pero además nos pide los datos de inicio del job, es decir, es como si copiamos un job y liberamos inmediatamente la copia.
  • Traslado a otro servidor: con esta opción cambiamos el servidor de destino de un job que no este activo.
  • Capturar job activo: para comprobar en qué punto va la ejecución del proceso que hemos lanzado podemos capturar un job que este activo. Al pulsar esta opción se nos abre un modo nuevo con el debugger de ABAP parado en el punto del programa que estuviera en ese momento. Debugger es la herramienta que nos proporciona SAP para identificar y corregir errores de programación. Es imprescindible para un buen programador saber utilizar el debugger a la perfección.
  • Detalles de job: aquí podemos ver datos internos del job. El más interesante es comprobar en que servidor de aplicaciones se está procesando y el número de cola BTC para poder monitorizar su estado y o rendimiento con la transacción SM51 (muestra los servidores de SAP, se puede seleccionar un servidor en particular y comprobar los procesos que se están ejecutando).

Cola BTC: Es la cola de procesamiento que se utiliza para los procesos batch o de fondo que se ejecutan en el sistema SAP. El administrador del sistema o también llamada "SAP BASIS" puede decidir reservar colas BTC específicas para determinados jobs o procesos de fondo, que se ejecuten en el sistema, de manera que nunca tengan que esperar a que existan recursos libres para su ejecución.

TIPS

Dado que los proceso de fondo no se ejecutan online entonces la posibilidad debuggear dichos procesos en la búsqueda de un error no resulta posible pero existe un truco para poder realizar un debagge de los procesos de fondo, mediante este truco vamos a poder debugguear el job de la transacción sm37, para ello vamos a la transacción sm37 seleccionar el job en cuestión e ingresar en la de comandos de sap JDBG una vez ingresado el comando el sistema abrirá un modo con el debuggeuin para job. Esta técnica puede ser muy util para debugguear un job, pero tiene como desventaja que si el job no nos da tiempo para realizar el truco entonces se debe buscar otra solución ej modificar el programa abap en cuestión agregando la sentencia wait la cual retrasa la ejecución de un programa ABAP.


 

 

 


Sobre el autor

Publicación académica de Adriana Paola Lucuara Arenas, en su ámbito de estudios para el Carrera Consultor Basis NetWeaver.