SAP WS_DELIVERY_UPDATE 修改数量、过账日期并发货过账

*发货过账。

  L_VBKOK-VBELN_VL = PV_DELIVERY.    "<-- fill this field with your delivery number

  L_VBKOK-WABUC    = 'X'.

  L_VBKOK-WADAT_IST = PV_WADAT .

  L_VBKOK-KOMUE     = 'X'.    “不保存更新的情况下直接修改日期数量过账,此字段打"X"

  CLEAR LT_NEW_LIPS  .

  SELECT

    *

    INTO CORRESPONDING FIELDS OF TABLE LT_NEW_LIPS

    FROM LIPS

    WHERE VBELN  EQ PV_DELIVERY.

  LOOP AT LT_NEW_LIPS INTO LS_NEW_LIPS .

    LS_VBPOK-VBELN_VL = LS_NEW_LIPS-VBELN.

    LS_VBPOK-POSNR_VL = LS_NEW_LIPS-POSNR.

    LS_VBPOK-VBELN = LS_NEW_LIPS-VGBEL.

    LS_VBPOK-POSNN = LS_NEW_LIPS-VGPOS.

    LS_VBPOK-PIKMG = LS_NEW_LIPS-LFIMG.

    LOOP AT GT_ITEM INTO GS_ITEM WHERE VBELN_VL  = LS_VBPOK-VBELN_VL

                                   AND POSNR_VL  = LS_VBPOK-POSNR_VL.

      LS_VBPOK-PIKMG = GS_ITEM-LFIMG.  “不保存情况下直接取界面修改的数量

    ENDLOOP.

    APPEND LS_VBPOK TO LT_VBPOK.

  ENDLOOP .

*  L_VBKOK-BOLNR    = LV_BOLNR .

*  L_VBKOK-LIFEX    = LV_BOLNR .

  CALL FUNCTION 'WS_DELIVERY_UPDATE'

    EXPORTING

      VBKOK_WA                    = L_VBKOK

      SYNCHRON                    = 'X'

      NO_MESSAGES_UPDATE          = ' '

      UPDATE_PICKING              = 'X'

      COMMIT                      = 'X'

      DELIVERY                    = PV_DELIVERY

      NICHT_SPERREN               = 'X'

    TABLES

      VBPOK_TAB                   = LT_VBPOK

      PROT                        = LT_PROTT

    EXCEPTIONS

      EF_ERROR_ANY_0              = 1

      EF_ERROR_IN_ITEM_DELETION_0 = 2

      EF_ERROR_IN_POD_UPDATE_0    = 3

      EF_ERROR_IN_INTERFACE_0     = 4

      EF_ERROR_IN_GOODS_ISSUE_0   = 5

      EF_ERROR_IN_FINAL_CHECK_0   = 6

      EF_ERROR_PARTNER_UPDATE     = 7

      EF_ERROR_SERNR_UPDATE       = 8

      ERROR_MESSAGE               = 9

      OTHERS                      = 10.

  IF SY-SUBRC   = 0 .

    LOOP AT LT_PROTT WHERE MSGTY CA 'EAX'..

      CALL FUNCTION 'MESSAGE_TEXT_BUILD'

        EXPORTING

          MSGID               = LT_PROTT-MSGID

          MSGNR               = LT_PROTT-MSGNO

          MSGV1               = LT_PROTT-MSGV1

          MSGV2               = LT_PROTT-MSGV2

          MSGV3               = LT_PROTT-MSGV3

          MSGV4               = LT_PROTT-MSGV4

        IMPORTING

          MESSAGE_TEXT_OUTPUT = LV_MESSAGE.

      CONCATENATE  LV_ALL_MESSAGE LV_MESSAGE  INTO  LV_ALL_MESSAGE .

      LV_FLAG = 'X' .

      CLEAR LT_PROTT.

    ENDLOOP.

  ELSE.

    CALL FUNCTION 'MESSAGE_TEXT_BUILD'

      EXPORTING

        MSGID               = SY-MSGID

        MSGNR               = SY-MSGNO

        MSGV1               = SY-MSGV1

        MSGV2               = SY-MSGV2

        MSGV3               = SY-MSGV3

        MSGV4               = SY-MSGV4

      IMPORTING

        MESSAGE_TEXT_OUTPUT = LV_ALL_MESSAGE.

    LV_FLAG = 'X' .

  ENDIF .

  IF LV_FLAG IS INITIAL .

*1459993 - Error message VL633 occurs in transaction VL09

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

      EXPORTING

        WAIT = 'X'

*    IMPORTING

*       RETURN        =

      .

    UPDATE LIKP

SET VLSTK = ''

WHERE VBELN = PV_DELIVERY .

    IF SY-SUBRC = 0 .

      COMMIT WORK AND WAIT .

    ENDIF .

    CV_MESSAGE = '发货过账成功' .

    CV_FLAG = '' .

  ELSE .

    CV_MESSAGE =  LV_ALL_MESSAGE .

    CV_FLAG = 'X'.

  ENDIF .

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值