Truco 81. Debug en procesos de fondo.


Hace tiempo hablamos de la forma de realizar debug en las transacciones o reports de Sap, incluso cuando estábamos en ventanas modales en las que no está disponible el cuadro de comando (ver entrada https://saptricks.wordpress.com/2013/04/28/truco-53-debug-en-ventanas-popup/)

En ocasiones, el debug necesitamos realizarlo en procesos de fondo (por ejemplo, un job planificado en el sistema) o en las actualizaciones que se lanza de forma asíncrona cuando grabamos los datos en un proceso (por ejemplo, al facturar pedidos de ventas o entregas en SD).

Para el caso de los procesos de actualización, bastaría con activar la opción correspondiente en los parámetros de usuario cuando estamos en la herramienta de debug. Esto se realiza desde el punto de menú Opciones –> Visualizar/Modificar parametrizaciones que tenemos disponible desde la ventana de debug.

debug1

Cuando lo que queremos hacer es realizar un debug sobre un proceso que se ejecuta en fondo, tenemos disponibles varios métodos para realizar el proceso. En detalle, cada una de las opciones serían:

Jobs que están en ejecución

Accederemos a la transacción SM50, donde podemos consultar los procesos que se encuentran en ejecución en nuestro sistema. Nos posicionaremos encima del proceso a debugear y seleccionaremos la opción de menu Programa/Modo –> Programa –> Debugging.

debug2

A continuación se nos pedirá confirmación de la acción y entraremos a la herramienta de debug de la forma habitual.

debug3

Jobs finalizados.

Para realizar la misma operación, pero en este caso sobre jobs que ya hayan concluido, accederemos a la transacción SM37 y seleccionaremos el job que queremos analizar.

debug4

Escribiremos el comando JDBG en el campo de transacción, tal y como vemos en la imagen siguiente:

debug5

El programa del job seleccionado se ejecutará en modo debug, con un comportamiento de proceso en fondo (con la variable de sistema SY-BATCH = ‘X’).

debug6.jpg

Forzar debug en jobs de fondo.

En ocasiones, los jobs que se estan ejecutando son rápidos y no nos da tiempo a acceder a la SM50 para lanzar el debug sobre ellos. Para solucionar este problema, utilizaremos un pequeño truco.

Cuando realicemos la definición de los jobs con la transacción SM36, añadiremos siempre un paso previo, que incluirá la ejecución del programa BTCLOOP.

debug7

El programa BTCLOOP genera un bucle infinito, que hace que tengamos el programa disponible en la SM50 para poder tomar el control de el con el debug (como hemos indicado anteriormente).

debug8.jpg

Bastará con cambiar el valor de la variable I a 1, y el programa continuará su ejecución, realizando el debug hasta donde nos interese (habiendo puesto, por ejemplo, puntos de breakpoint en el programa que nos interesa analizar).

Referencias: http://scn.sap.com/community/spanish/blog

Gracias a  DAIRO LEONARDO LOZANO RODRIGUEZ y su entrada en los blogs del SCN de Sap: http://scn.sap.com/community/spanish/blog/2015/10/16/como-hacer-debug-a-procesos-en-fondo-jobs

 

Anuncios
Esta entrada fue publicada en Formacion, Sap Basis y etiquetada , , , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s