ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

SAP WM配置实战:主数据、搜索顺序与策略激活全解析

SAP WM配置实战:主数据、搜索顺序与策略激活全解析

简介:面向SAP实施与运维顾问的WM仓库管理配置详解文档,聚焦WM模块与MM模块的集成场景,系统梳理仓库主数据定义、存储类型/存储段/存储箱结构、编号范围设置,以及上架与拣货策略配置等核心环节,适合需要掌握WM后台配置逻辑的初中级顾问参考。资源为单个doc文件,约572KB,内容共26页左右,以图文配置说明为主,章节目录清晰,覆盖主数据、策略、活动等主要配置区间,并细分控制参数、搜索策略、固定箱位、开放存储、现有库存增加、空箱分配、托盘策略、需求类别、移动类型及补货控制等模块。已有789人学习下载。文档基于WMS项目实际实现模板编写,逐项标注需要更改与无需更改的配置点,便于读者快速识别配置重点、规避常见误区,可作为项目配置实施时的操作手册和检查清单。

1. WM配置别急着抄模板:先把主数据和搜索顺序理清楚

很多上过SAP WM的团队都经历过这种场景:主数据照着标准模板拷了一遍,存储类型、存储段、策略全部激活,结果第一单收货进来,库存全部躺在901收货区,上架策略一点没动。问题多半不在策略本身,而是存储类型搜索顺序把GR区排在了主存储区前面。SAP WM的配置链条很长——仓库号、编号范围、存储类型、搜索策略、移动类型,每一步都依赖前一步,顺序错了后面全是返工。本文按某公司模拟项目X的备件仓上线过程,从SPRO主数据一路配到OMLY策略激活,最后用一单收货验证整条链路。适合正在做WM上线、或接手WM配置排查的MM/WM顾问照着走一遍。

2. 主数据初始化:仓库号、编号范围、存储类型一次配齐

2.1 仓库号控制参数:SPRO里的第一道门

WM配置的起点是仓库号。SAP标准交付里有一个仓库号0001,里面挂着一整套完整的WM配置,实际项目里几乎没人直接在0001上改,都是复制到自定义仓库号再调整。文档里的做法就是先复制,再按业务需求逐项改参数。

# Step 1: 复制模板仓库号 # EC09 将仓库号 0001 复制到 D001 # 复制完成后,D001 会继承 0001 的所有存储类型、策略、编号范围 # Step 2: 在SPRO中调整仓库号参数 /n SPRO # 路径: Materials Management -> Warehouse Management -> Master Data # -> Define control parameters for warehouse number

复制这一步经常被跳过去,有人图省事直接配个空仓库号,结果后面创建TR、TO时系统不生成编号,或者存储类型搜索怎么激活都没反应。复制模板能带出一整套可参考的默认值,后面改参数比从零搭配置省一半时间。

D001的关键控制参数如下:

参数配置值说明
Warehouse numberD01仓库号,与MM工厂/库存地点对应
Unit of weightKG重量单位,影响仓位容量计算
1st default UomL第一默认计量单位
2nd default UomA第二默认计量单位
Dec. warehouse active勾选启用小数仓库库存
SU management activeYes激活存储单位管理
Blocking methodB部分拣配后阻塞剩余库存
Capacity check勾选TO建议时检查仓位容量
Batch Missing (TR)勾选TR创建时强制检查批次

这里最容易被忽略的是SU management active这个开关。它不打开,后面策略里的托盘策略、存储箱类型分配全部不生效,因为系统根本不存在"存储单位"这个概念。Blocking method选B,意味着一次拣配只拣一部分时,剩余部分会被阻塞,防止被另一个TO重复分配。

提示:仓库号一旦在单据中使用,控制参数很难回改。上线第一周尽量别动SU管理这类全局开关。

2.2 编号范围:给TR、TO、Quant各发一套身份证

编号范围在WM里管四类核心对象:Transfer Requirement(TR)、Transfer Order(TO)、Quant(库存数量记录)、过账更改通知。每个对象都有一套编号,配置错了最直接的表现是单据创建时报错"Number range overflow"。

事务代码: OMLW 路径: Materials Management -> Warehouse Management -> Master Data -> Define number ranges

文档里的编号区间统一从3000000001开始:

