Одному клиенту понадобилось изменить расчет скидки при реализации товаров.
Для расчета используется стандартная схема калькуляции RVAB02. Скидка рассчитывается в условии K020.
Для реализации нового способа расчета скидки можно создать новую формулу и указать её использование для данного условия.
Создание новой формулы расчета можно выполнить в транзакции VOFM
В данной транзакции выбираем пункт меню «Формулы» — «Стоимость условия»

По документации SAP, для формул клиента рекомендуется использовать диапазон 600-999

После генерации новой программы по двойному клику можно зайти в исходный текст новой формулы

Для удобства разработки можно выключить Ассистента модификаций. Для этого нужно выбрать меню «Обработать» — «Операции модификации» — «Выключить ассистент»
При выключенном ассистенте модификаций можно приступать к программированию формулы в соответствии пожеланий клиента

В данный момент нам доступна структура KOMP для работы с текущим условием, таблица XKOMV для работы со условиями по данной позиции документа.
Для доступа к таблице условий всех позиций необходимо обращаться к памяти
1 2 3 4 5 6 7 8 9 10 11 |
DATA: lv_stmp(40) TYPE c VALUE '(SAPLV61A)TKOMV[]', ls_tkomv TYPE komv. FIELD-SYMBOLS: <ft_tkomv> TYPE ANY TABLE. ASSIGN (lv_stmp) TO <ft_tkomv>. IF sy-subrc = 0. LOOP AT <ft_tkomv> INTO ls_tkomv. ENDLOOP. UNASSIGN <ft_tkomv>. ENDIF. |
Результат расчета суммы по данному условию нужно помещать в переменную xkwert.
После разработки формулы она остаётся не активной

Для её активации необходимо выделить строку и выбрать пункт меню «Обработать» — «Активировать»
Теперь можно прописать данную формулу в нужное условие. Для этого в транзакции VOK0 откроем используемую схему калькуляции

Найдем нужное условие и укажем расчет по нужной формуле
