Создайте класс, который предоставляет открытые члены для хранения всех ваших параметров.
CLASS ztesten_config DEFINITION PUBLIC CREATE PUBLIC.
PUBLIC SECTION.
DATA p1 TYPE c.
DATA p2 TYPE c.
ENDCLASS.
CLASS ztesten_config IMPLEMENTATION.
ENDCLASS.
Создайте экземпляр класса и сохраните ваши параметры внутри.
REPORT ztesten.
PARAMETERS p1 TYPE c.
PARAMETERS p2 TYPE c.
START-OF-SELECTION.
DATA(config) = NEW ztesten_config( ).
config->p1 = p1.
config->p2 = p2.
zcl_class=>main( config ).
Теперь вы можете передать этот объект черезваш стек вызовов.Это все еще может раздражать, но в меньшей степени, потому что это только один параметр.Это также самое чистое решение, потому что оно минимизирует состояние и связь ваших классов.
METHOD main.
DATA(lo_class) = NEW zcl_tradenet_export_kostl( ).
lo_class->start_process( config ).
ENDMETHOD.
Если ваши объекты представляют процесс es ("bla_calculation"), а не процесс или ("bla_calculator"), вы можете уменьшить количество передаваемых параметров, передав конфигурацию конструкторам классов и позволив им сохранять их в каком-то приватном атрибуте.Для этого необходимо заново создавать экземпляры классов для каждого выполнения отчета.
METHOD main.
DATA(lo_class) = NEW zcl_tradenet_calculation( config ).
lo_class->start_process( ).
ENDMETHOD.
Вы можете избежать полной передачи объекта через стек вызовов, применяя такие шаблоны, как singleton.
CLASS ztesten_config DEFINITION PUBLIC CREATE PUBLIC.
PUBLIC SECTION.
DATA p1 TYPE c.
DATA p2 TYPE c.
CLASS-METHODS get_instance
RETURNING
VALUE(result) TYPE REF TO ztesten_config.
PRIVATE SECTION.
CLASS-DATA singleton TYPE REF TO ztesten_config.
ENDCLASS.
CLASS ztesten_config IMPLEMENTATION.
METHOD get_instance.
IF singleton IS NOT BOUND.
singleton = NEW #( ).
ENDIF.
result = singleton.
ENDMETHOD.
ENDCLASS.
METHOD somewhere_inside_tradenet_export_kostl.
DATA(config) = ztesten_config=>get_instance( ).
config->p1 [...]
ENDMETHOD.
Все эти шаблоны позволяют вам предоставлять тестовые данные вместо реального ввода отчета и использовать ваши классы вне контекста отчета.
Для результата отчета вы можете следовать аналогичной схеме,создавая объект, который получает и сохраняет результаты данных по частям.
Структурирование параметров - это всегда хорошая идея: оно не только уменьшает сигнатуры методов, но также добавляет контекст, параметры которого объединяются и как.
Вы знакомы с Clean ABAP ?В разделе нацелено на несколько ИМПОРТИРУЮЩИХ параметров, в лучшем случае менее трех специально рекомендует: «Вы можете уменьшить количество параметров, объединив их в значимые множества со структурами и объектами».