Как варить компот

Иногда так получается, что в одном глобальном расширении внутри одного большого куска ABAP-кода скапливается много маленьких кусочков, делающие совершенно разные вещи для совершенно разных людей/модулей/пакетов.

Вот для примера типичный код из события OpenFI BTE 1120 (замещения перед сохранением бухгалтерской проводки):
User-exit source sample
Вот такой компот, бывает что и на тысячи строк тянется эта простыня.

Почему так получается? Это скорее следствие скупости, лени, спешки плюс недостаток фантазии.

Работать – работает, больших проблем не доставляет. Открыл – всё видно. Можно даже копипастить подходы, использовать общие переменные.

Особая проблема с таким подходом возникает только в ситуации конкурентных правок. Но если такие ситуации всплывают раз в год, то проще перебороть и запинать, чем вылечить проблему в корне.

Хорошая идея – категорический запрет на решение разных задач в рамках  одного ABAP фрагмента (инклюда, функции, метода). Совсем уж общего решения предложить нельзя, так как есть нюансы, да и многое дело вкуса.

Приступим к первой итерации.

(далее…)

Трансформации, простые и не очень

Вполне бытовая задача при разработке ERP-системы — настройка оповещений посредством электронной почты.

Соответственно сразу возникает несколько идей, куда ложить текст шаблона:

  • непосредственно в тексте программы, хардкод никто не отменял
  • в хранилищах  OAOR/SMW0 — по обстоятельстам
  • в текстах SO10, если они довольно простые и/или ведутся прямо в продуктивной системе

… хотя можно встретить и более экзотические варианты.

Задача может стать чуть более изощренной, если потребуется в письмо добавить красоты в виде HTML. В первом приближении HTML — это простой текст со специальной разметкой в виде тегов. Поэтому можно не отказываться от старых вариантов и мириться с неудобствами в виде редактирования plain-text и отсутствия проверок.

Однако задача может стать еще сложнее, если появляется динамичный контент в виде таблиц. И тут появляется развилка:

  • дополнительно нагружать текстовый шаблон особой разметкой и реализовать её обработку на ABAP, что не технологично
  • искать альтернативные технологии

И как вы уже поняли из заголовка статьи — далее речь пойдёт о втором варианте в подробностях. (далее…)