fedor_sh написал(а):
Есть ли какой-нибудь готовый FM. Если нет, то как заполнить альтернативные элементы в структуре i_add_items в fm BBP_PD_QUOT_CREATE
Если не ошибаюсь, то i_add_items необходимо заполнять, если Вы добавляете какие-либо позиции в предложение. Но если все же речь идет о копировании, то необходимо считать все таблицы и структуры используя ФМ BBP_PD_QUOT_GETDETAIL и передавать их на вход в ФМ BBP_PD_QUOT_CREATE.
Code:
" Получаем данные предложения-источника
CALL FUNCTION 'BBP_PD_QUOT_RESET_BUFFER'.
CALL FUNCTION 'BBP_PD_QUOT_GETDETAIL'
EXPORTING
I_GUID = i_source_qte_guid
I_WITH_ITEMDATA = 'X'
IMPORTING
E_HEADER = lv_header
ET_ATTACH = lt_attach
TABLES
E_ITEM = lt_item
E_PARTNER = lt_partner
E_LONGTEXT = lt_longtext
E_ORGDATA = lt_orgdata
ET_EXCHRATE = lt_exchrate
.
...
" Получаем данные целевого конкурса
CALL FUNCTION 'BBP_PROCDOC_GETDETAIL'
EXPORTING
i_guid = i_target_rfq_guid
i_with_itemdata = 'X'
i_read_text_flags = lv_read_text_flags
TABLES
e_item = lt_rfq_item.
...
CALL FUNCTION 'GUID_CREATE'
IMPORTING
EV_GUID_16 = lv_new_guid.
" Цикл по позициям предложения-источника
LOOP AT lt_item INTO lv_item.
MOVE-CORRESPONDING lv_item TO lv_item_new.
lv_item_new-parent = lv_new_guid.
READ TABLE lt_rfq_item
INTO lv_rfq_item
WITH KEY number_int = lv_item-number_int.
lv_item_new-src_guid = lv_rfq_item-guid.
ENDLOOP.
...
LOOP AT lt_partner ASSIGNING <ls_partner>.
<ls_partner>-p_guid = lv_new_guid.
ENDLOOP.
clear: lv_header-object_id,
lv_header-approval_ind.
lv_header-src_guid = I_TARGET_RFQ_GUID.
lv_header-guid = lv_new_guid.
MOVE-CORRESPONDING lv_header to lv_header_1.
CALL FUNCTION 'BBP_PD_QUOT_CREATE'
EXPORTING
I_SRC_GUID = i_target_rfq_guid
I_SRC_OBJECT_TYPE = /sapsrm/if_pdo_obj_types_c=>gc_pdo_biddingdoc
I_HEADER = lv_header_1
IT_ATTACH = lt_attach
I_ITEM_SORTED_BY_HIERARCHY = abap_false
IMPORTING
E_HEADER = lv_header_new
TABLES
I_ITEM = lt_item_new
I_PARTNER = lt_partner
I_LONGTEXT = lt_longtext[]
E_ITEM = lt_ITEM_quot
E_MESSAGES = lt_mess
.
CALL FUNCTION 'BBP_PD_QUOT_SAVE'
EXPORTING
IV_HEADER_GUID = e_target_guid
.
COMMIT WORK AND WAIT.