Привет, сегодня я хотел бы вынести на рассмотрение одну из своих идей. Она состоит в том, чтобы создать скрипт для отладчика, который бы выводил все включения в стандартный код. Для примера, вы пришли на какой-то проект, но не с начала (или это проект развития системы), вы запускаете одну из транзакций, но она ведет себя не так, как вы ожидаете. Вы проверяете настройки и т.д., но дело в том, что в транзакции реализована, например, BADI и из-за него весь сыр-бор…

На днях я набросал одни скрипт, но у него есть ряд ограничений и один очень существенный недостаток. Первое, он не отлавливает модификации, второе, он сильно затормаживает программу, т.к. его приходится (вернее я пока только додумался) запускать в режиме «Debugger single step»

Скрипт еще сырой, ниже приведет его листинг, у кого какие идеи?

*———————————————————————*
* CLASS lcl_debugger_script DEFINITION
*———————————————————————*
*
*———————————————————————*
CLASS lcl_debugger_script DEFINITION INHERITING FROM cl_tpda_script_class_super .

PUBLIC SECTION.
METHODS: prologue REDEFINITION,
init REDEFINITION,
script REDEFINITION,
end REDEFINITION.
PRIVATE SECTION.
DATA PROGRAM TYPE sy-repid.
ENDCLASS. «lcl_debugger_script DEFINITION
*———————————————————————*
* CLASS lcl_debugger_script IMPLEMENTATION
*———————————————————————*
*
*———————————————————————*
CLASS lcl_debugger_script IMPLEMENTATION.
METHOD prologue.
*** generate abap_source (source handler for ABAP)
super->prologue( ).
ENDMETHOD. «prolog

METHOD init.

*** insert your initialization code here
ENDMETHOD. «init
METHOD script.

data text(50) type c.
data gv_rc TYPE tpda_trace_custom.
data incl TYPE SYREPID.
data even type TPDA_SCR_EVENT.
data l_flag_abap TYPE FLAG.

* trace->add_event_info( ).
gv_rc-VALUE = abap_source->program( ).

l_flag_abap = abap_source->ISABAP( ).
if l_flag_abap is not INITIAL.
incl = abap_source->INCLUDE( ).
endif.
* even = abap_source->EVENT( ).
if gv_rc-VALUE ne PROGRAM and ( gv_rc-VALUE cp ‘Z*’ or gv_rc-VALUE cp ‘Y*’ or incl cp ‘Z*’ or incl cp ‘Y*’
).
PROGRAM = gv_rc-VALUE.

if incl cp ‘Z*’ or incl cp ‘Y*’.

CONCATENATE gv_rc-VALUE ‘/’ incl INTO gv_rc-VALUE SEPARATED BY space.
endif.
trace->add_custom_info( p_trace_entry = gv_rc ).
endif.
*** insert your script code here
ENDMETHOD. «script
METHOD end.
*** insert your code which shall be executed at the end of the scripting (before trace is saved)
*** here

ENDMETHOD. «end
ENDCLASS. «lcl_debugger_script IMPLEMENTATION

 

Текст скрипта PROGRAM.txt

   
© 2013 sap-blog.ru
Яндекс.Метрика