VBKD может хранить данные как на уровне позиции, так и на уровне заголовка - в последнем случае в VBKD-POSNR будут 0. От того куда нужно записать TRATY зависит, что нужно расширять и что передавать в параметрах. В примерах будет про позиции, но для заголовка тоже указано что и как.
Рассмотрим по шагам
- Нужно расширить структуры на поле ZZTRATY типа TRATY
- Для заголовка расширить структуру VBAKKOM (но не саму, а вложенную в нее структуру VBAKKOZ)
- Для позиции - структуру VBAPKOM. Опять же не саму, а вложенную VBAPKOZ.
- Также нужно расширить структуры для BAPI-extension на поле ZZTRATY (*X-структуры для создания заказа можно не расширять, но потом пригодится для обновления):
- Для заголовка расширяем структуры BAPE_VBAK и BAPE_VBAKX
- Для позиции расширяем структуры BAPE_VBAP и BAPE_VBAPX :
- Нужно написать код перемещения значения поля из *KOM-структур в VBKD.
- Для заголовка нужно использовать form USEREXIT_MOVE_FIELD_TO_VBAKKOM, расположенный в include MV45AFZB. Несмотря на то, что написано "TO_VBAKKOM", по сути это "FROM_VBAKKOM". Изменять стандарт можно по традиции, запросив ключ на объект, или менее заморочено - через создание неявного внедрения. Код простейший:
- Для позиции нужно использовать form USEREXIT_MOVE_FIELD_TO_VBAPKOM, расположенный в include MV45AFZB. Код такой же простейший:
- В месте вызова BAPI_SALESORDER_CREATEFROMDAT2 нужно во входящий параметр EXTENSIONIN подать таблицу, сформированную примерно так (для позиции LV_POSNR): Для заголовка вместо BAPE_VBAP и BAPE_VBAPX необходимо использовать BAPE_VBAK и BAPE_VBAKX, соответственно
Комментариев нет:
Отправить комментарий