Добрый день! Пытаюсь обновить Z-поля с помощью 'BAPI_CUSTOMERCONTRACT_CHANGE'. При этом хочу обновить только Z-поля.
Bapi запускается 2 раза : сначала обновляется заголовок и при необходимости обновляются позиции. Вроде ж все заполняю , а все равно ошибки и при обновлении заголовка и при обновлении позиции.
data: lt_bapiparex type bapiparex_t, ls_bapiparex type bapiparex.
data: ls_bape_vbak type bape_vbak, ls_bape_vbakx type bape_vbakx.
data: ls_bape_vbap type bape_vbap, ls_bape_vbapx type bape_vbapx.
data: lt_return type standard table of bapiret2.
data: ls_header_in type bapisdh1, ls_header_inx type bapisdh1x.
data: lt_contract_iteam type standard table of bapisditm, ls_contract_iteam type bapisditm, lt_contract_iteamx type standard table of bapisditmx, ls_contract_iteamx type bapisditmx.
check im_vbeln is not initial .
* Данные Заголовка if im_value_1 is not initial and im_value_2 is not initial. clear : ls_bape_vbak, ls_bapiparex.
ls_bapiparex-structure = 'BAPE_VBAK'. ls_bape_vbak-vbeln = im_vbeln. ls_bape_vbak-zzfield1 = im_value_1. ls_bape_vbak-zzfield2 = im_value_2. ls_bapiparex-valuepart1 = ls_bape_vbak.
append ls_bapiparex to lt_bapiparex.
clear : ls_bapiparex, ls_bape_vbak.
ls_bapiparex-structure = 'BAPE_VBAKX'. ls_bape_vbakx-vbeln = im_vbeln. ls_bape_vbakx-zzfield_1 = 'X'. ls_bape_vbakx-zzfield_2 = 'X'. ls_bapiparex-valuepart1 = ls_bape_vbakx.
append ls_bapiparex to lt_bapiparex.
ls_header_inx-updateflag = 'U'.
endif. * Данные Позиции
if im_value_3 is not initial and im_posnr is not initial.
clear : ls_bapiparex,ls_bape_vbap.
ls_bapiparex-structure = 'BAPE_VBAP'. ls_bape_vbap-vbeln = im_vbeln. ls_bape_vbap-posnr = im_posnr. ls_bape_vbap-zz_filed3 = im_value_3. ls_bapiparex-valuepart1 = ls_bape_vbap.
append ls_bapiparex to lt_bapiparex.
clear : ls_bapiparex, ls_bape_vbapx.
ls_bapiparex-structure = 'BAPE_VBAPX'. ls_bape_vbapx-vbeln = im_vbeln. ls_bape_vbapx-posnr = im_posnr. ls_bape_vbapx-zzbanfn = 'X'. ls_bapiparex-valuepart1 = ls_bape_vbapx.
append ls_bapiparex to lt_bapiparex.
clear ls_contract_iteam. ls_contract_iteam-itm_number = im_posnr. append ls_contract_iteam to lt_contract_iteam.
clear ls_contract_iteamx. ls_contract_iteamx-itm_number = im_posnr. ls_contract_iteamx-updateflag = 'U'. append ls_contract_iteamx to lt_contract_iteamx.
endif.
call function 'BAPI_CUSTOMERCONTRACT_CHANGE' exporting salesdocument = im_vbeln contract_header_in = ls_header_in contract_header_inx = ls_header_inx tables return = lt_return contract_item_in = lt_contract_iteam contract_item_inx = lt_contract_iteamx extensionin = lt_bapiparex.
read table lt_return transporting no fields with key type = 'E'.
if sy-subrc ne 0. call function 'BAPI_TRANSACTION_COMMIT'. else. call function 'BAPI_TRANSACTION_ROLLBACK'. endif.
endmethod.
|
|