资讯详情

资讯详情

SAP库存调拨配置与排查:311/313/315在途库存核对

简介《SAP 库存调拨与发货》文档面向 SAP MM 模块学习者、库存管理员及供应链实施人员围绕库存调拨、发货过账和后台配置展开帮助读者厘清一步转储、二步转储、在途库存与工厂间转储等常见业务场景。压缩包内含 1 个 docx 文件大小约 2.25MB内容以图文笔记形式组织操作要点、事务代码与配置参数说明。文档结合 MB1B 梳理 311、313/315、301、303/305、309 及 344/343 等移动类型的适用边界说明 MMBE、MB52、MB5T 的库存查看差异并提示工厂间转储对 MRP 运算的影响及转储订单方式的价值后台部分涉及库存调拨订单凭证类型、工厂装运数据、转储单类型以及 UB 与 SD 方式的配置区别。已有 1522 人学习适合需要对照业务流程、理解配置逻辑、排查转储与发货问题的读者查漏补缺。1. 从一次 313 只发出 90 个说起库存调拨这套配置要先对齐哪些条件库存调拨在 SAP 里看起来只是 MB1B 一个事务码就能处理的简单操作真到月底对账才明白不那么简单。我经手过一个客户端A 库存地往 B 库存地调 100 个料操作同事走了 313B 那边只等到 90 个剩下 10 个卡在在途里没人管盘点怎么都对不上。事后翻凭证操作本身没毛病是二步转储的收货环节没人做 315后台的工厂装运数据也没人配过。这套场景的难点向来不在命令本身而在于移动类型、后台开关和查看口径三件事得同时对上。下面按装一套可复现环境的顺序铺开先把前置条件和版本差异列清再把 311、313/315 和 301、303/305 逐条配过去最后拿一张物料凭证把整条链路验一遍。2. 环境清单MB1B 五个移动类型安装前要先对齐的参数2.1 客户端、权限对象和主数据的前置状态装这套东西第一步是挑地方。SAP 里最忌讳的事情是有人直接在生产客户端跑 MB1B 试 313过完账才发现 315 没人收在途挂在账上冲销还得走 MBST 一笔笔处理。常见做法是让 BASIS 开一个开发或测试客户端在里面把移动类型、工厂装运数据全配通再往生产客户端传。客户端编号这层不用记太细关键是确认这个客户端能不能改后台配置能不能自由过账物料凭证。权限是第二个坎。MB1B 过账的时候系统会校验 M_MSEG_BWA货物移动移动类型、M_MSEG_WWA货物移动工厂、M_MSEG_LGO货物移动库存地点三个对象。缺了 M_MSEG_WWA报错一般会提示没有工厂的授权报错里面带 F5 开头的代码缺 M_MSEG_LGO 时提示更含糊只说过账失败不给具体原因。这类授权问题在测试客户端经常被忽略因为测试账号给的权限比较宽一切换到业务账号就出问题。主数据这块要提前捋一遍物料必须已经维护了工厂视图和库存地点视图目标库存地点必须在 OX10 里建好并挂到对应工厂下。物料在接收库存地没有库存记录本身没关系311 和 315 都能把库存带过去但库存地点这个对象不存在就一定报错提示库存地点不在工厂之下。前置对象用的事务码检查点公司代码与工厂OX10 / 企业结构配置工厂必须已分配给公司代码否则过账报公司代码缺失库存地点OX10目标库存地必须属于目标工厂名称长度注意别超限物料主数据MM01 / MM02工厂视图、库存地点视图、会计视图都要在移动类型OMJJ311、313、315、301、303、305、309 是否已激活授权SU01 / PFCGM_MSEG_BWA、M_MSEG_WWA、M_MSEG_LGO后台配置权限SPRO分配凭证类型、定义工厂装运数据表里的 OMJJ 是移动类型维护路径在物料管理下的库存管理和实际库存分支里进去以后可以复制标准移动类型改也可以对着标准的那几条看配置。我一般先在 OMJJ 里把 311 的「价值更新」和「数量更新」两个标识确认一遍这两个标识没打开过账之后账面对不上但又不报错属于最难查的一类。2.2 移动类型对照哪条走一步哪条挂出在途这套环境里真正需要记住的组合不多但要分清一步和二步的差别。一步转储在单张物料凭证里同时完成出和入二步转储分两张凭证中间那段库存挂在在途上。原料里提到的几个移动类型按场景摆出来大致是这样移动类型场景步骤是否产生在途311同一工厂库存地到库存地一步否313同一工厂库存地到库存地发出二步第一步是315同一工厂二步转储收货二步第二步在途清零301工厂到工厂直接转储一步否303工厂到工厂发出二步第一步是305工厂间二步转储收货二步第二步在途清零309物料到物料转储一步否344非限制使用库存转冻结一步否343冻结库存转非限制使用一步否351同一公司不同工厂转储订单发货一步否309 这条要单独说一句。不同仓库或者不同工厂里同一个物料的价值可能不一样移动平均价一差就直接产生价差账上会留一笔差异除非业务上确实需要换料号一般不建议用。344 和 343 是状态转换非限制到冻结、冻结回非限制不涉及库存地变化和前面几条不是一类东西但上线前最好一起验一遍因为操作界面长得太像选错移动类型的概率不低。2.3 版本差异ECC 与 S/4HANA 下的事务码取舍版本这层不讲清楚装完容易在操作入口上绕圈。传统 ECC 环境里 MB1B 是主力MB1A 做发货、MB1C 做其他收货几个事务码按业务类型拆得比较散。S/4HANA 里这些事务码大多还留着能跑但官方的方向是把货物移动统一收到 MIGO 里报表侧 MB52、MB5T、MB51 也逐步被 Fiori 应用和多功能报表替代具体哪些还留着要看所在版本和激活的业务功能不能一概而论。我自己的取舍是配置和批量过账仍然用 MB1B 快键盘流输入字段少、跳动少单笔需要带批次、序列号、参考凭证的走 MIGO 更稳因为 MIGO 的字段校验更严能把该带的都带出来。查在途库存这块ECC 里 MMBE 和 MB5T 够用S/4HANA 里如果 MMBE 被替换成了新的库存总览字段位置会变但看的口径没变还是按工厂、库存地点、特殊库存三个维度展开。提示后台配置的菜单路径在不同版本里会有出入SPRO 里直接搜关键词比一层层点更快搜「库存调拨订单」和「装运数据」这两个词基本都能定位到。装之前还要确认一件事这套环境是不是启用了批次管理或者序列号管理。启用了批次313 和 315 都要带批次号批次不一致或者批次不存在都会拦下来启用了序列号315 收货时要逐号确认用 MB1B 那套界面操作会很难受这种情况应该直接切到 MIGO。这一条不提前确认后面配得再对也跑不通。3. 一步转储与二步转储311 与 313/315 的配置和过账3.1 一步转储 311同一个工厂里库存地的直接搬运311 是这套环境里最简单的场景同一个工厂内 A 库存地到 B 库存地一张凭证完成没有中间状态。MB1B 进去移动类型填 311然后依次是工厂、转出库存地点、接收库存地点、物料、数量回车带出描述和单位过账即可。第一次装环境的时候建议先跑一笔数量为 1 的测试料把凭证号记下来后面好追。几个字段容易填错。工厂那个字段是转出工厂311 不允许跨工厂跨了会直接提示移动类型不允许所以接收方那边没有工厂输入框只有库存地点。接收库存地点这个字段的标签在不同界面语言下叫法不太一样有叫「收货库存地点」的也有叫「库存地点」的实际就是那个 UMLGO 字段。数量后面跟着单位如果物料有多个单位注意看带出来的是不是基本计量单位。过完账以后去 MMBE 看转出库存地那一栏减少接收库存地那一栏增加非限制使用库存这一行的总数不变。如果两边数字对不上八成是 311 的价值更新标识没打开这时候账面上数量对了但金额没动得回 OMJJ 检查配置再考虑要不要冲销重做。311 的冲销直接用 MBST 冲销原物料凭证最干净系统会生成一张反向凭证数量、金额都冲回来比手工再做一笔反向 311 稳妥手工做容易忘掉批次和特殊库存的对应关系。3.2 二步转储 313/315在途库存是怎么挂出来的二步转储是这套环境里最容易出问题的地方也是我开头那个 90 个库存案例的来源。313 执行的是发出动作转出库存地的库存减少但接收库存地还看不到这部分库存就挂在在途上。315 执行收货在途清零库存落到接收库存地。两张凭证两个操作中间任何一步没做完账上就留着一段悬空的库存。313 的界面和 311 很像移动类型换成 313填工厂、转出库存地点、接收库存地点、物料、数量。区别在于过完账以后MMBE 展开看转出库存地减少接收库存地没增加在途那一列多出对应的数量。这时候如果去 MB52 拉一个工厂的库存清单会看到这个物料在转出地和接收地加起来比原来少少的那部分就是挂在途上的。315 收货这一步MB1B 进去填 315需要指定工厂、库存地点和物料、数量。这里的库存地点是接收方不是转出方填错了就会把在途收到别的地方去。315 过账后在途那一列清零接收库存地加上对应数量。 按物料和工厂汇总 313/315 的在途情况用于核对二步转储是否闭环 SELECT bwart, matnr, werks, lgort, umlgo, SUM( menge ) AS menge FROM mseg INTO TABLE DATA(lt_transit) WHERE bwart IN ( 313, 315 ) AND werks p_werks AND matnr p_matnr AND mjahr p_mjahr GROUP BY bwart, matnr, werks, lgort, umlgo.这段查询跑在 SE16N 的自定义查询或者 ABAP 环境里都行。BWART 是移动类型313 是发出、315 是收货两边成对出现才说明账闭了如果 313 有量、315 没量或者在途那一行的数量对不上就是有单据挂着没做收货。WERKS 是工厂LGORT 是发出库存地点UMLGO 是接收方库存地点两个字段一起看能定位到具体是哪两地之间的调拨没闭环。注意 MSEG 是明细表一张物料凭证对应多条行项目所以按行项目汇总的时候要连 ZEILE 一起考虑不然同物料同库存地多行会出现重复计数。313 走完不收 315 这种状态在系统里是完全合法的系统不会主动报警所以要么在业务上定时巡检要么在月底盘点前用上面这段查询把在途捞一遍。我习惯每个月固定跑一次量大的时候按工厂拆开看。3.3 用 MIGO 收 315字段和 MB1B 那条路的差别MB1B 收 315 是直接输入移动类型的路子界面短平快适合熟手批量操作。MIGO 是另一条路进来先选操作类型货物移动这一档下面还有收货、其他收货、转储过账几个选项315 走的是转储过账里的收货。区别在于 MIGO 能把参考凭证带出来物料凭证号、采购订单号、转储单号都能作为参考输入之后系统把明细行自动展开改动量小错得也少。差异还体现在字段校验上。MIGO 对批次、序列号、特殊库存的校验更严带不出来的字段会红框拦住不让你蒙混过关MB1B 相对宽松有些字段留空也能过账出问题要到对账时才看得出来。所以装环境验证的时候我一般两种方式都跑一遍确认两边过出来的凭证在 MSEG 里字段一致数量、库存地点、移动类型都对得上再去业务端推。还有一点MIGO 过账完可以接着做下一张不用退出来重进批量处理的时候效率并不比 MB1B 差。习惯这东西有惯性但环境刚装好的时候别省这一步两种方式对着跑一次能省掉后面很多解释。3.4 查看口径MMBE、MB52、MB5T 各看什么查在途这块三个报表的用途得分清楚混着用会得出互相矛盾的结论。MMBE 是单个物料的总览进去输入物料、工厂、库存地点展开以后能看到非限制使用、质检、冻结、在途几行。同一工厂内 313 产生的在途在这里能看按工厂展开到库存地点层级。它的好处是细坏处是一次只能看一个物料。MB52 是库存清单按工厂、库存地点批量拉适合月底一次性看一个工厂底下所有库存地的账。它不显示在途那一列所以只能拿来看落到库存地以后的存量别指望在 MB52 里找到在途数字。MB5T 是工厂间在途报表按工厂、物料看跨工厂的转储在途对应的是 303/305 和转储订单那条链路。同一工厂内库存地之间的 313 在途按原料里的口径也会在 MMBE 和 MB52 上体现但如果是要看跨工厂的那一段就得用 MB5T。报表看什么适用场景MMBE单物料在各库存地、各特殊库存下的数量定位某一笔 313 是否挂出在途MB52按工厂、库存地点批量列库存月底盘点、批量核对MB5T工厂间在途库存303/305 和转储订单链路4. 工厂间转储301、303/305 与后台那两个开关4.1 一步 301 与二步 303/305 的过账路径工厂间转储比工厂内复杂一层因为跨了工厂就跨了 MRP 范围、跨了会计评估。301 是一步MB1B 填 301转出工厂、转出库存地、接收工厂、接收库存地、物料、数量一张凭证完成A 工厂库存减少B 工厂库存增加中间没有在途。303/305 是二步303 做发出A 工厂库存减少、在途挂出305 做收货在途清零、B 工厂库存增加。看跨工厂在途就用 MB5T。301 用起来爽但有个后果转出工厂的需求减少和转入工厂的库存增加在 MRP 运算里不一定同步反映容易出现一边多跑出采购申请、一边压着库存的情况。原料里特意提了这点工厂间转储涉及 MRP 的需求传递建议走转储订单MM 功能和 SD 功能都能实现主要讲 MM 这条路。转储订单的做法是先建一张采购订单类型的单据收货工厂作为订单的收货方供货工厂作为供货方然后基于这张订单做发货和收货。这条路上跑出来的移动类型就不只是 301/303/305还会带出 351 这类转储订单专用的移动类型具体带哪条要看订单类型和配置。4.2 后台分配凭证类型库存调拨订单走哪张单据后台第一处要动的配置是给库存调拨订单分配凭证类型。路径在采购那一支下面采购订单的设置里找库存调拨订单进去以后分配凭证类型。这一步决定的是收货工厂建转储订单的时候系统默认用哪个采购订单类型以及这个类型允不允许跨公司代码、允不允许一步转储。配置进去是两张表的对照关系一边是工厂或者收货工厂的组合一边是凭证类型。原料里提到 NB 是转储单类型UB 是另一种采购订单类型两者在是否走 SD 这条路上不一样。常见做法是先用 NB 跑通 MM 那条链路把收货工厂和供货工厂的关系配清楚再决定要不要为特定工厂组合换类型。这一步配错的典型表现是建转储订单的时候系统提示找不到凭证类型或者建出来了但收货的时候带不出正确的移动类型。前者是分配表没覆盖到那个工厂组合后者是凭证类型的字段控制没打开得回 OMJJ 和凭证类型配置两边对。4.3 工厂装运数据一个勾决定生不生成出货单第二处配置是定义工厂的装运数据。这一屏里有几个关键字段工厂客户、是否采用一步转储、接收工厂、供货工厂。原料里说得很直白勾了「采用一步转储」就走一步方式不勾就是二步。 工厂装运数据里几个决定行为的字段配置时对照核对 WERKS 工厂 KUNNR 工厂客户SD 方式下用于生成出货单 EINTR 采用一步转储标识勾选则一步不勾则二步 UMWRK 收货工厂 LIFNR 供货工厂 BSTYP / BSART 转储单类型例如 NB这几个字段里最容易出问题的是工厂客户那一个。填了它系统就走 SD 方式发货环节会生成出货单多出一套单据流不填就走 MM 方式不生成出货单。原料里给的例子是 UB 这种采购订单不采用 SD 方式、不生成出货单对应的就是这一格空着。同一个公司下不同工厂之间的一步转储如果用 351 走发货系统如果没有给转储单分配范围会落到 4500 那个默认值上这个值要在分配凭证类型那张对照表里核对别想当然。一步转储标识这个勾要慎重。同一个工厂组合业务上一会儿要一步一会儿要二步别指望在这个勾上切来切去配置改了会影响所有走这条路的单据。真要两种并存用不同的凭证类型分开各自绑各自的装运数据。4.4 MRP 视角为什么工厂间转储建议走转储订单讲清楚这件事得从 MRP 的运行范围说。MRP 是按工厂跑的A 工厂的库存减少、B 工厂的库存增加两个工厂各自跑各自的运算。301 这种一步转储两个动作在一张凭证里完成A 工厂这边库存已经走了但需求传递的信息并没有以 MRP 能识别的方式传过去B 工厂那边只是账上多了库存采购申请该跑还是跑。结果就是一边积压、一边重复采购。转储订单补的就是这一段。它本身就是一张带需求日期的单据收货工厂挂着这张订单MRP 运算能识别到「有一批货正在路上」从而不再重复生成采购申请供货工厂那边也能看到这张订单带来的需求。303/305 二步转储配合转储订单在途那一段还能被 MB5T 单独捞出来时间长了就知道哪些线路老堵。用 MM 功能实现转储订单走的还是采购订单那套界面只是类型换掉、供货工厂和收货工厂填清楚。用 SD 功能实现则要配工厂客户、装运数据、出货单那一整套链条更长适合本来就有销售发货流程的环境。多数制造场景MM 这条够用先把 NB 跑通再说。5. 避坑与排查库存调拨上线前最容易翻车的五件事5.1 现象313 过账成功MMBE 里在途那一栏是空的现象很具体MB1B 走 313 提示过账成功、给了物料凭证号回头去 MMBE 输入物料和工厂展开转出库存地确实少了但哪一栏都没多出来看着像凭空消失。原因通常有两个。一是看的位置不对MMBE 要展开到工厂层级、把在途那一列调出来才看得到光看库存地点那几行是看不到的因为 313 的在途不落在任何具体库存地上。二是移动类型的配置里 313 的特殊库存标识没配系统把在途当成普通库存处理了这种情况下凭证能过、报表对不上得回 OMJJ 对着标准 313 比字段。解决办法是先按工厂层级展开 MMBE 确认在途列有没有数字没有就用 3.2 那段 MSEG 查询按凭证号捞一遍看 313 那条记录的特殊库存标识字段是不是空的。空的话回 OMJJ 把 313 的特殊库存标识补上然后冲销重做别在原凭证上纠缠。5.2 现象315 收货报库存不足明明 313 已经发出去了现象是 313 做完隔天用 315 收货系统提示在途库存不足或者数量超出可用库存单据过不去。原因一般是 313 和 315 的对应关系错位了。315 收货要匹配到具体的在途记录工厂、物料、接收库存地点这几个维度得和 313 对得上有任何一项不一致系统就认为没有对应的在途可收。还有一种情况是中间的 313 被 MBST 冲销过在途已经清零315 自然收不进去但业务侧不知道冲销过。解决办法是先按物料和工厂把这一段时间的 313、315 全部捞出来看数量能不能配平用 3.2 那段查询就行把移动类型换成 313、315 一起查。配对不上的找操作记录确认有没有冲销动作配对得上但收不进去的检查接收库存地点是不是填成了转出方。5.3 现象装运数据里一勾一步转储结果多出一张出货单现象是工厂间转储配完之后本来只想走 MM 那条简单链路结果发货环节冒出来一张出货单单据流凭空多了一节业务同事一脸茫然。原因是定义工厂的装运数据里「工厂客户」那一格填了值。填了它就等于告诉系统走 SD 方式SD 方式的特点就是发货要出货单。原料里 UB 那个例子不生成出货单就是因为这一格空着。另外「采用一步转储」这个勾和出货单是两件事勾了它决定走的是一步还是二步不决定生不生成出货单很多人把这两个概念混在一起。解决办法是把工厂客户清空重新跑一笔测试单确认出货单不再生成。如果业务上确实需要出货单那就保留配置、把出货单那一套流程补全别一半 SD 一半 MM 地混着走。5.4 现象工厂间 301 转完收货工厂的 MRP 还是照跑采购申请现象是 A 工厂转了一批料到 B 工厂账上 B 工厂库存确实多了但第二天跑 MRPB 工厂还是生成了同样的采购申请等于重复备货。原因就是 4.4 讲的那件事301 这种一步转储不携带 MRP 能识别的需求信息B 工厂的 MRP 只知道库存多了不知道这批货是为它准备的、什么时候到。转出工厂那边也一样看不出有需求正在被满足。解决办法是把这条线路改成转储订单加二步转储。先建转储订单收货工厂作为收货方然后 303 发出、305 收货跑一轮 MRP 看采购申请还会不会重复生成。已经用 301 转过去的库存不用倒回来但从下一个周期开始切到转储订单配置在 4.2 和 4.3 那两处。5.5 现象309 转完两个物料号下面的金额对不上现象是用 309 把物料 A 转成物料 B数量对得上但两个物料号的库存金额加起来和转之前差了一截会计那边来问差异去哪了。原因在于 309 是物料到物料的转储两个物料如果移动平均价不一样差额不会凭空消失会以价差的形式留在账上。不同仓库、不同工厂的同一物料本来就可能估值不同转一次就产生一次差异。原料里说得很清楚这种差异一般不建议采用这种方式属于能不用就不用的类型。解决办法是回到业务源头确认这次转物料号到底是不是必须的。如果只是库存地点变化用 311 就够了别用 309如果确实是物料号变更把价差科目和审批流程定清楚别让它默默留在账上。已经转完的冲销原凭证重走正确的移动类型。6. 装完怎么验证拿一张物料凭证把 311/313/315 串一遍配置全做完最后一步是验证。我一般不开一堆界面乱点而是设计一条最小链路用同一个物料、同一个工厂从 311 走到 313/315每一步留下的凭证号都记下来最后用查询一次性核对。验证用例按这个顺序跑先在 A 库存地准备 100 个物料跑一笔 311 从 A 到 B数量 10确认 B 库存地增加 10再跑一笔 313 从 B 到 C数量 100确认 B 减少 100、在途挂出 100最后跑 315 从 B 到 C 收货 90确认在途剩 10、C 库存地增加 90。这个用例正好复现开头那个 90 个的场景在途留 10 个不收看报表能不能查出来。-- 用物料凭证号把整条链路捞出来核对移动类型、数量、库存地点 SELECT mblnr, mjahr, zeile, bwart, matnr, werks, lgort, umlgo, menge, meins FROM mseg WHERE mblnr IN ( 4900000001, 4900000002, 4900000003 ) AND mjahr 2024 ORDER BY mblnr, zeile;这条查询的重点在 BWART 和 UMLGO 两列。BWART 依次应该是 311、313、315如果顺序乱了或者少了一条说明中间哪一步没做。UMLGO 是接收方库存地点313 那条记录的 UMLGO 指向 C315 那条也要指向 C两条不一致就说明 315 收错地方了。MENGE 是数量313 是 100、315 是 90差额 10 就是在途拿这个数去和 MMBE 的在途列对对上了这条链路就算通了。验证清单我习惯列成一张表跑完一项勾一项验证项期望结果不通时先看哪里311 后两库存地一增一减总数不变OMJJ 的价值更新、数量更新标识313 后在途挂出在途等于发出量MMBE 是否展开到工厂层级315 后在途减少在途等于未收量315 的接收库存地点是否与 313 一致工厂间 303/305 后在途清零MB5T 无残留转储订单是否已收货344/343 状态转换非限制与冻结互转移动类型的特殊库存标识有个小技巧这套验证不用每次从零搭把这条链路做成一个固定的测试脚本物料号固定、库存地固定、数量固定每次改完配置就重跑一遍凭证号记在同一个文档里。时间长了哪次改动影响了哪一段从凭证号的变化就能看出来比翻配置日志快得多。从那以后我每次接手一套新的库存调拨环境不管对方说配得多完整都强制走一遍这条链路311 到 313/315 再到 MB5T 对在途一步不省。有两次就是靠这个把在途挂账揪出来的配置表上看不出任何问题一跑凭证全露馅。希望这套顺序帮到你少在在途那 10 个上栽跟头。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →