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

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.

在使用BAPI_GOODSMVT_CREATE跨工厂物料调拨时,需要对以下参数进行赋值: 1. GOODSMVT_HEADER:物料凭证头数据 - PSTNG_DATE:过账日期 - DOC_DATE:凭证日期 - REF_DOC_NO:参考凭证号码 - HEADER_TXT:凭证抬头文本 - GM_CODE:物料移动类型 2. GOODSMVT_CODE:物料移动类型数据 - GM_CODE:物料移动类型代码 3. GOODSMVT_ITEM:物料凭证行项目数据 - MATERIAL:物料号 - PLANT:发货工厂 - STORAGE_LOC:发货库存地点 - MOVE_TYPE:移动类型 - ENTRY_QNT:数量 - ENTRY_UOM:计量单位 - COSTCENTER:成本中心 - VAL_TYPE:价值类型 - MOVE_PLANT:收货工厂 - MOVE_STLOC:收货库存地点 - ITEM_TEXT:项目文本 下面是一个简单的示例代码: ``` DATA: lv_material TYPE bapi2017_gm_item_create-matnr, lv_plant TYPE bapi2017_gm_item_create-werks, lv_stloc TYPE bapi2017_gm_item_create-lgort, lv_move_type TYPE bapi2017_gm_head-mvt_code, lv_entry_qnt TYPE bapi2017_gm_item_create-menge, lv_entry_uom TYPE bapi2017_gm_item_create-meins, lv_costcenter TYPE bapi2017_gm_item_create-kostl, lv_val_type TYPE bapi2017_gm_item_create-bwtar, lv_move_plant TYPE bapi2017_gm_item_create-wempf, lv_move_stloc TYPE bapi2017_gm_item_create-lgort, lt_item_data TYPE TABLE OF bapi2017_gm_item_create, ls_item_data LIKE LINE OF lt_item_data. ls_item_data-matnr = lv_material. ls_item_data-werks = lv_plant. ls_item_data-lgort = lv_stloc. ls_item_data-mvt_ind = lv_move_type. ls_item_data-menge = lv_entry_qnt. ls_item_data-meins = lv_entry_uom. ls_item_data-kostl = lv_costcenter. ls_item_data-bwtar = lv_val_type. ls_item_data-wempf = lv_move_plant. ls_item_data-welme = lv_entry_uom. ls_item_data-lgort_wempf = lv_move_stloc. APPEND ls_item_data TO lt_item_data. CALL FUNCTION 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = ls_header_data goodsmvt_code = ls_code_data TABLES goodsmvt_item = lt_item_data EXCEPTIONS error_message = 1 OTHERS = 2. ``` 请根据实际情况进行相应的修改和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DeveloperMrMeng

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值