人生短短几个秋,啊~不醉不罢休。
青春才5年,新冠疫情就近4年了。几十年后再回头来看今年,也许会嘲笑吧~
函数BAPI_GOODSMVT_CREATE是前台事务代码根据采购订单或者生产订单创建物料凭证。(货物移动)操作的时候用你的。
对应的在ECC里的类型分别有:MB01采购订单收货、MB31生产订单收货、MB1A货物发出、MB1B转移过帐、MB1C其他货物收据、MB11货物流动逆转、
MB04分包订单的后续调整。
导入参数:
参数名称 | 关联类型 | 缺省值 | 可选的 | 值传递 | 说明 | |
GOODSMVT_HEADER | BAPI2017_GM_HEAD_01 | 必选 | 是 | 抬头数据 | ||
GOODSMVT_CODE | BAPI2017_GM_CODE | 必选 | 是 | 为货物移动分配事务码 | ||
TESTRUN | BAPI2017_GM_GEN-TESTRUN | SPACE | 可选 | 是 | ||
GOODSMVT_PRINT_CTRL | BAPI2017_GM_PRINT | 可选 | 是 |
GOODSMVT_HEADER常用输入参数字段:过账日期,凭证日期
组件 | 类型 | 简短描述 |
PSTNG_DATE | BUDAT | 过账日期 |
DOC_DATE | BLDAT | 凭证日期 |
GOODSMVT_CODE-GM_CODE的值
值 | 事务码 | 简短描述 |
01 | MB01 | 采购订单收货 |
02 | MB31 | 生产订单收货 |
03 | MB1A | 货物发出 |
04 | MB1B | 转移过帐 |
05 | MB1C | 其他货物收据 |
06 | MB11 | 货物流动逆转 |
07 | MB04 | 分包订单的后续调整 |
导出返回的参数为:
参数名称 | 关联类型 | 值传递 | 说明 |
GOODSMVT_HEADRET | BAPI2017_GM_HEAD_RET | 是 | |
MATERIALDOCUMENT | BAPI2017_GM_HEAD_RET-MAT_DOC | 是 | 货物移动凭证号 |
MATDOCUMENTYEAR | BAPI2017_GM_HEAD_RET-DOC_YEAR |
特别注意事项:
GOODSMVT_ITEM字段MVT_IND说明
值 | 简短说明 | 对应GM_CODE |
B | 表示采购订单收货 | 对应货物移动分配事务码GM_CODE是01 |
F | 表示生产订单收货 | 对应货物移动分配事务码GM_CODE是02 |
空 | 表示除去01,02 | 剩余其他货物移动分配事务代码的情况 |
当GM_CODE = 01 时,分四种情况:
-
已知采购订单
字段名 类型 是否必填 简短描述 MOVE_TYPE BWART 必填 移动类型(库存管理) ENTRY_QNT ERFMG 必填 以录入项单位表示的数量 ENTRY_UOM ERFME 必填 条目单位 PO_NUMBER BSTNR 必填 采购订单号 PO_ITEM EBELP 必填 采购凭证的项目编号 MVT_IND KZBEW 必填 移动标识 STGE_LOC LGORT_D 可能需要 库存地点 BATCH CHARG_D 可能需要 批号 MOVE_REAS MB_GRBEW 可能需要 移动原因 STCK_TYPE MB_INSMK 可选 库存类型 ITEM_TEXT SGTXT 可选 项目文本 UNLOAD_PT ABLAD 可选 卸货点 MOVE_MAT UMMAT18 不可填 接收/发出物料 MOVE_PLANT UMWRK 不可填 收货工厂/发货工厂 MOVE_STLOC UMLGO 不可填 收货/发货库存地点 -
采购订单未知,已知发货通知
字段名 类型 是否必填 简短描述 MOVE_TYPE BWART 必填 移动类型(库存管理) DELIV_NUMB_TO_SEARCH VBELN_VL 必填 交货 DELIV_ITEM_TO_SEARCH POSNR_VL 必填 交货项目 -
采购订单未知,将自动创建采购订单
字段名 类型 是否必填 简短描述 MATERIAL MATNR18 必填 物料编号(18个字符) PLANT WERKS_D 必填 工厂 STGE_LOC LGORT_D 必填 库存地点 MOVE_TYPE BWART 必填 移动类型(库存管理) VENDOR ELIFN 必填 供应商帐户号 ENTRY_QNT ERFMG 必填 以录入项单位表示的数量 ENTRY_UOM ERFME 必填 条目单位 MVT_IND KZBEW 必填 移动标识 BATCH CHARG_D 可能需要 批号 MOVE_REAS MB_GRBEW 可能需要 移动原因 SPEC_STOCK SOBKZ 可选 特殊库存标识 ITEM_TEXT SGTXT 可选 项目文本 GR_RCPT WEMPF 可选 收货方 UNLOAD_PT ABLAD 可选 卸货点 MOVE_MAT UMMAT18 不可填 接收/发出物料 MOVE_PLANT UMWRK 不可填 收货工厂/发货工厂 MOVE_STLOC UMLGO 不可填 收货/发货库存地点 MOVE_BATCH UMCHA 不可填 收货/发货批量 -
基于收货的发票验证中的附加字段
字段名 类型 是否必填 简短描述 REF_DOC_YR LFBJA 必填 参考凭证会计年度 REF_DOC LFBNR 必填 参考凭证的凭证号 REF_DOC_IT LFPOS 必填 参考凭证项目 当GM_CODE = 02 时
字段名 类型 是否必填 简短描述 MOVE_TYPE BWART 必填 移动类型(库存管理) ENTRY_QNT ERFMG 必填 以录入项单位表示的数量 ENTRY_UOM ERFME 必填 条目单位 ORDERID AUFNR 必填 订单号 MVT_IND KZBEW 必填 移动标识 STGE_LOC LGORT_D 可能需要 库存地点 BATCH CHARG_D 可能需要 批号 MOVE_REAS MB_GRBEW 可能需要 移动原因 STCK_TYPE MB_INSMK 可选 库存类型 NO_MORE_GR ELIKZ 可选 “交货已完成”标识 ITEM_TEXT SGTXT 可选 项目文本 UNLOAD_PT ABLAD 可选 卸货点 MOVE_MAT UMMAT18 不可填 接收/发出物料 MOVE_PLANT UMWRK 不可填 收货工厂/发货工厂 MOVE_STLOC UMLGO 不可填 收货/发货库存地点 MOVE_BATCH UMCHA 不可填 收货/发货批量 当GM_CODE = 03 时,分两种情况
未经预约发货
字段名 类型 是否必填 简短描述 MATERIAL MATNR18 必填 物料编号(18个字符) PLANT WERKS_D 必填 工厂 STGE_LOC LGORT_D 必填 库存地点 MOVE_TYPE BWART 必填 移动类型(库存管理) ENTRY_QNT ERFMG 必填 以录入项单位表示的数量 ENTRY_UOM ERFME 必填 条目单位 MVT_IND KZBEW 必填 移动标识 BATCH CHARG_D 可能需要 批号 MOVE_REAS MB_GRBEW 可能需要 移动原因 SPEC_STOCK SOBKZ 可选 特殊库存标识 ITEM_TEXT SGTXT 可选 项目文本 UNLOAD_PT ABLAD 可选 卸货点 GR_RCPT WEMPF 可选 收货方 MOVE_MAT UMMAT18 不可填 接收/发出物料 MOVE_PLANT UMWRK 不可填 收货工厂/发货工厂 MOVE_STLOC UMLGO 不可填 收货/发货库存地点 MOVE_BATCH UMCHA 不可填 收货/发货批量 与预定有关的货物问题
字段名 类型 是否必填 简短描述 ENTRY_QNT ERFMG 必填 以录入项单位表示的数量 ENTRY_UOM ERFME 必填 条目单位 RESERV_NO RSNUM 必填 预留/相关需求的编号 RES_ITEM RSPOS 必填 预留/相关需求的项目编号 RES_TYPE RSART 必填 记录类型 MVT_IND KZBEW 必填 移动标识 STGE_LOC LGORT_D 可能需要 库存地点 BATCH CHARG_D 可能需要 批号 MOVE_REAS MB_GRBEW 可能需要 移动原因 SPEC_STOCK SOBKZ 可选 特殊库存标识 ITEM_TEXT SGTXT 可选 项目文本 UNLOAD_PT ABLAD 可选 卸货点 GR_RCPT WEMPF 可选 收货方 MATERIAL MATNR18 不可填 物料编号(18 个字符) PLANT WERKS_D 不可填 工厂 MOVE_TYPE BWART 不可填 移动类型(库存管理) 当GM_CODE = 04 时
字段名 类型 是否必填 简短描述 MATERIAL MATNR18 必填 物料编号(18个字符) PLANT WERKS_D 必填 工厂 STGE_LOC LGORT_D 必填 库存地点 MOVE_TYPE BWART 必填 移动类型(库存管理) ENTRY_QNT ERFMG 必填 以录入项单位表示的数量 ENTRY_UOM ERFME 必填 条目单位 MVT_IND KZBEW 必填 移动标识 BATCH CHARG_D 可能需要 批号 MOVE_MAT UMMAT18 可能需要 接收/发出物料 MOVE_PLANT UMWRK 可能需要 收货工厂/发货工厂 MOVE_STLOC UMLGO 可能需要 收货/发货库存地点 MOVE_BATCH UMCHA 可能需要 收货/发货批量 MOVE_REAS MB_GRBEW 可能需要 移动原因 SPEC_STOCK SOBKZ 可选 特殊库存标识 ITEM_TEXT SGTXT 可选 项目文本 总结了那么多知识点,如果您发现S4HANA系统的新语法和ECC系统或者R3系统有点差异,可以留言告诉我。对于初级SAP ABAP顾问来说,是不容易的。作者曾经也是SAP ABAP beginners ,到处去找Tutorial for Constant。需要自学很久,没人给咱免费培训。
写个测试代码DEMO举例子。下面是代码。
1.1. 示例代码1
1.1.1. 采购订单示例代码
*抬头
GS_HEAD-PSTNG_DATE = SY-DATUM. “凭证中的过帐日期
GS_HEAD-DOC_DATE = SY-DATUM. “凭证中的凭证日期
GOODSMVT_CODE-GM_CODE = ’01’. “为 BAPI 货物移动分配事务代码LOOP AT GT_PCCF INTO GS_PCCF WHERE CHECKBOX = ‘X’.CALL FUNCTION ‘CONVERSION_EXIT_MATN1_INPUT’
EXPORTING
INPUT = GS_PCCF-MATNR
IMPORTING
OUTPUT = GS_PCCF-MATNR.*行项目
GS_ITEM-MATERIAL = GS_PCCF-MATNR. “物料号
GS_ITEM-PLANT = GS_PCCF-WERKS. “工厂
GS_ITEM-BATCH = GS_PCCF-CHARG. “批号
GS_ITEM-MOVE_TYPE = GS_PCCF-BWART. “移动类型(库存管理)
GS_ITEM-PO_PR_QNT = GS_PCCF-MENGE. “采购订单价格单位的数量
GS_ITEM-QUANTITY = GS_PCCF-MENGE. “数量SELECT SINGLE MEINS
FROM MARA
INTO GS_ITEM-ORDERPR_UN “订单价格单位(采购)
WHERE MATNR = GS_PCCF-MATNR.GS_ITEM-BASE_UOM = GS_ITEM-ORDERPR_UN. “基本计量单位
IF GS_PCCF-VBELN_IM IS NOT INITIAL.
IF GS_HEAD-REF_DOC_NO IS INITIAL.
GS_HEAD-REF_DOC_NO = GS_PCCF-VBELN_IM. “参考凭证编号
ENDIF.
ENDIF.
GS_ITEM-DELIV_NUMB_TO_SEARCH = GS_PCCF-VBELN_IM. “交货
GS_ITEM-DELIV_ITEM_TO_SEARCH = GS_PCCF-VBELP_IM. “交货项目
GS_ITEM-PO_NUMBER = GS_PCCF-EBELN. “采购订单编号
GS_ITEM-PO_ITEM = GS_PCCF-EBELP. “采购凭证的项目编号
GS_ITEM-MVT_IND = ‘B’. “移动标识
GS_ITEM-STGE_LOC = GS_PCCF-LGORT. “库存地点
GS_ITEM-REF_DOC = GS_PCCF-REF_DOC. “参考凭证的凭证号
GS_ITEM-REF_DOC_IT = GS_PCCF-REF_DOC_IT. “参考凭证项目
GS_ITEM-ENTRY_QNT = GS_PCCF-ERFMG. “以输入单位计的数量
GS_ITEM-ENTRY_UOM = GS_PCCF-ERFME. “条目单位APPEND GS_ITEM TO GT_ITEM.
CLEAR GS_ITEM.ENDLOOP.
CALL FUNCTION ‘BAPI_GOODSMVT_CREATE’
EXPORTING
GOODSMVT_HEADER = GS_HEAD
GOODSMVT_CODE = GOODSMVT_CODE
IMPORTING
MATERIALDOCUMENT = MATERIALDOCUMENT
MATDOCUMENTYEAR = MATDOCUMENTYEAR
TABLES
GOODSMVT_ITEM = GT_ITEM
RETURN = GT_RETURN1.READ TABLE GT_RETURN1 INTO GS_RETURN1 WITH KEY TYPE = ‘E’.
IF SY-SUBRC = 0. “失败
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
MESSAGE GS_RETURN1-MESSAGE TYPE ‘E’.
STOP.
ELSE. “成功
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
WAIT = ‘X’.
MESSAGE ‘创建成功!’ TYPE ‘S’.
ENDIF.1.1.2. 注意事项
无
1.2. 示例代码2
1.2.1. 生产订单示例代码
“抬头
GS_HEAD-PSTNG_DATE = SY-DATUM. “凭证中的过帐日期
GS_HEAD-DOC_DATE = SY-DATUM. “凭证中的凭证日期
GOODSMVT_CODE-GM_CODE = ’02’. “为 BAPI 货物移动分配事务代码
LOOP AT GT_ZMM06 INTO GS_ZMM06 WHERE BOX = ‘X’.CALL FUNCTION ‘CONVERSION_EXIT_MATN1_INPUT’
EXPORTING
INPUT = GS_ZMM06-MATNR
IMPORTING
OUTPUT = GS_ZMM06-MATNR.“行项目
GS_ITEM-MATERIAL = GS_ZMM06-MATNR. “物料号
GS_ITEM-PLANT = GS_ZMM06-WERKS. “工厂
GS_ITEM-BATCH = GS_ZMM06-CHARG. “批号
GS_ITEM-ORDERID = GS_ZMM06-AUFNR. “生产订单
GS_ITEM-MOVE_TYPE = GS_ZMM06-BWART. “移动类型(库存管理)
GS_ITEM-ENTRY_QNT = GS_ZMM06-ERFMG. “以输入单位计的数量
GS_ITEM-ENTRY_UOM = GS_ZMM06-ERFME. “条目单位
GS_ITEM-QUANTITY = GS_ZMM06-SSZS. “库存数量
SELECT SINGLE MEINS
FROM AFPO
INTO GS_ITEM-BASE_UOM “基本计量单位
WHERE AUFNR = GS_ZMM06-AUFNR
AND MATNR = GS_ZMM06-MATNR.
GS_ITEM-MVT_IND = ‘F’. “移动标识
GS_ITEM-STGE_LOC = GS_ZMM06-LGORT. “库存地点APPEND GS_ITEM TO GT_ITEM.
CLEAR GS_ITEM.
ENDLOOP.CALL FUNCTION ‘BAPI_GOODSMVT_CREATE’
EXPORTING
GOODSMVT_HEADER = GS_HEAD
GOODSMVT_CODE = GOODSMVT_CODE
IMPORTING
MATERIALDOCUMENT = MATERIALDOCUMENT
MATDOCUMENTYEAR = MATDOCUMENTYEAR
TABLES
GOODSMVT_ITEM = GT_ITEM
RETURN = GT_RETURN1.READ TABLE GT_RETURN1 INTO GS_RETURN1 WITH KEY TYPE = ‘E’.
IF SY-SUBRC = 0.“失败
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
MESSAGE GS_RETURN1-MESSAGE TYPE ‘E’.
STOP.
ELSE.“成功
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
WAIT = ‘X’.
MESSAGE ‘创建成功!’ TYPE ‘S’.
ENDIF.本文链接 : http://www.hot583.com/2022/04/02/bapi_goodsmvt_create/
本文为作者原创,如果这篇文章对您有用,欢迎转载,
转载请务必注明来源《今日热点在看》http://www.hot583.com/
我的微信公众号【 hot583 】 或者在这个链接联系我
微信原文《全文完》