MIGO过账BAPI-BAPI_GOODSMVT_CREATE常用移动类型

MIGO过账BAPI-BAPI_GOODSMVT_CREATE常用移动类型

定义:

DATA: LT_HEAD   TYPE TABLE OF BAPI2017_GM_HEAD_01.
  DATA: LS_HEAD   TYPE BAPI2017_GM_HEAD_01.
  DATA: LT_CODE   TYPE TABLE OF BAPI2017_GM_CODE.
  DATA: LV_CODE   TYPE BAPI2017_GM_CODE.
  DATA: LT_ITEM   TYPE TABLE OF BAPI2017_GM_ITEM_CREATE.
  DATA: LS_ITEM   TYPE BAPI2017_GM_ITEM_CREATE.
  DATA: LT_SERIALNUMBER  TYPE TABLE OF BAPI2017_GM_SERIALNUMBER.
  DATA: LS_SERIALNUMBER  TYPE BAPI2017_GM_SERIALNUMBER.
  DATA: LT_RETURN TYPE TABLE OF BAPIRET2.
  DATA: LS_RETURN TYPE BAPIRET2.

  DATA LT_EXTENSIONIN	TYPE TABLE OF BAPIPAREX.
  DATA LS_EXTENSIONIN	TYPE BAPIPAREX.

321:

LS_ITEM-MATERIAL          = IS_ITEM-MATNR.        "物料
      LS_ITEM-PLANT             = IS_ITEM-WERKS.        "工厂
      LS_ITEM-STGE_LOC          = IS_ITEM-LGORT.        "库存地点
      LS_ITEM-BATCH             = IS_ITEM-CHARG.        "批次
      LS_ITEM-QUANTITY          = IS_ITEM-MENGE.        "数量
      LS_ITEM-BASE_UOM          = IS_ITEM-MEINS.        "基本计量单位

      LS_ITEM-MOVE_TYPE         = IM_BWART.             "移动类型
      LS_ITEM-ENTRY_QNT         = IS_ITEM-ERFMG.        "以录入项单位表示的数量
      LS_ITEM-ENTRY_UOM         = IS_ITEM-ERFME.        "录入单位
      LS_ITEM-MOVE_PLANT        = IS_ITEM-WERKS.        "收货工厂/发货工厂
      LS_ITEM-MOVE_STLOC        = IS_ITEM-UMLGO.        "收货/发货库存地点
      LS_ITEM-MOVE_BATCH        = IS_ITEM-UMCHA.        "收货/发货批量
      LS_ITEM-MOVE_MAT          = IS_ITEM-MATNR.        "物料
      LS_ITEM-SPEC_STOCK        = IS_ITEM-SOBKZ.        "特殊库存标识
      IF IS_ITEM-SOBKZ IS NOT INITIAL.
        LS_ITEM-VAL_SALES_ORD   = IS_ITEM-MAT_KDAUF .  "发出的销售订单
        LS_ITEM-VAL_S_ORD_ITEM  = IS_ITEM-MAT_KDPOS .
        LS_ITEM-SALES_ORD       = IS_ITEM-KDAUF .     "收到的销售订单
        LS_ITEM-S_ORD_ITEM      = IS_ITEM-KDPOS .
      ENDIF.

322:

LS_ITEM-MATERIAL          = IS_ITEM-MATNR.        "物料
      LS_ITEM-PLANT             = IS_ITEM-WERKS.        "工厂
      LS_ITEM-STGE_LOC          = IS_ITEM-LGORT.        "库存地点
      LS_ITEM-BATCH             = IS_ITEM-CHARG.        "批次
      LS_ITEM-QUANTITY          = IS_ITEM-MENGE.        "数量
      LS_ITEM-BASE_UOM          = IS_ITEM-MEINS.        "基本计量单位

      LS_ITEM-MOVE_TYPE         = IM_BWART.             "移动类型
      LS_ITEM-ENTRY_QNT         = IS_ITEM-ERFMG.        "以录入项单位表示的数量
      LS_ITEM-ENTRY_UOM         = IS_ITEM-ERFME.        "录入单位
      LS_ITEM-MOVE_PLANT        = IS_ITEM-WERKS.        "收货工厂/发货工厂
      LS_ITEM-MOVE_STLOC        = IS_ITEM-UMLGO.        "收货/发货库存地点
      LS_ITEM-MOVE_BATCH        = IS_ITEM-UMCHA.        "收货/发货批量
      LS_ITEM-MOVE_MAT          = IS_ITEM-MATNR.        "物料
      LS_ITEM-SPEC_STOCK        = IS_ITEM-SOBKZ.        "特殊库存标识

