При разработке часто бывает необходимость вести некоторые настройки или конфигурации.
На первом уровне это хардкод внутри программы:
- написанный напрямую в тексте программы;
- вынесенный в константы или блок инициализации;
- оформленный в виде статического атрибута глобального класса.
Хардкод вполне оправдан, если:
- в течении всего жизненного цикла эти настройки не будут меняться;
- не будет кейсов, когда именение настройки может быть сделано без изменения связанного исходного кода.
Вторым уровнем может возникнуть классическая настроечная таблица + сгенерированное ведение в транзакции SM30. Впрочем тут тоже можно сделать шаг вправо и влево:
- кучу таблиц можно объединить в кластер SM34;
- ведение можно привязать к коду транзакции;
- ведение можно добавить в SPRO;
- таблицы могут быть зависимые/независимые от манданта;
- таблицы могут быть частью настройки или вестить непосредственно в продуктивной системе.
Такие настройки уже вполне можно передать в руки настройщиков и пользователей.
Доходит иногда до смешного, даже в стандарте можно наблюдать целые настроечные таблицы в виде одной колонки («Активировать»), соответственно в таблице только одна строка со значеним — флажок стоит или нет.
Третьим уровнем могут часто возникать разные велосипеды для организации небольших настроек.
Часто можно заметить, что в системе есть много разных стандартных узкоспециализированных хранилищ, которые можно использовать в собственных корыстных целях, например:
- глобальные переменные STVARV;
- рабочие списки (OB55 и похожие);
- версии баланса (почему бы и не);
- деривация (ну если уж так);
- кастомные атрибуты объектов, если позволено.
Но некоторые приходят к мысли, что следует разработать некоторое универсальное хранилище настроек (Z-разработка), вроде большой таблицы в стиле ключ-значение или даже нечто похожего на реестр Windows, навскидку:
- ZSPRO (https://quelquepart.biz/article5/zspro-parametrage-specifique)
- ABAP quick options (https://github.com/bizhuka/aqo)
Добро пожаловать под кат, представляю вам свой велосипед, там есть пара занятных моментов. Почему свой? Да потому что у остальных есть фатальный недостаток, очевидно. (далее…)