Меню

Работа с замещениями FI. Часть 2

Продолжение цикла статей "Техники расширений стандартной системы SAP".

Все статьи цикла приведены внизу публикации.

Начало статьи >>>

Предпосылки замещений.

Предпосылка представляет собой фактически фильтр, по которому будет вызываться ваша программа замещения. Можно работать без предпосылок, но тогда следует учесть, что любая проводка документа FI будет попадать в ваше замещение и вам, во-первых, потребуется рисовать сложную логику фильтрации, чтобы отбирать только интересующие позиции, а во-вторых справляться с ситуацией, когда: 50 000 документов FI в месяц это - даже не очень много, а ведь есть системы, где их за сотни тысяч проводится.

Вопрос: Вы уверены, что сделали все правильно?

Вывод: Лучше сделать правильную предпосылку, а уже на уровне программы дописать то, что не получится сделать с помощью редактора предпосылок.

Переходим на ветку дерева "Предпосылка". Справа будет открыто окно создания предпосылки + визуальный редактор, в котором можно сделать почти все, а если не все, то всегда можно переключиться на режим эксперта, по меню: "Параметры настройки" - "Экспертный режим" и ввести условия на языке, похожем на ABAP; однако это не совсем ABAP, так что синтаксис все - таки надо поучить в документации. В общем, внешний вид как на Рис.14, где суть работы заключается в том, что выбирается структура и поле структуры, затем проводится операция с этим полем.

Рис.14 OBBH-8

Операция обычно представляет сравнение выбранного поля с чем-то и т.д. Для работы предложены три структуры: заголовок документа, позиции документа и системная структура словаря SYST («абаперам», наверное, объяснять не надо, «неабаперы» могут зайти в SE11 и посмотреть на поля и описание, либо обратиться к «абаперу» это более разумно). Теперь вернемся к фильтру: что надо фильтровать и как, предлагаю начать с исследования документа инвентаризации (вроде как замещение договорились делать для таких типов документов). Порядок формирования документов в системе в принципе следующий: Документ инвентаризации – Документа материала ММ – Финансовый документ FI, значит начинать надо с документа инвентаризации. Для примера нашел документ, как на Рис.15. Транзакция просмотра документов инвентаризации MI06.

Рис.15 MI06

Как видим, после подсчета был проведен уже документ материала 4900031463, перейдем к просмотру документа материала, Рис.16. Транзакция просмотра документов материала MB03, а в ней уже выбираем кнопку RW-Документы.

Рис.16 MB03

От документа материала можно перейти к документам FI, пример на Рис.17.

Рис.17 FB03

Из этого документа можно заключить, что фильтр будет следующим:

  • Вид документа нас будет интересовать WI - Документ инвентаризации. Однако этого мало, так как если человек в FI ошибется, то может случайно провести в ручном режиме и такой документ.
  • Ссылочная операция MKPF - Ее мы тоже включим в фильтр, так как это значит, что документ проведен как ссылочный к операции из ММ.
  • Код транзакции MI07? Если у вас используется только стандарт и ведомости не проводятся программно (тогда код транзакции может быть другой), то можно включить и код транзакции. В данном случае я код транзакции включу в фильтр.

Примечание: Код транзакции при проводке разниц будет со ссылкой на документы инвентаризации MI07 (на рисунках стоит MI10, это инвентаризация без ссылки).

Вот по этим трем параметрам заголовка документа и построим сейчас фильтр. Для получения полной картины желательно проанализировать не один документ инвентаризации, а десяток - другой, да и еще просмотреть другие документы, которые порождаются в системе, чтобы быть точно уверенным, что ваш фильтр будет отбирать только то, что вам нужно, а не сотни других документов, которые, оказывается, тоже попадают под заданные параметры фильтра.

Итак возвращаемся в конструктор предпосылок. Все поля, которые мы отобрали для фильтра, находятся в заголовке документа. Значит, нам нужна из трех структур именно таблица заголовка. Как видим "Структура BKPF" , Заголовок документа для бухгалтерии, -  то что нам нужно, Рис.18.

Рис.18 OBBH-9

Делаем двойной клик мышью на имени структуры BKPF и попадаем в просмотр полей заголовка документа FI. Наши поля выделены на Рис.19 и ниже по списку, еще есть поле кода транзакции.

Рис.19 OBBH-10

Теперь – двойной клик мышью на поле BKPF-BLART - Вид документа, и поле будет скопировано в верхний экран, Рис.20.

Рис.20 OBBH-11

Затем кликаете мышью на знаке равно справа от списка полей и в окне ввода условия появится фраза: "Вид документа =", Рис.21, после чего у вас к выбору из кнопок справа доступными будут кнопки "Константа" и "Комментарий".

Рис. 21 OBBH-12

Комментировать пока нечего, а вот константу мы знаем, это код вида документа "WI", поэтому выбираем кнопку "Константа" и в появившемся окне или выбираем, или вводим код WI, после чего жмем ОК, и в результате должны получить нечто похожее на Рис.22. Аналогично добавим ограничения на два других поля.

Рис.22 OBBH-13

Между этими полями в качестве условия соединения используется операция AND, т.е. когда совпадут все три условия, то фильтр зафиксирует, что предпосылка сработала и вызовет нашу программу замещения. Общий результат должен быть, как на Рис.23. Обратите внимание, что если вы все правильно сделали, то статус должен быть в виде зеленого светофора.

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

Рис.23 OBBH-14

Примечание. Кнопка информации (находится рядом со статусом) выдает краткую справку по вводу формул для написания предпосылок.

Замещения.

Замещения – это то, что произойдет в результате срабатывания фильтра: если предпосылка будет выполнена, система перейдет к ветке замещения и значит, или выполнит нашу программу, или выдаст сообщение и т.д. Так как мы выбрали, что замещением будет программа пользователя, то экран будет представлен как на Рис.24. Вся работа с этим экраном, состоит в том, чтобы задать имя нашей подпрограммы замещения. Так как подпрограмма нами уже создана, то нажав в поле "ПользПрограмма" кнопку допустимых значений F4, в появившемся окне находим имя своего замещения U777 или вводим его руками. После чего сохраняем работу.

Рис.24 OBBH-15

Необходимо удовлетворить запрос для переноса, который нужно будет или создать в этот момент, или выбрать из созданных ранее. Затем возвращаемся из экрана конструктора в таблицу БЕ, Рис.25 (или по F3 несколько раз или Shift+F3), и активируем замещение путем задания статуса = 1, в поле "СтепАктивир". В принципе, там может быть еще значение 2 - активировано без пакетного ввода, т.е. при выполнении пакетных вводов наша предпосылка никогда не будет выполняться. Иногда это - источник ошибок, когда в диалоге у пользователя все работает, а при пакетном вводе замещение не срабатывает.

Рис.25 OBBH-16

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

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

Войти