SAP MB1B库存调拨:移动类型、二步转储与在途库存对账
发布时间:2026/10/31 3:38:40 锦皓数字建站

简介围绕SAP MM模块库存调拨与发货流程的实操文档面向SAP顾问、库存与仓储管理人员及MM初学者用于理清一步转储、二步转储及工厂间调拨的业务差异与后台配置要点。内容以MB1B为主线覆盖311库存地直转、313/315二步转储与在途库存、301/303/305工厂间转储并延伸至309物料到物料、344/343状态转变同时说明MMBE、MB52、MB5T的查询场景及转储订单对MRP运算的影响。资源包仅含1个docx大小约2.25MB便于集中阅读和按主题检索适合作为流程梳理与配置对照的案头资料。已有1522人学习文档结合事务代码、后台凭证类型、SD装运数据与UB配置等细节可帮助读者快速建立从业务操作到后台参数的完整认知减少调拨发货环节的配置盲区。1. 90 个只到账 80 个MB1B 里那 10 个库存去哪了第一次在生产账套里做库存调拨是 A 库存地的 90 个半成品转到 B 库存地。转出侧一次减掉 90转入侧只到账 80剩下 10 个在 MB52 的任何一行库存地里都翻不出来。当时第一反应是过账错了回头把物料凭证打开才明白那 10 个没丢它们卡在 313 发货和 315 收货之间属于在途库存只存在于 MMBE 和 MB5T 里任何一个库存地都查不到。MB1B 下面那一串 311、313、315、301、303、305、309 不是编号游戏。选哪一个决定了库存是不是要在半路上停一手、MRP 要不要认这笔供应、价差会不会被记进科目。这篇按「移动类型怎么选 → 二步转储怎么跑 → 工厂间转储订单怎么配 → 对不上账怎么查」的顺序拆开讲能照着复现。2. 移动类型选型311、313/315、301、303/305 各自动了哪张表2.1 一步与二步的账务差别数 MSEG 的行数判断一笔调拨是几步骤最快的办法不是看前台界面而是看 MSEG 里这张凭证有几行。MSEG 是物料凭证的行项目表一笔过账在这里留下几行、每行的借贷标识是什么比任何文档都直观。常用的几个字段值得背下来MBLNR物料凭证号、MJAHR年度、ZEILE行号、BWART移动类型、SHKZG借贷标识、MENGE数量、MATNR物料、WERKS/LGORT转出工厂/库存地点、UMWRK/UMLGO接收工厂/库存地点、UMMAT接收物料309 用。一步转储的典型特征是同一张物料凭证里两行。311 转储时你会看到一行 SHKZG S 表示从 A 库存地发出紧接着一行 SHKZG H 表示 B 库存地接收两行数量相等、方向相抵一提交库存就整体搬完了中间没有任何空档。这种结构的好处是账实永远同步坏处是没有中间态可用一旦货在半路上出事系统里查不到任何痕迹。二步转储正好相反是两张凭证、各行一行。第一张凭证只有 S 行313 发货或 303 工厂间发货此时转出方库存已经扣了但接收方一分钱没加第二张凭证只有 H 行315 收货或 305 收货这时接收方才真正拿到货。两张凭证之间的这段时间差就是「在途库存」的全部含义。它不是一张实体表里的一条记录而是转出已扣、转入未加的差额系统用这个差额算出来的。为什么要把简单的事情拆成两步因为现实里的货确实要在路上走。跨库区搬运、跨厂区运输、甚至跨城市调拨实物不可能瞬移。如果强行用一步过账转出方账上已经没了货却还在车上盘点必炸接收方账上已经加了货没到车间按账领料就会扑空。二步转储的价值就在于把「责任在谁手上」这件事记进系统313 过完货算转出方的在途责任315 过完责任才转移到接收方。这是流程设计不是技术炫技。提示判断一张历史凭证是一步还是二步直接 MB03 打开看行数最快。两行同现在一张凭证里是一步只有一行 S 或一行 H说明它还有配对的另一半要在 MB51 里按物料和日期捞。2.2 六个场景的移动类型对照别在 313 上做 311 的事移动类型选错是这块最常见的翻车点而且错得往往很隐蔽——单张凭证能过库存也动了只有到月底对账或者 MRP 跑需求时才暴露。下面这张表是我自己贴在工位上的版本按业务场景倒查移动类型比背 SAP 菜单靠谱。业务场景发货类型收货类型是否产生在途是否跨工厂关键注意点同工厂内库存地互转货直接到位311同凭证内完成否否接收库存地点必填否则报「输入接收库存地点」同工厂内库存地互转货要在路上走313315 或 MIGO是否在途不进任何库存地只能用 MMBE 查工厂间调拨一次到位301同凭证内完成否是接收工厂必填且不传递 MRP 需求工厂间调拨分两段走303305 或 MIGO是是在途用 MB5T 查MB52 看不到物料号发生变化同物不同编码309同凭证内完成否可同厂可跨厂两边移动平均价不同会产生价差库存状态转换可用/冻结/质检344 / 343 等同凭证内完成否否只改状态不改数量不影响总库存这张表里最容易出问题的是 311 和 313 的混用。有些场景需求方觉得「反正都是同一个工厂里换个库存地走 311 一步到位多省事」结果库房实际搬运要两天第一天过完账转出地已经清零实物还在货架上第二天盘点直接对不上。反过来也有把 311 该干的事拆成 313315 的凭空多出一笔在途月末还得专门去清。301 和 303/305 的取舍逻辑一样但多了一层组织维度的考量。301 一步过账意味着两个工厂的库存同时变动谁也没法说「货在途中不归我管」303/305 则把发货厂和收货厂的责任切开发货厂 303 一过就完成了自己的动作收货厂 305 没做之前这批货在两边工厂的可用库存里都不存在。对于有内部结算关系的两个工厂这个区分直接影响月底的内部对账口径。309 要单独说一句。它不是「换个库存地」而是换物料号MSEG 里看 UMMAT 字段就能认出来。原物料和目标物料的移动平均价往往不同过账瞬间差额就要进价差科目。所以原文里那句「一般不建议采用此方式」不是保守是血泪经验——省下来的操作时间月底财务对差异的时候要加倍还回去。2.3 301 与 309 的隐性代价MRP 需求和移动平均价301 最容易被低估的问题是它跟 MRP 的关系。库存从 A 工厂搬到 B 工厂A 的库存降了、B 的库存升了账面看没问题但 MRP 运算时的逻辑是A 工厂少了这批库存下一轮运算可能直接给 A 下新的采购申请或生产订单B 工厂多了这批库存但如果 B 的需求本来就在途可能出现重复供应。原因在于 301 只是一次库存归属变更它不生成任何「供应承诺」单据MRP 看不到「A 答应给 B 一批货」这件事。这正是工厂间转储要用转储订单STO的根本理由。转储订单本质是一张采购订单EKKO/EKPO凭证类别 F只不过供货方是内部工厂而不是外部供应商。它在收货工厂那边生成一条采购需求参与 MRP 运算供货工厂因此知道「未来要交这批货」会提前备料或者调整生产。301 做不到这一点它是账务动作不是计划动作。如果贵司的工厂间调拨频率高、批量大长期用 301 攒下来的 MRP 偏差会非常难清。309 的代价则落在价值上。移动平均价V 价的物料库存价值 总金额 / 总数量一旦把低价物料转成高价物料或者反过来差额必须找科目接住。标准价S 价物料稍好一些价差进差异科目但同样要在月结时解释。我在一个项目里见过因为频繁用 309 做包装规格切换导致某物料的价格长期偏离实际采购价最后不得不做一次彻底的价格重估。能用 BOM 或者 separate 物料号解决的就别用 309 硬转。至于 344、343 这类状态转换理解成本最低它们不改变数量只改变这批库存在系统里属于「非限制使用」「冻结」「质检」中的哪一档。MMBE 里这几档是分列显示的所以过完 344 之后你会看到非限制那一列减少、冻结那一列增加总库存纹丝不动。新手容易在这里误判成「库存没变化是不是没成功」其实过账是成功的只是看错了列。3. 二步转储实操313 发货、MIGO 收货与在途库存的三条查看链路3.1 313 发货的界面路径与六个必填字段313 的前台路径很固定MB1B 输入移动类型 313回车后进入转储过账界面。界面上要填的东西不多但每一个都有实际约束少一个就过不去。第一步是抬头信息过账日期、凭证日期、抬头文本。抬头文本别偷懒写清楚「A001 → B001 半成品调拨」这类信息后面 MB51 里按文本筛选能救命。第二步是行项目这里六个字段是硬性的物料号必须是有库存的物料且在你填的转出工厂/库存地点下确实有可用库存否则报「库存不足」。数量与单位数量填正数单位用基本计量单位或订单单位混用会导致后续报表单位不统一。工厂转出工厂。库存地点转出库存地点这是被扣减的那一侧。接收库存地点313 里这个字段是必须的系统要提前知道货最终去哪才能算在途归到哪条线上。批次批次管理的物料必须指定否则报「批次是必输项」。填完检查界面右下角的行项目状态灯绿色才允许保存。保存后系统给出物料凭证号记下这个号收货环节要用它。注意313 过账后如果发现填错了接收库存地点不能直接改凭证。标准做法是先用 314 冲销这笔 313MBST 冲销物料凭证也可以再重新过一笔正确的。别想着「反正后面 315 能改」315 只能按 313 已经指定的接收地点收货。3.2 315 与 MIGO 参照收货什么场景必须走 MIGO收货有两条路MB1B 直接敲 315或者 MIGO 参照物料凭证收货。功能上两条路都能把在途清掉但适用场景差别不小。MB1B 315 是手工模式输入 315填物料、数量、接收工厂/库存地点系统做一次 H 方向的过账。它的好处是快适合数量整齐、没有批次和序列号管理的简单物料。问题也明显——数量靠人手填跟 313 那笔对不上系统不会拦90 个发出去、85 个收进来剩下的 5 个变成永远清不掉的在途尾差。MIGO 参照收货则把 313 的凭证号带进来物料、数量、批次、接收地点全部自动带出操作人只需要确认或者按实际到货数量改。标准的操作序列是MIGO → 选择「物料凭证」作为参照对象 → 填入 313 的凭证号和年度 → 系统展开行项目 → 核对数量 → 勾选行 → 过账。在批次管理、序列号管理、包装单元HU场景下MIGO 几乎是唯一靠谱的选择因为它能带出批次拆分和序列号分配界面MB1B 315 做不了这个。实际操作里我一般建议只要 313 涉及批次、序列号或者一次发多个行项目收货一律走 MIGO。手工 315 留给那种一物一码、数量规整、没有追溯要求的场景否则后面查批次流向的时候会非常痛苦。3.3 批量过账BAPI_GOODSMVT_CREATE 字段映射与返回码处理调拨量大的时候前台一笔一笔敲不现实。标准做法是用 BAPI_GOODSMVT_CREATE 做批量过账它对应 MB1B 的底层过账逻辑313、315、311、301 都能走。DATA: ls_header TYPE bapi2017_gm_head_01, ls_code TYPE bapi2017_gm_code, ls_item TYPE bapi2017_gm_item_create, lt_item TYPE TABLE OF bapi2017_gm_item_create, ls_headret TYPE bapi2017_gm_head_ret, lt_return TYPE TABLE OF bapiret2. ls_header-pstng_date sy-datum. ls_header-doc_date sy-datum. ls_header-header_txt A001-B001 313发货. ls_code-gm_code 04. 04 对应 MB1B 转储过账 ls_item-material MAT-1001. ls_item-plant 1000. 转出工厂 ls_item-stge_loc A001. 转出库存地点 ls_item-move_type 313. ls_item-entry_qnt 90. ls_item-entry_uom PC. ls_item-move_stloc B001. 接收库存地点跨工厂时还要填 MOVE_PLANT ls_item-batch B240901. APPEND ls_item TO lt_item. CALL FUNCTION BAPI_GOODSMVT_CREATE EXPORTING goodsmvt_header ls_header goodsmvt_code ls_code IMPORTING goodsmvt_headret ls_headret TABLES goodsmvt_item lt_item return lt_return. READ TABLE lt_return TRANSPORTING NO FIELDS WITH KEY type E. IF sy-subrc 0. CALL FUNCTION BAPI_TRANSACTION_ROLLBACK. ELSE. CALL FUNCTION BAPI_TRANSACTION_COMMIT EXPORTING wait X. ls_headret-materialdocument / matdocumentyear 就是物料凭证号和年度 ENDIF.这段代码有三个点必须说清楚。GM_CODE 04是固定映射对应 MB1B 那张界面填成 01对应 MB01 收货会直接过不了。MOVE_STLOC是接收库存地点走 311/313 必须填如果是跨工厂的 303/301还要补MOVE_PLANT填接收工厂少填就报「输入接收工厂」。最后COMMIT 必须带WAIT X不带的话提交是异步的紧接着去查 MMBE 可能查不到刚过的账会误以为自己写错了。返回处理上LT_RETURN里只要出现 TYPE E 就必须 ROLLBACK不能只看 BAPI 的返回结构体因为部分行项目失败时整体调用仍可能返回成功。批量场景建议一行一个 BAPI 调用而不是一个调用塞几十行这样单行失败能定位到具体哪一行物料回滚粒度也更好控制。3.4 MMBE、MB52、MB5T 的分工查不到在途多半是用错了码这三个事务码看起来都是「查库存」实际覆盖的范围完全不同混用就是自找麻烦。事务码查什么能不能看在途典型用途MMBE单个物料在指定工厂/库存地点下的库存总览含非限制、质检、冻结、在途各档能在途单独一行单物料查账、确认 313 之后在途挂没挂上MB52按工厂/库存地点批量列库存清单不能只列实际存放的库存月末盘点、批量核对库存分布MB5T跨工厂转储的在途明细只能看在途303 之后确认在途金额和数量、清理长期挂账那个「10 个库存凭空消失」的案例根因就是用 MB52 去查二步转储。MB52 的定位是「哪个库存地点有多少实物库存」在途货物不存放在任何库存地点自然不会出现在结果里。要确认 313 之后的在途用 MMBE 看该物料在转出工厂那一行的在途档或者用 MB5T 按物料和工厂对查。4. 工厂间转储订单NB/UB 凭证类型与「定义工厂的装运数据」两处配置4.1 分配凭证类型到工厂/供货工厂NB 与 UB 的取舍转储订单要能建出来前提是后台做了凭证类型分配告诉系统「1000 工厂向 2000 工厂要货时默认用哪种采购订单类型」。配置路径在物料管理下的采购订单设置里找到库存调拨订单相关的分配节点维护工厂、供货工厂、订单类型三个字段的组合。订单类型常见的有两个NB 和 UB。NB 是标准采购订单类型用它做转储订单也能跑通缺点是它跟真正的对外采购混在一起报表筛选时不好区分。UB 是专门给库存转储订单准备的类型语义更干净做查询和权限控制时更省事。原文里那个「UB 采购订单」的例子就是走 UB 这条线且不启用 SD 方式、不生成出货单的配置。配置项典型值作用填错的表现工厂1000收货方工厂建单时带不出默认类型要手工改供货工厂2000发货方工厂同上且 MRP 供应关系错位凭证类型NB 或 UB决定订单走的业务流程后续报表按类型筛选时数据混在一起这张表看着简单实际踩坑最多的是「工厂」和「供货工厂」写反。分配关系是收货工厂 → 供货工厂不是反过来。写反之后单据能建但 MRP 跑出来的需求方向是倒的表现为「明明要往 B 厂调货A 厂却在疯狂采购」。4.2 装运数据里的工厂客户与一步转储勾选出货单生成与否的分水岭第二处配置是「定义工厂的装运数据」这一处的两个字段直接决定业务形态比第一处重要得多。第一个字段是工厂客户。这个字段填了客户号系统就认为这次工厂间转储要走 SD 流程收货时会生成出货单交货单装运、拣配、发货过账这一整套就都进来了。不填则走纯 MM 流程只有物料凭证没有出货单。原文里「UB 不采用 SD 方式不生成出货单」说的就是这个UB 类型的转储订单在装运数据里没填工厂客户所以收货后不会冒出交货单。反过来如果这里填了客户号收完货系统里会多出一张出货单需要有人去处理发货流程长度翻倍。第二个字段是一步转储的勾选框。勾上转储一次完成没有在途不勾就走二步发货和收货分开中间产生在途库存。这个勾选要和移动类型的选型一致勾了一步却指望用 303/305 造出在途是不成立的不勾一步却直接用 301 想一次到位也会被系统按两步逻辑处理。装运数据字段留空填写/勾选工厂客户纯 MM不生成出货单走 SD收货后生成交货单需要装运处理一步转储二步产生在途需要发货收货两次操作一步一次过账完成转储单类型建单时手工选类型建单时自动带出默认类型这两个字段的组合一共四种实际项目里最常见的是「工厂客户留空 不勾一步」也就是纯 MM 的二步转储流程可控、不牵扯 SD 用户。什么时候需要填工厂客户当两个工厂之间有正式的运输安排、需要出货单来驱动拣配和装运的时候。这时候多出来的流程不是负担是必要的交接凭证。4.3 351 与凭证编号范围单据号跑到 4500 段怎么查转储订单真正过账时移动类型的选择跟有没有走 SD、是一步还是二步有直接关系。原文里那个「同一公司不同工厂一步转储发货用 MB1B 351」的例子说明在这套配置下转储订单的转储过账用的是 351 这个移动类型而不是普通的 301。351 属于转储订单场景的专用类型它背后挂着采购订单号过账时会回写到订单的收货历史里这是 301 做不到的。这里有个容易被忽略的细节移动类型和订单类型、装运数据是一套联动的配置不同项目里同一业务动作可能落到不同移动类型上。所以接手一个新账套时别急着按记忆敲 351先 MB51 捞一笔历史凭证看这个客户的系统里实际用的是哪个类型再照着做。这是最省事的做法也是我认为最值得养成的习惯。凭证编号范围的问题也出自这里。原文提到「系统未给转储单分配范围所以为 4500」。现象是新建转储订单时单据号不是预期的号段而是落在 4500 开头的一段上。原因是订单类型对应的编号范围没有分配或者分配了但区间被占满。排查顺序是先看订单类型维护里的编号范围分配再看该编号范围区间是否已存在大量未清单据把号段耗掉了。号段问题不影响业务逻辑但会影响单据追溯——一批单子散在默认号段里做报表时很容易漏掉。4.4 STO 收货MIGO 101 与 MB1B 351 的操作差异转储订单的收货常见两条路MIGO 对采购订单收货移动类型 101或者 MB1B 用 351 做转储过账。区别在于前者是「对外采购收货」的标准逻辑套在内部转储上后者是转储订单专用逻辑。MIGO 101 的操作序列MIGO → 参照对象选「采购订单」→ 输入转储订单号 → 系统带出订单行、物料、数量、收货工厂 → 确认数量 → 勾选行 → 过账。它会把收货记到订单的收货历史里订单的已收数量随之更新未清数量减少。好处是跟采购收货体验一致用户培训成本低坏处是如果装运数据里勾了一步转储101 这一笔就同时完成了发出和接收中间没有在途发货工厂那边的库存是被动扣减的容易出现「收货的人不知道自己在扣别人库存」的沟通问题。MB1B 351 则更贴近转储语义适合发货工厂主动发起、收货工厂确认的场景。它同样会回写订单收货历史但因为走的是转储过账入口业务人员理解成「调拨发货」比理解成「采购收货」自然得多。选哪条路本质上是在「统一用户操作习惯」和「贴合业务流程语义」之间做权衡没有绝对的对错但一个账套里最好统一别两种混着用——混用的后果是订单收货历史里两种来源交织出问题时要花时间分辨。5. 避坑排查在途不平、MRP 不看单、价差入账的五种现场5.1 在途类313 发了货却查不到MB52 永远看不见在途现象313 已经过账物料凭证号也有了但用 MB52 查转出和转入两个库存地点加起来比调拨前少了 10 个谁也不知道这 10 个在哪。原因MB52 只列实际存放在库存地点的库存在途库存不归属任何库存地点天然查不到。这不是数据丢了是查询工具选错了。解决换 MMBE 查该物料在转出工厂那一行的「在途」档或者用 MB5T 按物料加工厂对查。确认在途金额和数量与 313 凭证一致后做 315 或者 MIGO 参照收货。要养成习惯二步转储的中间状态只在 MMBE 和 MB5T 里别拿 MB52 当万能钥匙。现象升级版MB5T 里能查到在途但数量是 90实际到货只有 85。这种情况多半是手工 315 填错了数量且系统不校验。解决方式是先看 313 凭证的原始数量再核 315 凭证差额部分要么补收要么做冲销重来。这类尾差如果长期不处理会在 MB5T 里堆成历史包袱年底清理非常费劲。5.2 需求类301 走完 MRP 像什么都没发生收货工厂还在重复采购现象A 工厂往 B 工厂用 301 调了一大批库存账面库存已经过去了但下一轮 MRP 跑出来B 工厂该物料仍然有采购申请A 工厂反而在补货。两边都觉得莫名其妙。原因301 只做库存归属变更不生成任何供应单据MRP 看不到「A 已经答应给 B 这批货」。B 工厂按自己的需求算自然继续下单A 工厂按减少后的库存算低于安全库存就补。这是移动类型选型的代价不是 MRP 算错了。解决工厂间调拨改用转储订单。订单在收货工厂生成采购需求参与 MRP供货工厂的供应承诺也进系统。已经用 301 调过的库存没法追溯补单只能在下一轮 MRP 之前用 MD04 手工核对两边的供需把重复的采购申请删掉。这个坑一旦踩过后面的项目里工厂间调拨我一律先问「走不走 STO」不问清楚不动手。配置类变种转储订单建了、收货也做了但 MRP 还是不看这张单。检查采购订单行项目里的「收货工厂」字段和凭证类型分配是否一致以及订单有没有被标记为「不参与 MRP」相关的特殊标识。凭证类型写反是常见原因——收货工厂和供货工厂颠倒了需求就跑到不该跑的那一边。5.3 配置与价值类STO 收完货冒出出货单、309 转出价差、状态转换看不出变化现象一转储订单收货之后系统里多出一张出货单挂在 SD 那边没人处理一直挂到月底。原因装运数据里填了工厂客户系统判定这次转储走 SD 流程出货单是必然产物。解决如果业务上不需要出货单驱动的装运和拣配把工厂客户字段清空走纯 MM 流程如果确实需要 SD那就得把发货环节纳入流程安排人处理出货单不能让它自生自灭。现象二用 309 做了物料到物料的转储库存数量对得上但财务那边多出一笔价差凭证月结时要解释。原因两个物料的移动平均价不同309 过账时差额必须进价差科目。解决先确认这笔价差是不是业务上可接受的金额小的走标准价差科目即可金额大或者频繁发生的应该考虑改用 BOM 或者统一物料号从源头取消 309 的使用场景。我自己经手的一个项目就是因为包装规格切换频繁用 309最后不得不做一次价格重估代价比一开始就用两个物料号大得多。现象三用 344 把非限制库存转成冻结库存过完账去 MMBE 一看总库存数字没变以为没成功又过了一遍。原因状态转换不改变数量只改变库存在哪一档里。MMBE 里非限制、质检、冻结是分列的总库存当然不变。解决看 MMBE 的分列数字非限制那一列减、冻结那一列加就说明过账成功了。重复过账会造成冻结库存翻倍冲销起来更麻烦。这条坑的本质是看错了报表列不是系统问题。6. 收账自检三步对账法与一条按移动类型汇总的 ABAP调拨做完不算完真正省时间的是过完账立刻自检。我现在的习惯是三步每步一分钟内能做完能把上面九成的坑挡在外面。第一步查凭证行数。MB03 打开刚生成的物料凭证看 MSEG 有几行。311、301、309 应该是一对 S/H 行313、303 应该只有一行 S315、305 应该只有一行 H。行数不对说明移动类型或者过账逻辑选错了立刻冲销重来别留着过夜。第二步查在途是否清零。二步转储的场景收货做完后立刻 MMBE 看转出工厂该物料的在途档或者 MB5T 按物料对查。在途应该是 0。如果不是 0说明还有未收完的尾差当天就找出来处理掉。挂着过夜的在途第二天就会被忘掉。第三步查两地净变化。用 MB52 查转出和转入两个库存地点该物料的库存调拨前后的净变化量应该正好等于调拨数量。这一步能抓出「一步转储被误当二步做」或者「重复过账」这类问题。三步之外我会跑一段按移动类型汇总的查询把一张凭证的收发数量相抵看是否为 0。这段代码很轻适合挂在自建的对账报表里SELECT bwart, SUM( CASE WHEN shkzg S THEN menge ELSE 0 END ) AS qty_out, SUM( CASE WHEN shkzg H THEN menge ELSE 0 END ) AS qty_in FROM mseg WHERE mblnr lv_mblnr AND mjahr lv_mjahr GROUP BY bwart INTO TABLE DATA(lt_stat). 311/301/309 期望qty_out qty_in 313/303 期望只有 qty_outqty_in 0 315/305 期望只有 qty_inqty_out 0 LOOP AT lt_stat INTO DATA(ls_stat). WRITE: / ls_stat-bwart, ls_stat-qty_out, ls_stat-qty_in. ENDLOOP.参数就三个物料凭证号、年度、按移动类型分组。SHKZG S 是发出方向H 是接收方向两列相抵就是净效果。这段查询比 MM03 一页页翻快得多尤其是批量调拨之后一次能筛出所有方向异常的行。提示把这三步和这段查询做成一个 Z 事务码挂在收藏夹里比记在笔记本上管用。人对自己的记忆力总是过于自信。有一年年底清账我在 MB5T 里翻出十几笔三个月前的在途最早的一笔是六月发出去的收货人换了岗没人知道货去哪了最后只能走盘亏。从那以后我每次做完二步转储都会在当天把 MMBE 的在途档截图存档把它当成过账流程的一部分而不是事后补救。这个习惯听起来笨但确实帮我省掉了很多解释的功夫。希望帮到你。本文还有配套的精品资源点击获取
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。