Я вот больше согласен с LAT.
Да городит ООП огород с фабриками и прочими абстаркциями в такой программе не нужно, но и использовать формы бы не стал.
Делал бы все на локальных классах, по сути особо ничего не поменяется с точки зрения архитектуры, но у методов есть некоторые плюсы:
1) опциональные параметры(если ими не злоупотреблять)
2) более короткий синтаксис
3) легче читается, если в программе много другого кода по работе с классами, например, BOL
Code:
lo_entity ?= lo_bol_core->get_root_entity(
iv_object_name = cl_ai_crm_utility=>c_objname_btorder
iv_object_guid = <fs>-guid ).
CHECK lo_entity IS BOUND.
lo_entity = lo_entity->get_related_entity( cl_crm_ic_bp_constants=>gc_btorder_header ).
CHECK lo_entity IS BOUND.
lo_entity = lo_entity->get_related_entity( iv_relation_name = 'ZAEXT_BOL_RELAT000001' ).
lo_entity->set_property( iv_attr_name = 'ZZAFLD0000AA' iv_value = '' ).
Видеть вызовы perform внутри такого кода как-то странно.
4) возможность делать функциональные методы, что в свою очередь позволяет обойтись меньшим количеством переменных.
5) классы позволяют сгруппировать данные и логику работы с ними, уйдя при этом от глобальных данных, при этом позволяя достаточно эффективно кэшировать данные в атрибутах класса.
ФМ для организации обособленной логики которая включает в себя экраны, работу по RFC, экстракторы для BW(что и так понятно...) и т.д