CREAR WATCHPOINT DENTRO DE UN LOOP

Te ha pasado alguna vez que ejecutas un reporte... y observas que el valor de algún campo no es el correcto o en todo caso te da curiosidad saber cómo es que se obtiene su valor, te ha pasado? 

Si es tu caso, Bienvenido!!! 
Y si ha eso le sumamos que al momento de debugear nos encontramos con un loop a una tabla interna que tiene por ejemplo 16497 (dieciséis mil  cuatrocientos noventa y siete) registros y justo el que queremos analizar es la línea 800 del registro. Uao decimos! Si debugeamos paso a paso tendríamos que ubicarnos en el valor de una variable dentro del loop y presionar 800 veces F8 (Ejecutar) hasta llegar a la línea 800 del registro...

Solución a este caso tenemos la opción de crear Watchpoint

Veamos el caso: 
Línea 647 del programa justo cuando cuando vamos empezar a loopear la tabla interna GTD_REPO vemos que tiene 16487 registros:
Aqui es importante tener asignado una variable dentro del loop por ejemplo en nuestro caso es: GV_MATNR_TMP la cual por cada ciclo irá almacenando temporalmente el valor del código del material.

Ubicamos el registro de la línea 800

Procedemos  a crear el Watchpoint para eso nos ubicaremos en la pestaña: Break-/Watchpoints, dentro de esto en la subpestaña: Watchpoints y hacemos clic en el ícono Nuevo.

Escribimos el nombre de nuestra variable: GV_MATNR_TMP 
y en la parte inferior la condición para nuestro caso como queremos analizar el registro de la línea 800 
GV_MATNR_TMP = '000000000011000798'


Activamos nuestro Watchpoint , volvemos a la pestaña Destokp3 donde visualizaremos nuestro código abap y ejecutamos (F8) automáticamente como el watchpoint ya esta activado el programa se detendrá justo cuando encuentre dicha variable con la condición asignada, veamos:

Para mayores detalles podemos ver toda la data del registro de la línea 800.
Independiente cual sea tu caso harás un análisis y/o plantear una modificación de la lógica ABAP.
Te animas a usar Watchpoint?

Aún no?... Haber, veamos otro caso:

En este caso, dentro de un loop se recorre N registros y por cada registro se va asignando la data de los campos que finalmente viajarán a un fichero .txt donde cada línea del archivo tendrá los datos de  cada campo separado por el carácter 'palote' '|' 


Ingresamos a la rutina que se encarga de la lógica para la asignación de los valores a cada campo. 


De todos estos campos, a modo de ejemplo nos enfocaremos sólo en el campo 7 ya que trae el dato del código de material y para un material específico se requiere hacer algún análisis en particular puede ser por motivo de algún error que se genera luego como algún dato que luego se esté asignando mal o por un Dump que genera luego, etc... 


Dentro del Debug, pulsamos en la pestaña 'Break/Watchpoints' y luego clic en el ícono nuevo para crear watchpoint.

Indicamos la variable, para este ejemplo es: PO_LINE-FIELD7 y ingresamos la condición adicional para que se detenga cuando PO_LINE-FIELD7 sea igual a un valor específico.


Observaremos que en la parte inferior izquierda nos mostrará el mensaje: "Se ha creado el watchpoint"

Activamos el Watchpoint

Observaremos que en la parte inferior izquierda nos mostrará el mensaje: "Watchpoint activated"


 Ejecutamos, y el watchpoint se detendrá justo cuando encuentre dicha variable y cumpla la condición indicada.

Observaremos que en la parte inferior izquierda nos mostrará el mensaje: "Se ha alcanzado el watchpoint..."

Pulsamos la pestaña 'Desktop3' para continuar con el análisis del caso particular.

De esta manera con el Watchpoint al estar dentro de un Loop nos hemos ahorrado el tiempo del Debug para ir directo a un valor específico y continuar con el análisis.

Ahora si, te animas a usar Watchpoint?


Nos vemos en el siguiente Blog ;)
MAGALEX

Comentarios

Entradas populares de este blog

Modificando Vista de Actualización SM30

User Exit para VA01 y VA02

Buttons and events in ALV GRID and ALV GRID OO