201-901:

LS_ITEM-MATERIAL          = IS_ITEM-MATNR.        "物料
      LS_ITEM-PLANT             = IS_ITEM-WERKS.        "工厂
      LS_ITEM-STGE_LOC          = IS_ITEM-LGORT.        "库存地点
      LS_ITEM-BATCH             = IS_ITEM-CHARG.        "批次
      LS_ITEM-QUANTITY          = IS_ITEM-MENGE.        "数量
      LS_ITEM-BASE_UOM          = IS_ITEM-MEINS.        "基本计量单位

      LS_ITEM-MOVE_TYPE         = IM_BWART.             "移动类型
      LS_ITEM-ENTRY_QNT         = IS_ITEM-ERFMG.        "以录入项单位表示的数量
      LS_ITEM-ENTRY_UOM         = IS_ITEM-ERFME.        "录入单位
      LS_ITEM-MOVE_PLANT        = IS_ITEM-WERKS.        "收货工厂/发货工厂
      LS_ITEM-MOVE_STLOC        = IS_ITEM-UMLGO.        "收货/发货库存地点
      LS_ITEM-MOVE_BATCH        = IS_ITEM-UMCHA.        "收货/发货批量
      LS_ITEM-MOVE_MAT          = IS_ITEM-MATNR.        "物料
      LS_ITEM-SPEC_STOCK        = IS_ITEM-SOBKZ.        "特殊库存标识

      IF IS_ITEM-ARBPL IS NOT INITIAL.
        LS_ITEM-COSTCENTER        = IS_ITEM-ARBPL && '000'.  "成本中心
      ELSE.
        LS_ITEM-COSTCENTER        =  IS_ITEM-KOSTL.  "成本中心
      ENDIF.
      LS_ITEM-RESERV_NO         = IS_ITEM-RSNUM.        "预留/相关需求的编号
      LS_ITEM-RES_ITEM          = IS_ITEM-RSPOS.        "预留 / 相关需求的项目编号
      IF IS_ITEM-SOBKZ IS NOT INITIAL.
        LS_ITEM-VAL_SALES_ORD   = IS_ITEM-MAT_KDAUF .  "发出的销售订单
        LS_ITEM-VAL_S_ORD_ITEM  = IS_ITEM-MAT_KDPOS .
        LS_ITEM-SALES_ORD       = IS_ITEM-KDAUF .     "收到的销售订单
        LS_ITEM-S_ORD_ITEM      = IS_ITEM-KDPOS .
      ENDIF.

202-902:

LS_ITEM-MATERIAL          = IS_ITEM-MATNR.        "物料
        LS_ITEM-PLANT             = IS_ITEM-WERKS.        "工厂
        LS_ITEM-STGE_LOC          = IS_ITEM-LGORT.        "库存地点
        LS_ITEM-BATCH             = IS_ITEM-CHARG.        "批次
        LS_ITEM-QUANTITY          = IS_ITEM-MENGE.        "数量
        LS_ITEM-BASE_UOM          = IS_ITEM-MEINS.        "基本计量单位

        LS_ITEM-MOVE_TYPE         = IM_BWART.             "移动类型
        LS_ITEM-ENTRY_QNT         = IS_ITEM-ERFMG.        "以录入项单位表示的数量
        LS_ITEM-ENTRY_UOM         = IS_ITEM-ERFME.        "录入单位
        LS_ITEM-MOVE_PLANT        = IS_ITEM-WERKS.        "收货工厂/发货工厂
        LS_ITEM-MOVE_STLOC        = IS_ITEM-UMLGO.        "收货/发货库存地点
        LS_ITEM-MOVE_BATCH        = IS_ITEM-UMCHA.        "收货/发货批量
        LS_ITEM-MOVE_MAT          = IS_ITEM-MATNR.        "物料
        LS_ITEM-SPEC_STOCK        = IS_ITEM-SOBKZ.        "特殊库存标识

