Haltepunkte sichern
Kennen Sie das Problem, dass Sie bei einer komplexen Fehlersuche viele Haltepunkte mühsam neu setzen müssen, da diese nicht gespeichert werden können? Mit dem folgenden Programm können Sie die aktuellen Haltepunkte sichern und zu einem späteren Zeitpunkt wieder aktivieren.
Beschreibung
… folgt in Kürze…
Status
Den Status “LIST” legen Sie bitte mit Doppelklick auf “LIST” an (SET PF-STATUS).
|
Die einzelnen Funktionen können Sie den folgenden Funktionstasten zuweisen:
- SAVE: F11
- DELETE: SHIFT-F2
- ACTIVATE: STRG-F3
Quellcode
****************************************
*** TESTED WITH SAP R/3 Release 4.6C ***
****************************************
REPORT zz_haltepunkte_sichern NO STANDARD PAGE HEADING.
**INCLUDE lsdbgtop.
*FUNCTION-POOL SDBG MESSAGE-ID SY.
TYPES: flag,
bp_kind TYPE i,
* must correspond to SAVBR_BREAKPOINT in abdebug.c
BEGIN OF savbr_breakpoint,
bp_kind TYPE bp_kind,
program LIKE sy-repid,
cont_offset TYPE i,
END OF savbr_breakpoint.
CONSTANTS: c_true TYPE flag VALUE ‘X’,
c_false TYPE flag VALUE space,
* must correspond to BpKindComp in abstruc.h
c_bp_kind_cont_wait TYPE bp_kind VALUE 1.
DATA cont LIKE rcont OCCURS 0 WITH HEADER LINE.
TYPES: ty_bpid(40).
DATA:
t_breakpoints TYPE savbr_breakpoint OCCURS 30 WITH HEADER LINE,
t_bpids TYPE STANDARD TABLE OF ty_bpid,
t_mainprog TYPE STANDARD TABLE OF syrepid,
l_mainprog TYPE syrepid,
t_bp_extern LIKE breakpoint OCCURS 0 WITH HEADER LINE,
l_answer TYPE c,
l_bpid TYPE ty_bpid,
l_breakpoint_db_id(40),
l_breakpoint_db_id2(52),
t_cuax TYPE STANDARD TABLE OF syucomm,
BEGIN OF t_bp_full OCCURS 0,
mainprog TYPE syrepid,
progname TYPE syrepid,
line TYPE i,
END OF t_bp_full.
PARAMETERS: p_user TYPE syuname DEFAULT sy-uname OBLIGATORY.
START-OF-SELECTION.
SET PF-STATUS space.
CONCATENATE p_user ‘MyBreakPoints’ INTO l_breakpoint_db_id.
IMPORT t_bpids FROM DATABASE indx(z7) ID l_breakpoint_db_id.
PERFORM liste.
AT LINE-SELECTION.
CHECK NOT l_bpid IS INITIAL.
CLEAR t_cuax.
IF l_bpid = ‘Aktuell aktive Breakpoints’.
CALL ‘DEBUG_CNTL’
ID ‘MODE’ FIELD ‘R’
ID ‘BREAKPOINTS’ FIELD t_breakpoints[].
APPEND ‘ACTIVATE’ TO t_cuax.
PERFORM convert2extern.
ELSE.
APPEND ‘SAVE’ TO t_cuax.
IF p_user <> sy-uname.
APPEND ‘DELETE’ TO t_cuax.
ENDIF.
CONCATENATE p_user l_bpid INTO l_breakpoint_db_id2.
IMPORT t_bp_full FROM DATABASE indx(z7) ID l_breakpoint_db_id2.
ENDIF.
SET PF-STATUS ‘LIST’ EXCLUDING t_cuax.
WRITE: / l_bpid COLOR COL_POSITIVE.
LOOP AT t_bp_full.
WRITE: / t_bp_full-mainprog,
t_bp_full-progname,
t_bp_full-line.
ENDLOOP.
AT USER-COMMAND.
CASE sy-ucomm.
WHEN ‘SAVE’.
IF NOT t_bp_full[] IS INITIAL.
l_bpid = ‘Mein Haltepunkt’.
CALL FUNCTION ‘POPUP_TO_GET_VALUE’
EXPORTING
fieldname = ‘NAME1’
tabname = ‘ADDR1_DATA’
titel = ‘Beschreibung’
valuein = l_bpid
IMPORTING
answer = l_answer
valueout = l_bpid
EXCEPTIONS
fieldname_not_found = 1
OTHERS = 2.
IF sy-subrc = 0 AND l_answer = space.
COLLECT l_bpid INTO t_bpids.
EXPORT t_bpids TO DATABASE indx(z7) ID l_breakpoint_db_id.
CONCATENATE p_user l_bpid INTO l_breakpoint_db_id2.
EXPORT t_bp_full TO DATABASE indx(z7) ID l_breakpoint_db_id2.
MESSAGE s420(sy).
PERFORM liste.
ENDIF.
ENDIF.
WHEN ‘DELETE’.
READ TABLE t_bpids WITH KEY l_bpid TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
DELETE t_bpids INDEX sy-tabix.
EXPORT t_bpids TO DATABASE indx(z7) ID l_breakpoint_db_id.
CONCATENATE p_user l_bpid INTO l_breakpoint_db_id2.
DELETE FROM DATABASE indx(z7) ID l_breakpoint_db_id2.
ELSE.
*** Aktive Breakpoints
LOOP AT t_bp_full.
CALL FUNCTION ‘RS_DELETE_BREAKPOINT’
EXPORTING
index = t_bp_full-line
mainprog = t_bp_full-mainprog
program = t_bp_full-progname.
ENDLOOP.
ENDIF.
MESSAGE s413(sy).
PERFORM liste.
WHEN ‘ACTIVATE’.
LOOP AT t_bp_full.
CALL FUNCTION ‘RS_SET_BREAKPOINT’
EXPORTING
index = t_bp_full-line
program = t_bp_full-progname
mainprogram = t_bp_full-mainprog
EXCEPTIONS
not_executed = 1
OTHERS = 2.
ENDLOOP.
PERFORM liste.
ENDCASE.
*&———————————————————————*
*& Form liste
*&———————————————————————*
FORM liste.
sy-lsind = 0.
l_bpid = ‘Aktuell aktive Breakpoints’.
WRITE: / l_bpid HOTSPOT ON COLOR COL_TOTAL.
HIDE l_bpid.
IF sy-subrc = 0.
LOOP AT t_bpids INTO l_bpid.
WRITE: / l_bpid HOTSPOT ON.
HIDE l_bpid.
ENDLOOP.
ENDIF.
CLEAR l_bpid.
ENDFORM. ” liste
*———————————————————————*
* FORM convert2extern *
*———————————————————————*
FORM convert2extern.
CLEAR t_bp_full[].
CLEAR t_mainprog.
LOOP AT t_breakpoints.
COLLECT t_breakpoints-program INTO t_mainprog.
ENDLOOP.
LOOP AT t_mainprog INTO l_mainprog.
CALL FUNCTION ‘SYSTEM_DEBUG_BREAKPOINTS’
EXPORTING
main_program = l_mainprog
TABLES
breakpoints = t_bp_extern
EXCEPTIONS
generate = 01.
LOOP AT t_bp_extern.
t_bp_full-mainprog = l_mainprog.
t_bp_full-progname = t_bp_extern-program.
t_bp_full-line = t_bp_extern-line.
APPEND t_bp_full.
ENDLOOP.
ENDLOOP.
ENDFORM.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024