Вы находитесь на странице: 1из 2

BAdI /SCWM/EX_CORE_RMS_DETERMINE


 

 Опубликовано: 22.01.2017 00:07
 Просмотров: 3843
Сегодня расскажу про одну из самых используемых бади в отгрузке при
внедрении SAP EWM.

Ее назначение - это сортировка или фильтрация квантов, которые система


определила согласно стандартных настроек.

Вызывается она из программы /SCWM/SAPLREM_BIN_DET-SRC_BIN_DET
каждый раз в тот момент, когда система ищет доступный запас для отпуска.

На вход бади поступают следующие значения:

Название Описание переменной


переменной
iv_call если идет процесс грубого определения места, то значение = А
iv_anfml это собственно количество, для которого необходимо найти запас в текущем
прогоне бади
iv_vorga вид операции, который скорее всего уже устарел и не используется (значения,
которые могут приходить можно посмотреть в глобальной константе
wmegc_vorga_*)
IS_LTAP структура складской задачи, для которой осуществляется поиск кванта
IS_MAT_GLOBAL глобальные данные материла
IS_MAT_LGNUM данные материала, специфичные для номера склада
IS_MAT_HAZAR данные опасного материала
D
IT_MAT_UOM данные материала по единицам измерений
IS_T331 данные типа склада для которого выполняется прогон (Если в
последовательности поиска указана группа типов складов, то структура не
заполняется).
IS_T333 данные настроек вида складского процесса, с которым осуществляется поиск
кванта
IT_QMAT таблица квантов, которые система нашла согласно стандартной стратегии
IT_QMAT_STD таблица оригинальных квантов, до запуска
внутренней SAPBadi /SCWM/EX_CORE_RMS_I_DETERMINE (в моей практике она
всегда была равна IT_QMAT)
IV_REM_RULE стратегия отпуска материалов, которая определилась согласно настроек
IO_LOG объект лога
IV_ROW Строка объекта IO_LOG. Используется для лога.
На выходе бади:

Название Описание переменной


переменной
ET_QMAT_CUS выходная таблица квантов, которую система будет использовать, если нам
потребуются изменения.
EV_SET признак то, что нужно использовать ET_QMAT_CUS
CS_ORDIM_CUS данные складской задачи в пользовательской структуре
T
 

Итак, допустим вы создаете задачу на отбор или просматриваете доступные


кванты для отбора в транзакции /scwm/prdo, в этом случае система
запускает процесс поиска доступных квантов согласно настроенной
стратегии и осуществляется вызов данной бади.

При этом нужно понимать, что бади может вызываться несколько


раз для одной позиции заказа, в случае:

 Если определилась последовательность поиска типа склада, к


которой присвоено больше, чем один тип склада (групп типов
складов). В данном случае бади будет вызываться сначала для
первого типа склада, затем для каждого последующего до тех пор,
пока найденные кванты не покроют требуемое количество  iv_anfml
 Если текущая складская задача округлилась в сторону, меньшую от
iv_anfml, то для оставшегося количества система снова запустит
прогон определения доступных квантов и снова вызовется бади.
Пример: у вас iv_anfml = 100 шт. Имеются доступные кванты по 50
шт в 2-х СМ. Соответственно при первом прогоне система покажет
эти 2 места, но складская задача создасться только на 50 шт,
поэтому для оставшегося количества система снова запустит
определение доступных квантов. При следующем прогоне iv_anfml
= 50 шт. Система снова покажет эти 2 места, но в первом месте уже
доступного количества будет = 0.
Итак, с моментом вызова разобрались. Дальше, если вам нужно
отсортировать или отфильтровать кванты по собственной логике, вы это
делаете и результат записываете в выходную таблицу ET_QMAT_CUS. Не
забывайте ставить признак EV_SET, если вы хотите, чтобы система приняла
ваши изменения.

Учитывайте следующие ограничения бади:

 кванты либо сортируются либо удаляются, новые добавить нельзя.


 если определенные кванты были удалены при 1-м прогоне, то в
последующих прогонах они уже не появятся
Надеюсь, вам поможет данная статья сократить время на написание ТЗ для
этой бади. Удачи!