Quantcast
Channel: Blog de SAP: Actualidad SAP, Business Intelligence, SAP HCM, Abap…
Viewing all articles
Browse latest Browse all 660

El debugger ABAP

$
0
0

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: Breakpoint 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: Breakpoint de usuario 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.

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 ( Breakpoint de sesión o Breakpoint de usuario ). 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.

Nueva función del debugger ABAP

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 Depurar variables ABAP  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 Depurar tablas ABAP. Haciendo doble clic en estas variables se aparecerá una pestaña con todos los datos de la tabla o la estructura.

Depuración tablas ABAP

Con el botón Manipular tablas ABAP en depuració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) : Debugger ABAP:Depurar paso a paso 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) :Debugger ABAP: ejecutar 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) : Debugger ABAP: Retornar 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) Debugger ABAP: Continuar: 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.

Lanzar debugger ABAP en procesos de fondo


Viewing all articles
Browse latest Browse all 660