*        LS_ITEM-RESERV_NO         = IS_ITEM-RSNUM.        "预留/相关需求的编号
*        LS_ITEM-RES_ITEM          = IS_ITEM-RSPOS.        "预留 / 相关需求的项目编号

      IF IS_ITEM-ARBPL IS NOT INITIAL.
        LS_ITEM-COSTCENTER        = IS_ITEM-ARBPL && '000'.  "成本中心
      ELSE.
        LS_ITEM-COSTCENTER        =  IS_ITEM-KOSTL.  "成本中心
      ENDIF.

      IF IS_ITEM-SOBKZ IS NOT INITIAL.
        LS_ITEM-VAL_SALES_ORD   = IS_ITEM-MAT_KDAUF .  "发出的销售订单
        LS_ITEM-VAL_S_ORD_ITEM  = IS_ITEM-MAT_KDPOS .
        LS_ITEM-SALES_ORD       = IS_ITEM-KDAUF .     "收到的销售订单
        LS_ITEM-S_ORD_ITEM      = IS_ITEM-KDPOS .
      ENDIF.

161:

LS_ITEM-MATERIAL          = IS_ITEM-MATNR.        "物料
      LS_ITEM-PLANT             = IS_ITEM-WERKS.        "工厂
      LS_ITEM-STGE_LOC          = IS_ITEM-LGORT.        "库存地点
      LS_ITEM-BATCH             = IS_ITEM-CHARG.        "批次
      LS_ITEM-QUANTITY          = IS_ITEM-MENGE.        "数量
      LS_ITEM-BASE_UOM          = IS_ITEM-MEINS.        "基本计量单位

      LS_ITEM-MOVE_TYPE         = '101'.             "移动类型
      LS_ITEM-ENTRY_QNT         = IS_ITEM-ERFMG.        "以录入项单位表示的数量
      LS_ITEM-ENTRY_UOM         = IS_ITEM-ERFME.        "录入单位
      LS_ITEM-MOVE_PLANT        = IS_ITEM-WERKS.        "收货工厂/发货工厂
      LS_ITEM-MOVE_STLOC        = IS_ITEM-UMLGO.        "收货/发货库存地点
      LS_ITEM-MOVE_BATCH        = IS_ITEM-UMCHA.        "收货/发货批量
      LS_ITEM-MOVE_MAT          = IS_ITEM-MATNR.        "物料
      LS_ITEM-SPEC_STOCK        = IS_ITEM-SOBKZ.        "特殊库存标识
      LS_ITEM-COSTCENTER        = IS_ITEM-KOSTL.        "成本中心
      LS_ITEM-PO_NUMBER         = IS_ITEM-EBELN.        "采购订单
      LS_ITEM-PO_ITEM           = IS_ITEM-EBELP.        "采购订单行项目
      LS_ITEM-MVT_IND           = 'B'.

311-411-413:

LS_ITEM-MATERIAL          = IS_ITEM-MATNR.        "物料
      LS_ITEM-PLANT             = IS_ITEM-WERKS.        "工厂
      LS_ITEM-STGE_LOC          = IS_ITEM-LGORT.        "库存地点
      LS_ITEM-MOVE_TYPE         = IM_BWART.             "移动类型
      LS_ITEM-QUANTITY          = IS_ITEM-ERFMG.        "数量
      LS_ITEM-SPEC_STOCK        = IS_ITEM-SOBKZ.        "特殊库存标识
      LS_ITEM-ENTRY_QNT         = IS_ITEM-ERFMG.        "以录入项单位表示的数量
      LS_ITEM-BATCH             = IS_ITEM-CHARG.        "批次
      LS_ITEM-MOVE_PLANT        = IS_ITEM-WERKS.        "收货工厂/发货工厂
      LS_ITEM-MOVE_STLOC        = IS_ITEM-UMLGO.        "收货/发货库存地点
      LS_ITEM-MOVE_BATCH        = IS_ITEM-UMCHA.        "收货/发货批量
      LS_ITEM-RESERV_NO         = IS_ITEM-RSNUM.        "预留/相关需求的编号
      LS_ITEM-RES_ITEM          = IS_ITEM-RSPOS.        "预留 / 相关需求的项目编号
      LS_ITEM-ITEM_TEXT         = IS_ITEM-SGTXT .       "项目文本
      IF LS_ITEM-MOVE_TYPE    = '311' AND IS_ITEM-SOBKZ IS NOT INITIAL.
        LS_ITEM-VAL_SALES_ORD   = IS_ITEM-MAT_KDAUF .  "发出的销售订单
        LS_ITEM-VAL_S_ORD_ITEM  = IS_ITEM-MAT_KDPOS .
        LS_ITEM-SALES_ORD       = IS_ITEM-MAT_KDAUF .     "收到的销售订单
        LS_ITEM-S_ORD_ITEM      = IS_ITEM-MAT_KDPOS.
      ENDIF.
      IF LS_ITEM-MOVE_TYPE    = '413'.
        LS_ITEM-SALES_ORD       = IS_ITEM-KDAUF .     "收到的销售订单
        LS_ITEM-S_ORD_ITEM      = IS_ITEM-KDPOS .
      ENDIF.
      IF LS_ITEM-MOVE_TYPE    = '411'.
        LS_ITEM-VAL_SALES_ORD   = IS_ITEM-MAT_KDAUF .  "发出的销售订单
        LS_ITEM-VAL_S_ORD_ITEM  = IS_ITEM-MAT_KDPOS .
      ENDIF.

351:

LS_ITEM-MOVE_TYPE = IM_BWART.
        LS_ITEM-MVT_IND = IS_ITEM-KZBEW. "移动标识
        LS_ITEM-MOVE_REAS = IS_ITEM-GRUND. "移动原因
        LS_ITEM-PLANT    = IS_ITEM-WERKS.
        LS_ITEM-MATERIAL = IS_ITEM-MATNR. "物料
        LS_ITEM-STGE_LOC = IS_ITEM-LGORT.  "库存地点
        LS_ITEM-BATCH    = IS_ITEM-CHARG. "批次
*        LS_ITEM-QUANTITY = IS_ITEM-MENGE.
*        LS_ITEM-BASE_UOM = IS_ITEM-MEINS.
        LS_ITEM-ENTRY_QNT = IS_ITEM-ERFMG.
        LS_ITEM-ENTRY_UOM = IS_ITEM-ERFME.
        LS_ITEM-PO_NUMBER  = IS_ITEM-EBELN.
        LS_ITEM-PO_ITEM   = IS_ITEM-EBELP.
        LS_ITEM-ITEM_TEXT   = IS_ITEM-SGTXT.

*        LS_ITEM-WITHDRAWN  = IS_ITEM-KZEAR.
*        LS_ITEM-WAREHOUSE_EWM = IS_ITEM-LGNUM.
*        LS_ITEM-STGE_BIN_EWM = IS_ITEM-LGPLA.
        LS_ITEM-MOVE_PLANT = IS_ITEM-UMWRK. "收货工厂/发货工厂

101:

LS_ITEM-PLANT    = IS_ITEM-WERKS.
        LS_ITEM-MATERIAL = IS_ITEM-MATNR. "物料
        LS_ITEM-STGE_LOC = IS_ITEM-LGORT.  "库存地点
        LS_ITEM-BATCH    = IS_ITEM-CHARG. "批次
        LS_ITEM-QUANTITY = IS_ITEM-MENGE.
        LS_ITEM-BASE_UOM = IS_ITEM-MEINS.
        LS_ITEM-ENTRY_QNT = IS_ITEM-ERFMG.
        LS_ITEM-ENTRY_UOM = IS_ITEM-ERFME.
        LS_ITEM-PROD_DATE = IS_ITEM-HSDAT.
        LS_ITEM-MOVE_TYPE = IM_BWART.
        LS_ITEM-MVT_IND = IS_ITEM-KZBEW. "移动标识
        LS_ITEM-MOVE_REAS = IS_ITEM-GRUND. "移动原因
        LS_ITEM-ORDERID = COND #( WHEN IS_ITEM-AUFNR IS NOT INITIAL THEN IS_ITEM-AUFNR ).
        LS_ITEM-ORDER_ITNO =  COND #( WHEN IS_ITEM-AUFNR IS NOT INITIAL THEN '0001' ).
        LS_ITEM-MVT_IND = 'F'.
         LS_ITEM-ITEM_TEXT   = IS_ITEM-SGTXT.

262:

LS_ITEM-PLANT    = IS_ITEM-WERKS.
        LS_ITEM-MATERIAL = IS_ITEM-MATNR. "物料
        LS_ITEM-STGE_LOC = IS_ITEM-LGORT.  "库存地点
        LS_ITEM-BATCH    = IS_ITEM-CHARG. "批次
        LS_ITEM-QUANTITY = IS_ITEM-MENGE.
        LS_ITEM-BASE_UOM = IS_ITEM-MEINS.
        LS_ITEM-ENTRY_QNT = IS_ITEM-ERFMG.
        LS_ITEM-ENTRY_UOM = IS_ITEM-ERFME.
        LS_ITEM-MOVE_TYPE = IM_BWART.
        LS_ITEM-MVT_IND = IS_ITEM-KZBEW. "移动标识
        LS_ITEM-MOVE_REAS = IS_ITEM-GRUND. "移动原因
         LS_ITEM-ITEM_TEXT   = IS_ITEM-SGTXT.
*        LS_ITEM-RESERV_NO = IS_ITEM-RSNUM.
*        LS_ITEM-RES_ITEM  = IS_ITEM-RSPOS.
        LS_ITEM-ORDERID = COND #( WHEN IS_ITEM-AUFNR IS NOT INITIAL THEN IS_ITEM-AUFNR ).
        LS_ITEM-ORDER_ITNO =  COND #( WHEN IS_ITEM-AUFNR IS NOT INITIAL THEN '0001' ).
        LS_ITEM-XSTOB = COND #( WHEN IS_ITEM-XSTOB IS NOT INITIAL THEN IS_ITEM-XSTOB ELSE 'X' ).

261-262-531:

LS_ITEM-AUFNR = |{ LS_ITEM-AUFNR ALPHA = IN }|.
LS_GOODSMVT_ITEM-MATERIAL   = LS_ITEM-MATNR. "物料号
LS_GOODSMVT_ITEM-MATERIAL_EXTERNAL = LS_ITEM-MATNR. "物料
LS_GOODSMVT_ITEM-PLANT      = LS_ITEM-WERKS. "工厂
LS_GOODSMVT_ITEM-STGE_LOC   = LS_ITEM-LGORT. "库存地点
LS_GOODSMVT_ITEM-BATCH      = LS_ITEM-CHARG. "批次号
LS_GOODSMVT_ITEM-ENTRY_QNT  = LS_ITEM-ERFMG. "数量
LS_GOODSMVT_ITEM-ENTRY_UOM  = LS_ITEM-ERFME. "单位
LS_GOODSMVT_ITEM-MOVE_TYPE  = LS_ZTMM_BWART-BWART."移动类型
IF LS_ZTMM_BWART-BWART = '531'.
  LS_GOODSMVT_ITEM-STCK_TYPE = '2'.
