Немного NoSQL или что-то взамен SM30

При разработке часто бывает необходимость вести некоторые настройки или конфигурации.

На первом уровне это хардкод внутри программы:

  • написанный напрямую в тексте программы;
  • вынесенный в константы или блок инициализации;
  • оформленный в виде статического атрибута глобального класса.

Хардкод вполне оправдан, если:

  • в течении всего жизненного цикла эти настройки не будут меняться;
  • не будет кейсов, когда именение настройки может быть сделано без изменения связанного исходного кода.

Вторым уровнем может возникнуть классическая настроечная таблица + сгенерированное ведение в транзакции SM30. Впрочем тут тоже можно сделать шаг вправо и влево:

  • кучу таблиц можно объединить в кластер SM34;
  • ведение можно привязать к коду транзакции;
  • ведение можно добавить в SPRO;
  • таблицы могут быть зависимые/независимые от манданта;
  • таблицы могут быть частью настройки или вестить непосредственно в продуктивной системе.

Такие настройки уже вполне можно передать в руки настройщиков и пользователей.

Доходит иногда до смешного, даже в стандарте можно наблюдать целые настроечные таблицы в виде одной колонки («Активировать»), соответственно в таблице только одна строка со значеним — флажок стоит или нет.

Третьим уровнем могут часто возникать разные велосипеды для организации небольших настроек.

Часто можно заметить, что в системе есть много разных стандартных узкоспециализированных хранилищ, которые можно использовать в собственных корыстных целях, например:

  • глобальные переменные STVARV;
  • рабочие списки (OB55 и похожие);
  • версии баланса (почему бы и не);
  • деривация (ну если уж так);
  • кастомные атрибуты объектов, если позволено.

Но некоторые приходят к мысли, что следует разработать некоторое универсальное хранилище настроек (Z-разработка), вроде большой таблицы в стиле ключ-значение или даже нечто похожего на реестр Windows, навскидку:

Добро пожаловать под кат, представляю вам свой велосипед, там есть пара занятных моментов. Почему свой? Да потому что у остальных есть фатальный недостаток, очевидно. (далее…)