编号对象编号分配区间起始区间结束外部编号
Transfer RequirementNR-TR30000000013999999999否
Transfer OrderNR-TO30000000013999999999否
QuantNR-QUANT30000000013999999999否
Posting change noticeNR-PC30000000013999999999否

所有对象用同一个起始号段,但编号分配是分开维护的,TR、TO、Quant各自从3000000001开始递增,互不抢占。内部编号意味着由系统自动分配,不需要用户在界面上手输单据号;外部编号则留给有上游ERP单据号关联的场景,比如把WM的TO号和外部WMS作业号对应起来。

这里有一个隐含坑:复制模板时如果0001的编号区间被带过来了,而D001的号段实际上没切换,TR和TO会共用一个号段。短时间看不出问题,单据量一大就会撞号。配置后一定要回OMLW看一眼每个对象的当前编号水平,确认四个对象的号段是独立推进的。

2.3 存储类型与存储段:先把仓库物理分区画出来

存储类型(Storage Type)是WM里最核心的逻辑分区单位,对应仓库里的一类存储区域。SAP标准仓库号里预置了901、911、914、916、921、922、998、999这一批系统存储类型,分别对应收货区、成本中心发货区、生产发货区、交货装运区、库存转储区、过账更改区、期初库存导入区和差异区。这类区域不能删,WM的收货、发货、盘点流程都硬引用它们。

/n SPRO # 路径: Materials Management -> Warehouse Management -> Master Data # -> Define storage type

文档数据里,D001的自定义存储类型是ZM1和ZM2:

存储类型名称SU管理上架策略下架策略
ZM1MKC Storage Area激活见第3章策略见第3章策略
ZM2MKC Issue Precedence Area激活见第3章策略见第3章策略
901GR Area From Vendor不激活--
922Posting Change Area不激活--
999Differences不激活--

ZM1是主存储区,ZM2是发货优先区。存储类型定义界面里的上架策略(Stock placement strategy)和下架策略(Stock removal strategy)字段必须指向第3章中定义好的策略编号。如果这里留空,后面OMLY再怎么激活搜索,系统也找不到该用哪个策略,收货后库存就停在GR区不走。

存储段(Storage Section)是存储类型下面的细分。定义路径和存储类型一样在SPRO里,文档给出的数据:

存储类型存储段区域名称
ZM1001Normal Bin Area
ZM1002Interim Bin Area
ZM1003Warehouse Working Area
ZM2001Total Area

为什么要分这么多段?因为不同段的搜索策略、库位用途、拣配方式可能完全不同。比如002临时仓只放待质检或待转仓的物料,003仓库工作区放正在拣配的周转箱。存储段定义好之后,下一步才能激活存储段搜索,让系统按"段"而不是整个存储类型来寻址。

2.4 存储箱结构与存储单位类型:模板决定所有储位编码

存储箱(Storage Bin)是WM的最底层存储位置,存储箱结构定义了储位编码的生成规则。事务代码LS10,这是整个主数据里最需要跟仓库现场对表的一步。

事务代码: LS10 路径: Materials Management -> Warehouse Management -> Master Data -> Storage bins -> Define storage bin structure

LS10通过模板定义储位编码的组成。文档里主存储区ZM1的模板是AANNNNCCCC,结构是ABCCDD:

  • AA:通道编号,从AA开始
  • NNNN:货架列号,从0001开始
  • CCCC:货位编码,从A001开始

以AA0101A001为例,它表示A通道01货架01层A位的物理储位。模板里的Start和End字段控制生成范围:

存储类型模板结构起始结束增量
ZM1 001AANNNNCCCCABCCDDAA0101AB0302110101
ZM1 002AANNNNCCCCABCCDDBA0101BD0302110101
ZM1 003AANNNNCCCCABCCDDCA0101CC0302110101
ZM2 001CNNCCCCCCCAAF01F991

翻译成人话:ZM1的储位由"2位通道字母+4位货架数字+4位货位编码"组成,ZM1 001段生成的储位从AA通道01货架01位开始,到AB通道03货架02位结束。增量110101的含义是通道加1、列号加1、货位加1。ZM2因为是总区,直接用F01到F99的九位编码,简单直接。

