SAP WS_DELIVERY_UPDATE2更细库存地点LGORT及过账

文章描述了一个在正常情况下无法直接更改LGORT的过程,通过标准BADIIF_EX_LE_SHP_DELIVERY_UPDATE中的UPDATE_ITEM方法,可以完成DN变更和过账,且提供了测试Demo。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WS_DELIVERY_UPDATE2正常情况无法更改LGORT,但是有标准的BADI可以进行变更,这样DN变更和过账可以使用一个BAPI来完成。

增强点:LE_SHP_DELIVERY_UPDATE

方法:IF_EX_LE_SHP_DELIVERY_UPDATE~UPDATE_ITEM

  METHOD if_ex_le_shp_delivery_update~update_item.
      IF is_vbpok-lgort IS NOT INITIAL.
        cs_lips-lgort = is_vbpok-lgort.
      ENDIF.
  ENDMETHOD.

测试demo:

REPORT zprtest_dn_post.

DATA:
  ls_vbkok_wa TYPE vbkok,
  lv_delivery TYPE likp-vbeln,
  lt_prot     TYPE STANDARD TABLE OF prott,
  lt_vbpok    TYPE STANDARD TABLE OF vbpok,
  ls_vbpok    TYPE vbpok,
  ls_prot     TYPE prott.

DATA:
  lv_msg  TYPE string.

DATA:
  lv_vbeln TYPE vbeln VALUE '0070005866'.

SELECT vbeln,
       posnr,
       vgbel,
       vgpos,
       matnr,
       lfimg,
       charg,
       vrkme,
       meins,
       umvkz,
       umvkn,
       lgort
  INTO TABLE @DATA(lt_lips)
  FROM lips
 WHERE vbeln = @lv_vbeln.

ls_vbkok_wa-vbeln_vl  = lv_vbeln.
ls_vbkok_wa-wadat_ist = sy-datlo.
ls_vbkok_wa-wabuc     = abap_true.
ls_vbkok_wa-komue     = abap_true.

lv_delivery = lv_vbeln.

LOOP AT lt_lips INTO DATA(ls_lips).
  ls_vbpok-vbeln_vl = ls_lips-vbeln.
  ls_vbpok-posnr_vl = ls_lips-posnr.
  ls_vbpok-vbeln    = ls_lips-vgbel.
  ls_vbpok-posnn    = ls_lips-vgpos.
  ls_vbpok-pikmg    = ls_lips-lfimg.
  ls_vbpok-matnr    = ls_lips-matnr.
  ls_vbpok-charg    = ls_lips-charg.
  ls_vbpok-vrkme    = ls_lips-vrkme.
  ls_vbpok-meins    = ls_lips-meins.
  ls_vbpok-umvkz    = ls_lips-umvkz.
  ls_vbpok-umvkn    = ls_lips-umvkn.
  ls_vbpok-lgort    = '9999'.
  APPEND ls_vbpok TO lt_vbpok.
  CLEAR ls_vbpok.
ENDLOOP.

CALL FUNCTION 'WS_DELIVERY_UPDATE_2'
  EXPORTING
    vbkok_wa       = ls_vbkok_wa
*   SYNCHRON       = ' '
*   NO_MESSAGES_UPDATE_1               = ' '
*   COMMIT         = ' '
    delivery       = lv_delivery
    update_picking = abap_true
  TABLES
    vbpok_tab      = lt_vbpok
    prot           = lt_prot.

IF lt_prot IS NOT INITIAL.
  LOOP AT lt_prot INTO ls_prot WHERE msgty = 'E'.
    MESSAGE ID ls_prot-msgid
       TYPE ls_prot-msgty
     NUMBER ls_prot-msgno
       WITH ls_prot-msgv1
            ls_prot-msgv2
            ls_prot-msgv3
            ls_prot-msgv4
       INTO DATA(lv_message).

    WRITE:/,lv_message.
  ENDLOOP.

  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

*  cl_demo_output=>display( lt_prot ).
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'.

  MESSAGE 'Change and Post Successful..' TYPE 'S'.
ENDIF.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeveloperMrMeng

觉得有用的佛系投币哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值