修改交单-BAPI_OUTB_DELIVERY_CHANGE DATA: ls_header TYPE bapiobdlvhdrchg, ls_ctl TYPE bapiobd

  DATA: ls_header TYPE bapiobdlvhdrchg,
        ls_ctl    TYPE bapiobdlvhdrctrlchg.
  DATA: ls_tech TYPE bapidlvcontrol.
  DATA: lt_item TYPE STANDARD TABLE OF bapiobdlvitemchg,
        lt_ctl  TYPE STANDARD TABLE OF bapiobdlvitemctrlchg.
  DATA: lt_spl  TYPE STANDARD TABLE OF /spe/bapiobdlvitemchg.
  DATA: lt_ret    TYPE bapiret2_t.


  IF ct_item[] IS INITIAL.
    RETURN.
  ENDIF.

  SELECT * INTO TABLE @DATA(lt_lips) FROM lips
    FOR ALL ENTRIES IN @ct_item
    WHERE vbeln = @ct_item-vbeln_vl
      AND posnr = @ct_item-posnr_vl.

  ls_tech   = VALUE #( upd_ind = 'X' ).
  ls_header = VALUE #( deliv_numb = VALUE #( ct_item[ 1 ]-vbeln_vl OPTIONAL ) ).
  ls_ctl    = VALUE #( deliv_numb = VALUE #( ct_item[ 1 ]-vbeln_vl OPTIONAL ) ).
  lt_spl    = VALUE #( FOR wa IN ct_item ( deliv_numb = wa-vbeln_vl deliv_item = wa-posnr_vl stge_loc = wa-lgort_vl ) ).
  lt_item   = VALUE #( FOR ls_lips IN lt_lips (
    deliv_numb       = ls_lips-vbeln
    deliv_item       = ls_lips-posnr
    material         = ls_lips-matnr
    hieraritem       = ls_lips-posnr
    dlv_qty          = ls_lips-lfimg
    dlv_qty_imunit   = ls_lips-lgmng
    sales_unit       = ls_lips-vrkme
    sales_unit_iso   = ls_lips-vrkme
    base_uom         = ls_lips-meins
    base_uom_iso     = ls_lips-meins
    fact_unit_nom    = ls_lips-umvkz
    fact_unit_denom  = ls_lips-umvkn
     ) ).
  lt_ctl    = VALUE #( FOR ls_lips IN lt_lips ( deliv_numb = ls_lips-vbeln deliv_item = ls_lips-posnr chg_delqty = abap_true ) ).

  CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE'
    EXPORTING
      header_data    = ls_header
      header_control = ls_ctl
      delivery       = ls_header-deliv_numb
      techn_control  = ls_tech
    TABLES
      item_data      = lt_item
      item_control   = lt_ctl
      item_data_spl  = lt_spl
      return         = lt_ret.
  LOOP AT lt_ret TRANSPORTING NO FIELDS WHERE type = 'E' OR type = 'A'.
    EXIT.
  ENDLOOP.
  IF sy-subrc <> 0.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    APPEND LINES OF lt_ret TO mt_ret.
  ENDIF.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值