注意:LS10生成储位前,最好先把仓库现场的货架编码规则摸清。储位编码一旦生成并挂上库存,再改模板就是灾难,只能通过重新盘点调整。

存储单位类型(SUT)这边,D001只需要定义一个S1,名称为Normal SU,容量使用率100%。这是一切托盘、箱作业的基础。SUT定义完还要做两笔分配:把S1分配给存储箱类型(D01普通箱、E1临时箱、B1重包区、P1托盘位),再把存储箱类型分配给存储类型ZM1和ZM2。这两笔分配在策略章节里单独列了小节,很多人配到S1就停了,结果托盘入库时报"Storage unit type not allowed in storage bin"。

3. 策略配置:让系统自己决定货放哪、从哪拣

主数据只是画好了仓库的骨架,策略才是让WM真正"自动"起来的部分。WM里上架、下架策略加起来有十几套,核心思路是一件事:给系统一个搜索顺序,让它在多个候选仓储位置里按规则挑一个。

3.1 激活存储类型搜索:OMLY决定收货后货往哪走

所有上架、下架流程的第一步都是激活存储类型搜索,事务代码OMLY。存储类型搜索决定了两件事:这次移动要参考哪些存储类型,以及这些存储类型的搜索顺序。

事务代码: OMLY 路径: Materials Management -> Warehouse Management -> Strategies -> Activate storage type search

配置界面里有几个关键维度:Wh(仓库号)、Act(活动或策略标识)、Ty(移动类型标识)、SSt(搜索顺序)、Stor(存储类型组合)、WP、Ref。文档里D001的关键配置如下:

活动标识移动类型搜索顺序存储类型组合
200搜索顺序2无参考
K00搜索顺序K无参考
Q00搜索顺序Q无参考
A00ZM2 -> ZM1上架搜索
AK00ZM1上架容量检查
AQ00ZM1上架数量检查
E00ZM1下架搜索
EK00ZM1下架容量检查

A代表上架(Putaway),E代表下架(Removal)。上架搜索里写的ZM2 -> ZM1,意思是收货时系统先尝试ZM2发货优先区,如果ZM2没有可用仓位或容量不够,再找ZM1主存储区。别小看这个顺序,第5章的第一个坑就出在这里——有人把搜索顺序配反,系统永远先从901收货区找仓位,库存进来就压在GR区不动。

活动标识后面的移动类型引用也要一并核对。文档里列出的移动类型引用表覆盖了101收货、102取消收货、103生产订单收货、201成本中心发货、255外协发货、261生产订单发货、301/311转储、321质检、501无采购订单收货、601按交货单发货、711/712盘盈盘亏、999差异等所有常规WM移动。每一行的参考移动类型字段默认引用同号移动类型,特殊行按业务调整。

提示:移动类型引用表是WM自动TO创建的触发文。一个移动类型没配进引用表,对应的收货或发货就不会触发WM作业。

3.2 存储段搜索和存储箱类型搜索:把寻址范围缩小到段和箱

存储类型搜索激活后,还要激活存储段搜索(OMLZ)和存储箱类型搜索(OMM1),才能让系统在存储类型内部继续往下寻址。

事务代码: OMLZ 路径: Materials Management -> Warehouse Management -> Strategies -> Activate storage section search 事务代码: OMM1 路径: Materials Management -> Warehouse Management -> Strategies -> Activate storage bin type search

OMLZ的配置是给每个仓库-存储类型组合指定搜索类别。文档里只有一行核心数据:D01、ZM1、001段,搜索类别1000。翻译过来就是:上架/下架在ZM1里寻址时,只在001段正常仓位里找,002、003段不参与自动搜索。002临时仓和003工作区怎么用?它们由特殊移动或人工指定仓位来用。这也是分段的意义所在——正常货流走001,异常和作业周转走002/003。

OMM1的存储箱类型搜索激活之后,别忘了回SPRO里做两笔分配:

分配对象内容
存储单位类型 → 存储箱类型S1 分配给 D01、E1、B1、P1
存储箱类型 → 存储类型D01/E1/B1/P1 分配给 ZM1,D01/E1/B1/P1 分配给 ZM2

这两笔分配是存储箱类型搜索的前提。S1分配不全,系统在搜索存储箱时会把没有可用SUT类型的箱型直接跳过,表现为"明明有空仓位,TO却建议不出来"。

