SAP WM配置详解:从2004年底稿到可验证方案
简介:面向SAP仓储顾问与MM/WM实施人员的一份WM模块配置详解文档,聚焦仓库号主数据与存取策略两大核心配置域,帮助读者理清从基础参数到策略激活的完整配置脉络。文档按MASTER DATA与STRATEGIES两大章节展开,涵盖仓库号控制参数、编号范围与间隔、存储类型、存储段、仓位类型与结构、存储单位类型及各类指示器,并系统讲解存储类型搜索、存储段搜索、仓位类型搜索、固定仓位、开放存储、库存追加、空仓位、托盘及先进先出等策略的激活与定义,另附危险品、活动类别、移动类型与确认等章节。资源包共1个doc文件,约572KB,为英文配置文档,目录层级清晰,便于按章节对照系统逐项配置。已有789人学习下载,适合需要系统梳理WM配置逻辑、查漏补缺或作为项目实施参考的中高级读者。
1. 一份 2004 年的 WM 配置底稿,为什么今天还值得翻
手里这份《SAP WM 配置資料詳解》不是教程,是一份实打实的项目落地文档:26 页,创建日期 2004-06-22,打印日期 2022-03-22,抬头写着 WMS_CON_000,密件标识,配置层级 Local,环境 T11/210。它记录的是一个仓库号 D01 从主数据到策略、再到作业活动的完整配置路径,每一步都带菜单路径、事务码、责任人和传输号栏位。说白了,这是一份能照着在 SPRO 里点出来的配置清单,而不是讲概念的 PPT。
它解决的是很具体的问题:接手一个 WM 项目,或者要给现有仓库补一套上架下架策略,你知道该先配什么、后配什么、哪些字段是牵一发动全身的。适合谁?做 SAP MM/WM 顾问的、做仓储系统实施的、以及需要读懂老项目配置逻辑的运维。下面我按这份文档的章节顺序,把它拆成能复现的步骤,顺带把文档里没写透、但实操中一定会翻车的地方补上。
2. 主数据先行:仓库号、编号范围与存储类型怎么定
WM 的配置有个铁律:主数据没立住,后面所有策略都是空中楼阁。这份文档第 1 章把主数据拆成 12 个小节,我挑真正影响后续的几块讲透,剩下的指示器类配置(1.6、1.8、1.10、1.11、1.12)文档明确写了 No changes,说明项目沿用了模板默认值,这类就别自作聪明去改。
2.1 仓库号控制参数:SPRO 里那几个默认值决定全局行为
文档 1.1 的菜单路径是 Materials Management -> Warehouse Management -> Master Data -> Define control parameters for warehouse number,事务码 SPRO。它给出的系统方案是:仓库号 D01,重量单位 KG,第一默认单位 L,第二默认单位 A,分散仓库管理激活,SU management active 为 Yes,Blocking method 为 B,Partial Picking 和 Capacity Check 留空,Batch Missing (TR) 也留空。
这几个参数不是随便填的。SU management active = Yes 意味着这个仓库启用了存储单位管理,后面 1.9 定义存储单位类型、2.3 做存储箱类型搜索才有意义;如果这里选 No,整条 SU 相关的策略链直接失效。Blocking method = B 是冻结方式,B 通常对应按存储箱冻结,和后面 1.6 的冻结原因配合使用。重量单位和默认单位看着不起眼,但它们决定了库存重量计算和数量显示,改一次要评估所有已存在的物料主数据。
实操上我一般会先建一个配置检查表,把文档里每个「System Solution」列的值抄进去,配完一项勾一项。因为 SPRO 的路径深,配错一个字段往往要到测试阶段才暴露,那时候回溯成本很高。
配置检查表(节选,按文档 System Solution 列整理) 仓库号 D01 重量单位 KG 第1默认单位 L 第2默认单位 A 分散仓库管理 激活 SU管理 Yes 冻结方式 B 部分拣配 空 能力检查 空 批次缺失(TR) 空这张表的价值在于:它是你和客户、和测试同事对齐口径的唯一依据。文档里每个配置项都留了 Transport Number 栏,说明这套配置是要走传输请求进生产环境的,配置值一旦定稿,改动就得走变更流程。
2.2 编号范围:OMLW 里的分配与区间,别让 TR 和 TO 撞号
文档 1.2 用事务码 OMLW 定义编号范围,分两步:1.2.1 Assignment 和 1.2.2 Intervals。分配表里列了四类对象——WhQuant、NR-TO、NR-TR、Posting Change、RefNo,系统方案统一给到 SU、VA、D01,编号段都是 01。区间表更直接:Interval 01,From 3000000001,To 3999999999,四类对象(Transfer requirement、Transfer order、Quant、Posting change notice)共用这个区间。
这里有个容易被忽略的点:四类对象共用同一个号段,意味着 TR、TO、Quant、过账变更通知在 3000000001 到 3999999999 之间各自独立取号,不会互相占用,但号段是同一段。好处是号段规划简单,坏处是如果哪天要做号段隔离审计,得回头拆。文档这么配,说明项目规模不大、对号段隔离没硬要求。
OMLW 编号范围配置(按文档 1.2.2) Interval No : 01 From : 3000000001 To : 3999999999 对象 : Transfer requirement / Transfer order / Quant / Posting change notice配的时候注意:编号范围一旦有业务数据产生就不能随便改小 To 值,否则新单据取号会失败。我见过有项目为了「整齐」把号段改成从 1 开始,结果历史数据全在 30 亿段,报表对账直接乱套。血泪经验是:号段规划在蓝图阶段定死,上线后只增不改。
2.3 存储类型与存储段:ZM1、ZM2 的放置策略和移除策略
文档 1.3 用 SPRO 定义存储类型,给出的清单很能说明这个仓库的定位:902 GR Area From Vendor、911 GI Area for Cost Center、914 GI Area Production、916 Shipping Area Deliveries、921 Stock Transfers (StLoc)、922 Posting Change Area、998 Init. entry of stock bal.、999 Differences,这些是系统标准的中间存储类型,基本不用动。真正要配的是两个业务存储类型:ZM1「MKC Storage Area」,SU mgmt active,放置策略 P,移除策略 F;ZM2「MKC Issue Precedence Area」,同样 SU 管理激活,放置 P,移除 F。
P 和 F 这两个策略码是整份文档的骨架。P 对应上架策略,F 对应下架策略,具体走哪种算法,要到第 2 章 2.1 的存储类型搜索里用搜索标识去激活。也就是说,1.3 里填的 P/F 只是「这个存储类型允许哪类策略」,真正生效与否看 2.1 的搜索顺序表。很多人配完 1.3 就以为策略生效了,测试时发现系统还是乱放,问题就出在 2.1 没激活。
文档 1.4 定义存储段,D01 仓库下 ZM1 拆成 ZM1001 Normal Bin Area、ZM1002 Interim Bin Area、ZM1003 Warehouse Working Area,ZM2 下是 ZM2001 Total Area。存储段是存储类型内的细分,作用是让上架搜索能定位到更细的区域。比如 ZM1002 作为临时存储段,通常配合 2.2 的存储段搜索使用,收货时先落临时区再转正式货位。
2.4 存储箱类型与箱结构:LS10 里的模板串是硬约束
文档 1.5 定义存储箱类型,D01 下三个:D01 Normal Bin Type、E1 Interim Bin、B1 Repacking Bin Area、P1。1.7 用事务码 LS10 定义存储箱结构,这是整份文档里技术含量最高的一段,因为它用的是结构模板串。
以 ZM1001 为例,模板是 AANNNNCCCC,起始 AB0101,结束 AB0302,增量 11,后面还有一段 0101 到 0302、增量 11。ZM1006 的模板是 CNNCCCCCCC,起始 AAF01,结束 F99,增量 01。ZM1007 是 AAACCCCCCC,起始 ABCJGQ,结束 JGQ111。ZM2001 是 CNNCCCCCCC,起始 AAX01,结束 X10,增量 01。
LS10 存储箱结构(按文档 1.7 节选) 存储类型 模板 起始 结束 增量 ZM1001 AANNNNCCCC AB0101 AB0302 11 ZM1002 AANNNNCCCC BA0101 BD0302 11 ZM1003 AANNNNCCCC CA0101 CC0302 11 ZM1004 AANNNNCCCC DA0101 DB0302 11 ZM1005 AANNNNCCCC PA0101 PB0302 11 ZM1006 CNNCCCCCCC AAF01 F99 01 ZM1007 AAACCCCCCC ABCJGQ JGQ111 - ZM2001 CNNCCCCCCC AAX01 X10 01模板串里 A 是字母位、N 是数字位、C 是字母或数字位,这是 SAP 存储箱编号的通用规则。起始和结束值必须符合模板的字符类型,否则 LS10 保存时报错。增量 11 意味着编号按 11 递增(AB0101、AB0112、AB0123……),不是按 1 递增,这个细节在批量生成货位时直接影响货位总数。我一般会先用 LS10 的模拟功能跑一遍,确认生成的货位数量和编号规则符合库房实际排布,再正式生成,因为货位一旦生成并产生库存,删除非常麻烦。
3. 策略激活:OMLY、OMLZ、OMM1 三张搜索表怎么串起来
第 2 章是这份文档的核心,18 个小节里真正需要动手的是 2.1 到 2.3 的搜索激活,以及 2.9 的托盘策略。其余小节大量写着 See 1.3 或 refer directly to customising,说明项目沿用了标准策略,没有做增强。这一章我按「搜索顺序 → 策略参数 → 增强边界」三层来讲。
3.1 存储类型搜索 OMLY:搜索标识和移动类型引用的对应关系
文档 2.1 用事务码 OMLY 激活存储类型搜索。表里列的是仓库号 D01、ActTy(激活类型)、Ind(搜索标识)、SS(存储类型)、Stor(存储段)、WP Ref 这几列。具体值:D01 下 200 对应 200,2K 对应 200,2Q 对应 200,A 对应 ZM2 和 ZM1,AK 对应 ZM1,AQ 对应 ZM1,E 对应 ZM1,EK 对应 ZM1,EQ 对应 ZM1。
这串映射的意思是:当移动类型带某个搜索标识进来时,系统按顺序去这些存储类型里找货位。比如搜索标识 A 先找 ZM2 再找 ZM1,说明 ZM2 是优先区(Issue Precedence Area 这个名字也印证了),ZM1 是后备区。200 系列对应的是中间存储类型,2K、2Q 是标准搜索标识。
紧接着文档列了一张移动类型引用表,这是 OMLY 里最容易被跳过、但最不能错的部分。D01 下 101 对应 101(Goods receipt for pur.or),102 对应 102(Cancel GR),103 对应 103(GR production order),201 对应 201(GI to cost center),261 对应 261(GI to production order),301 对应 301(Stock tr.plant st.rem.),311 对应 311(Stock tr.stor.loc.st.rem),501 对应 501(GR without purchase order),551 对应 551(Scrapping),601 对应 601(GI to delivery note),等等,一直到 999 对应 999(Warehouse supervision)。
OMLY 移动类型引用(按文档 2.1 节选) 仓库号 移动类型 引用移动类型 说明 D01 101 101 采购订单收货 D01 102 102 冲销采购订单收货 D01 103 103 生产订单收货 D01 201 201 发料到成本中心 D01 261 261 发料到生产订单 D01 301 301 工厂间转储(库存移除) D01 311 311 存储地点间转储(库存移除) D01 501 501 无采购订单收货 D01 551 551 报废 D01 601 601 发货到交货单 D01 999 999 仓库监控这张表的作用是告诉系统:某个移动类型发生时,用哪个「引用移动类型」去查存储类型搜索表。大部分情况是 1:1 映射,但文档里也有例外,比如 202 对应 999、256 对应 999、552 对应 999、856 对应 999、964 对应 999,这些是冲销类移动类型,统一引用到 999 走仓库监控逻辑。配错这一列,收货会找不到货位,报错信息通常是「Storage type search failed」,排查时第一件事就是回 OMLY 看移动类型引用对不对。
3.2 存储段搜索 OMLZ 与存储箱类型搜索 OMM1:两级过滤
文档 2.2 用 OMLZ 激活存储段搜索,表里只有一行有效数据:D01、ZM1、0001、002。含义是仓库 D01 的 ZM1 存储类型,存储段 0001,搜索类 002。存储段搜索是在存储类型搜索确定了大区域之后,进一步缩小到具体存储段,比如先落到 ZM1,再通过 OMLZ 定位到 ZM1001 正常货位区。
文档 2.3 用 OMM1 激活存储箱类型搜索,分四步:2.3.1 定义存储箱类型(D01、E1、B1、P1),2.3.2 定义存储单位类型(引用 1.9,D01 下 S1 Normal SU,容量使用 1),2.3.3 把存储单位类型分配给存储箱类型(D01 下 S1 分配给 E1、B1、P1),2.3.4 把存储单位类型分配给存储箱类型(D01 下 ZM1 分配 S1,ZM2 分配 S1)。
OMM1 存储箱类型搜索配置(按文档 2.3) 步骤 内容 2.3.1 存储箱类型:D01 / E1 / B1 / P1 2.3.2 存储单位类型:S1(Normal SU,容量使用 1) 2.3.3 S1 分配给 E1、B1、P1 2.3.4 ZM1 分配 S1,ZM2 分配 S1这两级搜索的逻辑是:OMLY 决定去哪个存储类型,OMLZ 决定去哪个存储段,OMM1 决定用哪种存储箱类型装。三层都配通,系统才能自动找到「ZM1 存储类型下 ZM1001 存储段里一个能装 S1 托盘的 E1 类型货位」。任何一层缺失,上架就会退化成手工指定货位,自动化程度直接归零。
3.3 托盘策略与排序序列:OMLM 和 2.9 的配合
文档 2.4 用 OMLM 定义上架排序序列(Cross-line Stock Putaway),表头有 WhTy 和 1234567890 两列,但内容为空,说明这个项目没有启用跨行上架排序。2.9 定义托盘策略,2.9.1 存储类型控制引用 1.3,2.9.2 定义 Bin Sections 为空,2.9.3 把 Bin 分配给存储单位类型。
托盘策略在标准 WM 里对应的是 P 策略下的具体算法,文档 2.9 大量引用 1.3,说明托盘上架走的是存储类型里配的放置策略 P,没有额外参数。这里要注意:2.9.2 Bin Sections 为空不代表可以跳过,如果后续要按货位分区做上架限制(比如重货只能放底层),就得回来补 Bin Sections,否则系统不知道货位的分区属性。
2.5 到 2.8 以及 2.10 到 2.17 这一大段,文档统一写 See 1.3 或 refer directly to customising,覆盖固定货位、开放存储、追加现有库存、空货位、散装、FIFO、严格 FIFO、LIFO、部分托盘、大小数量、有效期等策略。这些策略在标准系统里都是通过存储类型的放置/移除策略码加搜索标识组合实现的,不需要单独建表。真正需要写代码的是 2.11 和 2.18 的策略增强,文档写的是 Develop extensions for Putaway/Picking strategies,并注明 Refer to programming request, if needed,说明这个项目没有做增强,全部走标准。
提示:策略增强(2.11、2.18)属于 ABAP 开发范畴,标准策略满足不了才做。判断标准很简单:如果业务规则能用「存储类型 + 搜索标识 + 排序序列」表达,就别写增强;写进去的增强每升级一次都要回归测试,维护成本远高于配置。
4. 作业活动与移动类型:第 4 章的配置边界在哪
文档第 3 章 Hazardous Materials 直接标 NA,说明这个仓库不涉及危险品管理,整章跳过。第 4 章 Activities 是作业层面的配置,包括 4.1 需求类别、4.2 装运类型、4.3 移动类型、4.4 库存转储与补货控制、4.5 自动 TO 创建、4.6 确认。这一章文档给的内容比前两章薄,但它是把前面所有主数据和策略串起来跑通的关键。
4.1 需求类别与装运类型:4.1 和 4.2 的配置逻辑
4.1 Define requirement categories 定义需求类别,4.2 Define Shipment types 定义装运类型。这两个在标准 WM 里主要用于交货单和装运场景的仓库作业控制。文档没有给出具体值,只列了菜单路径和事务码栏位,说明这部分要么沿用模板默认,要么在项目里没做定制。
实操上,需求类别决定的是「什么样的需求会触发仓库作业」,装运类型决定的是「装运流程怎么走」。如果仓库只做简单的收货上架和发货下架,这两块可以不动;一旦涉及交货单驱动的拣配、包装、装运,就得逐项核对。我一般会先问清楚业务有没有「按交货单拣配」的需求,有才去动 4.1 和 4.2,没有就保持默认,避免引入不必要的复杂度。
4.2 移动类型与自动 TO 创建:4.3 到 4.5 的联动
4.3 Define movement types 定义移动类型,这是 WM 和 MM 集成的核心。文档 2.1 的移动类型引用表已经列了 101、102、103、201、261、301、311、501、551、601 等一大批,4.3 要做的是确认这些移动类型在 WM 侧的配置和 MM 侧一致。常见坑是:MM 侧移动类型改了,WM 侧没同步,结果收货时 MM 过账成功、WM 创建 TR 失败,库存挂在中间状态。
4.4 Define stock transfers and Replenishment control 定义库存转储和补货控制,4.5 Set up autom.TO creation for TRs/post.chge notices 设置 TR 和过账变更通知的自动 TO 创建。这两步决定的是「TR 生成后要不要自动转 TO」。自动创建能省人工,但前提是策略配置足够可靠,否则系统自动生成的 TO 会指向错误货位,反而增加纠正成本。
作业活动配置检查顺序(按文档第 4 章) 1. 4.1 需求类别:确认是否需要交货单驱动 2. 4.2 装运类型:确认装运流程是否定制 3. 4.3 移动类型:与 MM 侧逐项核对 4. 4.4 库存转储/补货:确认补货触发条件 5. 4.5 自动 TO 创建:策略稳定后再开启 6. 4.6 确认:确认方式与权限绑定4.6 Confirmation 确认,涉及 TO 执行后的确认方式(在线确认、后台确认、差异确认)。这块和权限绑定很紧,谁有权确认、确认后能不能改,都要在配置阶段定清楚。文档在这一节没有展开,但从整份文档的密件属性和传输号栏位看,这个项目的配置是走正式变更流程的,确认相关的权限设计应该在权限矩阵里单独维护。
5. 避坑清单:这份配置文档里没写、但一定会踩的五个坑
配置文档的特点是「写结果不写过程」,它告诉你最终值是什么,但不告诉你为什么是这个值、改错了会怎样。下面五条是我照着这类文档复现时反复踩过的,按「现象 → 原因 → 解决」写。
5.1 收货找不到货位,报 Storage type search failed
现象:移动类型 101 收货,MM 过账成功,WM 创建 TR 时报存储类型搜索失败。
原因:OMLY 里移动类型引用没配,或者配了但搜索标识对应的存储类型链断了。文档 2.1 的引用表里 101 对应 101,如果这一行漏配,系统不知道用哪个搜索标识去查。
解决:回 OMLY 检查移动类型引用列,再检查搜索标识 A、AK、E、EK 对应的存储类型是否包含 ZM1/ZM2,最后确认 1.3 里 ZM1/ZM2 的放置策略 P 是否激活。
5.2 LS10 生成货位报模板不匹配
现象:LS10 保存存储箱结构时提示模板与起始/结束值不符。
原因:模板串的字符类型和起始值对不上。比如模板 AANNNNCCCC 要求前两位字母、中间四位数字、后四位字母或数字,起始值 AB0101 符合,但如果写成 A10101 就会报错。
解决:逐位核对模板串和起始/结束值,增量值也要符合模板的数字位规则。批量生成前先用 LS10 的模拟功能验证。
5.3 自动 TO 创建后货位指向错误
现象:TR 自动转 TO,但 TO 里的目标货位不是预期货位。
原因:策略搜索顺序配错,或者排序序列(OMLM)没配导致系统按默认顺序取第一个可用货位。
解决:先关掉自动 TO 创建,手工创建几笔 TO 验证策略走向,确认 OMLY、OMLZ、OMM1 三层搜索都按预期工作,再重新开启自动创建。
5.4 编号范围耗尽导致新单据无法创建
现象:创建 TR 或 TO 时报编号范围已满。
原因:OMLW 号段设得太窄,或者历史数据占用了大量号段。文档里号段是 3000000001 到 3999999999,接近 10 亿个号,正常项目够用,但如果测试环境反复压测,可能提前耗尽。
解决:OMLW 里扩展 To 值,注意只能扩不能缩,且要评估对已有单据的影响。
5.5 存储单位管理关闭导致策略链失效
现象:配了 SU 相关策略,但上架时系统不按 SU 类型搜索货位。
原因:1.1 仓库号控制参数里 SU management active 被设成 No,或者 1.9 存储单位类型没分配给存储箱类型。
解决:检查 1.1 的 SU management 开关,再检查 2.3.3 和 2.3.4 的分配关系,确保 S1 既分配给了存储箱类型,也分配给了存储类型。
6. 从配置文档到可验证方案:我的复现套路
拿到这类配置文档,我从来不是从头到尾照着点一遍,而是先做一件事:把文档里的「System Solution」列全部抽出来,做成一张配置基线表,然后在测试客户端里按「主数据 → 策略 → 作业」三段式复现,每段配完立刻用一笔真实业务跑通再进下一段。这个习惯是被坑出来的——早年我试过一口气配完再测,结果报错时根本分不清是主数据错了还是策略错了,排查花的时间比配置还长。
具体到这份文档,我的验证顺序是这样的:先配 1.1 仓库号控制参数和 1.2 编号范围,用一笔 561 期初库存导入验证编号范围能正常取号;再配 1.3 存储类型、1.4 存储段、1.5 存储箱类型、1.7 箱结构,用 LS10 生成少量货位,手工做一笔 101 收货看能不能落位;然后配 2.1 OMLY、2.2 OMLZ、2.3 OMM1,把自动 TO 创建打开,跑 101、261、601 三种典型移动类型,确认上架和下架都按预期走;最后配第 4 章的作业活动,做一轮完整的收货、上架、拣配、发货闭环。
| 验证阶段 | 配置范围 | 验证动作 | 通过标准 |
|---|---|---|---|
| 第一阶段 | 1.1、1.2 | 561 期初导入 | 编号正常取号,无报错 |
| 第二阶段 | 1.3、1.4、1.5、1.7 | LS10 生成货位 + 101 收货 | 货位生成符合模板,收货能落位 |
| 第三阶段 | 2.1、2.2、2.3 | 101、261、601 三种移动类型 | 上架下架均按搜索顺序走 |
| 第四阶段 | 第 4 章 | 收货到发货完整闭环 | 全流程无手工干预 |
这套顺序的好处是每一步都有明确的通过标准,出错时能立刻定位到是哪一段的问题。比如 101 收货落不了位,如果前两阶段都过了,问题一定在 2.1 到 2.3 的搜索配置,不用回头查主数据。
还有一个细节值得说:文档里大量出现「See 1.3」这种交叉引用,说明配置项之间是强耦合的。复现时不要孤立地看某一节,比如 2.9 托盘策略引用 1.3 的存储类型控制,2.3.2 引用 1.9 的存储单位类型,这些引用关系就是配置的依赖图。我一般会在基线表里加一列「依赖项」,配之前先确认依赖项已经配好,避免配到一半发现前置条件不满足。
从那以后我每次拿到这类配置文档,都强制先抽基线表、再分段验证,绝不跳步。这份 2004 年的底稿虽然老,但它的配置骨架——仓库号控制参数定全局、编号范围定取号、存储类型和存储段定空间、三层搜索定策略、作业活动定流程——放到今天的 WM 项目里依然成立,变的只是界面和部分字段名。希望帮到你。
本文还有配套的精品资源,点击获取