库存管理是MM模块应用中的重点,SAP中的收货、销售、盘点、调拨等操作都要直接影响到当前的库存。SAP提供了标准功能MB52用于对库存数量的查询,不过MB52的查询和数据展示功能有限,很多企业会开发额外的库存 报表 来实现对商品库存的查询。

商品库存报表概念
可用库存:也称为非限制使用的库存,表示当前仓库所存放的能进行分配的商品数量,不包括被某些单据预定的库存。
当前库存:也称为账面库存货实际库存,指SAP系统中的库存数据,账面库存理论上和实际库存一致,但是可能存在已经生成发货单但是还没有进行发货或者已经收货但还没有将收货单据进行过账等操作,造成当前库存和实际库存数据上存在差异。
在途库存:又称中转库存,指尚未到达目的地,正处于运输状态或等待运输状态而储备在运输工具中的库存。SAP中一般指已经生成发货订单但并未发生收货动作所占用的商品数量。
寄售库存:在很多企业,特别是一些销售型的企业,为了减少当前的库存积压,通常会委托第三方代为保管和销售产品,这些被委托产品的数量成为寄售库存。寄售库存也可以是供应商已经发货到本地仓库,但是财务上还未过账的商品。
期初库存:指在一个库存会计时期开始时,可供使用或出售的存货数量。
期末库存:指在一个库存会计时期结束时,可供使用或出售的货品、物资或原裁量的账面价值。
预约库存:到某一时期内,估计将存放在仓库的产品数目,例如预计补货但还未实际入仓的商品数量。

执行效果
 
 

