Нашёл подходящее, как мне показалось, BADi (подробности могу предоставить позже, в случае нужды, т.к. сейчас нет доступа к системам), реализовал общий алгоритм, в соответствующем расширении реализовал добавление данных в RESB, не предусмотренных интерфейсом BAPI_RESERVATION_CREATE1.
Ну структура EXTENSIONIN в параметрах есть, значит данные можно добавить. Про бадик MB_RES_BAPI_CREATE1, можно можно почить тут же внутри:
* Interface to this BAdI improved and list of parameters enhanced
* (displace pilote note 1263894 by note 1334736)
* 1. customer's extensions
* 1.1 assign internal table "extensionin[]" to the new input parameter
* "it_extension_in"
* 1.2 fill the data of the first entry from table "extensionin[]"
* into structure "extension_in"
* 2. messages
* 2.1 assign internal table "return[]" to the new changing parameter
* "ct_return"
* 2.2 if the structure "return" is filled insert its data into the
* internal message table "return[]"
* 3. it is possible to change data of the reservation header RPKF
* in this BAdI, too
Первая проблема: данный ФМ возвращает ошибку отсутствия материала на заводе и складе, в отладке нашёл это место - отсутствие записи в таблице MCHA (Партии) для материала, завода, склада. Консультант на эту тему ничего сказать не может, потому как резервирование через MB21 проходит, таблицу считает сомнительной, т.к. записей в ней всего около 5000..
Ну тут вопрос, вы партию вносите в резервирование? А код партии откуда берете? Если вносите, а партия не создана в этот момент, то система последовательно проверяет существование материала на заводе (таблица MARC), далее идет проверка на наличие записи в MCHA причем если честно почему они так сделали я не знаю. Что можно сделать? Есть три варианта, один сделать создание партии которую вносите в документ, чтобы в таблице появилась запись, два, не указывать код партии в резервировании при создании, тогда документ будет создан, а партию внесете на момент создания документа движения со ссылкой на резервирование, ну и еще как вариант в энхансменте попробовать сбросить данную ошибку, но это не очень хорошее решение.