Меню

Расширения стандартных настроек для расчётов (billing)

В статье рассмотрены основные приемы, позволяющие расширить возможности стандартного расчета и описан процесс создания собственных программ вариантов (расчёта). Статья рассчитана на консультантов уже знающих основы настройки расчета в SAP R/3 (курс IUT230 Billing and Invoicing).

Стандартные настройки, позволяющие добавлять пользовательские виды строк и добавлять программы вариантов (пользовательское расширение функций для расчета), можно найти в SPRO по следующему пути: отраслевой компонент: энергетика и коммунальное хозяйство -> инструменты -> Адаптация системы -> Пользовательское расширение функций для расчета -> Программы вариантов клиента (Рис. 1).

Рис. 1 Настройки SPRO: пользовательское расширение функций расчета.

Пример добавления пользовательских видов строк приведен на Рис. 2. В первом столбце заносится идентификатор строки, который должен начинаться с Z, далее заносится пояснительный текст. Флажок «Использование вида строк» оставляется пустым, иначе этот вид строки можно будет использовать только внутри расчета, и его невозможно будет вставить как значение по умолчанию в программу вариантов целевого тарифа. Флажок «строка документа не архивируется», ставится в зависимости от целей и настроек архивации. В нашем примере строки не архивируются.

Рис. 2. Настройка (добавление) видов строк.

В настройку «Определение программ вариантов» можно зайти как по пути SPRO «Отраслевой компонент: энергетика и коммунальное хозяйство -> инструменты -> Адаптация системы -> Пользовательское расширение функций для расчета -> Программы вариантов клиента -> Определение программ вариантов (рис. 1), так и при помощи транзакции EA88 (ведение вариантов). Рассмотрим настройку на примере создания пользовательской программы вариантов для расчета фактических объемов потребления (Рис 3.). При этом имя программы вариантов не обязательно должно начинаться с Z.

Рис. 3. Экран создания пользовательской программы вариантов.

Рассмотрим по порядку основные поля для заполнения данных. Столбец «допустимость тарифа» определяет, есть ли ограничение на использование программы вариантов в стандартном или окончательном расчете. Столбец «Вид количества» оставляем пустым (без особой спецификации). Тип варианта указываем 00 (Без специального варианта). Этот тип варианта является наиболее часто используемым. Еще часто используется тип варианта 02 (IF-вариант, позволяющий управлять логикой расчета). Флажок «РелДляПроводСтрСчет» позволяет генерировать строки релевантные для проводки. Соответственно при добавлении этой программы вариантов в тариф, необходимо еще будет указать дебетовые и кредитовые частичные операции. Флажок «Факультативный вариант» позволяет пропустить шаг тарифа, если входные операнды не заполнены значениями. Флажок «Не для экстраполяции» позволяет пропускать шаги экстраполяции при моделировании авансовых платежей, что повышает производительность. Флажок «Период отключения» определяет, оцениваются ли значения в период отключения.

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

Табличка управление вариантами заполняется следующим образом: в первом столбце проставляется номер группы, если второй столбец оставим пустым, то в экране управления вариантом получим флажок, то есть переключатель типа «Checkbox». Если во втором столбце проставим значения, то получим переключатель типа «Radiobutton» (Рис. 4). Протестировать параметры, можно нажав кнопку «Тест Экрана» либо F8.

Рис. 4 Управляющие элементы для варианта.

На рис. 4 отображены очень часто встречаемые элементы управления для программ вариантов. Первая группа переключателей (обновление) позволяет указать, будет ли обнуляться выходной операнд до начала выполнения вычислений. Второй параметр (флажок запись инфо-строк) определяет будут ли записываются инфо-строки в документ расчета во время выполнения этой программы вариантов.

В табличке «Виды строк документа», которая находится в самом низу, указываем виды выводимых строк. Максимальное количество строк, которое может вывести за один раз одна программа вариантов, равно 5.

Вновь созданная программа вариантов связывается с исполняющим кодом посредством создания функционального модуля (транзакция SE37). При этом имя функционального модуля (сокращенно ФМ) должно начинаться с «ISU_», а заканчиваться именем программы вариантов. В нашем примере ФМ будет иметь имя «ISU_BILLFACT» (Рис. 5). При этом часто бывает удобно создать собственную группу функций, которая будет группировать все пользовательские программы вариантов. При создании собственной группы функций (транзакция SE80) необходимо в TOP-Include добавить INCLUDE EMSG и IEVARDAT соответственно для обработки сообщений и для общего управления программами вариантов.

Рис. 5. Создание функционального модуля к программе вариантов.

Создание ФМ обычно происходит путем копирования похожего ФМ, стандартной программы вариантов. Рассмотрим типичную структуру ФМ, на примере программы вариантов QUANTI01 (ФМ ISU_QUANTI01). При этом данная структура является чисто логическим обобщением, физически это всё ABAP-код.

1.     Объявление инклудов и переменных. Основным является инклуд IEVARBASIC. Часто при создании собственной группы функций возникает желание вынести его в TOP-include. Этого делать нельзя, так как в таком случае не будут инициализироваться переменные при входе в функциональный модуль.

2.     Проверки правильности настройки программы вариантов в тарифе. Основные проверки реализованы в виде макросов МAC_CONTROL_CHECK (проверка количества групп управления вариантом) и MAC_BELZART_CHECK (проверка количества строк документа расчета). Единственным входным параметрам макроса МAC_CONTROL_CHECK является соответственно количество групп управления вариантом, а MAC_BELZART_CHECK – количество видов строк документа.

3.     Инициализация выходных операндов. Осуществляется при помощи макроса MAC_INIT_OUTPUT.

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

  • X_OP типа ISU2A_VARIANT_PARAMETERS - содержит описания входных и выходных операндов, которые использует данная программа вариантов.
  • X_SS типа ISU2A_SS содержит описание текущего шага схемы расчета.
  • X_RED содержит данные по ценам и объемам потреблений.

В качестве изменяемых параметров указывают структуры XY_OBJ и XY_SOBJ, содержащие все необходимые данные по потребителю, установкам, приборам, показаниям и прочее.

Для IF-варианта указывается структура XY_IF, являющаяся основной для данного типа программ вариантов. Его использование можно посмотреть на примере ФМ ISU_IF01. Основным является поле EXECUTE, если оно равно X, то программа заходит в программы вариантов, находящиеся под программой вариантов IF, иначе - под ELSE.

Чтение входных значений операндов осуществляется следующим образом:

  • При помощи макроса MAC_NEWEST_ENTRY. Макрос имеет два входящих параметра: номер входящего операнда X_OP-T(порядковый номер) и структура WRAPA, которую объявлять не надо, так как она уже находится в инклуде IEVARBASIC (описана в пункте 1). Макрос применяется для чтения операндов типа INTEGER и FACTOR (значение хранится в поле WRAPA-QNT_NEW) и FLAG (значение хранится в поле WRAPA-STRING3).

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Войти