主程序

  1. DATA:BEGIN OF lt_OUT OCCURS 0,   "定义内表储存数据
  2. MATNR LIKE MARA-MATNR, "商品
  3. WERKS LIKE T001L-WERKS , "工厂
  4. NAME1 LIKE T001W-name1, "工厂名称
  5. LGORT LIKE MARD-LGORT, "库存地
  6. LABST LIKE MARD-LABST, "库存数量
  7. LABST_KY LIKE MARD-LABST, "可用库存
  8. MAKTX LIKE MAKT-MAKTX, "商品描述
  9. UMLMC LIKE MARC-UMLMC, "在途,中转库存
  10. TRAME LIKE MARC-TRAME, " 在途库存
  11. END OF lt_OUT.
  12. DATA:lt_OUT2 LIKE STANDARD TABLE OF lt_OUT WITH HEADER LINE.
  13. DATA:lt_OUT3 LIKE STANDARD TABLE OF lt_OUT WITH HEADER LINE.
  14. TABLES:MARC,MARD,T001L.
  15. SELECT-OPTIONS:S_WERKS FOR MARC-WERKS,
  16. S_LGORT FOR T001l-LGORT,
  17. S_matnr FOR marc-matnr.
  18. SELECTION-SCREEN BEGIN OF BLOCK 10 WITH FRAME TITLE TEXT-001.
  19. ********************查询条件选择复选框*****************************
  20. PARAMETERS: KC_DQ AS CHECKBOX DEFAULT 'X' , "查看当前库存
  21. KC_ZT AS CHECKBOX,              "查看在途库存
  22. KC_FLAG AS CHECKBOX,            "是否包含寄售库存
  23. KC_KY AS CHECKBOX.              "是否查看可用库存
  24. SELECTION-SCREEN END OF BLOCK 10.
  25. TYPE-POOLS:SLIS."定义一个类型池 /icons
  26. DATA: it_fieldcat TYPE SLIS_T_FIELDCAT_ALV,
  27. WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,  "  定义字段表   不过通常都会用一个宏来完成相应的功能
  28. *     it_event     type slis_t_event,
  29. it_LAYOUT    TYPE SLIS_LAYOUT_ALV.
  30. IT_LAYOUT-colwidth_optimize = 'X'.
  31. START-OF-SELECTION.
  32. IF KC_FLAG = 'X'.               "寄售,寄售库存是没有库位概念的
  33. SELECT MSKU~MATNR  MSKU~WERKS MSKU~KULAB AS LABST MAKT~MAKTX "定义别名 ;MSKU 用户特殊库存
  34. INTO CORRESPONDING FIELDS OF TABLE lt_OUT
  35. FROM MSKU INNER JOIN MAKT ON MSKU~MATNR = MAKT~MATNR AND  MAKT~SPRAS = SY-LANGU
  36. WHERE MSKU~MATNR IN S_MATNR
  37. AND MSKU~WERKS IN S_WERKS
  38. AND MSKU~SOBKZ = 'W'. "W类型  表示寄售
  39. IF SY-SUBRC = 0.
  40. lt_OUT-LGORT = '客户寄售'.
  41. MODIFY lt_OUT TRANSPORTING LGORT WHERE MATNR NE ''.
  42. ENDIF.
  43. ENDIF.
  44. IF KC_ZT = 'X'.  "在途,在途库存是没有库位概念的
  45. SELECT MARC~MATNR MARC~WERKS MARC~UMLMC MARC~TRAME MAKT~MAKTX
  46. APPENDING CORRESPONDING FIELDS OF TABLE LT_OUT2
  47. FROM MARC
  48. INNER JOIN MAKT ON MARC~MATNR = MAKT~MATNR AND  MAKT~SPRAS = SY-LANGU
  49. WHERE MARC~MATNR IN S_MATNR
  50. AND MARC~WERKS IN S_WERKS
  51. AND ( MARC~UMLMC NE 0 OR MARC~TRAME NE 0 ).
  52. ENDIF.
  53. IF NOT LT_OUT2[] IS INITIAL.   "在途库存为 MSKU-UMLMC,MSKU-TRAME
  54. LOOP AT LT_OUT2.
  55. LT_OUT2-LGORT = '在途'.
  56. LT_OUT2-LABST = LT_OUT2-UMLMC + LT_OUT2-TRAME.
  57. MOVE-CORRESPONDING LT_OUT2 TO LT_OUT.
  58. APPEND LT_OUT.
  59. ENDLOOP.
  60. ENDIF.
  61. IF KC_DQ = 'X'.    "当前库存
  62. SELECT MARD~MATNR MARD~WERKS MARD~LGORT MARD~LABST MAKT~MAKTX
  63. APPENDING CORRESPONDING FIELDS OF TABLE LT_OUT
  64. FROM MARD
  65. INNER JOIN MAKT ON MAKT~MATNR = MARD~MATNR AND  MAKT~SPRAS = SY-LANGU
  66. WHERE MARD~MATNR IN S_MATNR
  67. AND MARD~WERKS IN S_WERKS
  68. AND MARD~LGORT IN S_LGORT
  69. AND MARD~LABST NE 0.
  70. ENDIF.
  71. *删除库存为零的商品
  72. DELETE LT_OUT WHERE LABST = 0.
  73. FIELD-SYMBOLS: <LT_OUT> LIKE LT_OUT."内部字段定义
  74. DATA: WMDVSX LIKE TABLE OF BAPIWMDVS,
  75. WMDVEX LIKE TABLE OF BAPIWMDVE WITH HEADER LINE.
  76. LOOP AT LT_OUT ASSIGNING <LT_OUT>.
  77. IF KC_KY = 'X'.
  78. REFRESH: WMDVSX,WMDVEX.    "通过BAPI查询可用库存
  79. CALL FUNCTION 'BAPI_MATERIAL_AVAILABILITY'  " 函数调用参数配置
  80. EXPORTING
  81. PLANT  = <LT_OUT>-WERKS
  82. MATERIAL = <LT_OUT>-MATNR
  83. STGE_LOC = <LT_OUT>-LGORT
  84. UNIT     = 'ST'
  85. TABLES
  86. WMDVSX   = WMDVSX
  87. WMDVEX   = WMDVEX.
  88. IF SY-SUBRC = 0.
  89. READ TABLE WMDVEX INDEX 1.
  90. <LT_OUT>-LABST_KY = WMDVEX-COM_QTY.
  91. ELSE.
  92. <LT_OUT>-LABST_KY = 0.
  93. ENDIF.
  94. ENDIF.
  95. ENDLOOP.
  96. *--> Poor performance.
  97. *                LOOP AT LT_OUT WHERE NAME1 IS INITIAL.   "在内表中维护地点名称
  98. *                  SELECT SINGLE NAME1 INTO LT_OUT-NAME1 FROM T001W
  99. *                    WHERE WERKS = LT_OUT-WERKS.
  100. *                    MODIFY LT_OUT TRANSPORTING NAME1 WHERE WERKS = LT_OUT-WERKS.
  101. *                ENDLOOP.
  102. *-> select for all entries : internal table vs db
  103. IF LT_OUT[] IS NOT INITIAL.
  104. SELECT T001W~WERKS T001W~NAME1     "这里好像只能接from表里的字段  不能接内表里的字段
  105. INTO CORRESPONDING FIELDS OF TABLE LT_OUT3
  106. FROM T001W
  107. FOR ALL ENTRIES IN LT_OUT
  108. WHERE T001W~WERKS = LT_OUT-WERKS .
  109. ENDIF.
  110. SORT LT_OUT3 BY WERKS.
  111. LOOP AT LT_OUT.
  112. READ TABLE LT_OUT3 WITH  KEY WERKS = LT_OUT-WERKS BINARY SEARCH.
  113. IF SY-SUBRC = 0.
  114. MODIFY LT_OUT FROM LT_OUT3 TRANSPORTING NAME1 WHERE WERKS = LT_OUT3-WERKS.
  115. ENDIF.
  116. ENDLOOP.
  117. END-OF-SELECTION.
  118. *初始化 ALV对象,输出内表数据
  119. DEFINE INITIAL_FIELD.
  120. WA_FIELDCAT-SELTEXT_L = &1.
  121. WA_FIELDCAT-SELTEXT_M = &1.
  122. WA_FIELDCAT-SELTEXT_S = &1.
  123. WA_FIELDCAT-FIELDNAME = &2.
  124. APPEND WA_FIELDCAT TO IT_FIELDCAT.
  125. END-OF-DEFINITION.
  126. *这是一个定义宏的语句,在DEFINE和END-OF-DEFINITION之间有完整的ABAP语句,用&N作为占位符,在调用的时候把真正的字符传入并取代。
  127. *功能与子程序类似,主要应用于同一程序中某些重复的运算,以简化代码
  128. *与子程序不同的是,宏通过&N接收传入参数,不需要定义接收参数的类型及格式。
  129. *宏只能被本程序中定义于宏后面的语句所调用,宏一般定义于程序最开始,而子程序则可以放在程序中的任意位置。
  130. initial_field  '商品' 'MATNR'.
  131. initial_field  '商品描述' 'MAKTX'.
  132. initial_field  '地点' 'WERKS'.
  133. initial_field  '地点名称' 'NAME1'.
  134. initial_field  '库存' 'LGORT'.
  135. initial_field  '库存数量' 'LABST'.
  136. initial_field   '可用库存' 'LABST_KY'.
  137. *输出报表结果 LVC
  138. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  139. EXPORTING
  140. I_CALLBACK_PROGRAM = SY-REPID
  141. IS_LAYOUT          = IT_LAYOUT
  142. IT_FIELDCAT        = IT_FIELDCAT
  143. I_DEFAULT         = 'X'
  144. TABLES
  145. T_OUTTAB          = LT_OUT
  146. EXCEPTIONS
  147. PORGRAM_ERROR     = 1
  148. OTHERS            = 2.

