Варианты:
PERFORM - не работает в классах с одной стороны, и не знает ничего о типах внутри класса с другой. Описывать допольнительно тип из класса, тоже не интересно.
ФМ - т.к. код тупой и не предполагается его где-либо использовать, некрасиво. Опять же типы.
INCLUDE - тоже вариант, но не самый безопасный.
Предлагаемый выход - создать свой метод.
1) Объявляем свой метод внутри класса
*$*$ begin of global - insert your declaration only below this line *-*
METHODS
simple
EXPORTING
MONITOR type rstr_ty_t_monitors
CHANGING
RESULT_PACKAGE type _ty_t_TG_1.
*$*$ end of global - insert your declaration only before this line *-*
2) Создаем реализацию (т.с. самая фишка - нам доступен только метод end_routine или inverse)
Но не все потеряно, мы закрываем метод end_routine просто написав ENDMETHOD.
А ниже пишем реализацию своего класса, которая будет закрываться ENDMETHOD, который нам достался от метода end_routine.
*----------------------------------------------------------------------*
* Method end_routine
*----------------------------------------------------------------------*
* Calculation of result package via end routine
* Note: Update of target fields depends on rule assignment in
* transformation editor. Only fields that have a rule assigned,
* are updated to the data target.
*----------------------------------------------------------------------*
* <-> result package->
*----------------------------------------------------------------------*
METHOD end_routine.
*=== Segments ===
FIELD-SYMBOLS:
DATA:
MONITOR_REC TYPE rstmonitor.
*$*$ begin of routine - insert your code only below this line *-*
... "insert your code here
*-- fill table "MONITOR" with values of structure "MONITOR_REC"
*- to make monitor entries
... "to cancel the update process
* raise exception type CX_RSROUT_ABORT.
"Вызов нашего метода
me->SIMPLE(
* IMPORTING
* MONITOR =
CHANGING
RESULT_PACKAGE = RESULT_PACKAGE
).
ENDMETHOD. "закрываем метод end_routine
"реализация нашего метода
METHOD simple.
FIELD-SYMBOLS:
DATA:
MONITOR_REC TYPE rstmonitor.
BREAK-POINT.
*$*$ end of routine - insert your code only before this line *-*
ENDMETHOD. "end_routine
upd. Будет работать только если нет ни одной рутины
Комментариев нет:
Отправить комментарий