SAP WM配置文档:从主数据骨架到上下架策略验收
简介这份SAP WM配置详解文档面向仓储信息化实施顾问、SAP MM/WM关键用户及内部运维人员围绕仓库主数据、存储类型与仓储策略等核心配置帮助读者理解如何把物料流与库存控制落到系统参数中。压缩包仅含1个doc文件约572KB内容按主数据、策略、危险品与作业活动等章节组织涵盖仓库号控制参数、编号范围、存储类型/存储段/仓储箱结构以及存储类型搜索、固定仓位、开放存储、托盘、FIFO/LIFO、效期与部分托盘等策略并延伸到需求类别、装运类型、移动类型、库存转移与补货控制。文档目录层级清晰便于按配置路径查阅和对照系统操作。已有789人学习适合需要梳理WM配置框架、查漏补缺或作为项目实施参考的初中级顾问。1. 从一份 26 页的历史文档说起SAP WM 配置到底该记到什么粒度手里曾有一份 26 页的 SAP WM 配置文档目录齐整每一屏都有菜单路径但真要改一个存储类型的时候没人能靠它还原现场事务码一栏写着 SPRO传输号空着存储段 001 和 002 的分工只在截图边缘露出一行。SAP WM 配置的难点从来不是点开哪个菜单而是仓库号这一层控制参数、存储类型、仓位结构、上下架策略和移动类型之间那条看不见的线。所以下面按一份可交付配置文档的真实顺序来拆先把主数据骨架立住再落仓位结构然后接通策略搜索和移动类型最后给一份能直接拿去上线检查和答辩的验收清单。适合正在做 WM 方向课程设计、毕设方案或者接手了一份历史配置需要重新梳理的人。2. 总体设计仓库号 D01 的主数据骨架与编号范围规划2.1 控制参数七个上线后很难再改的开关仓库号这一层参数是整个 WM 配置里唯一“改一次就要清一次数据”的地方。文档里的入口是 SPRO 下 Materials Management → Warehouse Management → Master Data → Define control parameters for warehouse number事务码栏写的是 SPRO配置对象落到仓库号 D01。这一屏看着像填表实际上每个字段都在决定后面十几屏能开哪些功能我一般把它放在配置文档的最前面先把开关钉死再往下走。参数文档取值影响范围上线后改动的代价仓库号D01全模块主键不可改只能新建仓库号重量单位KG仓位容量计算基准有库存后改容量检查结果漂移第一、第二默认计量单位保留系统默认数量换算一般不动仓库活动激活是WM 是否接管库存移动关闭等于停用模块SU 管理激活是所有移动走存储单位Quant 带 SU 号有库存后改必须先清空 LQUA拦截方式B拦截作用在仓位与数量层影响盘点冻结的粒度部分拣配、容量检查、TR 缺批次检查均开启允许部分数量拣配上架前校验容量收货转 TR 时缺批次即报错容量数据未维护会直接报错存储单位管理这一项是整个配置的分水岭。打开之后每一次收货、上架、转储都在操作一个 SUQuant 上挂着 SU 编号转移请求转转移单时要按 SU 拆行关掉则只能做物料级库存仓位管理退化成“库存放在哪个类型里”的粗粒度。WMS 场景里通常都会打开代价是主数据工作量翻倍SU 类型、仓位类型、两者的分配关系一个都不能少。容量检查同理开了就必须维护仓位容量数据否则收货时系统算不出可用容量报错信息还会误导人去查策略。文档里还留了一行“Batch Missing (TR)”意思是转移请求创建时如果物料缺批次就报错。批次管理的物料越多这一项越应该开否则批次号会在 TR 阶段被空着带下去等到 TO 阶段才暴露排查成本翻几倍。2.2 编号范围与分配四类对象统一走一个号段编号范围在 OMLW 里维护文档给出的方案很克制转移请求、转移单、Quant、过账变更单四类对象间隔 01统一从 3000000001 到 3999999999。分配表里只有一行仓库号 D01 绑到间隔 01四类对象各自独立计数。对象间隔起始结束转移请求 TR0130000000013999999999转移单 TO0130000000013999999999Quant0130000000013999999999过账变更单0130000000013999999999四类对象用同一个数字区间并不冲突因为号码是按对象维度分配的TR 的 3000000001 和 TO 的 3000000001 是两条互不相干的流水。真正容易踩的是另外两件事一是在测试环境把号段跑满之后复制到生产二是不同仓库号被分到同一个间隔。前者的处理办法是把测试环境的号段整体挪到 2 字头生产留在 3 字头靠首位就能看出单据来源后者在分配表里一眼能看出来D01 只绑 01后续新增仓库号必须另起间隔而不是共用。3 字头给生产还有一个隐性好处业务看到 3 开头的单据号就知道是正式系统的数据导数据和排查时不需要再问一句“这是哪个环境的”。2.3 存储类型内务区和实货区分开建存储类型是 WM 里最容易被误解的一层。它不是“货架”而是“一类存储逻辑区域”。文档里一共列了 10 个可以分成两组看。存储类型名称SU 管理上架策略下架策略定位902GR Area From Vendor否无无采购收货暂存区911GI Area for Cost Center否无无领用发料暂存区914GI Area Production否无无生产发料暂存区916Shipping Area Deliveries否无无交货发货区921Stock Transfers (StLoc)否无无库存地点转储过渡922Posting Change Area否无无过账变更过渡998Init. entry of stock bal.否无无期初库存录入999Differences否无无盘点差异ZM1MKC Storage Area是PF实货存储主区ZM2MKC Issue Precedence Area是PF出库优先区9 字头那一组是内务区作用只有一个给每一个“半成品状态”的库存一个合法落点。采购收货先落 902检验或转储之后再进 ZM1生产发料从 ZM1 出来先进 914 再出发交货同理走 916。这些区不参与上下架策略搜索也不做 SU 管理因为库存本来就在这里停留几十分钟。缺了它们的直接后果是101 收货时系统找不到接收仓位报错信息还指向策略配置人会往完全错误的方向排查。ZM1 和 ZM2 才是真正接了策略的实货区。上架策略 P、下架策略 F 这两个字母不是随便填的P 走托盘类策略F 是 FIFO具体组合见第 4 章。ZM2 的定位是“出库优先”下架时先搜 ZM2 再搜 ZM1这样靠近发货口的库存先出去减少搬运距离。这个设计在小仓库里收益不明显一旦月出库量上去拣配路径能省下相当可观的人工。2.4 存储段在存储类型里再切一层存储段是存储类型内部的细分配置入口在 SPRO 同一路径下的 Define storage sections。文档里的划分很典型仓库号存储类型段段名称D01ZM1001Normal Bin AreaD01ZM1002Interim Bin AreaD01ZM1003Warehouse Working AreaD01ZM2001Total Area001 是常规仓位区所有自动搜索都落在这里002 是临时仓位区用于收货后等待确认、或者上架前的暂存003 是作业区人工干预时才会用到。这三个段的存在意义在于策略搜索可以被限制在某几个段里而不是把整个存储类型都当成候选。如果只建 001系统在收货时会给出“无可用仓位”但人眼看上去仓位明明有一堆空的问题就出在段和仓位的关联上。注意存储段一旦被仓位引用删除前必须先清理引用它的仓位否则 LS10 里看不到异常实际搜索时却会跳过整片区域。3. 仓位结构落地LS10 模板、SU 类型与三层分配关系3.1 10 位仓位码用 LS10 把区域和货位一次编进去SAP WM 的仓位码固定 10 位长短不能变所以编码规则必须在生成之前定死后面改一次就是一次数据迁移。生成入口是 LS10文档里给了六行模板每行包含仓库号、存储类型、段号、模板字符串、起始值、终止值和增量。仓库号 存储类型 段 模板 起始 终止 增量 D01 ZM1 001 AANNNNCCCC AA0101 AB0302 1 D01 ZM1 002 AANNNNCCCC BA0101 BD0302 1 D01 ZM1 003 AANNNNCCCC CA0101 CC0302 1 D01 ZM1 004 AANNNNCCCC DA0101 DB0302 1 D01 ZM1 005 AANNNNCCCC PA0101 PB0302 1 D01 ZM2 001 CNNCCCCCCC AAX01 X10 1模板字符串定义的是字符类型A 为字母、N 为数字、C 为字母数字混合10 位按位对齐。这样生成出来的仓位码自带语义前两位区分排或区中间数字段是货架与层位末段是同层内的位号。人工在手持终端上输入仓位码时前两位就能判断自己走对了区域没有。起止值这一栏必须跟仓库平面图核对不能拍脑袋扩。常见做法是每个排给一段独立起止中间留出余量货架拆改时新增一行而不是改老行——改老行会让已经存在的仓位失去对应关系LAGP 里变成孤儿数据后续盘点对不上。增量为 1 表示连号生成如果实际货位是隔一个用一个增量就该填 2。3.2 仓位类型与存储单位类型S1 覆盖哪几种位仓位类型描述的是“这个位子的物理形态”存储单位类型描述的是“放上去的那坨东西”。文档里仓位类型列了 D01、E1、B1、P1 四个SU 类型只建了一个 S1容量使用率填 1。类型编码说明仓位类型D01普通货位仓位类型E1临时位仓位类型B1翻包、整理位仓位类型P1托盘位文档只留了编码描述需在落地时补全SU 类型S1常规存储单位容量使用 1P1 这一行是个典型的历史文档遗留编码建了描述空着。这种情况不要直接删掉先在测试环境确认有没有仓位引用它有引用就补描述并在文档里标注补全日期没引用再考虑清理。空描述本身不影响功能但会让下一个接手的人反复确认属于典型的隐性成本。容量使用率填 1 意味着一个 S1 占满一个仓位的整份容量。如果实际业务里存在混装一个托盘位放两个小 SU这个值要往下调同时仓位容量主数据里的最大数量也得跟着调两个地方不一致时系统取的是更严格的那个。3.3 三层分配关系仓位类型、SU 类型、存储类型必须接成一条链这是整份配置里最容易漏、也最难靠肉眼发现的一环。系统在上架时要连续回答三个问题这个物料允许进哪个存储类型它的 SU 类型允许放进哪种仓位类型当前这个仓位类型下哪个仓位是空的三个答案分别来自三张分配表。分配关系维护内容SU 类型 → 仓位类型D01 下把 S1 分配给 E1、B1、P1SU 类型 → 存储类型ZM1 挂 S1ZM2 挂 S1仓位类型搜索按存储类型和段限定候选仓位类型只维护第一张上架搜索会找不到目标存储类型只维护第二张仓位类型搜索会在中途断掉两张都有但仓位主数据里没填仓位类型搜索同样会跳过这个仓位。三种情况报错信息几乎一样都是“未找到合适仓位”所以排查时建议按这条链的顺序一路查下来而不是从策略配置开始翻。提示可以把这三张表的检查做成一个自建报表上线前跑一遍比对着配置屏幕一屏屏看快得多第 6 章给了一个最小版本。3.4 拦截原因、特殊移动标识写“无变更”也是一种结论文档里 1.6、1.8、1.10、1.11、1.12 五处都写了“No changes”分别是拦截原因、存储类型标识、存储段标识、特殊移动标识、冻结库存标识。很多人写配置文档时会把这几段直接跳过觉得没改就没什么可写但这恰恰是文档价值最高的地方之一。拦截原因决定了盘点、质检、客户退货时能不能冻结某个仓位或某个 Quant。默认的几条通常够用如果业务有“待处理客诉”这类场景就要新增一条自定义原因并在盘点流程里对应上。特殊移动标识影响的是特殊库存寄售、客户库存、退回包装上架时走不走常规策略不改就等于所有特殊库存和自有库存走同一条路径账面看着没问题实际仓位会混。规范的写法是每条都留一行评估人、评估日期、结论、原因。结论是“不启用”也要写清楚为什么不启用。这份文档三年后大概率会落到一个没见过现场的人手里那一行“评估过不需要”能省掉他半天时间。4. 上下架策略配置OMLY、OMLZ、OMM1 三张搜索表的接线顺序4.1 存储类型搜索 OMLY搜索顺序是左到右命中即停OMLY 是策略配置里第一张要激活的表作用是在上架或下架时决定候选存储类型的先后顺序。表里的关键列有四个仓库号、标识区分上架与下架、参考值通常对应移动类型或库存类型、以及从 1 到 9 的搜索顺序列。仓库号标识参考搜索次序解读D01200200200采购收货类直接指向收货暂存区D012K002—带 K 标识的收货场景收敛到 002D012Q002—带 Q 标识的收货场景收敛到 002D01A00ZM2 → ZM1常规上架先试出库优先区再进主存储区D01AK00ZM1特殊库存上架只进主区D01AQ00ZM1质检相关上架只进主区D01E00ZM1下架只从主区取D01EK00ZM1特殊库存下架只从主区取D01EQ00ZM1质检库存下架只从主区取这张表的读法是“从左往右找第一个能放下或有货可拣的类型就用找不到再往右”。所以 ZM2 排在 ZM1 前面不是笔误是让出库优先区先被填满等下架时自然就先取那一批。反过来如果业务希望主存储区先满把顺序对调即可不需要改任何代码。带 K 和 Q 的几行是用来收紧范围的某些收货或发料不允许进 ZM2就走这几行只搜 ZM1。这类细化行的存在本质上是用配置表达业务的例外规则比在用户出口里写 if-else 好维护得多。4.2 参考移动类型清单先把上架下架方向钉死OMLY 里的参考值最终要落到具体移动类型上所以移动类型清单是 WM 的“路由表”。文档里列了 60 多条核心的十几条如下。移动类型说明方向101采购订单收货上架102冲销采购订单收货下架103生产订单收货上架201发料到成本中心下架261发料到生产订单下架262冲销生产订单发料上架301 / 302工厂间转储发出 / 接收下架 / 上架311 / 312库存地点间转储发出 / 接收下架 / 上架319生产补货上架501 / 502无采购订单收货及冲销上架 / 下架521 / 522生产收货及冲销上架 / 下架551 / 552报废及冲销下架 / 上架561期初库存录入上架601 / 602交货发货及冲销下架 / 上架651通过交货单退货上架711 / 712盘点差异负 / 正下架 / 上架999仓库监督、差异兜底双向方向这一列决定了移动类型在 OMLY 里挂在上架行还是下架行挂错的表现很有迷惑性单据能过账但库存进了错误的区域或者下架时系统说“该物料无库存”而实际上有。排查时直接拿移动类型去 OMLY 里搜一次看它在哪一行出现比从业务单据一路倒推快。注意冲销类移动类型102、262、552 等经常被漏配。它们的数量和正数一样真实漏配的直接后果是冲销做不掉单据卡在中间状态。4.3 存储段搜索 OMLZ 与仓位类型搜索 OMM1什么时候才该打开三张搜索表有先后依赖先按 OMLY 定存储类型再按 OMLZ 在这个类型里定段最后按 OMM1 在段里定仓位类型。后两张不是必须开开得越早配置组合越复杂。OMLZ 的配置对象是仓库号、存储类型、段、分类值。文档里 ZM1 只保留了一条常规记录指向 001 常规仓位区002 和 003 不参与自动搜索。这个取舍是对的临时仓位和作业区本来就是给人用的一旦进了自动搜索系统会把手动放置的库存当成可用候选上架位置变得不可预测。OMM1 要想起作用前置条件是 3.3 里那两张分配表都维护完整。文档里在 ZM1 下把 S1 分配给 E1、B1、P1同时在 ZM2 也挂了 S1。如果某个仓位在主数据里没填仓位类型OMM1 会直接跳过它于是空仓位策略看上去失效实际上是被过滤掉了。我一般的上线节奏是第一轮只开 OMLY把收货和发料跑通确认库存流向正确之后再开 OMLZ等仓位主数据完整、仓位类型填满最后才开 OMM1。分三批开的好处是每一批出问题都能定位到具体哪张表而不是三张表一起怀疑。4.4 策略组合固定仓位、加库存、空仓位、FIFO 怎么排优先级存储类型上挂的策略字母是一套编号展开之后是一组具体算法。文档里涉及的有固定仓位、开放存储、加到现有库存、空仓位、托盘策略、散装策略、FIFO、严格 FIFO、LIFO、零头托盘、大小量、有效期以及两个自定义扩展位。实际项目里很少全部启用常见的组合是ZM1 用托盘策略做上架加库存策略作为第二优先下架用 FIFO对有效期敏感的物料再叠一层有效期策略。加库存策略能显著提高仓位利用率代价是 FIFO 精度下降——同一个仓位里新老批次混放下架时按入库日期排序仍然能取到老的但实物是不是真的按顺序取的得靠现场执行。对食品、医药这类强有效期场景宁可牺牲利用率也要开严格 FIFO。自定义扩展是留给标准策略覆盖不了的场景的比如“同一物料必须集中在同一排货架”。文档里 2.11 和 2.18 两节都写着“参照开发需求”落地时通常做成一个用户出口在标准搜索返回候选仓位之前插一段自己的筛选逻辑。* 自定义上架筛选示意同物料优先集中存放 * 增强点的具体名称按系统版本在 SMOD/CMOD 里查这里只给结构 FORM putaway_check USING is_quant TYPE lqua CHANGING cv_lgpla TYPE lagp-lgpla. DATA: lv_exist_bin TYPE lagp-lgpla. 1. 在目标存储类型里找已经存了同物料的仓位 SELECT SINGLE lgpla FROM lqua INTO lv_exist_bin WHERE lgnum is_quant-lgnum AND lgtyp is_quant-lgtyp AND matnr is_quant-matnr AND lgpla space. 2. 命中就直接返回容量校验仍交给标准逻辑做 IF sy-subrc 0. cv_lgpla lv_exist_bin. RETURN. ENDIF. 3. 没命中就清空返回值让标准空仓位策略继续找 CLEAR cv_lgpla. ENDFORM.这段代码只做一件事查到同物料已有库存的仓位就优先返回查不到就放行。三个参数里is_quant是当前待上架的库存记录包含仓库号、存储类型、物料号cv_lgpla是返回的仓位号为空表示不干预。判断逻辑里刻意没有做容量计算因为容量属于标准逻辑的职责重复实现一遍必然和标准逻辑打架。表名以系统为准字段名在 SE11 里看 LQUA 和 LAGP 确认一遍再写。4.5 库存转储、补货控制与自动 TO 创建文档第 4 章讲的是活动配置包含需求类别、装运类型、移动类型、库存转储与补货控制、自动 TO 创建、确认六块。前两块主要服务于出货和运输场景WM 这边真正天天用的是后三块。库存转储与补货控制决定的是当某个存储类型的库存低于下限时系统会不会自动生成一笔补货的转移请求。生产补货走 319线边库存降到阈值就触发从 ZM1 搬到 914。阈值设在存储类型或物料层级设太松会频繁触发设太紧会断料我一般按历史消耗量的一个班次用量来定而不是用月均。自动 TO 创建是效率开关转移请求生成之后是立刻转成转移单还是等后台作业批量转。前者实时性好适合紧急发料后者能合并同区域的任务减少叉车空跑。常见做法是收货类实时转、补货类批量转批量作业频率和现场节拍对齐。确认环节要盯的是差异。TO 确认之后 Quant 才真正变化确认数量与TO 数量不一致时系统会生成差异记录落到 999 存储类型。文档里 711 和 712 两个移动类型就是处理盘点差异的负数走 711、正数走 712。这两个不动的话差异会一直挂在 999 里账面库存和实物越差越多。5. 避坑与排查WM 配置里最容易翻车的五个点5.1 SU 管理开关在有库存之后才想起来改现象测试环境一切正常生产上线后想补开存储单位管理系统直接拒绝或者要求先清空库存。原因SU 管理是仓库号级别的一次性决策Quant 表里已经存在不带 SU 号的记录开开关时系统无法为历史库存补建 SU。解决这个开关必须在主数据配置阶段定案测试环境里用真实库存量演练一遍完整的收货、上架、转储、下架确认 SU 拆分粒度符合现场习惯之后再往生产推。已经上线又想改的只能新建仓库号重新导库存代价极高。5.2 仓位生成了收货却报“无可用仓位”现象LS10 里明明生成了一大片空仓位收货时系统仍然说找不到合适仓位。原因大概率是三张分配表断链——仓位主数据里没填仓位类型或者 SU 类型没有分配给该仓位类型或者存储类型没有挂上这个 SU 类型。三条里断一条搜索就会静默跳过。解决按 3.3 的顺序一路查下来先确认仓位有类型再确认 SU 类型与仓位类型的分配最后确认存储类型挂了 SU 类型。用第 6 章那个检查报表跑一遍比逐屏对快得多。5.3 策略搜索没命中但没有任何报错现象上架成功仓位却不是预期的那一片或者下架取到了不该取的批次。原因OMLY 里某个参考值配了一条兜底行比如指向 999搜索在正常候选之外命中了兜底看起来“跑通了”实际走错了路。另一种情况是参考移动类型那一栏空着系统按默认顺序搜谁排在前面谁先中。解决拿一张测试单据在测试环境跑逐个存储类型看搜索日志同时把 OMLY 里所有参考值为空的行走一遍确认它们是有意留空而不是漏填。5.4 号段快满或对象共用同一号段现象转移单创建失败提示号码范围已满或者两类单据的号码看起来完全一样对账时无法区分。原因OMLW 里四类对象共用一个间隔但没做区分规划测试数据复制到生产时把号段一起带过去了。解决间隔按对象和环境分开测试用 2 字头生产用 3 字头每次环境刷新后检查一次当前号码水位别等到上线当天才发现只剩几万个号。5.5 FIFO 开了但老批次一直不动现象下架策略明明配了 FIFO实际出库总是新批次先走。原因加库存策略的优先级高于 FIFO同物料新入库时被塞进了已有库存的仓位物理上就混放了下架按入库日期排序只能排到批次层面物理位置错了照样取错。解决对强 FIFO 的物料关掉加库存策略或者改用严格 FIFO 并按仓位隔离批次同时在上架策略里限制单仓位只允许一个批次牺牲利用率换准确性。6. 验收与交付用一份配置文档做上线检查和答辩配置文档写完不算交付能被别人拿去复现才算。我的验收清单分四段每段对应一个可以被问倒的问题。验收段检查内容通过标准主数据仓库号参数、编号范围、存储类型、存储段是否与文档一致逐项对照无“待定”项仓位结构仓位模板、起止值、仓位类型、SU 类型分配生成的仓位数量与平面图一致策略OMLY 搜索顺序、OMLZ 与 OMM1 是否激活用测试单据跑通上架与下架各三条路径活动移动类型方向、自动 TO 创建、确认与差异处理冲销类单据全部能过账主数据这一段最容易被糊弄过去。文档里每一屏都应该有事务码、维护人、传输号三样东西缺传输号就等于没有证据证明这个配置进过生产。仓位结构这一段要拿平面图对数不是看系统里生成了多少条而是看生成的编号能不能对上现场贴的标签对不上就是一次返工。策略那一段建议用固定脚本跑采购收货一张、生产发料一张、库存地点转储一张三张单据覆盖上架、下架、双向三类路径每张都记录系统选中的存储类型和仓位。跑完之后再补一个仓位体检报表。* 上线前仓位体检挑出被冻结或缺少仓位类型的可用仓位 * 字段名以系统版本为准SE11 里看 LAGP 确认 REPORT zmm_wm_bin_check. TYPES: BEGIN OF ty_bin, lgnum TYPE lagp-lgnum, lgtyp TYPE lagp-lgtyp, lgpla TYPE lagp-lgpla, lptyp TYPE lagp-lptyp, skzua TYPE lagp-skzua, END OF ty_bin. DATA: lt_bin TYPE TABLE OF ty_bin. SELECT lgnum lgtyp lgpla lptyp skzua FROM lagp INTO TABLE lt_bin WHERE lgnum D01. 换成实际仓库号 LOOP AT lt_bin INTO DATA(ls_bin). IF ls_bin-lptyp IS INITIAL. WRITE: / 缺仓位类型:, ls_bin-lgtyp, ls_bin-lgpla. ENDIF. IF ls_bin-skzua X. WRITE: / 仓位被冻结:, ls_bin-lgtyp, ls_bin-lgpla. ENDIF. ENDLOOP.这段报表只做两件事找出没填仓位类型的仓位找出被冻结的仓位。lgnum是筛选条件改成实际仓库号lptyp是仓位类型为空说明 OMM1 会跳过它skzua是冻结标识为 X 的仓位同样不参与搜索。输出结果应该和文档里的仓位清单逐条对得上对不上就说明有仓位在配置之外被手工改过。答辩场景下讲述顺序建议跟配置文档的顺序反着来先说清楚这份方案解决的是哪几个具体问题收货找不到仓位、出库取错批次、盘点差异挂账再展开主数据骨架和策略链路最后落到验收清单。评审最想听的不是你配了哪些屏而是你怎么证明配对了。把那张三张搜索表的依赖关系画在纸上讲一遍比念五十页配置项有说服力。从我自己的教训说起早年做第一个 WM 方案配置文档写到 40 页上线前一晚发现 ZM2 的 SU 类型分配漏了一行结果整个出库优先区从上架搜索里被静默跳过白天空跑了一整天的叉车。从那以后我每次交付前都强制走一遍三张分配表的检查报表不管多急哪怕只跑 ZM1 一个存储类型。希望你不用靠一次空跑一整天的叉车来记住这件事这套结构拿去改改就能用。本文还有配套的精品资源点击获取