交货单过账报错

Posted rainysblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交货单过账报错相关的知识,希望对你有一定的参考价值。

交货单过账报错

技术图片

技术图片

 

  DATA:LT_LIPS TYPE TABLE OF LIPS.
  DATA:LS_LIPS TYPE  LIPS.
  DATA:LT_VBPOK_TAB TYPE TABLE OF VBPOK.
  DATA:LS_VBPOK_TAB TYPE VBPOK.
  DATA:LT_ITEM_DATA_SPL TYPE TABLE OF /SPE/BAPIOBDLVITEMCHG.
  DATA:LS_ITEM_DATA_SPL TYPE /SPE/BAPIOBDLVITEMCHG.
  DATA:LS_HEADER_DATA TYPE BAPIOBDLVHDRCHG.
  DATA:LV_DELIVERY TYPE BAPIOBDLVHDRCHG-DELIV_NUMB.
  DATA:LS_TECHN_CONTROL TYPE BAPIDLVCONTROL.
  DATA:LS_HEADER_CONTROL TYPE BAPIOBDLVHDRCTRLCHG.
  DATA:LS_VBKOK TYPE VBKOK.
  DATA:LT_PROT TYPE TABLE OF PROTT.
  DATA:LV_ERROR(1).
  DATA:LV_MESSAGE     TYPE STRING.

  SELECT *
    INTO CORRESPONDING FIELDS OF TABLE LT_LIPS
    FROM LIPS
    WHERE VBELN EQ PV_VBELN.

  CLEAR:LS_LIPS.


  LOOP AT LT_LIPS   ASSIGNING FIELD-SYMBOL(<FS_LIPS>).
    CLEAR:LS_VBPOK_TAB.
    LS_VBPOK_TAB-VBELN_VL = <FS_LIPS>-VBELN. "交货.
    LS_VBPOK_TAB-POSNR_VL = <FS_LIPS>-POSNR."原行项目
    LS_VBPOK_TAB-VBELN    = <FS_LIPS>-VBELN. "交货.
    LS_VBPOK_TAB-POSNN    = <FS_LIPS>-POSNR."交货项目
    LS_VBPOK_TAB-MATNR    = <FS_LIPS>-MATNR."物料编号
    LS_VBPOK_TAB-CHARG    = <FS_LIPS>-CHARG."批号
    LS_VBPOK_TAB-LFIMG    = <FS_LIPS>-LFIMG.
    LS_VBPOK_TAB-MEINS    = <FS_LIPS>-MEINS.
    LS_VBPOK_TAB-WERKS    = <FS_LIPS>-WERKS ."库存地点
    LS_VBPOK_TAB-LGORT    = 9000 .           "库存地点
    LS_VBPOK_TAB-KZLGO    = X.             "库存地点可修改
    LS_VBPOK_TAB-PIKMG    = <FS_LIPS>-LFIMG."捡配数量
    LS_VBPOK_TAB-LGMNG    = <FS_LIPS>-LFIMG."交货量
    APPEND LS_VBPOK_TAB TO LT_VBPOK_TAB.

    CLEAR:LS_ITEM_DATA_SPL.
    LS_ITEM_DATA_SPL-DELIV_NUMB = <FS_LIPS>-VBELN."交货
    LS_ITEM_DATA_SPL-DELIV_ITEM = <FS_LIPS>-POSNR."原行项目
    LS_ITEM_DATA_SPL-STGE_LOC   = 9000.       "库存地点
    APPEND LS_ITEM_DATA_SPL TO LT_ITEM_DATA_SPL.

  ENDLOOP.

  LS_HEADER_DATA-DELIV_NUMB     = PV_VBELN."交货
  LS_TECHN_CONTROL-UPD_IND      = U.
  LS_HEADER_CONTROL-DELIV_NUMB  = PV_VBELN."交货
  LV_DELIVERY                   = PV_VBELN."交货

  LS_VBKOK-VBELN_VL             = PV_VBELN.
  LS_VBKOK-WABUC                = X.
  LS_VBKOK-WADAT_IST            = SY-DATUM.


  CALL FUNCTION WS_DELIVERY_UPDATE
    EXPORTING
      VBKOK_WA                  = LS_VBKOK
      DELIVERY                  = LV_DELIVERY
      UPDATE_PICKING            = X
    IMPORTING
      EF_ERROR_IN_GOODS_ISSUE_0 = LV_ERROR
    TABLES
      PROT                      = LT_PROT
      VBPOK_TAB                 = LT_VBPOK_TAB
    EXCEPTIONS
      ERROR_MESSAGE             = 1
      OTHERS                    = 2.


  IF LV_ERROR = ‘‘.
    READ TABLE LT_PROT TRANSPORTING NO FIELDS  WITH  KEY MSGTY = E.
    IF SY-SUBRC = 0.
      LV_ERROR = X.
    ENDIF.
  ENDIF.

  IF LV_ERROR IS NOT INITIAL.
    "创建失败
    CALL FUNCTION BAPI_TRANSACTION_ROLLBACK.

    LOOP AT LT_PROT INTO DATA(LS_PROT) WHERE MSGTY = E.

      CLEAR:LV_MESSAGE.

      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 LV_MESSAGE.

      CONCATENATE O_RETURN-MESSAGE LV_MESSAGE INTO O_RETURN-MESSAGE SEPARATED BY /.

    ENDLOOP.
    O_RETURN-TYPE = E.
  ELSE.
    "创建成功
    CALL FUNCTION BAPI_TRANSACTION_COMMIT
      EXPORTING
        WAIT = X.
    SELECT SINGLE MBLNR INTO O_RETURN-ZDJH FROM MSEG WHERE VBELN_IM = LV_DELIVERY.
    O_RETURN-TYPE = S.
  ENDIF.

 

以上是关于交货单过账报错的主要内容,如果未能解决你的问题,请参考以下文章

SAP 公司间STO场景中外向交货单过账后自动触发内向交货单功能的实现

ABAP EWM PRDO交货单过账

ABAP EWM PRDO交货单过账

ABAP EWM PRDI交货单过账

交货单过账

ABAP EWM PRDI交货单过账