Значит так добавь такие строчки:
gs_BAPIMEOUTITEM-INFO_REC = space.
gs_BAPIMEOUTITEMX-INFO_REC = 'X'.
Это тоже без результата. В ходе жесткого дебага обнаружил, что поле инфозаписи во внутренних переменных по-любому заполняется (вот здесь LMEOUTP58 ->
METHOD is_valid.
........
* read the inforecord
CALL FUNCTION 'ME_READ_INFORECORD'
EXPORTING
incom = ls_meico
IMPORTING
einadaten = l_context->eina
einedaten = l_context->eine
excom = ls_meicr
EXCEPTIONS
bad_comin = 01
bad_material = 02
bad_materialclass = 03
bad_supplier = 04
not_found = 05.
IF sy-subrc EQ 0.
l_context->item_new->item-infnr = l_context->eina-infnr.
* if the info record's deletion indicator is set, clear context data,
* so that info record data is not used to populate other fields.
IF NOT ls_meicr-loekz IS INITIAL.
IF l_context->item_new->aktyp = cl_mmpur_constants=>hin.
CLEAR l_context->item_new->item-infnr.
.............
и потом как ни в чем небывало используется дальше для получения условий.
Тут походу может спасти только установка делит-индикатора на всю инфозапись .... либо как говорил выше - замена дат в диапазонах действия условий
Но больше всего меня поразил следующий выполняемый стандартный код (LMEOUTP40, стр 398)
METHOD is_valid.
...................
IF ( l_context->item_new->ref_contract_it-ebeln EQ space OR
l_context->item_new->ref_contract_it-pstyp EQ
cl_mmpur_constants=>pstyp_wagr ) AND
l_context->item_new->copied_item-ebeln EQ space AND
l_context->item_new->copied_item-ebelp EQ space AND
( l_context->eine-infnr NE space AND " ВОТ ЭТО ДЛЯ НОВЫХ ПОЗИЦИЙ ЗАПОЛНЕНО ПОЛЮБОМУ
( l_context->item_new->item-meins EQ
l_context->eina-meins OR
l_context->eina-vabme EQ '2' ) AND
l_context_hd->header_new->header-logsy IS INITIAL AND " <----------------- ВОТ ЭТО ЗАЧЕМ ????????????????
l_context->eine-loekz EQ space AND "marked for deletion
l_context->eina-loekz EQ space "don't copy conditions
) AND
l_mastercond->has_cond_found( ) EQ cl_mmpur_constants=>no.
* copy the conditions from the info record
CALL METHOD l_mastercond->copy_from_inforec( " ТОТ САМЫЙ КОРЕНЬ ЗЛА, В К-РОМ БЕРУТСЯ НЕНУЖНЫЕ УСЛОВИЯ ИЗНФЗПС
EXPORTING im_ebelp = l_context->item_new->item-ebelp
IMPORTING ex_ekpo = ls_ekpo_result
ex_retco = lf_retco ).
ENDIF.
.......................................
Т.е. если в BAPIMEOUTHEADER / BAPIMEOUTHEADERX записать в поле LOGSYSTEM какую-то ерунду (например букву Z) и дать бапи, метод l_mastercond->copy_from_inforec не выполнится и никаких дампов. Контракт нормально сохраняется без предупреждений, без ошибок.
Можно ли так делать или лучше не стоит использовать этот параметр и для чего он теоретически предполагается ?