1

我已经搜索了几天,什么也没找到。我的问题是,我必须根据 QM 报告创建退货。一切正常。

但是,客户想要手动更改收货地址。

流程:QM02(QM 报告)=> 退货单BAPI_PO_CREATE1(不同地址工作正常)=> 交货BAPI_OUTB_DELIVERY_CREATE_STO(来自 PO 的不同地址不起作用)

我的问题:是否可以更改外向交货的收货地址?我必须实施 BADI 还是有简单的解决方案?

如果有什么遗漏,我会更新问题。

4

2 回答 2

1

函数BAPI_OUTB_DELIVERY_CREATE_STO允许您从 PO 创建交货,但您无法处理许多交货字段。

创建交货后,您应该使用WS_DELIVERY_UPDATE_2函数来更新任何字段。

这不是 BAPI,因此没有很好的文档记录,但被广泛用于这些更改。

此致

更新

这是一个片段:

ls_vbkok-vbeln_vl = <delivery number>.
ls_partners-vbeln_vl = ls_vbkok-vbeln_vl.
ls_partners-parvw = 'WE'.
ls_partners-parnr = <partner number>.
ls_partners-updkz_par = 'U'.
ls_partners-stras = <new street address>.
append ls_partners to lt_partners.

call function 'WS_DELIVERY_UPDATE_2'
  exporting
    vbkok_wa          = ls_vbkok
    synchron          = 'X'
    commit            = 'X'
    delivery          = ls_vbkok-vbeln_vl
  tables
    vbpok_tab         = lt_vbpok
    it_partner_update = lt_partners
    prot              = lt_prot.

if lt_prot[] is not initial.
  " handle error message here
endif.
于 2019-03-11T16:18:30.140 回答
0

如果您需要提交并且可以在 'WS_DELIVERY_UPDATE_2' 之后进行,请尝试在新任务中调用它。举个例子 :

call function 'WS_DELIVERY_UPDATE_2' STARTING NEW TASK task
  PERFORMING return_fm ON END OF TASK
  exporting
    vbkok_wa          = ls_vbkok
    synchron          = 'X'
    commit            = ' '
    delivery          = ls_vbkok-vbeln_vl
  tables
    vbpok_tab         = lt_vbpok
    it_partner_update = lt_partners
    prot              = lt_prot.


*your code
WAIT UNTIL get_executed <> space.

FORM return_fm   USING i_taskname.
*your code
  get_executed = 'X'.
ENDFORM.                     

于 2019-03-13T13:41:43.283 回答