3.3 上架策略:固定仓位、开放存储和托盘策略怎么选

上架策略定义在SPRO的Putaway strategies路径下。文档里涉及固定仓位、开放存储、追加现有库存、空存储箱、托盘、散装存储、大/小数量七类策略。

  • 固定仓位策略(Fixed bins):物料主数据WM视图里指定了固定仓位,系统直接建议该仓位,适合高价值、需固定货位的物料。
  • 开放存储策略(Open storage):系统在开放存储区按自由仓位搜索,适合没有固定仓位约束的常规物料。
  • 追加现有库存策略(Addition to existing stock):系统优先找同物料、同批次已有库存的仓位,把新收货追加进去,能提高仓位利用率,但批次严格管控的仓库要小心串批。
  • 空存储箱策略(Empty storage bin):系统找空箱,适合库位周转快、不要求同物料集中的场景。
  • 托盘策略(Pallets):按存储单位整体上架,一个托盘一个仓位,配合SU管理使用。
  • 大/小数量策略:数量大的走高位,数量小的走低位。

这七类策略不是互相独立的。存储类型定义表里每个存储类型只能指定一个上架策略字段,但你可以通过策略组合达到更细的效果。比如ZM1的上架策略填"固定仓位",同时激活追加现有库存,那么系统优先追加,追不进去再找固定仓位。

配置路径: SPRO -> Materials Management -> Warehouse Management -> Strategies -> Putaway strategies

3.4 下架与拣货策略:FIFO、LIFO和严格FIFO的落地方式

下架策略决定拣配时从哪个仓位出货。文档里覆盖FIFO、严格FIFO、LIFO、部分托盘、有效期、大/小数量六类。

配置路径: SPRO -> Materials Management -> Warehouse Management -> Strategies -> Removal strategies

FIFO策略的核心逻辑是按收货日期升序找仓位,先收先出。严格FIFO(Stringent FIFO)更进一步,批次和入库时间都必须严格升序,不能拿一个后入库的批次顶掉先入库的批次。LIFO则反过来,后进先出。

这三种策略的配置点都在存储类型的下架策略字段里。文档特别提醒:FIFO这类策略的细节参数可以直接参考标准配置,没必要每个字段都自己发明。真正要动的是存储类型的下架策略字段指向哪个策略编号,以及移动类型引用表里有没有覆盖到对应移动类型。

下架策略里还有两个容易被忽视但很好用的配置:部分托盘策略(Partial pallet quantity)允许从满托盘中拆零拣配,先整托后零散,适合拣货频率高的备件仓;有效期策略(Expiration date)按物料有效期排序,先到期先出,适合食品、医药和有保质期管控的行业。

策略扩展(Develop extensions)部分不是每个项目都要做。只有当标准策略满足不了业务时,才需要开发自定义策略并激活。文档里这两节内容是占位性质,说明"需要时参考开发请求",普通项目跳过即可。

4. 活动与移动类型:把收货、发货、补货链路串起来

WM里策略解决的是"货放哪",活动配置解决的是"什么单据触发什么WM动作"。这一层配置错了,系统不会立刻报错,但收货做完不生成TR、TO,或者创建了TO却不自动确认,整条链路静默断掉,排查起来最花时间。

4.1 需求类别和交货类型:定义哪些单据需要WM处理

需求类别(Requirement category)是WM判断"这次收货/发货要不要走WM库存"的开关。

路径: SPRO -> Materials Management -> Warehouse Management -> Activities -> Define requirement categories

需求类别的配置要回答三个问题:

  1. 这个业务单据是否与WM集成?比如外协加工的255、生产订单的261,都需要置成WM相关。
  2. 是否需要创建TR?有的收货只过账不移动仓位,就不需要TR。
  3. 是否需要创建TO?收货到GR区后要不要自动上架,取决于TO创建规则。

文档里有一段"Define Shipment types",对应发货侧的交货类型定义。发货场景里,交货单过账后要不要触发WM拣配、要不要创建下架TO,都在这一层控制。若是做发货优先区ZM2的场景,还需要把交货类型和ZM2的搜索顺序关联起来,保证发货作业优先从ZM2出货。

