定义:
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
暂无评论内容