本人诚心接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 批量盘点凭证创建+盘点数量+差异过账相关推荐

  1. SAP MM 没有录入盘点结果的盘点凭证不能执行MI07

    SAP MM 没有录入盘点结果的盘点凭证不能执行MI07 为盘点凭证号1000517272执行MI07, 系统报错Posting of diffs.not possible (first perfor ...

  2. SAP MM盘点流程里如何处理事务代码MI11 Recount过的盘点凭证?

    SAP MM盘点流程里如何处理事务代码MI11 Recount过的盘点凭证? 1, MI01 create a physical inventory document, 2, MI04 to inpu ...

  3. SAP MM 如果存在OPEN的盘点凭证,则不能再次创建盘点凭证

    SAP MM 如果存在OPEN的盘点凭证,则不能再次创建盘点凭证 MI01, 保存, LI20去查询盘点凭证表, 该盘点凭证尚未做clear 处理, 还是保持open状态,所以不能再为该物料批次组合在 ...

  4. SAP MM 可以不用创建盘点凭证直接录入盘点结果?

    SAP MM 可以不用创建盘点凭证直接录入盘点结果? 可以.SAP标准功能就支持这么做. 事务代码 MI09 (Enter Count w/o Reference to Document), 输入pl ...

  5. SAP HUM 因为存在Open TO 单据使得HU不能创建盘点凭证

    SAP HUM 因为存在Open TO 单据使得HU不能创建盘点凭证 事务代码HUINV01事务代码试图为某个物料的三个HU创建盘点凭证,保存后,没成功,如下图, 看具体的log, LT27去看第一个 ...

  6. SAP MM 盘点凭证上的posting block

    SAP MM 盘点凭证上的posting block 如下新建的盘点凭证号, 上面的Posting Block选项没有勾选. 保持这个盘点凭证open状态,对于物料批次组合 R000006890/20 ...

  7. SAP中批量更改凭证行项目方法

    SAP中批量更改凭证行项目方法,通过查询凭证行项目明细(FS10N,FBL1N,FBL3N,FBL5N等), 选中多行后,点工具栏上的Mass Change(左第三个)按钮,或按快捷键Ctrl+Shi ...

  8. SAP S/4HANA WM模块前台操作详解--盘点作业

    盘点作业 1.概念介绍 在仓库管理中为了保持系统账和实物一致,经常需要对仓库中物料库存进行清点确认,一般有月度盘点,季度盘点和年度盘点等待 2.库存盘点的仓储位选择 2.1. 操作路径与事务码 后勤= ...

  9. SAP ABAP 业务对象 BUS2072 ControllingDocument 统驭凭证 BAPI 清单和相关 TCODE

    SAP ABAP 业务对象 BUS2072 ControllingDocument 统驭凭证 BAPI 清单和相关 TCODE 简介: SAP ABAP 业务对象 BUS2072 Controllin ...

最新文章

  1. flutter字体不跟随系统_flutter 禁止字体大小跟随系统字体改变大小
  2. 最小生成树(Prim、Kruskal)算法,秒懂!
  3. 2021.02.01 Visual QA论文阅读
  4. jzoj4637-大鱼海棠【博弈论】
  5. java并发编程代码示例_java并发编程之同步器代码示例
  6. 系统10网络找不到别人的计算机,分享Win10在局域网中找不到其他电脑的解决步骤...
  7. tensor转换为图片_pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
  8. 零基础python数据分析自学_零基础的人,怎么自学数据分析?
  9. linux下tomcat缓存磁盘文件,Linux环境下清理Tomcat缓存
  10. 黑群晖nas安装保姆级教程
  11. 微信小程序demo(新闻类)
  12. linux搭建windows无盘系统,Ubuntu系统搭建drbl无盘服务端环境
  13. java超市运行程序源代码_Java课程设计超市库存管理系统附源代码可以直接运行...
  14. Hibernate pojo对象的三种状态
  15. vbox虚拟机和vm虚拟机 虚拟机网络不通的解决方法
  16. 随手笔记之逆序输出数字
  17. 互联网公司和外包公司有什么区别?为什么有些程序员不想进外包公司?
  18. 三、为什么要使用RabbitMQ?他解决了什么问题?
  19. Android使用VideoView播放网络视频
  20. 论文阅读 2021——SUNet: Symmetric Undistortion Network for Rolling Shutter Correction

热门文章

  1. freescale imx6最新版本bsp在天嵌imx6q开发板的移值
  2. 一本通5.4练习1:涂抹果酱
  3. 2022-2028年中国电子商务行业市场深度分析及投资前景展望报告
  4. c语言禁用键盘,C/C++ 禁用鼠标键盘
  5. httpd服务及配置文件详解
  6. Vue项目中用百度地图实现城市定位
  7. 第六十九章 Caché 函数大全 $WCHAR 函数
  8. java调用windows的wmi
  9. 按ASC码对字符串排序
  10. S7-200SMART PLC的IP更改方法