BAPI_SALESORDER_CHANGE更新地址

此次遇到一个问题,在修改销售订单送达方的信息时,bapi返回修改成功,但实际上是没有修改到的,随后一直debug检查发现新值并未更新进去。
此次要修改的信息如图下所圈:
要修改的部分信息
此前一直选用的为PARTNERS和PARTNERCHANGES里的结构,而忽略了第三个PARTNERADDRESSES。
BAPI_SALESORDER_CHANGE的重要参数
由于这次仅只需要修改名称地址电话等内容,那么关键便是需要在结构PARTNERCHANGES(ADDR_LINK)的一个字段中传递一个虚拟地址号,并在结构PARTNERADDRESSES(ADDR_NO)的一个字段中传递相同的数字。
此处参考的链接:通过BAPI_SALESORDER_CHANGE更新收货方地址
以下奉上相关代码:

LOOP AT LT_ALV INTO LS_ALV.
    CLEAR:LT_RETURN,LT_PARTNER.
    LV_ORDER_HEADER_INX-UPDATEFLAG = 'U'.  "U为更新

    CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT' "售达方
      EXPORTING
        INPUT         = 'SH'
     IMPORTING
       OUTPUT        = LS_PARTNER-PARTN_ROLE.

    LS_PARTNER-PARTN_NUMB  = LS_ALV-KUNNR.
    LS_PARTNER-COUNTRY     = 'CN'. 
    LS_PARTNER-NAME        = LS_ALV-NAME1.
*    ls_partner-postl_code = ls_alv-post_code1.
*    ls_partner-city       = ls_alv-city1.
    LS_PARTNER-STREET      = LS_ALV-STREET.
    LS_PARTNER-TELEPHONE   = LS_ALV-TEL_NUMBER.
    APPEND LS_PARTNER TO LT_PARTNER.
    CLEAR:LS_PARTNER.

    LS_PARTNERCHANGES-UPDATEFLAG = 'U'.
    LS_PARTNERCHANGES-DOCUMENT   = LS_ALV-VBELN.
    LS_PARTNERCHANGES-ITM_NUMBER = '000000'.  "抬头行项目
    LS_PARTNERCHANGES-PARTN_ROLE = 'WE'.
    LS_PARTNERCHANGES-P_NUMB_OLD = LS_ALV-KUNNR.
    LS_PARTNERCHANGES-P_NUMB_NEW = LS_ALV-KUNNR.
    LS_PARTNERCHANGES-ADDR_LINK  ='9999999999'.
    APPEND LS_PARTNERCHANGES TO LT_PARTNERCHANGES.
    CLEAR LS_PARTNERCHANGES.

    LS_PARTNERADDRESSES-COUNTRY = 'CN'.
    LS_PARTNERADDRESSES-ADDR_NO = '9999999999'.
    LS_PARTNERADDRESSES-NAME    = LS_ALV-NAME1.
    LS_PARTNERADDRESSES-TEL1_NUMBR  = LS_ALV-TEL_NUMBER.
    LS_PARTNERADDRESSES-STREET  = LS_ALV-STREET.
    APPEND LS_PARTNERADDRESSES TO LT_PARTNERADDRESSES.
    CLEAR LS_PARTNERADDRESSES.

    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
      EXPORTING
        SALESDOCUMENT    = LS_ALV-VBELN
        ORDER_HEADER_INX = LV_ORDER_HEADER_INX
      TABLES
        RETURN           = LT_RETURN
        PARTNERS         = LT_PARTNER
        PARTNERCHANGES   = LT_PARTNERCHANGES
        PARTNERADDRESSES = LT_PARTNERADDRESSES.

    LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE CA 'EA'.
      CONCATENATE LS_ALV-ZMSG  LS_RETURN-MESSAGE INTO LS_ALV-ZMSG.
    ENDLOOP.
    IF SY-SUBRC <> 0.    "创建成功
      LS_ALV-ZSIGN    = ICON_GREEN_LIGHT.
      LS_ALV-ZMSG     = '客户修改成功'.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = 'X'.
          
      MODIFY GT_ALV FROM LS_ALV TRANSPORTING ZSIGN ZMSG WHERE VBELN = LS_ALV-VBELN.
    ELSE.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      LS_ALV-ZSIGN    = ICON_RED_LIGHT.

      MODIFY GT_ALV FROM LS_ALV TRANSPORTING ZSIGN ZMSG WHERE VBELN = LS_ALV-VBELN.
    ENDIF.
    REFRESH:LT_PARTNER,LT_PARTNERCHANGES.
  ENDLOOP.

希望有帮到,加油!

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值