SAP ABAP WS_DELIVERY_UPDATE 更新拣配数量并发货过账

FUNCTION ZSD_MC_DELIVERY_POST.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(IS_TECNO) TYPE  ZCAS_REQUEST OPTIONAL
*"     REFERENCE(IT_HEAD) TYPE  ZMMS_DELIVERY_POST_HEAD_LT_MC OPTIONAL
*"  EXPORTING
*"     VALUE(ET_OUTPUT) TYPE  ZMMS_DELIVERY_POST_RESULT_LT_C
*"  TABLES
*"      IT_ITEM STRUCTURE  ZMMS_DELIVERY_POST_ITEM_MC OPTIONAL
*"      IT_SEQN STRUCTURE  ZMMS_DELIVERY_POST_SEQN_MC OPTIONAL
*"----------------------------------------------------------------------
  DATA:
    LS_HEADER_DATA    LIKE  BAPIOBDLVHDRCON,
    LS_HEADER_CONTROL LIKE  BAPIOBDLVHDRCTRLCON,
    LV_DELIVERY_NUMB  LIKE  BAPIOBDLVHDRCON-DELIV_NUMB.
  DATA:LT_RETURN_TAB TYPE TABLE OF BAPIRET2,
       LW_RETURN_TAB TYPE  BAPIRET2.
  DATA:LS_HEAD TYPE ZMMS_DELIVERY_POST_HEAD_MC  .
  DATA:LS_OUTPUT TYPE  ZMMS_DELIVERY_POST_RESULT_MC .
  DATA:LS_SEQN TYPE ZMMS_DELIVERY_POST_SEQN_MC.
  DATA:
    L_VBKOK  LIKE VBKOK,
    LT_PROTT LIKE PROTT OCCURS 0 WITH HEADER LINE,
    LV_WBSTK TYPE VBUK-WBSTK,
    LV_BOLNR TYPE VBKOK-BOLNR.
  DATA:
    LT_ITEM_DATA      LIKE TABLE OF   BAPIOBDLVITEMCON,
    LW_ITEM_DATA      LIKE    BAPIOBDLVITEMCON,
    LT_ITEM_SERIAL_NO LIKE TABLE OF BAPIDLVITMSERNO,
    LW_ITEM_SERIAL_NO LIKE  BAPIDLVITMSERNO,
    LT_ITEM_CONTROL   LIKE TABLE OF BAPIOBDLVITEMCTRLCON,
    LW_ITEM_CONTROL   LIKE BAPIOBDLVITEMCTRLCON.
  DATA:LV_CHARGE_POSNR TYPE LIPS-POSNR.
  DATA:LV_FLAG TYPE CHAR01.
  DATA:LV_MENGE TYPE LFIMG.
  DATA:LV_TOTAL_MENGE TYPE LFIMG.
  DATA:LT_LIPS_TAB TYPE TABLE OF LIPS,
       LS_LIPS_TAB TYPE LIPS.
  DATA:LV_MESSAGE     TYPE STRING,
       LV_ALL_MESSAGE TYPE STRING.
  DATA:LS_ITEM TYPE ZMMS_DELIVERY_POST_ITEM_MC .
  DATA:LV_VBELN TYPE LIKP-VBELN .
  DATA:LT_VBPOK TYPE TABLE OF VBPOK,
       LS_VBPOK TYPE VBPOK.
  DATA:LT_NEW_LIPS TYPE TABLE OF  LIPS,
       LS_NEW_LIPS TYPE LIPS.
  DATA:LT_SEQNO TYPE TABLE OF ZSDT_SEQNO,
       LS_SEQNO TYPE ZSDT_SEQNO.
  DATA:LV_POST TYPE CHAR01 .
  LV_POST = 'X' ."发货过账
  EXPORT P1 = LV_POST TO MEMORY ID 'DNPOS' .
*做批次拆分,发货过账。
  LOOP AT IT_HEAD INTO LS_HEAD .
    CLEAR:LV_MESSAGE ,LV_ALL_MESSAGE ,LV_FLAG .
    CLEAR:LT_RETURN_TAB[] ,LS_HEADER_DATA,LS_HEADER_CONTROL,LT_ITEM_DATA,
    LT_ITEM_CONTROL,LT_ITEM_SERIAL_NO ,LT_PROTT .

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  EXPORTING
    INPUT         =  LS_HEAD-VBELN
 IMPORTING
   OUTPUT        =  LS_HEAD-VBELN
          .
*发货过账。
    L_VBKOK-VBELN_VL = LS_HEAD-VBELN.    "<-- fill this field with your delivery number
    L_VBKOK-WABUC    = 'X'.
    CLEAR LT_NEW_LIPS  .
    SELECT
      *
      INTO CORRESPONDING FIELDS OF TABLE LT_NEW_LIPS
      FROM LIPS
      WHERE VBELN  EQ LS_HEAD-VBELN .

    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.
      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                    = LS_HEAD-VBELN
        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
      UPDATE LIKP
      SET VLSTK = ''
      ZZLOGIS = LS_HEAD-ZZLOGIS
      ZZLOGNO = LS_HEAD-ZZLOGNO
      ZZLINK = LS_HEAD-ZZLINK
      ZZNUMB = LS_HEAD-ZZNUMB
      ZZVOLU = LS_HEAD-ZZVOLU
      ZZWEIG  = LS_HEAD-ZZWEIG
      ZZKEEPER = LS_HEAD-ZZKEEPER
      ZZMETHOD = LS_HEAD-ZZMETHOD
      WHERE VBELN = LS_HEAD-VBELN .
      IF SY-SUBRC = 0 .
        COMMIT WORK AND WAIT .
      ENDIF .
      LS_OUTPUT-MCNO = LS_HEAD-MCNO .
      LS_OUTPUT-MESSAGE =  '发货过账成功'  .
      LS_OUTPUT-STATUS = 'S' .
      LS_OUTPUT-ZUNIQUE = LS_HEAD-ZUNIQUE .
      APPEND LS_OUTPUT  TO ET_OUTPUT .
    ELSE .
      LS_OUTPUT-MCNO = LS_HEAD-MCNO .
      LS_OUTPUT-MESSAGE =  LV_ALL_MESSAGE  .
      LS_OUTPUT-STATUS = 'E' .
      LS_OUTPUT-ZUNIQUE = LS_HEAD-ZUNIQUE .
      APPEND LS_OUTPUT  TO ET_OUTPUT .
    ENDIF .
  ENDLOOP .
    FREE MEMORY ID 'DNPOS' .
ENDFUNCTION.

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值