Depuración (debugging)
Ejecutar un programa paso a paso, poner puntos de parada y ver o cambiar valores.
- Manual ABAP
- 12 de 14
- Anterior
- Generación dinámica de programas
- Siguiente
- Procesos en fondo (jobs)
Antes y ahora
Las ideas de la depuración no han cambiado; las herramientas sí. Este es el resumen.
| Concepto | En el manual | Hoy | Estado |
|---|---|---|---|
| Depurador de SAP GUI | Depurador clásico | Nuevo depurador ABAP (desde NetWeaver 7.0), con pestañas configurables | Se escribe distinto |
| Depurar en Eclipse o VS Code | — | Depurador de ADT | Se escribe distinto |
| Depurar apps Fiori, OData o RFC | — | Puntos de parada externos (de usuario) | Se escribe distinto |
| Puntos de parada en el código | BREAK-POINT, BREAK usuario | BREAK-POINT ID grupo o puntos de la herramienta | Se escribe distinto |
| Rendimiento | SE30 | SAT y ST05 | Sustituido |
Sigue igual: /h para activar el depurador, paso a paso con F5, F6, F7 y F8, cambiar valores de variables, watchpoints.
12.1. Modo debugging
Se escribe distinto
Así se hace hoy
El depurador se sigue activando con /h o con un punto de parada. Desde NetWeaver 7.0 se abre el nuevo depurador, con pestañas para variables, tablas, objetos y pila de llamadas; ADT tiene su propio depurador integrado en Eclipse y VS Code.
Para depurar algo que no se lanza desde tu SAP GUI (una app Fiori, un servicio OData, una llamada RFC) usa un punto de parada externo: se dispara en cualquier sesión de tu usuario.
- Un programa ABAP puede ejecutarse paso a paso o pueden insertarse breakpoints para parar en cualquier sentencia la ejecución del mismo. Para activar la ejecución en “modo debugging” al testar una transacción o durante la ejecución de un programa hay que ir a la función debugging, por el menú: Sistema – Utilidades – Debugging ABAP, o bien introducir ‘/H’ en la barra de comandos. El depurador se activa en el siguiente paso de diálogo, es decir, al pulsar Intro o ejecutar. Empieza la ejecución paso a paso o con breakpoints.
- Los breakpoints pueden fijarse desde el editor pulsando el botón Fijar Breakpoint. Para ver los que hay definidos, por menú ir a Utilidades – Breakpoints – Visualizar. También se pueden codificar breakpoints en el programa de forma estática, usando la sentencia ABAP:
BREAK-POINT. - Al depurarse un programa, cuando se llega a un breakpoint la ejecución se detiene. En ese momento se puede conocer el contenido actual de todos los campos, variables, tablas internas, sus cabeceras, y bases de datos referenciadas en el report (incluso campos del sistema). Para ello hacer doble clic sobre el campo a ver, o bien pulsar el botón Seleccionar, o incluso escribir su nombre directamente. Para ver todas las entradas de una tabla interna, pulsar el botón Tabla y escribir su nombre. Su registro de cabecera se distingue con el símbolo: >>>>>.
- También se puede cambiar el contenido de los campos o variables en ese momento, forzando la ejecución del programa para ver cómo responde éste, o para corregir valores incorrectos. Para ello teclear el nuevo valor para una variable, y pulsar el botón Retener para ‘guardarlo’.
- La línea actual en proceso en modo debugging está marcada con un ‘>’ (es el punto de ejecución). En modo “paso a paso” se puede ejecutar una subrutina, función o bloque de programa todo seguido, pulsando el botón Ejecutar, o bien hacerlo paso a paso, con el botón Paso-a-paso.
- Los breakpoints dentro de un SELECT pueden dar problemas, pues el acceso a la base de datos no puede ser interrumpido. Mejor ponerlos antes o después, y saltar hasta él, o bien ejecutar paso a paso. Se pueden seleccionar breakpoints que dependan del código de retorno dado por SY-SUBRC. Se pueden grabar breakpoints para la duración de la sesión de diálogo (con Grabarfunción). Para parar el proceso en ciertas rutinas, eventos o palabras clave, elegir Entrar breakpoints – Breakpoint at – At event / form / keyword. Para que el control de programa vuelva al llamante, elegir Debugging Return.
12.2. Funciones principales en modo debugging
Se escribe distinto
Así se hace hoy
| Herramienta | Para qué |
|---|---|
| Punto de parada de sesión | Para en tu sesión de SAP GUI (y en las que abras después) |
| Punto de parada externo | Para en llamadas que no vienen de SAP GUI: apps Fiori, OData, RFC. Imprescindible para depurar RAP |
| Watchpoint | Para cuando una variable cambia o cumple una condición |
| Punto de parada condicional | Para solo si se cumple una condición (por ejemplo sy-tabix = 500) |
BREAK-POINT ID grupo | Puntos de parada que se activan con un grupo de puntos de control (SAAB), sin tocar el programa |
| ST22 | Dumps: el error, la línea y el valor de las variables en ese momento |
| SAT | Medir el tiempo de ejecución y ver qué partes tardan más |
| ST05 | Traza de SQL: qué consultas se lanzan y cuánto tardan |
No dejes BREAK-POINT ni BREAK usuario en el código que se transporta: el ATC lo marca como error.
- Paso simple o Paso-a-paso: Procesa la siguiente línea de programa, incluso dentro de las subrutinas, en las que entra y ejecuta también paso a paso.
- Continuar: El proceso continua automáticamente hasta el próximo breakpoint, donde se para, o hasta que finalice el programa.
- Ejecutar: Procesa paso a paso el programa principal, pero de un golpe las subrutinas.
- Breakpoint: Se muestra una pantalla en la cual pueden definirse breakpoints. Para ello elegir Breakpoint Set. Aparecerá una marca de breakpoint en la línea elegida. Para borrar un breakpoint, hacer doble clic sobre él. Para borrar todos, elegir por menú Borrar – Borrar todos.
- Retornar: Ejecuta hasta salir de la subrutina, método o función actual y se para en la sentencia siguiente a la llamada.
- Display Format: Permite elegir el formato del campo dado. Al marcar con ‘E’, ‘X’ o ‘C’ una columna, su contenido se muestra en: E (editado), X (hexadecimal), C (alfanumérico o char).
- Reemplazar: Al marcar con ‘R’ la columna, se puede cambiar el contenido de un campo. Para ello introducir un nuevo valor en la columna ‘cont’. Para cargar un valor en un campo, escribir su valor en dicha columna, elegir ‘columna R’ (para hacer efectivo el remplazo) y pulsar ENTER.