SAP MM模块库存结存报表相关推荐

  1. SAP MM模块-库存盘点BAPI的使用及注意点

    很久之前的博客里写的,现在搬过来,可能已经被拷贝很多次了. 关于盘点的一点介绍: 盘赢:帐面库存小于实际库存.盘亏:帐面库存大于实际库存 盘点在系统中的步骤: 1.创建盘点凭证MI01    告知系统 ...

  2. SAP MM 模块调研问卷样例

    SAP MM模块调研问卷样例 此问卷的目的是了解客户管理的现状以及管理水平,发现其中的问题及需改进之处,了解企业对现时管理咨询的需求,通过问卷的评估,对目前管理各方面作出描述,对客户需求作出分析,从而 ...

  3. SAP MM 特殊库存之T库存

    SAP MM 特殊库存之T库存初探 笔者所在的A项目里,销售业务广泛启用了POD功能.VL02N对交货单做了发货过账后物权并没有转移,而是将自有E库存转为一个叫做在途库存的特殊库存里.等到货物到了客户 ...

  4. SAP MM 进销存报表优化小记

    SAP MM 进销存报表优化小记 笔者刚刚加入SY项目,就接到了SY集团上海总部SAP运维部门负责人的工作分配,说是有一只进销存报表,需要做一个优化,可能是需要重新设计重新开发. 笔者研究了他们现行进 ...

  5. SAP MM模块的预留详解

    在SAP MM模块中,预留是一个非常重要的概念,是指向仓库提出的一个请求,要求仓库为今后某个日期的发货和为某个目的将物料保持在就绪状态.可以由多个部门为多个帐户分配对象(例如成本中心.订货.资产等等) ...

  6. po 价格条件表_海纳易拓图文讲解SAP MM模块采购价格条件

    MM物料管理是SAP R/3系统的一个模块,支持日常发生的业务处理功能和过程.MM系统(物料管理)的目的是满足下列各种处理,即物料需求计划.物料采购.库存管理.发票确认和物料估价.主要包括:物料需求计 ...

  7. SAP MM模块常用表总结

    SAP MM模块中的常用表  Table  Description  Table  Description  物料主数据 MARA 常规物料数据 PR EBAN 采购申请 MARC 物料的工厂数据  ...

  8. SAP MM 进销存报表与标准报表MB5B

    SAP MM 进销存报表与标准报表MB5B 提到进销存报表,SAP提供了一个标准报表MB5B.这个报表能显示指定的日期范围内,期初库存(数量与金额),期末库存(数量与金额),总入库数(数量与金额),总 ...

  9. SAP MM 物料库存转固定资产业务操作以及相关财务凭证

    SAP MM 物料库存转固定资产业务操作以及相关财务凭证 使用事务代码MIGO,移动类型241,可以将某个物料的库存转为固定资产. 1, 在MIGO事务代码的界面,选择A07 Goods Issue, ...

  10. SAP MM 物料库存转固定资产,报错:You cannot post to asset in company code 1900 fiscal year 2021

    SAP MM 物料库存转固定资产,报错:You cannot post to asset in company code 1900 fiscal year 2021 使用事务代码MIGO,移动类型24 ...

