En el modo debug de SAP podemos ejecutar un programa linea por linea y examinar los valores de las variables y el camino que toma un programa con el fin de encontrar errores.
Activar el modo debug.
Podemos activar el modo debug de SAP con una de las siguientes opciones:
- Con la instrucción break tu_usuario en tu programa.
- Creando un break point temporal al visualizar un programa nos posicionamos dentro de una linea ejecutable y luego hacemos clic sobre el icono de Fijar/borrar break point de sesión (Ctrl+Shift+F12)
- Creando un break point dinámico.
- Digitando /h como que si fuera una transacción durante la ejecución de un programa.
Entorno del modo debug.
Aquí describo cada numeral marcado en la imagen anterior:
- Área que muestra el código del programa que estamos depurando, la linea actual se identifica por una flecha amarilla mostrada en la parte izquierda.
- Aquí se puede consultar el contenido de las variables, podemos verlas haciendo doble clic sobre la
variable dentro del código (1), o digitando el nombre dentro de esta sección. En caso de tratarse de
una estructura a la izquierda se verá un icono sobre el cual debemos hacer doble clic para ver el
detalle de la estructura. - Al hacer doble clic sobre el icono del lápiz podemos modificar el contenido de las variables.
- Aquí se muestra el programa actual en ejecución, al hacer doble clic sobre el icono a la izquierda, se
abre un nuevo modo con el programa abierto. - En esta pestaña podemos visualizar el contenido de la fila actual de una tabla o estructura en
formato vertical - Muestra un listado de las variables locales
- Muestra un listado de las variables globales.
Técnicas para debug.
Una vez estemos en modo debug podemos avanzar por el código con las siguientes teclas
- F5, paso a paso por instrucción
- F6, paso a paso por instrucción sin entrar en las funciones o subrutinas.
- F7, se va hasta el final del programa, subrutina o función actual
- F8, interrumpe el debug y continua la ejecución del programa hasta finalizar o encontrar otro break point
- Shift + F8, continuar hasta el cursor
- Desde aquí también podemos fijar break points temporales que cumplan con un criterio, por ejemplo al
llamar a una función. Para esto usamos el menú Breakpoints > Breakpoint At
Y seleccionamos las opciones que necesitemos, por ejemplo Breakpoint at Function Module, y digitamos el nombre de la función. Para eliminar estos break points usamos la opción del mismo menú Borrar BP (todos) o Desactive BP (todos)
Si nos interesa una o más variables en particular, por ejemplo no sabemos en que momento cierta variable cambia a un valor que no esperábamos, podemos crear un Watchpoint para esa variable, luego presionamos F8 y el programa se detendrá en el momento que la variable cambie de valor.
Debug de un mensaje de error
Cuando iniciamos en el uso de un módulo de SAP, veremos muchos errores que no sabremos como corregir, en la mayoría de casos se refiere a que se hizo mal algo en la transacción o hace falta alguna configuración y no se ha llenado alguna tabla. Para debugear un error, podemos usar estas dos técnicas.
Mediante la transacción SE91
Al ver el mensaje le damos doble clic y nos dará la clase de mensaje y el número.
Con estos datos ingresamos en la transacción SE91, colocamos la clase de mensaje y el número y damos clic sobre el botón de Referencia de utilización.
Luego nos mostrará una lista de programas en los que se usa el código, si la lista no es muy grande podemos hacer doble clic sobre cada descripción y con esto nos llevará justo a la linea de código donde se llama el mensaje, ahora colocamos un break point y ejecutamos la transacción o programa que estamos depurando y se detendrá justo en el lugar donde colocamos el break point.
Haciendo debug durante la transacción
Primero entramos en la transacción que genera el error, luego justo antes de que el error se despliegue, ingresamos como transacción /h para activar el modo debug, luego ya en la pantalla de debug presionamos Shift+F5 y e ingresamos el texto MESSAGE y hacemos clic sobre el icono del cheque, con esto hacemos que el programa se detenga cada vez que se muestre un mensaje, ahora presionamos F8 para revisar cada mensaje hasta encontrar el que nos interesa. Al llegar al mensaje que nos interés podemos leer el código y entender mejor porque se da el error.
Debuguear un programa estándar consume mucho tiempo, por lo que ante un error es mejor buscar antes si el problema se da por la falta de alguna nota de SAP.