Работа с замещениями 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
ЗарегистрироватьсяУ вас уже есть учетная запись?
Войти