4.2 移动类型映射:一张表看懂从101到999

移动类型是WM配置里最贴近MM的部分,每个移动类型代表一种业务动作。文档里那张大表列了D001用到的全部移动类型,我按业务流重新整理一份:

事务代码: SPRO 路径: Materials Management -> Warehouse Management -> Activities -> Define movement types
业务场景移动类型含义参考移动类型
采购收货101GR for purchase order101
采购退货102Cancel GR for pur.order-
生产入库103GR production order103
生产退货104Cancel GR production order-
领料发货201GI to cost center201
取消领料202Cancel GI to cost center999
外协发货255GI general255
生产投料261GI to production order261
订单转储301/302Stock tr. plant st.removal/placement301
库位转储311/312Stock tr. stor.loc.removal/placement311
质检转出321Posting change to quality-
无单收货501GR without purchase order501
生产入库(替代)521GR from production521
报废551Scrapping551
期初导入561Init.entry of stock balance561
按交货单发货601GI to delivery note601
差异调整711/712Differences711
盘点差异999Warehouse supervision999

这张表里最需要注意移动类型后面的参考移动类型列。比如202取消成本中心发货,参考的是999,因为取消动作走的是冲销到差异的逻辑,而不是回到原仓位。如果参考移动类型配错,冲销单生成后TO建议仓位完全对不上。另外321质检转出这类移动类型只做库存状态过账,不涉及仓储移动,所以参考字段留空,不要硬填。

4.3 自动TO创建与确认:把人工操作降到最低

路径: SPRO -> Materials Management -> Warehouse Management -> Activities -> Set up automatic TO creation for TRs/post.chge notices

自动TO创建的意思是:TR过账后系统自动生成TO,上架和拣配作业不需要人工去LT06手搓单据。文档在第4章配置了针对TR和过账更改通知的自动TO创建。这一层有三档配置逻辑:

  1. 完全自动:TR一过账,TO立即生成并分配仓位,适合自动化程度较高的仓库。
  2. 半自动:TO生成但需要人工确认储位,适合货位经常动态调整的仓库。
  3. 手动:TR过账后不产生TO,由仓管员用LT06手工创建,适合异常单据多的场景。

确认(Confirmation)配置是TO执行的收尾,需要指定TO确认方式是按作业确认还是自动确认,以及是否激活部分确认。自动确认省人工,但仓位差异要靠后续盘点兜底;按作业确认多一道步骤,适合配送物料种类多、易错发的场景。

配置自动TO创建时,建议同时把"面向库存转移和补货控制"的移动类型检查一遍。文档里有一节专门讲Stock transfers and Replenishment control,补货场景的TO触发条件和普通收货不一样,漏配会导致补货需求一直挂着,仓位补不进去。

5. 避坑指南:WM配置最容易翻车的5个现场

配置文档写得再完整,上线时还是会遇到各种意外。下面5个坑是从模拟项目X上线和后续支持里复盘出来的高频问题,每条都按现象、原因、解决三步写。

5.1 编号范围重叠:TR和TO撞号

现象:上线第二周,仓管员在LT06创建TO时报"Number range 01 not defined"或"Number range overflow",同时TR也创建不成功。

原因:复制模板0001到D001时,编号范围没有重新分配。TR、TO、Quant三个对象都指向了同一个号段,TR单据量一大,把TO的编号也吃掉了。

解决:回OMLW重新维护D001的编号范围,把TR、TO、Quant、Posting change notice各自分配到独立号段。第2章那张分配表就是标准做法。配置完成后用SNRO抽查每个对象的当前编号水平,确认三个对象互不干扰。

5.2 存储类型搜索顺序配反:货全压在收货区

现象:采购订单101收货后,库存一直留在901 GR区,TO建议不出来主存储区仓位,仓管员每天手动用LT06挪货。

原因:OMLY里上架搜索(活动A)的搜索顺序写成了901 -> ZM1,系统认为GR区是上架首选,收货后就地存放。

解决:把活动A的存储类型组合改为ZM2 -> ZM1的顺序。切记一点:搜索顺序不单看存储类型的先后,还要看活动标识和移动类型引用——101收货对应的是哪个活动、走的是哪一行,别只改一行却漏了其他移动类型。改完后重新做一笔101收货,确认TO建议仓位落在ZM1或ZM2。

