Для отладки разработок удобно использовать LOG-POINT (транзакция SAAB). Для этого в программе необходимо добавлять команду LOG-POINT ID, например:
1 |
LOG-POINT ID ZMY_POING SUBKEY 'Method1. Enter' FIELDS iv_parameter. |
Но при таком подходе требуется каждый раз следить за указанием правильности имени метода.
Для автоматизации можно создать метод, который сам получит наименование текущего метода.
1 2 3 4 5 6 7 8 9 |
METHOD get_name. DATA lt_callstack TYPE abap_callstack. CALL FUNCTION 'SYSTEM_CALLSTACK' EXPORTING max_level = 2 IMPORTING callstack = lt_callstack. rv_name = lt_callstack[ 2 ]-blockname. ENDMETHOD. |
Данный метода вернёт имя метода, имя подпрограмм (FORM) или наименование функционального модуля в зависимости от места вызова.
Конечно, данный способ не очень удобен так как записи с повторяющимся значением поля SUBKEY будут перезаписывать предыдущие и удобней добавить в него timestamp и значение опционального параметра.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class-methods GET_NAME importing !IV_KEY type ANY optional returning value(RV_NAME) type STRING . ... METHOD GET_NAME. GET TIME STAMP FIELD DATA(lv_timestamp). DATA lt_callstack TYPE abap_callstack. CALL FUNCTION 'SYSTEM_CALLSTACK' EXPORTING max_level = 2 IMPORTING callstack = lt_callstack. rv_name = |{ lv_timestamp } { lt_callstack[ 2 ]-blockname } { iv_key }|. ENDMETHOD. |
Вызов такого метода более гибок, так как можно вызывать с наименование точки get_name( ‘Enter’ ) или с основным параметром метода get_name( iv_parameter )
1 2 3 |
METHOD read_partner. LOG-POINT ID ZBUPA SUBKEY get_name( iv_partner ). ENDMETHOD |