W Pub: ABAP Gest Debug

Tabla

  1. *--[
  2. *--[ V.1.01 20150715 - Se añade gestión de bucles infinitos
  3. *--[
  4. *--[ USA A VARIABLE SY-LISEL PARA PASAR EL PARAMETRO DEL TAG
  5. *--[ EL TAG SIEMPRE DEBE COMENZAR POR @
  6. *--[
  7. *--[ Añadimos el break a la tabla, por si no está
  8. PERFORM INSERT_BKP IN PROGRAM Z58_I_BREAK_ME_PLUS IF FOUND
  9.         USING SY-CPROG
  10.               SY-REPID.
  11.  
  12. *--[ Comprobamos si existe completamente el BKP
  13. PERFORM CHECK_BKP IN PROGRAM Z58_I_BREAK_ME_PLUS IF FOUND
  14.         USING SY-CPROG
  15.               SY-REPID
  16.         CHANGING SY-SUBRC.
  17.  
  18. *--[ Si estás leyendo esto es porque hay un BREAK-POINT configurado
  19. *--[ en la tabla Z58_IG_TB_BRK.
  20. *--[ En la variable SY-LISEL podrás ver el motivo
  21. *--[ Desactivalo si ya no lo necesitas
  22. CASE SY-SUBRC.
  23.    WHEN 100. BREAK-POINT.
  24.    WHEN 101.
  25.       DO.
  26.          IF SY-SUBRC EQ 69.
  27.             EXIT.
  28.          ENDIF.
  29.       ENDDO.
  30. ENDCASE.
  1. REPORT Z58_I_BREAK_ME_PLUS.
  2.  
  3. *--[ Rutinas de soporte para el include Z58_I_BREAK_ME
  4.  
  5. FORM INSERT_BKP USING P_CPROG TYPE SYCPROG
  6.                       P_REPID TYPE SYREPID.
  7.   DATA: L_Z58_IG_TB_BRK TYPE Z58_IG_TB_BRK,
  8.         L_MOTIVO TYPE TEXT50.
  9.   IF SY-LISEL+0(1) = '@'.
  10. *--[ Buscamos por TAG
  11.     SELECT SINGLE MOTIVO INTO L_MOTIVO FROM Z58_IG_TB_BRK
  12.            WHERE  TAG   = SY-LISEL.
  13.  
  14.   ELSE.
  15. *--[ Buscamos por programa
  16.     SELECT SINGLE MOTIVO INTO SY-LISEL FROM Z58_IG_TB_BRK
  17.            WHERE  CPROG   = P_CPROG
  18.            AND    REPID   = P_REPID.
  19.   ENDIF.
  20.   IF SY-SUBRC NE 0.
  21.     CLEAR L_Z58_IG_TB_BRK.
  22.     IF SY-LISEL+0(1) = '@'.
  23.       L_Z58_IG_TB_BRK-TAG = SY-LISEL.
  24.       IF SY-MSGV1 IS INITIAL.
  25.          L_Z58_IG_TB_BRK-MOTIVO = '## AUTOMATIC TAG BREAK ##'.
  26.       ELSE.
  27.          L_Z58_IG_TB_BRK-MOTIVO = SY-MSGV1.
  28.       ENDIF.
  29.     ELSE.
  30.       L_Z58_IG_TB_BRK-MOTIVO = '## AUTOMATIC SOURCE BREAK ##'.
  31.     ENDIF.
  32.     L_Z58_IG_TB_BRK-CPROG = P_CPROG.
  33.     L_Z58_IG_TB_BRK-REPID = P_REPID.
  34.     L_Z58_IG_TB_BRK-UNAME = SY-UNAME.
  35.     L_Z58_IG_TB_BRK-DATBI = '99991231'.
  36.     L_Z58_IG_TB_BRK-DATAB = SY-DATUM.
  37.     INSERT Z58_IG_TB_BRK FROM L_Z58_IG_TB_BRK.
  38.   ENDIF.
  39. ENDFORM.                    "insert_BKP
  40.  
  41. FORM CHECK_BKP USING P_CPROG TYPE SYCPROG
  42.                      P_REPID TYPE SYREPID
  43.                CHANGING P_SUBRC.
  44.   IF SY-LISEL+0(1) = '@'.
  45.     SELECT SINGLE BUCLE INTO SY-LISEL FROM Z58_IG_TB_BRK
  46.            WHERE  TAG   = SY-LISEL
  47.            AND    ( UNAME   = SY-UNAME OR UNAME = '*' )
  48.            AND    DATBI   >= SY-DATUM
  49.            AND    DATAB   <= SY-DATUM
  50.            AND    ACTIV   = 'X'.
  51.   ELSE.
  52.     SELECT SINGLE BUCLE INTO SY-LISEL FROM Z58_IG_TB_BRK
  53.            WHERE  CPROG   = P_CPROG
  54.            AND    REPID   = P_REPID
  55.            AND    ( UNAME   = SY-UNAME OR UNAME = '*' )
  56.            AND    DATBI   >= SY-DATUM
  57.            AND    DATAB   <= SY-DATUM
  58.            AND    ACTIV   = 'X'.
  59.   ENDIF.
  60.   IF SY-SUBRC EQ 0.
  61.      P_SUBRC = 100.
  62.      IF SY-LISEL = 'X'.
  63. *--[ Bucle infinito activo
  64.         ADD 1 TO P_SUBRC.
  65.      ENDIF.
  66.   ENDIF.
  67. ENDFORM.  

Ejemplo

  1. *--[ Gestión de Break-Points
  2.   SY-LISEL = '@ENVIAR_PSCP'. "<-- Optional TAG
  3.   INCLUDE Z58_I_BREAK_ME.    "<-- Magic appers here