Доброе утро!
Посмотрел вашу беду.
Инклюд LMEREQF15.
METHOD is_valid.
Там есть такой код:
Code:
* calculate date when material is being changed "1871265
IF l_context->item_before_checks->item-matnr IS NOT INITIAL AND
l_context->req_item->my_persistent_eban-matnr NE l_context->item_new->item-matnr AND
l_context->item_before_checks->item-matnr NE l_context->item_new->item-matnr.
l_lfdat = calculate_delivery_date( im_context = l_context ).
ENDIF.
Т.е., согласно SAP-ноте 1871265, при изменении материала ВСЕГДА выполняется пересчет даты поставки.
Сам расчет даты выполняется с помощью ФМ от текущей даты:
Code:
CALL FUNCTION 'MD_CHECK_DELIVERY_DATE'
EXPORTING
e_werks = im_context->item_new->item-werks
e_fabkl = im_context->t001w-fabkl
e_anliefkal = im_context->mt06e-mrppp
e_plifz = im_context->item_new->item-plifz
e_dispodatum = sy-datlo
e_kz_bztek = mmpur_yes "ME25N: no! todogf
* E_LIEFERDATUM = EKET-EINDT
IMPORTING
i_liefertag_fruehest = h_frueh
EXCEPTIONS
error_message = 0
OTHERS = 0.
Собственно, вариантов решения проблемы видится 2:
1) Выставить сообщение в поддержку, в котором попытаться объяснить, что логика, реализованная SAP, не совсем верная (это долго и не факт, что поможет).
2) Сделать доработку, чтобы дата поставки всегда бралась из пользовательской настройки (если она там указана).
Для этого можно использовать BADI ME_PROCESS_REQ_CUST, метод PROCESS_ITEM.