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". Изменять стандарт можно по традиции, запросив ключ на объект, или менее заморочено - через создание неявного внедрения. Код простейший:This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
VBKD-TRATY = VBAKKOM-ZZTRATY. - Для позиции нужно использовать form USEREXIT_MOVE_FIELD_TO_VBAPKOM, расположенный в include MV45AFZB. Код такой же простейший:This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
VBKD-TRATY = VBAPKOM-ZZTRATY. - В месте вызова BAPI_SALESORDER_CREATEFROMDAT2 нужно во входящий параметр EXTENSIONIN подать таблицу, сформированную примерно так (для позиции LV_POSNR):
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
DATA lt_extension TYPE STANDARD TABLE OF bapiparex WITH DEFAULT KEY. DATA ls_bape_vbap TYPE bape_vbap. DATA ls_bape_vbapx TYPE bape_vbapx. "... ls_bape_vbap-posnr = lv_posnr. ls_bape_vbap-zztraty = 'ZZZZ'. APPEND VALUE #( structure = 'BAPE_VBAP' ) TO lt_extension ASSIGNING FIELD-SYMBOL(<s_ext>). CALL METHOD cl_abap_container_utilities=>fill_container_c EXPORTING im_value = ls_bape_vbap IMPORTING ex_container = <s_ext>+30. ls_bape_vbapx-posnr = lv_posnr. ls_bape_vbapx-zztraty = 'X'. APPEND VALUE #( structure = 'BAPE_VBAPX' ) TO lt_extension ASSIGNING <s_ext>. CALL METHOD cl_abap_container_utilities=>fill_container_c EXPORTING im_value = ls_bape_vbapx IMPORTING ex_container = <s_ext>+30. "... CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' "... TABLES "... extensionin = lt_extension " Customer Enhancement for VBAK, VBAP, VBEP .
Комментариев нет:
Отправить комментарий