суть вопроса в следующем:
кто-нибудь делал обновление полей VBAP-VGBEL/VBAP-VGPOS с помощью BAPI_SALESORDER_CHANGE или SD_SALESDOCUMENT_CHANGE? Почему у меня не получается? Привожу кусок кода ниже, может кто-то сталкивался?
Code:
ls_headerx-updateflag = 'U'.
SELECT SINGLE vbtyp FROM vbrk INTO lv_vbtyp
WHERE vbeln = gs_data-vbelv.
" заполнение позиций
ls_items-itm_number = gs_data-posnr.
ls_items-ref_doc = gs_data-vbelv. "vbap-vbeln.
ls_items-ref_doc_ca = lv_vbtyp. "'M'.
ls_items-ref_doc_it = gs_data-posnv. "vbap-vgpos.
APPEND ls_items TO lt_items.
ls_itemsx-itm_number = gs_data-posnr.
ls_itemsx-ref_doc =
ls_itemsx-ref_doc_ca =
ls_itemsx-ref_doc_it = abap_true.
ls_itemsx-updateflag = 'U'.
APPEND ls_itemsx TO lt_itemsx.
CALL FUNCTION 'SD_SALESDOCUMENT_CHANGE'
EXPORTING
SALESDOCUMENT = gs_data-vbeln
ORDER_HEADER_INX = ls_headerx
TABLES
RETURN = lt_return
ITEM_IN = lt_items
ITEM_INX = lt_itemsx.
READ TABLE lt_return TRANSPORTING NO FIELDS WITH KEY type = gc_err.
IF sy-subrc NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = mmpur_yes.
" Документ &1 изменен
PERFORM log_add_message TABLES gt_free USING gv_log_handle gc_suc gc_id '009' gs_data-vbeln '' '' '' .
gv_flow = abap_true.
ELSE.
LOOP AT lt_return INTO ls_return WHERE type = gc_err.
PERFORM log_add_message TABLES gt_free USING gv_log_handle ls_return-type ls_return-id ls_return-number '' '' '' '' .
ENDLOOP.
ENDIF.