ABAP Rut Break ME
Tabla de diccionario necesaria

Programa que contiene los forms principales
- REPORT Z_I_BREAK_ME_PLUS.
- *--[ Rutinas de soporte para el include Z_I_BREAK_ME
- FORM INSERT_BKP USING P_CPROG TYPE SYCPROG
- P_REPID TYPE SYREPID.
- DATA: L_IG_TB_BRK TYPE Z_TB_BRK,
- l_motivo type TEXT50.
- IF SY-LISEL+0(1) = '@'.
- *--[ Buscamos por TAG
- SELECT SINGLE motivo INTO l_motivo FROM Z_TB_BRK
- WHERE TAG = SY-LISEL.
- ELSE.
- *--[ Buscamos por programa
- SELECT MOTIVO INTO SY-LISEL FROM Z_TB_BRK
- WHERE CPROG = P_CPROG
- AND REPID = P_REPID
- ORDER BY PRIMARY KEY.
- EXIT.
- ENDSELECT.
- ENDIF.
- IF SY-SUBRC NE 0.
- CLEAR L_Z_TB_BRK.
- IF SY-LISEL+0(1) = '@'.
- L_Z_TB_BRK-TAG = SY-LISEL.
- if sy-msgv1 is INITIAL.
- L_Z_TB_BRK-MOTIVO = '## AUTOMATIC TAG BREAK ##'.
- else.
- L_Z_TB_BRK-MOTIVO = sy-msgv1.
- endif.
- ELSE.
- L_Z_TB_BRK-MOTIVO = '## AUTOMATIC SOURCE BREAK ##'.
- ENDIF.
- L_Z_TB_BRK-CPROG = P_CPROG.
- L_Z_TB_BRK-REPID = P_REPID.
- L_Z_TB_BRK-UNAME = sy-uname.
- L_Z_TB_BRK-DATBI = '99991231'.
- L_Z_TB_BRK-DATAB = sy-datum.
- INSERT Z_TB_BRK FROM L_Z_TB_BRK.
- ENDIF.
- ENDFORM. "insert_BKP
- FORM CHECK_BKP USING P_CPROG TYPE SYCPROG
- P_REPID TYPE SYREPID
- CHANGING P_SUBRC.
- IF SY-LISEL+0(1) = '@'.
- SELECT BUCLE INTO SY-LISEL FROM Z_TB_BRK
- WHERE TAG = SY-LISEL
- AND ( UNAME = SY-UNAME OR UNAME = '*' )
- AND DATBI >= SY-DATUM
- AND DATAB <= SY-DATUM
- AND ACTIV = 'X'
- ORDER BY PRIMARY KEY.
- EXIT.
- ENDSELECT.
- ELSE.
- SELECT BUCLE INTO SY-LISEL FROM Z_TB_BRK
- WHERE CPROG = P_CPROG
- AND REPID = P_REPID
- AND ( UNAME = SY-UNAME OR UNAME = '*' )
- AND DATBI >= SY-DATUM
- AND DATAB <= SY-DATUM
- AND ACTIV = 'X'
- ORDER BY PRIMARY KEY.
- EXIT.
- ENDSELECT.
- ENDIF.
- if sy-subrc eq 0.
- P_SUBRC = 100.
- if SY-lisel = 'X'.
- *--[ Bucle infinito activo
- add 1 to P_SUBRC.
- endif.
- endif.
- ENDFORM. "CHECK_BKP
Include Z_I_BREAK_ME
- *--[ Gestor de Break-Points
- *--[
- *--[ V.1.01 20150715 - Se añade gestión de bucles infinitos
- *--[
- *--[ USA A VARIABLE SY-LISEL PARA PASAR EL PARAMETRO DEL TAG
- *--[ EL TAG SIEMPRE DEBE COMENZAR POR @
- *--[
- *--[ Añadimos el break a la tabla, por si no está
- PERFORM INSERT_BKP IN PROGRAM Z_I_BREAK_ME_PLUS IF FOUND
- USING SY-CPROG
- SY-REPID.
- *--[ Comprobamos si existe completamente el BKP
- PERFORM CHECK_BKP IN PROGRAM Z_I_BREAK_ME_PLUS IF FOUND
- USING sy-cprog
- sy-repid
- CHANGING SY-SUBRC.
- *--[ Si estás leyendo esto es porque hay un BREAK-POINT configurado
- *--[ en la tabla Z_TB_BRK.
- *--[ En la variable SY-LISEL podrás ver el motivo
- *--[ Desactivalo si ya no lo necesitas
- case sy-subrc.
- when 100. BREAK-POINT.
- when 101.
- do.
- if sy-subrc eq 69.
- exit.
- endif.
- enddo.
- endcase.
- *--[ IECI:FIN 20150428