W Pub: ABAP Prog Propios DBG

Break Me - Breakpoint dependiendo de parmetros

Debug en productivo

Fichero a crear en el escritorio para Drag&Drop y poder debugar

  1. [FUNCTION]
  2. Command=/H
  3. Tittle=Debugger
  4. Type=SystemCommand

  1. REPORT BREAKMENOW.
  2.  
  3. * Ini -------- Rutina de Auto_BreakPoint
  4. DEFINE BREAKME. DATA: _1(18). GET PARAMETER ID 'BRKME' FIELD _1.
  5. CHECK SY-SUBRC EQ 0 AND _1+0(1) = 'X'. BREAK-POINT. END-OF-DEFINITION.
  6. * Fin -------- Rutina de Auto_BreakPoint
  7.  
  8. * Ini -------- Loader
  9. TABLES TPARA.
  10. CONSTANTS BRKME(5) VALUE 'BRKME'. " Nombre de la constante de breakme
  11. INCLUDE <ICON>.
  12. DATA: DAME(18).
  13. SELECTION-SCREEN: BEGIN OF LINE,      COMMENT 1(20) TXT1.
  14. PARAMETERS: HAYBREAK AS CHECKBOX.          "Selector de Break O No Break
  15. SELECTION-SCREEN: COMMENT 30(20) TXT, END OF LINE.
  16.  
  17. INITIALIZATION.
  18.    SELECT SINGLE * FROM TPARA WHERE PARAMID = BRKME.
  19.    IF SY-SUBRC NE 0.
  20.       TPARA-PARAMID = BRKME.
  21.       TPARA-PARTEXT = 'Break me, now!'.
  22.       INSERT TPARA.
  23.    ENDIF.
  24.    TXT1 = 'Break-Point'.
  25.  
  26. AT SELECTION-SCREEN OUTPUT.                            " Semaforo Bonito
  27.   GET PARAMETER ID BRKME FIELD DAME.
  28.   IF DAME+0(1) = ' '.
  29.      CLEAR HAYBREAK. TXT = '@0A@ Inactivo'.
  30.   ELSE.
  31.      HAYBREAK = DAME = 'X'. TXT = '@08@ Activo  '.
  32.   ENDIF.
  33.   SET PARAMETER ID BRKME FIELD DAME.
  34.   MESSAGE S398(00) WITH TXT1 ' ' TXT+5(08).
  35. END-OF-SELECTION.
  36.   SET PARAMETER ID BRKME FIELD HAYBREAK.
  37. * Ini -------- Linea de ejemplo
  38.   BREAKME.

  1. REPORT ZDEBUG_ME.
  2.  
  3. define _debug_new_var.
  4. * Creamos las variable
  5. field-symbols: <_ss_>.
  6. data: begin of _stack occurs 0,
  7.         txt(20),
  8.         val(60),
  9.         tipo(1),
  10.         long like dd03l-leng,
  11.         dec like dd03l-decimals,
  12.       end of _stack,
  13.       _sval like sval occurs 0 with header line,
  14.       _tab like dd03l-tabname,
  15.       _fie like dd03l-fieldname,
  16.       _ii(1),
  17.       _dcr(1).
  18. end-of-definition.
  19.  
  20. define _debug_push_var.
  21. * Apilamos variable
  22.    get parameter id 'DCR' field _dcr.
  23.    check _dcr = 'X'.
  24.    clear _stack.
  25.    assign (&1) to <_ss_>.
  26.    describe field <_ss_>: type _stack-tipo,
  27.                           length _stack-long,
  28.                           decimals _stack-dec.
  29.    _stack-txt = &1.
  30.    _stack-val = <_ss_>.
  31.    if _stack-tipo = 'P'. condense _stack-val no-gaps. endif.
  32.    append _stack.
  33. end-of-definition.
  34.  
  35. define _debug_get_val.
  36.    call function 'POPUP_GET_VALUES'
  37.    exporting
  38.      NO_VALUE_CHECK        = 'X'
  39.      popup_title           = 'Cambiar Variables'
  40.    importing
  41.      returncode            = _ii
  42.    tables
  43.      fields                = _sval
  44.    EXCEPTIONS
  45.      ERROR_IN_FIELDS       = 1
  46.      OTHERS                = 2.
  47. end-of-definition.
  48.  
  49. define _debug_show_var.
  50. * Mostramos las variables
  51.    get parameter id 'DCR' field _dcr.
  52.    check _dcr = 'X'. "Variable que lo har funcionar en Productivo
  53.    clear _sval. refresh _sval.
  54.    loop at _stack.
  55.       select tabname fieldname into (_tab, _fie) from  dd03l
  56.                             where inttype = _stack-tipo and
  57.                                  intlen   = _stack-long
  58.                              and decimals = _stack-dec
  59.                              and datatype ne 'CURR'.
  60.          read table _sval with key tabname = _tab fieldname = _fie.
  61.          check sy-subrc ne 0.
  62.          _sval-tabname   = _tab.
  63.          _sval-fieldname = _fie.
  64.          _sval-value     = _stack-val.
  65.          _sval-FIELDTEXT = _stack-txt.
  66.          append _sval.
  67.          exit.
  68.       endselect.
  69.    endloop.
  70.    _debug_get_val.
  71.    check _ii ne 'A'.
  72.    loop at _stack.
  73.       read table _sval with key FIELDTEXT = _stack-txt.
  74.       check sy-subrc eq 0.
  75.       assign (_stack-txt) to <_ss_>.
  76.       <_ss_> = _sval-value.
  77.    endloop.
  78. end-of-definition.
  79.  
  80. define _debug_more_var.
  81. * A&ntilde;adimos ms variables
  82.    get parameter id 'DCR' field _dcr.
  83.    check _dcr = 'X'.
  84.    clear _ii.
  85.    while _ii ne 'N'.
  86.       call function 'POPUP_TO_CONFIRM_STEP'
  87.       exporting
  88.          textline1            = '...add more variables'
  89.          titel                = 'Do you want to...'
  90.       IMPORTING
  91.          ANSWER               = _ii.
  92.       check _ii = 'J'.
  93.       clear _sval. refresh _sval.
  94.       _sval-tabname   = 'SYST'.
  95.       _sval-fieldname = 'PRTXT'.
  96.       _sval-FIELDTEXT = _sval-value = 'Qu variable quieres a&ntilde;adir'.
  97.       append _sval.
  98.       _debug_get_val.
  99.       check _ii ne 'A'.
  100.       read table _sval index 1.
  101.       check sy-subrc eq 0.
  102.       read table _stack with key txt = _sval-value.
  103.       check sy-subrc ne 0.
  104.       _debug_push_var _sval-value.
  105.    endwhile.
  106. end-of-definition.
  107.  
  108. data: si(30),
  109.       di type p decimals 2,
  110.       datu like sy-datum.
  111.  
  112. end-of-selection.
  113.    datu = sy-datum - 1.
  114.    di = '33.22'.
  115.    si = 'Hello World'.
  116.    _debug_new_var.
  117.    _debug_push_var: 'SI', 'DATU'.
  118.    _debug_more_var.
  119.    _debug_show_var.