El debugger es una herramienta imprescindible para los programadores de cualquier lenguaje. Con él es posible probar y depurar aplicaciones que se están desarrollando, visualizar y modificar variables en tiempo de ejecución o comprobar errores que aparecen en aplicaciones que fallan.
En el lenguaje de programación de SAP, ABAP obviamente existe este programa y en el siguiente artículo explicaré su uso y alguna aplicación más avanzada del debugger ABAP.
Debugger ABAP: Tipos de breakpoint
Lo primero para poder utilizar el depurador ABAP será poner un breakpoint en el código que queramos revisar. Un breakpoint sirve para lanzar el debugger ABAP, con lo que el programa aparecerá en un nuevo modo, para así poder depurar desde la línea de código donde hemos puesto dicho breakpoint. Existen dos tipos de breakpoints:
- Breakpoints de sesión: Estos puntos de interrupción solo son válidos para la sesión actual, es decir, para aplicaciones que se lancen dentro de la misma entrada al sistema. Además estos breakpoints son independientes de usuario.
- Breakpoints externos: Estos puntos de interrupción son válidos para cualquier aplicación que se ejecute en el sistema, independientemente de donde se haya lanzado. Por ejemplo, en aplicaciones Web Dynpro o BSP, que se ejecutan desde un navegador web, solo podrían utilizarse este tipo de breakpoints. Estos suelen tener validez de 2 horas y se asocian a un usuario.
En las opciones específicas de usuario (Menú Utilidades->Opciones) existe una pestaña para definir las opciones del debugger ABAP.
En el campo usuario podremos definir para qué usuario se pondrán los breakpoints externos. También podemos definir qué debugger ABAP utilizar, si el clásico o la nueva función. En este artículo hablaré sobre la nueva función.
Debugger ABAP: Nueva función
Para poner o quitar un breakpoint debemos posicionar el cursor en la línea de código que queramos y utilizar el botón correspondiente ( o ). También se pone un breakpoint de sesión si hacemos clic con el ratón a la izquierda del número de línea o escribiendo la sentencia BREAK-POINT en el código.
Al ejecutar un programa en que hemos puesto algún breakpoint, nos aparecerá el debugger ABAP en un nuevo modo. Es importante que para ejecutar el nuevo debugger no tengamos 6 modos abiertos, ya que el nuevo programa necesita uno propio.
Si nos vamos a la pestaña de “Desktop 3”, a la izquierda nos aparecerá el código de la aplicación en ejecución y a la derecha una tabla con las variables del programa. En las dos primeras pestañas podremos poner las variables que queramos: en “Locals” nos aparecerán todas las variables locales del programa y en “Globals” las globales.
Depuración de variables ABAP
En las dos primeras pestañas, que es donde podemos elegir las variables, podemos escribir el nombre de la variable o hacer doble clic en el código sobre la variable que queramos modificar. Podremos modificar variables ABAP pulsando el botón para cambiar su valor en tiempo de ejecución para probar el programa. Hay variables que no pueden ser modificadas, como son los parámetros import pasados por referencia.
Depuración de tablas ABAP
Si hacemos doble clic sobre una tabla, aparecerá el nombre de la tabla con corchetes, indicando el número de filas y columnas que tiene la tabla. Si esta tabla tiene línea de cabecera, aparecerán los datos de la línea de cabecera y el símbolo . Haciendo doble clic en estas variables se aparecerá una pestaña con todos los datos de la tabla o la estructura.
Con el botón podremos quitar, añadir o eliminar filas de una tabla en tiempo de ejecución. También podremos guardar los datos de las tablas en un fichero externo.
Avanzar por el programa ABAP
Por último, para poder avanzar por el programa, se pueden utilizar las siguientes opciones:
- Paso a paso (F5) : Se introducirá en la línea de código que estemos, es decir, si es una subrutina o una función navegará hasta ella para poder depurarla. Si es una sentencia simple (IF, MOVE, CLEAR…) pasará a la siguiente línea de código.
- Ejecutar (F6) : Avanzará a la siguiente línea de código, independiente de que sea una subrutina, función o sentencia simple, ejecutando la subrutina o función en cuestión.
- Retornar (F7) : Si se está dentro de una subrutina o función, saldrá de la misma ejecutándola y parando justo en la línea siguiente a su llamada.
- Continuar (F8) : El programa se ejecutará hasta encontrar otro breakpoint. Si no existen más, el programa se ejecutará hasta terminar o pasar el control al usuario.
Otra utilidad que ofrece es poder posicionarse en una línea de código sin ejecutar el programa, es decir, no haciendo caso a las líneas de código. Para ello, posicionaremos el cursor en la línea que queramos saltar y pulsaremos la combinación de teclas SHIFT+F12. Con esto podremos ejecutar el programa obviando subrutinas o líneas de código.
Con lo expuesto anteriormente ya podremos empezar a depurar nuestros programas ABAP y empezar a jugar con el debugger ABAP, que aún ofrece más utilidades.
Debugger ABAP en procesos de fondo
Hay en ocasiones que el debugger ABAP no salta con los breakpoints que he comentado antes, como puede ser en los procesos de fondo. Para esto, existe un pequeño truco que consiste en crear mediante código un pequeño bucle que pare la ejecución del programa y luego podamos acceder al debugger ABAP mediante el gestor de procesos de trabajo.
Primero, deberemos escribir el siguiente código en el punto del programa que queramos debuggear:
DATA stop TYPE i.
WHILE stop < 60.
WAIT UP TO 1 SECONDS.
stop = stop + 1.
ENDWHILE.
Con este bucle haremos el programa esté parado durante 60 segundos. En este tiempo, deberemos acceder a la transacción SM50. De los procesos que estén en ejecución en el sistema, buscamos el que corresponda a nuestro programa y lo seleccionamos. Después en el menú accedemos a Administración->Programa->Debugging.
Pinchando aquí conseguiremos que se abra el debugger ABAP en un nuevo modo con el programa que queremos depurar.