ENDIF.
LS_GOODSMVT_ITEM-ORDERID    = |{ LS_ITEM-AUFNR ALPHA = IN }|. "生产订单号
IF  LS_ITEM-ZYL   =  'X' AND LS_ZTMM_BWART-BWART = '262'.
  LS_GOODSMVT_ITEM-STGE_LOC   =  'Q000'.
  LS_GOODSMVT_ITEM-STCK_TYPE = '2'.
  CLEAR:LV_LINEM.
  LV_LINEM = LINES( LS_BODY-ITEM ).
  LS_GOODSMVT_ITEM-ENTRY_QNT  = LS_ITEM-ERFMG." / LV_LINEM . "数量
ENDIF.
IF  LS_ITEM-COPRODUCT  =  'Y'.
  LS_GOODSMVT_ITEM-STGE_LOC   =  'Q000'.
  LS_GOODSMVT_ITEM-MOVE_TYPE  =   '531'.
  LS_GOODSMVT_ITEM-STCK_TYPE = '2'.
  LS_GOODSMVT_ITEM-ORDERID    = |{ LS_ITEM-AUFNR ALPHA = IN }|. "生产订单号
ELSEIF  LS_ITEM-COPRODUCT  =  'S'.
  LS_GOODSMVT_ITEM-STGE_LOC   =  'P000'.
  LS_GOODSMVT_ITEM-MOVE_TYPE  =   '531'.
  LS_GOODSMVT_ITEM-STCK_TYPE = ' '.
  LS_GOODSMVT_ITEM-ORDERID    = |{ LS_ITEM-AUFNR ALPHA = IN }|. "生产订单号
ENDIF.
IF LS_ZTMM_BWART-BWART MOD 2 = 0 AND LS_ZTMM_BWART-BWART <> '262'."冲销移动类型
  LS_GOODSMVT_ITEM-XSTOB = 'X'.   "撤销标记
ENDIF.
**&-- Add By Ts-Liuhy For Date:20240511
LS_GOODSMVT_ITEM-ORDER_ITNO =  COND #( WHEN LS_ITEM-AUFNR IS NOT INITIAL THEN '0001' ).
LS_GOODSMVT_ITEM-RESERV_NO = LS_ITEM-RSNUM. "预留号
LS_GOODSMVT_ITEM-RES_ITEM  = LS_ITEM-RSPOS. "预留单行项目
LS_GOODSMVT_ITEM-ITEM_TEXT = LS_ITEM-SGTXT. "行项目文本

调用BAPI:

*调拨 收货 发货 入库 退货
  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      GOODSMVT_HEADER       = LS_HEAD
      GOODSMVT_CODE         = IM_CODE
      TESTRUN               = IM_TESTRUN
*     GOODSMVT_REF_EWM      =
    IMPORTING
      GOODSMVT_HEADRET      = LS_HEAD_RET
      MATERIALDOCUMENT      = LV_MAT_DOC
      MATDOCUMENTYEAR       = LV_DOC_YEAR
    TABLES
      GOODSMVT_ITEM         = LT_ITEM "行项目
      GOODSMVT_SERIALNUMBER = LT_SERIALNUMBER "行项目对应的序列号
      RETURN                = LT_RETURN
*     GOODSMVT_SERV_PART_DATA       =
      EXTENSIONIN           = LT_EXTENSIONIN.
  IF SY-SUBRC = 0 AND LV_MAT_DOC <> ''.
    EM_RETURN-TYPE = 'S'.
    EM_RETURN-MESSAGE_V1 = LV_MAT_DOC.
    EM_RETURN-MESSAGE_V2 = LV_DOC_YEAR.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
    EM_RETURN-MESSAGE = 'MIGO过账成功!'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    EM_RETURN-TYPE = 'E'.
    LOOP AT LT_RETURN INTO LS_RETURN.
      CONCATENATE LS_RETURN-MESSAGE EM_RETURN-MESSAGE INTO EM_RETURN-MESSAGE.
      CONDENSE EM_RETURN-MESSAGE NO-GAPS.
    ENDLOOP.

  ENDIF.
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容