最新文章

  1. oracle查询用户连接记录,记录ORACLE用户登录信息
  2. 如何将一个字典转换为玲阶矩阵_基础渲染系列(一)图形学的基石——矩阵
  3. gbdt xgboost 贼难理解!
  4. MongoDB之python简单交互(三)
  5. 吴裕雄 python 机器学习——数据预处理标准化StandardScaler模型
  6. linux在屏幕上显示问候信息,linux系统版本查看
  7. dem聚类只能成为一类
  8. 邓总的vim配置,需要的自己拿走~
  9. Win7旗舰版电脑开机慢的解决方法
  10. hive insert into values 没反应_再遇死锁insert语句导致的死锁
  11. 在angular2项目里使用ng-zorro的icon
  12. Win7盗版提示,屏幕右下角出现 Windows内部版本7601此Windows副本不是正版怎么办...
  13. Striped64 深入源码解析
  14. 安卓App太能乱来了!被曝一天扫你后台1.3万次:小米系统更新,一不小心扯出惊人真相...
  15. 下载的中文文件名乱码,如何转码
  16. LPDDR5 JEDEC
  17. Unity使用protobuf-net实现的网络框架
  18. 《花田小院》丨国风版《梦幻花园》
  19. T-BOX 车载网联终端设计
  20. MySQL 5.7 安装教程(全步骤图解教程)

热门文章

  1. 学习笔记1--汽车发展史及发展趋势
  2. K8S-Kubeadm的安装及原理
  3. DRAM存储系统结构
  4. python 使用 python-socketio 400 错误
  5. 通过IP获取地理位置的开放接口汇总
  6. matlab中abs函数,matlab 中的abs函数什么意思 编程知识
  7. macOS Monterey 怎么升级?macOS 12升级教程
  8. 神调侃!程序员专属成长书单,我比女朋友更了解你!
  9. 学生用计算机中括号怎么打,大括号怎么打,教您word大括号怎么输入
  10. windows 上面如何解压rar 文件