SAP MI01、MI04、MI07、MI10 批量盘点凭证创建+盘点数量+差异过账
本人诚心接ABAP远程开发任务,价格公道,有需要的联系我,欢迎个人,甲方爸爸,乙方私信联系。
这次的用户是一家启用了序列号管理的客户。
客户比较懒。所以在盘点的时候,只用MI10去一步做完盘点。
查阅资料发现,MI10没有标准的bapi 去调用,
但是MI10其实就是MI01(创建盘点凭证)+MI04(盘点数量)+MI07(差异过账)的一个集合事务代码。
那么我们的批导程序就可以分步骤调用三个bapi
分别是:MI01-->BAPI_MATPHYSINV_CREATE
MI04-->BAPI_MATPHYSINV_COUNT
MI07-->BAPI_MATPHYSINV_POSTDIFF
其中遇到一个问题就是客户是车企,启用的序列号管理,所以 MI04的时候输入完数量之后,要根据数量,输入相应数量的不同的序列号
下面简单列一下代码。
"MI01 对应参数DATA:LS_HEAD TYPE BAPI_PHYSINV_CREATE_HEAD.DATA:LT_ITEMS TYPE STANDARD TABLE OF BAPI_PHYSINV_CREATE_ITEMS.DATA:LS_ITEMS TYPE BAPI_PHYSINV_CREATE_ITEMS.DATA:LT_RETURN TYPE STANDARD TABLE OF BAPIRET2 .DATA:LS_RETURN TYPE BAPIRET2 ."MI04 对应参数DATA:LT_COUNT TYPE STANDARD TABLE OF BAPI_PHYSINV_COUNT_ITEMS.DATA:LS_COUNT TYPE BAPI_PHYSINV_COUNT_ITEMS.DATA:LT_SERNR TYPE STANDARD TABLE OF BAPI_PHYSINV_SERIALNUMBERS.DATA:LS_SERNR TYPE BAPI_PHYSINV_SERIALNUMBERS.DATA:LV_LINES TYPE DZEILE."MI07 对应参数DATA:LT_POST TYPE STANDARD TABLE OF BAPI_PHYSINV_POST_ITEMS.DATA:LS_POST TYPE BAPI_PHYSINV_POST_ITEMS."创建盘点凭证BAPI 参数封装
*-------------------------------------------------------------CLEAR: LS_HEAD,LS_ITEMS,LT_ITEMS,LT_RETURN,LS_RETURN,LV_LINES,LS_COUNT,LT_COUNT,LS_SERNR,LT_SERNR,LS_POST, LT_POST.LS_HEAD-PLANT = P_WERKS. "工厂LS_HEAD-STGE_LOC = P_LGORT. "库存地点LS_HEAD-DOC_DATE = P_BUDAT. "凭证中的凭证日期LS_HEAD-PLAN_DATE = P_COUNT. "库存盘点的计划日期LT_TEMP = GT_DATA.
"首先根据物料号去重去创建盘点凭证SORT LT_TEMP BY MATNR.DELETE ADJACENT DUPLICATES FROM LT_TEMP COMPARING MATNR.LOOP AT LT_TEMP INTO LS_TEMP."创建盘点凭证BAPI 参数封装
*-------------------------------------------------------------LS_ITEMS-MATERIAL = LS_TEMP-MATNR. "物料号LS_ITEMS-STOCK_TYPE = LS_TEMP-BSTAR. "库存类型APPEND LS_ITEMS TO LT_ITEMS.CLEAR LS_ITEMS.
"MI04的时候传入序列号 盘点数量
"凭证数量盘点BAPI 参数封装
*-------------------------------------------------------------LV_LINES = LV_LINES + 1.LS_COUNT-ITEM = LV_LINES. "行号LS_COUNT-MATERIAL = LS_TEMP-MATNR. "物料编码LS_COUNT-ENTRY_UOM = LS_TEMP-MEINS. "计量单位LS_COUNT-ZERO_COUNT = LS_TEMP-XNULL."差异过账BAPI 参数封装
*-------------------------------------------------------------LS_POST-ITEM = LV_LINES. "行号LS_POST-MATERIAL = LS_TEMP-MATNR. "物料编码APPEND LS_POST TO LT_POST.CLEAR: LS_POST.LOOP AT GT_DATA INTO GS_DATA WHERE MATNR = LS_TEMP-MATNR."这里是累计同一个物料号有多少数量LS_COUNT-ENTRY_QNT = GS_DATA-MENGE + LS_COUNT-ENTRY_QNT. "录入系统实盘数"这里是将序列号一一对应传入LS_SERNR-ITEM = LV_LINES.LS_SERNR-SERIALNO = GS_DATA-SERNR.APPEND LS_SERNR TO LT_SERNR.CLEAR LS_SERNR.ENDLOOP.APPEND LS_COUNT TO LT_COUNT.CLEAR: LS_COUNT.ENDLOOP.CALL FUNCTION 'BAPI_MATPHYSINV_CREATE'EXPORTINGHEAD = LS_HEADTABLESITEMS = LT_ITEMSRETURN = LT_RETURN.READ TABLE LT_RETURN INTO LS_RETURN WITH KEY TYPE = 'E'.IF SY-SUBRC = 0 .CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE = 'E'.CONCATENATE LV_MESSAGE LS_RETURN-MESSAGE ',' INTO LV_MESSAGE.ENDLOOP.LOOP AT GT_DATA INTO GS_DATA .GS_DATA-ICONS = ICON_RED_LIGHT.GS_DATA-MESSAGE = LV_MESSAGE.MODIFY GT_DATA FROM GS_DATA.ENDLOOP.ELSE."提交并 盘点凭证数量CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGWAIT = 'X'.READ TABLE LT_RETURN INTO LS_RETURN INDEX 1.IF SY-SUBRC = 0.LV_IBLNR = LS_RETURN-MESSAGE_V1.CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'EXPORTINGINPUT = LV_IBLNRIMPORTINGOUTPUT = LV_IBLNR.ENDIF.LV_MESSAGE = 'Counting voucher created successfully!'.
*----------------------------------------------------------盘点凭证数量CLEAR:LT_RETURN.LV_GJAHR = P_COUNT+0(4).CALL FUNCTION 'BAPI_MATPHYSINV_COUNT'EXPORTINGPHYSINVENTORY = LV_IBLNR "盘点凭证号FISCALYEAR = LV_GJAHRCOUNT_DATE = P_COUNTTABLESITEMS = LT_COUNTRETURN = LT_RETURNSERIALNUMBERS = LT_SERNR .READ TABLE LT_RETURN INTO LS_RETURN WITH KEY TYPE = 'E'.IF SY-SUBRC = 0 .CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE = 'E'.CONCATENATE LV_MESSAGE LS_RETURN-MESSAGE ',' INTO LV_MESSAGE.ENDLOOP.LOOP AT GT_DATA INTO GS_DATA .GS_DATA-IBLNR = LV_IBLNR.GS_DATA-ICONS = ICON_RED_LIGHT.GS_DATA-MESSAGE = LV_MESSAGE.MODIFY GT_DATA FROM GS_DATA.ENDLOOP.ELSE."提交并 盘点凭证数量CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGWAIT = 'X'.CLEAR:LT_RETURN,LS_RETURN.CONCATENATE LV_MESSAGE 'Quantity counting succeeded!' INTO LV_MESSAGE.CALL FUNCTION 'BAPI_MATPHYSINV_POSTDIFF'EXPORTINGPHYSINVENTORY = LV_IBLNRFISCALYEAR = LV_GJAHR
* PSTNG_DATE =
* THRESHOLD_VALUE =TABLESITEMS = LT_POSTRETURN = LT_RETURN .READ TABLE LT_RETURN INTO LS_RETURN WITH KEY TYPE = 'E'.IF SY-SUBRC = 0 .CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .LOOP AT LT_RETURN INTO LS_RETURN WHERE TYPE = 'E'.CONCATENATE LV_MESSAGE LS_RETURN-MESSAGE ',' INTO LV_MESSAGE.ENDLOOP.LOOP AT GT_DATA INTO GS_DATA .GS_DATA-ICONS = ICON_RED_LIGHT.GS_DATA-MESSAGE = LV_MESSAGE.MODIFY GT_DATA FROM GS_DATA.ENDLOOP.ELSE."差异过账成功CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGWAIT = 'X'.CONCATENATE LV_MESSAGE 'Variance posting succeeded!' INTO LV_MESSAGE.READ TABLE LT_RETURN INTO LS_RETURN INDEX 1.IF SY-SUBRC = 0.LV_BELNR = LS_RETURN-MESSAGE_V2.ENDIF.LOOP AT GT_DATA INTO GS_DATA .GS_DATA-IBLNR = LV_IBLNR.GS_DATA-BELNR = LV_BELNR.GS_DATA-ICONS = ICON_GREEN_LIGHT.GS_DATA-MESSAGE = LV_MESSAGE.MODIFY GT_DATA FROM GS_DATA.ENDLOOP.ENDIF.ENDIF.ENDIF.
SAP MI01、MI04、MI07、MI10 批量盘点凭证创建+盘点数量+差异过账相关推荐
- SAP MM 没有录入盘点结果的盘点凭证不能执行MI07
SAP MM 没有录入盘点结果的盘点凭证不能执行MI07 为盘点凭证号1000517272执行MI07, 系统报错Posting of diffs.not possible (first perfor ...
- SAP MM盘点流程里如何处理事务代码MI11 Recount过的盘点凭证?
SAP MM盘点流程里如何处理事务代码MI11 Recount过的盘点凭证? 1, MI01 create a physical inventory document, 2, MI04 to inpu ...
- SAP MM 如果存在OPEN的盘点凭证,则不能再次创建盘点凭证
SAP MM 如果存在OPEN的盘点凭证,则不能再次创建盘点凭证 MI01, 保存, LI20去查询盘点凭证表, 该盘点凭证尚未做clear 处理, 还是保持open状态,所以不能再为该物料批次组合在 ...
- SAP MM 可以不用创建盘点凭证直接录入盘点结果?
SAP MM 可以不用创建盘点凭证直接录入盘点结果? 可以.SAP标准功能就支持这么做. 事务代码 MI09 (Enter Count w/o Reference to Document), 输入pl ...
- SAP HUM 因为存在Open TO 单据使得HU不能创建盘点凭证
SAP HUM 因为存在Open TO 单据使得HU不能创建盘点凭证 事务代码HUINV01事务代码试图为某个物料的三个HU创建盘点凭证,保存后,没成功,如下图, 看具体的log, LT27去看第一个 ...
- SAP MM 盘点凭证上的posting block
SAP MM 盘点凭证上的posting block 如下新建的盘点凭证号, 上面的Posting Block选项没有勾选. 保持这个盘点凭证open状态,对于物料批次组合 R000006890/20 ...
- SAP中批量更改凭证行项目方法
SAP中批量更改凭证行项目方法,通过查询凭证行项目明细(FS10N,FBL1N,FBL3N,FBL5N等), 选中多行后,点工具栏上的Mass Change(左第三个)按钮,或按快捷键Ctrl+Shi ...
- SAP S/4HANA WM模块前台操作详解--盘点作业
盘点作业 1.概念介绍 在仓库管理中为了保持系统账和实物一致,经常需要对仓库中物料库存进行清点确认,一般有月度盘点,季度盘点和年度盘点等待 2.库存盘点的仓储位选择 2.1. 操作路径与事务码 后勤= ...
- SAP ABAP 业务对象 BUS2072 ControllingDocument 统驭凭证 BAPI 清单和相关 TCODE
SAP ABAP 业务对象 BUS2072 ControllingDocument 统驭凭证 BAPI 清单和相关 TCODE 简介: SAP ABAP 业务对象 BUS2072 Controllin ...
最新文章
- flutter字体不跟随系统_flutter 禁止字体大小跟随系统字体改变大小
- 最小生成树(Prim、Kruskal)算法,秒懂!
- 2021.02.01 Visual QA论文阅读
- jzoj4637-大鱼海棠【博弈论】
- java并发编程代码示例_java并发编程之同步器代码示例
- 系统10网络找不到别人的计算机,分享Win10在局域网中找不到其他电脑的解决步骤...
- tensor转换为图片_pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
- 零基础python数据分析自学_零基础的人,怎么自学数据分析?
- linux下tomcat缓存磁盘文件,Linux环境下清理Tomcat缓存
- 黑群晖nas安装保姆级教程
- 微信小程序demo(新闻类)
- linux搭建windows无盘系统,Ubuntu系统搭建drbl无盘服务端环境
- java超市运行程序源代码_Java课程设计超市库存管理系统附源代码可以直接运行...
- Hibernate pojo对象的三种状态
- vbox虚拟机和vm虚拟机 虚拟机网络不通的解决方法
- 随手笔记之逆序输出数字
- 互联网公司和外包公司有什么区别?为什么有些程序员不想进外包公司?
- 三、为什么要使用RabbitMQ?他解决了什么问题?
- Android使用VideoView播放网络视频
- 论文阅读 2021——SUNet: Symmetric Undistortion Network for Rolling Shutter Correction