Для целей SAP PP появилась необходимость в создании в системе SAP материалов-аналогов. Для этого в транзакции PIC01 несколько материалов были объединены в один FFF-класс

Однако, столкнулись с проблемой, что новый ППМ — MRP Live (транзакция MD01N) иногда не видит этого объединения и при обработке потребности на материал 76833, создает заявки без учета остатков материала 76834. При этом время от времени он работает нормально.

При этом старый ППМ (транзакция MD02) работает прекрасно, а современный MRP Live пасует перед логикой FFF-классов.
Долго проверяли Z-расширения, настройки и ноты, но ни к какому результату не пришли.
В процессе отладки выяснилось, что происходит вызов BADI MRP_DISPATCHER_BADI – метода DISPATCH_CREATE_TASK. В этом методе есть изменяемый параметр – таблица CT_MATS_TO_PLAN, в которой приходит перечень материалов и заводов, по которым происходит расчет ППМ. Далее, на основе этого списка создается список задач для параллельной обработки в AMDP-процедурах.
При этом в этой таблице CT_MATS_TO_PLAN есть поле group_id, с помощью которого можно указать запускать некоторые материалы в рамках одной TASK и тогда все работает прекрасно.
Осталась только техническая реализация – сгруппировать материалы-аналоги по FFF-классу (поле MARA-IMATN), добавить нужные материалы, если ППМ запустили только по одному материалу 76833. Так как поле group_id имеет тип RAW16, воспользовался вычислением MD5-хеша значения поля IMATN с помощью метода cl_abap_message_digest=>calculate_hash_for_char.
Таким образом, с помощью небольшого расширения добились правильной работы MRP Live с материалами-аналогами.
А вы сталкивались с тем, что MRP Live ведет себя иначе, чем классический ППМ? Какие еще «сюрпризы» находили в MD01N?
