结合工作实践,用户在作特殊库存移库中需要进行两次操作,即先转到非限制再进行操作。现通过分析及查询相关资料,作了两部合一部的操作。当然前面还有输入及导入EXCEL的动作,由于时间关系统不作详细说明。
1.供应商O库存转供应商O库存:
GMHEAD-PSTNG_DATE = P_BUDAT. “过帐日期 GMHEAD-DOC_DATE = P_PLDAT. "日期 GMHEAD-PR_UNAME = SY-UNAME. "操作工号 GMHEAD-HEADER_TXT = \'供应商库存转供应商库存\'. GMCODE-GM_CODE = \'04\'. "事务代码类型 LOOP at TAB_VENDOR WHERE SEL = \'X\' . ITAB-MATERIAL = TAB_VENDOR-MATNR. "物料 ITAB-PLANT = TAB_VENDOR-WERKS. "工厂 ITAB-STGE_LOC = TAB_VENDOR-LGORT. "库存地点 ITAB-BATCH = TAB_VENDOR-CHARG. "批号 ITAB-MOVE_TYPE = \'542\'. "移动类型 ITAB-VENDOR = TAB_VENDOR-LIFNR. "供应商 ITAB-ENTRY_QNT = TAB_VENDOR-MENGE. "转移数量 ITAB-ENTRY_UOM = TAB_VENDOR-MEINS. “转移单位 ITAB-ENTRY_UOM_ISO = TAB_VENDOR-MEINS. “转移单位 ITAB-PO_NUMBER = TAB_VENDOR-EBELN. “参考采购订单 APPEND ITAB. CLEAR:ITAB. ITAB-MATERIAL = TAB_VENDOR-MATNR. “物料编码 ITAB-PLANT = TAB_VENDOR-WERKS. "工厂 ITAB-STGE_LOC = TAB_VENDOR-LGORT. "库存地点 ITAB-BATCH = TAB_VENDOR-CHARG. ”批号 ITAB-MOVE_TYPE = \'541\'. "移动类型 ITAB-VENDOR = TAB_VENDOR-LIFNR2. ”新供应商 ITAB-ENTRY_QNT = TAB_VENDOR-MENGE. "数量 ITAB-ENTRY_UOM = TAB_VENDOR-MEINS. “转移单位 ITAB-ENTRY_UOM_ISO = TAB_VENDOR-MEINS. “转移单位 ITAB-PO_NUMBER = TAB_VENDOR-EBELN2. “新的参考采购订单号 APPEND ITAB. ENDLOOP. CALL FUNCTION \'BAPI_GOODSMVT_CREATE\' “”调用BAPI EXPORTING GOODSMVT_HEADER = GMHEAD GOODSMVT_CODE = GMCODE * TESTRUN = \' \' * GOODSMVT_REF_EWM = IMPORTING GOODSMVT_HEADRET = MTHEAD MATERIALDOCUMENT = MAT_DOC * MATDOCUMENTYEAR = TABLES GOODSMVT_ITEM = ITAB * GOODSMVT_SERIALNUMBER = RETURN = ERRMSG . LOOP AT ERRMSG. CLEAR LOC_MSG. IF ERRMSG-TYPE EQ \'E\'. MESSAGE ERRMSG-MESSAGE TYPE \'E\'. errflag = \'X\'. ELSE. ENDIF. ENDLOOP. IF errflag is INITIAL. COMMIT WORK AND WAIT. CLEAR errflag. IF sy-subrc NE 0. MESSAGE \'过帐操作出现错误,请稍后重新!\' TYPE \'E\'. EXIT. ELSE. CONCATENATE \'物料凭证:\' MAT_DOC \'创建成功~\' INTO loc_msg. MESSAGE loc_msg TYPE \'I\'. ENDIF. ENDIF.
2.项目库存转供应商库存
GMHEAD-PSTNG_DATE = P_BUDAT2. GMHEAD-DOC_DATE = P_PLDAT2. "日期 GMHEAD-PR_UNAME = SY-UNAME. "操作工号 GMHEAD-HEADER_TXT = \'项目库存转供应商库存\'. GMCODE-GM_CODE = \'04\'. "事务代码类型 LOOP at TAB_PROJ WHERE SEL = \'X\' . ITAB-MATERIAL = TAB_PROJ-MATNR. "物料 ITAB-PLANT = TAB_PROJ-WERKS. "工厂 ITAB-STGE_LOC = TAB_PROJ-LGORT. "库存地点 ITAB-BATCH = TAB_PROJ-CHARG. "批号 ITAB-MOVE_TYPE = \'411\'. "移动类型 ITAB-SPEC_STOCK = \'Q\'. "特殊库存 ITAB-ENTRY_QNT = TAB_PROJ-MENGE. “转出数量 ITAB-ENTRY_UOM = TAB_PROJ-MEINS. ”转出单位 ITAB-ENTRY_UOM_ISO = TAB_PROJ-MEINS. ”转出单位 ITAB-WBS_ELEM = TAB_PROJ-PSPID. "WBS元素 ITAB-VAL_WBS_ELEM = TAB_PROJ-PSPID. "WBS元素 APPEND ITAB. CLEAR:ITAB. ITAB-MATERIAL = TAB_PROJ-MATNR. "物料 ITAB-PLANT = TAB_PROJ-WERKS. “工厂 ITAB-STGE_LOC = TAB_PROJ-LGORT. ”库存地点 ITAB-BATCH = TAB_PROJ-CHARG. ”批次 ITAB-MOVE_TYPE = \'541\'. ”移动类型 ITAB-SPEC_STOCK = \'\'. ITAB-VENDOR = TAB_PROJ-LIFNR2. ”新供应商 ITAB-ENTRY_QNT = TAB_PROJ-MENGE. ”数量 ITAB-ENTRY_UOM = TAB_PROJ-MEINS. ”单位 ITAB-ENTRY_UOM_ISO = TAB_PROJ-MEINS. ”单位 ITAB-PO_NUMBER = TAB_PROJ-EBELN2. ”采购订单 APPEND ITAB. ENDLOOP. CALL FUNCTION \'BAPI_GOODSMVT_CREATE\' EXPORTING GOODSMVT_HEADER = GMHEAD GOODSMVT_CODE = GMCODE * TESTRUN = \' \' * GOODSMVT_REF_EWM = IMPORTING GOODSMVT_HEADRET = MTHEAD MATERIALDOCUMENT = MAT_DOC * MATDOCUMENTYEAR = TABLES GOODSMVT_ITEM = ITAB * GOODSMVT_SERIALNUMBER = RETURN = ERRMSG . LOOP AT ERRMSG. CLEAR LOC_MSG. IF ERRMSG-TYPE EQ \'E\'. MESSAGE ERRMSG-MESSAGE TYPE \'E\'. errflag = \'X\'. ELSE. ENDIF. ENDLOOP. IF errflag is INITIAL. COMMIT WORK AND WAIT. CLEAR errflag. IF sy-subrc NE 0. MESSAGE \'过帐操作出现错误,请稍后重新!\' TYPE \'E\'. EXIT. ELSE. CONCATENATE \'物料凭证1:\' MAT_DOC \'创建成功~\' INTO loc_msg. MESSAGE loc_msg TYPE \'I\'. ENDIF. ENDIF.
--------------------- 作者:kidy_zhang 来源:CSDN 原文:https://blog.csdn.net/kidy_zhang/article/details/73138877 版权声明:本文为博主原创文章,转载请附上博文链接!