5.3 存储箱结构模板和现场货架编码对不上

现象:LS10批量生成储位后,仓库同事拿着PDA扫码发现,系统里的AA0101A001和现场货架贴的标签完全对不上,A通道实际只是进门的货架,现场编号习惯跟模板逻辑正好相反。

原因:实施阶段按标准模板设计了AANNNNCCCC结构,没有提前跟仓库现场核对通道、货架、层位的编码习惯。这种问题在LS10跑批量生成后才会暴露,等储位挂在系统里再返工非常折腾。

解决:在LS10之前先做一张仓库编码映射表,让仓库经理把每个物理通道、货架列、层位编码标出来,再落成模板。如果储位已经生成但还没有库存,可以用LS02/LS03批量修改;一旦挂上库存,只能通过重新盘点调整储位编码——这也是我在后续项目里每次都强制先走"编码映射确认"这一步的原因。

5.4 存储单位类型没分配:托盘找不到仓位

现象:托盘入库时系统报"Storage unit type S1 not allowed",TO建议不出来,而散件入库完全正常。

原因:存储单位类型S1定义好了,但没有分配给存储箱类型P1(托盘位),也没有把存储箱类型P1分配给存储类型ZM1。这两笔分配在配置文档里是被拆开的,很容易做完第一笔就忘了第二笔。

解决:按顺序检查分配链路:

S1 -> D01/E1/B1/P1 (存储单位类型分配给存储箱类型) D01/E1/B1/P1 -> ZM1/ZM2 (存储箱类型分配给存储类型)

两笔分配缺一笔都不行。顺带检查存储类型定义界面里的SU management开关是否处于激活状态,三处配置一起核对,能省掉大半托盘入库报错。

5.5 策略激活了但没生效:FIFO不走寻常路

现象:存储类型里已经配了FIFO下架策略,拣配时系统还是建议了后入库的仓位,先进先出直接失控。

原因:策略在存储类型里定义了,但对应下架移动类型没有出现在OMLY的移动类型引用表里。比如601按交货单发货漏配,系统根本走不到这个策略,自然按默认的任意仓位出货。

解决:按三步检查:先确认601在OMLY活动E下面有引用行;再确认存储类型定义界面里Stock removal strategy字段指向FIFO策略编号;最后用两个批次做两笔入库、再发一笔出库验证。FIFO这种策略最容易栽在"配了但没引到移动类型上",验证单据一定要走完整流程。

6. 验证跑通:一单收货到发货,走完整个WM配置链路

配置全部落地后,别急着交给仓管员,先自己走一遍完整业务流。我一般用一个物料M-100,模拟一次采购收货、上架、成本中心发货、盘点的全流程。

第一单,用ME21N创建采购订单PO-900001,物料M-100数量100件。第二步,MIGO做101收货,过账后库存出现在901收货区。第三步,等待系统自动创建TO,同时留意TR是否生成;TO建议的仓位应该指向ZM1或ZM2的具体储位,而不是停留在901。第四步,用LT12确认TO,确认后库存从901移动到目标仓位。第五步,用MB1A做201成本中心发货,数量10件,确认系统生成了下架TO并正确扣减。最后用LI01创建盘点凭证,把目标仓位盘一遍,确认账面库存和实物一致。

验证步骤事务代码预期结果
创建采购订单ME21N采购订单生成,无报错
收货过账MIGO库存到901 GR区,TR生成
自动创建TOLT06/LT21TO自动生成,建议主存储区仓位
确认TOLT12库存过账到目标储位
成本中心发货MB1A201过账成功,库存扣减
盘点核对LI01/LI11账面与实物一致,无差异

如果走到第二步发现只有TR没有TO,优先查第4章的自动TO创建配置;如果第三步TO建议的仓位不对,回第3章核对OMLY的搜索顺序;如果第五步发货没生成下架TO,查601移动类型的引用和策略激活状态。这套流程我每个项目上线前都强制走一遍,尤其是带托盘和批次管理的仓库。配置文档可以写得很厚,但验收就靠这一张表——能从头跑到尾,配置基本没大问题。希望这篇WM配置落地笔记对你有用。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进