简介:这份PPT课件围绕SAP S/4HANA中的Segmentation(细分策略)展开,面向物料管理顾问、SAP实施人员及供应链业务骨干,帮助理解如何在不新增物料编码的前提下,按产地、颜色、尺码、质量等属性实现销售、需求、采购与库存的细颗粒度管理。课件共1个pptx文件,压缩包约10.27MB,内容按简介、行业应用、系统实现、业务演示四部分组织,配有特征与细分结构、细分评估等架构示意。行业案例覆盖服装同款多属性管理、电子产品的库存与客户细分、机械制造的产品结构与产能细分,以及快消品和光伏组件效率区间的业务传递场景。已有691人学习,适合用作方案宣讲、内部培训或项目前期调研的参考材料,也可据此梳理细分策略的配置思路与业务落地边界。
1. 一件白衬衫被拆成 24 个物料号之后:SAP Segmentation 到底解决什么问题
同一款白衬衫,颜色 4 个、产地 2 个、销售地 3 个,按传统办法就是 4×2×3=24 个物料号。物料号一多,BOM、工艺路线、采购信息记录、库存台账全部跟着翻倍,改一个属性要动一串主数据,月底对账先对编码。SAP 物料管理里的 Segmentation(细分策略)就是冲着这个场景来的:物料号仍然只有一个,把颜色、产地、销售地这些属性做成特征,组合成段,让销售需求、采购收货、库存数量、ATP 可用量在同一个物料号下按段区分。适合服装、电子、机械、光伏组件这类“同料不同属性、属性影响供需”的行业,也适合正在做 SAP S/4HANA 上线、被物料编码膨胀卡住的团队。这篇按方案分享的路子写,讲清它怎么落地、参数怎么设、哪几步最容易翻车。
2. 细分四件套的数据模型:特征 CT04、结构 SGTS、策略 SGTC 怎么串起来
SAP 系统里,细分不是“建一个新物料类型”这么简单,它是一套四层对象叠出来的模型。刚接触的人最容易犯的错,是把细分当成物料主数据上的一个勾选项,结果 CT04 建完发现没地方用,或者 SGTC 建完发现物料挂不上。这一章把四层对象的分工和边界先掰开,后面动手才有方向。
2.1 编码爆炸的账:24 个物料号背后是四张表同时膨胀
先算笔账。那件白衬衫 24 个物料号,看着只是主数据多了 23 条,实际上每个物料号都会带出一整套衍生数据:BOM 要建 24 份(或者共用一份但维护 24 次分配)、工艺路线要指 24 次、采购信息记录要按供应商和产地配 24 份、库存台账按 24 个号分开记。如果再加 5 个尺码,组合变成 120,主数据维护量不是线性涨,是阶乘式涨。
更麻烦的是变更成本。产地从国内换到国外,编码体系里等于新增一批物料号,同时要处理旧号的库存、在途订单、未清采购单,业务上叫“换号”,一线叫“搬家”。血泪经验是:编码型细分一旦上了量,后面每改一次属性维度,都要组织一次跨部门的数据清理。
细分策略换了个思路:属性的组合不落在物料号上,落在“段”上。物料号只有一个,段有 24 个,销售订单填段、采购收货填段、库存按段统计、ATP 按段算。组合数还是 24,但主数据只有一份,改属性只改段,不动编码。这就是它值得单独做方案的原因。
顺带说一句边界:细分不是万能的。如果两个变体的 BOM 差异极大、工艺路线完全不同、成本核算要独立归集,那还是老老实实建两个物料号更省事。细分的甜区是“同一个物料、属性小微差异、影响供需但不影响物料本质”的场景。
2.2 四层对象各管一段:特征、结构、策略、物料分配
把四层对象按“从抽象到具体”排一下,逻辑就很清楚了。
| 对象 | 事务码 | 作用 | 关键设置 |
|---|---|---|---|
| 特征 | CT04 | 定义一个属性维度,比如颜色、产地、电池片效率 | 特征组必须选 SGT_SAP-C,否则相关性维护不了 |
| 细分结构 | SGTS | 把若干特征打包成一套管理维度 | 选择特征、启用空值、保存后锁定 |
| 细分策略 | SGTC | 在结构下生成允许的具体组合,也就是段 | 结构锁定后点“新输入”批量生成 |
| 物料分配 | MM01/MM02 | 把策略挂到具体物料号上 | 物料主数据细分视图里填策略名 |
从上往下是逐层收敛的关系:特征是最小维度,结构是一组维度的容器,策略是容器里被允许的具体取值组合,物料分配决定哪些物料受这套规则约束。
这里有个反直觉的点:策略(SGTC)不是“规则”,而是“枚举”。它不写“颜色=黑 且 产地=国内”这种条件表达式,而是把 24 个组合一条条列出来。所以组合数一多,SGTC 的维护量会直接飙上去。我一般会在建特征之前先算一遍笛卡尔积,超过 100 个组合就要考虑砍维度或者用间隔值合并。
2.3 和批次、变式配置、分类系统的边界在哪
这三个东西经常被混着问,说清楚能省很多沟通成本。
批次(Batch)管的是“实际库存的物理划分”,一批货一个批次号,带批次特性,走批次管理。细分管的是“需求和供给的属性划分”,段值可以跨批次存在,也可以和批次叠加使用。常见做法是:批次管质量追溯,细分管供需匹配,两个一起上并不冲突,但配置工作量翻倍,先想清楚是不是真需要。
变式配置(LO-VC)管的是“销售端选配 + 按配置出 BOM”,它生成的是配置结果(Configuration),走超级 BOM 和依赖。细分不生成新的 BOM 变式,但配置到位时可以让 BOM 按段取用。两者的差别在于:VC 面向“客户可选的组合”,细分面向“企业自己要区分管理的属性”。客户根本不会选“电池片效率 23.5%”这种东西,但它影响采购和库存,这就是细分的地盘。
分类系统(Class)是底层机制,CT04 建的特征本身就属于分类系统。细分借用了分类系统的特征,但语义和用途完全是另一套。别因为都用到 CT04 就以为是一回事。
3. 从 CT04 到 SGTC:一套可照着敲的配置顺序与参数取值
配置顺序不能乱。正确的链路是:SPRO 里先把细分激活 → CT04 建特征 → SGTS 建结构 → 锁定结构 → SGTC 生成段 → MM01/MM02 分配给物料。跳过任何一步,后面都会卡住。这一章按这个顺序把每一步的参数和判断点写清楚,配置环境建议先在测试机走一遍,别直接上开发机。
3.1 CT04 建特征:特征组选 SGT_SAP-C 是硬约束
进 CT04,输入特征名(建议 Z 开头,长度控制在 30 位以内,超了系统会截断),填描述,然后是最关键的一步:特征组。
特征组必须选 SGT_SAP-C。这一步不是风格问题,是功能开关。选了它,特征里才会出现“相关性”页签,才能维护前提条件;不选,页签是灰的,特征存下来也是个“普通特征”,细分结构引用它会出问题。原文里专门提示过这一点,我复现的时候也确认过:特征组一旦保存就不能改,选错了只能新建一个特征重来。
其余参数按下面这套取值走,绝大多数场景够用:
| CT04 字段 | 建议值 | 说明 |
|---|---|---|
| 特征组 | SGT_SAP-C | 不选则相关性页签不可维护,且无法被细分结构正常引用 |
| 数据类型 | CHAR | 颜色、产地、效率档位都用字符型,兼容性最好 |
| 值域 | 预定义值 或 间隔值 | 离散属性用预定义值列表;连续区间(如功率段)用间隔值 |
| 多重价值 | 不勾 | 段是单一组合,勾了会引入歧义,业务也解释不清 |
| 相关性 | 前提条件 | 用来限制哪些值能一起出现,比如某产地只供某销售地 |
值域这块多说一句。用预定义值列表的好处是值可控、不会手滑输错;坏处是每加一个值都要回来改特征,而特征被结构引用后能不能改是要看状态的。用间隔值(比如效率 23.1% 到 23.5%)好处是灵活,坏处是业务上容易填出边界外的值。我的习惯是:值域固定的用预定义值,值域会持续增长的用间隔值,但配合字段校验兜住。
相关性(前提条件)是容易被忽略的一环。它不是必填,但在组合数大的时候非常有用。比如“产地=国外”和“销售地=江苏”这种组合业务上根本不存在,与其在 SGTC 里生成出来再删,不如在特征层面用前提条件卡掉,SGTC 生成时就少一批。
3.2 SGTS 建结构:启用空值的取舍与锁定时机
结构就是把特征打包。进 SGTS(也有环境走 SGT_SETUP 总入口),新建一个结构,输入描述,然后把前面建好的特征逐个加进去,勾上“启用空值”,保存。
“启用空值”这个勾选框值得单独讲。勾上意味着允许某个维度在段里不填值,系统会多生成一批带空白的段;不勾意味着每个维度必须有值,组合更干净但兼容性差。原文的方案是勾上的,我理解意图是兼容历史数据和属性暂未确定的场景。
但这里有个代价:空值段在业务上极容易被误用。销售订单漏填段、采购收货没带段,货就落进空白段,账面看着有库存,按正常段去查又查不到,对账的时候就是黑匣子。我的建议是主数据阶段勾上以兼容,但业务上线后用字段必填校验和报表监控兜住,别让空值段变成垃圾桶。
保存完结构,要手动点“锁定”。新建的结构默认是“解锁”状态,解锁状态下 SGTC 里生成段策略会被拦住。这里的设计逻辑是:结构一旦被引用就不允许再改特征,所以系统用锁定状态来标记“这个结构定稿了”。反过来,如果结构已经被物料或库存引用,状态会自动变成锁定,想改特征就得先把引用清干净,这个坑在第 5 章细说。
3.3 SGTC 生成段策略:组合数、命名与删除维护
结构锁定后进 SGTC,输入策略名,选中结构,进“段策略”页签,点“新输入”,系统会把所有允许的特征值组合列出来,勾选需要的,保存。
回到白衬衫的例子:颜色 4 个、产地 2 个、销售地 3 个,理论上 24 个组合,如果勾了启用空值,还会多出若干带空值的段。这 24 条就是后续业务上能选的全部段值。
命名建议别偷懒。策略名要能一眼看出对应哪条产品线,段值的描述里带上业务含义,比如“黑-国内-江苏”这种拼法,比系统自动生成的流水号好查一百倍。等业务方拿着报表来问“这个段是啥意思”的时候,你就知道命名规范值多少钱了。
删除要谨慎。段一旦被库存、订单、采购单引用,就删不掉,系统会报“被引用”的错误。真要下线某个组合,正确做法是先停用(在业务端限制选择)而不是硬删。我见过有人为了删一个段去清库存数据,那是真没必要。
段的数量控制也要提前想。24 个段还能靠人工维护,200 个段就必须上批量工具了。SGTC 的“新输入”支持批量勾选,但前提是组合本身在特征层面就被前提条件收敛过,否则列出来几百行,勾选本身就是个体力活。
3.4 SPRO 前置配置:激活顺序和传输的注意点
SPRO 里跟细分相关的配置点不多,但顺序很关键。
| 配置点 | 大致位置 | 作用 |
|---|---|---|
| 激活细分 | 物料管理相关配置节点下 | 系统级开关,不开则物料主数据没有细分视图 |
| 特征组 SGT_SAP-C 相关设置 | 分类系统 / 特征组维护 | 保证特征组可维护相关性 |
| 细分结构/策略的编号范围 | 编号范围维护 | 避免手工输入冲突 |
激活细分是系统级开关,一旦激活,物料主数据会多出细分视图,部分库存表结构也会跟着扩展。这件事必须在测试机先验证,因为激活后回退很麻烦,基本属于“开弓没有回头箭”。上线节奏上,我一般会把它排在主数据清理之后、库存初始化之前,避免存量数据带着旧结构进来。
传输也要留意。开发机、测试机、生产机的传输顺序必须是:配置激活 → 特征 → 结构 → 策略 → 物料分配。顺序错了,生产机上的 SGTC 会因为找不到结构而报错。血泪经验是:别指望传输工具会自动排序,手工确认请求号内容最踏实。
4. 把策略挂到物料上:MM01/MM02 分配后,销售、采购、库存怎么跟着动
配置做完了只是“规则存在”,规则要生效,得挂到物料上。这一步是细分从“配置对象”变成“业务对象”的分水岭。挂错了或者挂漏了,后面所有业务环节的段值都会乱。这一章讲分配动作本身,以及分配之后销售、采购、库存三条链路各自怎么变。
4.1 MM01/MM02 分配策略:字段位置与批量维护
进 MM01 或 MM02,物料号输入后,视图选择里会多出一个“细分”视图(前提是 SPRO 已激活)。进去之后通常只有一个关键字段:细分策略,填 SGTC 里建好的策略名。填完保存,这个物料就纳入了这套段的约束。
技术层面,物料主数据上这个字段的表名和字段名各版本可能有差异,我一般的做法是 SE11 查一下 MARA 里的细分相关字段(常见的是 SGT_SCAT 这类),确认无误再写批量程序,别凭记忆硬写。
批量维护是个现实问题。几个物料手工填没事,几百个物料靠 MM01 一个个点就是灾难。可选路径有三条:MM17 批量维护(看版本是否支持该字段)、LSMW 录屏、迁移 Cockpit。我的偏好是迁移 Cockpit,因为它的校验和日志更完整,出错能追到行。不管走哪条路,批量跑完一定要抽样回查,别信“全部成功”的提示。
还有一个容易漏的点:同一个物料在不同工厂是不是共用同一个策略。如果各工厂的产品属性不同,可能需要按工厂维度区分,这时候策略的设计就要提前考虑工厂字段,不能等到业务跑起来才发现串了。
4.2 销售与需求:订单行项目上的段值怎么传下去
销售订单(VA01)里,段值落在行项目上。建单的时候,行项目会有一个段字段,可能叫“段”或者“库存段”,具体标签看你们系统的字段标签配置。
这里的关键是默认值。手工建单靠人填,出错率极高;更常见的做法是配置默认逻辑,比如按销售区域、按客户、按物料组合带出默认段,人工只在例外时改。默认逻辑放在哪里,各项目做法不同,有的用订单类型的字段选择,有的用增强,方案设计阶段就要定下来。
段值传下去之后,需求管理(MRP)就能按段跑。这意味着同一个物料号下,“黑-国内-江苏”的需求和“白-国外-东北”的需求是分开算的,各自触发采购或生产建议。这是细分真正的价值点:不是把数据打上标签,而是让计划逻辑认这个标签。
反过来说,如果 MRP 没按段跑,段值就只是个标签,业务上该串还是串。上线前一定要验证这一点,第 6 章给了一套验证矩阵。
4.3 采购与库存:按段收货、按段看库存、按段算 ATP
采购端,采购订单行项目同样带段。收货(MIGO)时,段值决定这批货进哪个库存段。这一步是整条链路里最容易出错的地方,因为收货动作往往由仓库执行,他们对“段”的理解远不如计划员。
| 业务环节 | 事务码 | 段字段位置 | 注意点 |
|---|---|---|---|
| 采购订单 | ME21N | 行项目明细 | 段值要和需求端一致,否则供需错配 |
| 收货 | MIGO | 行项目/库存段 | 漏填会落进空白段,事后调整很麻烦 |
| 库存查询 | MMBE / 库存报表 | 按段筛选 | 默认视图可能不显示段,要手动加列 |
| 库存转储 | MB1B | 转出/转入段 | 跨段转储等于改变属性,要有审批 |
| ATP 检查 | 销售订单可用性检查 | 按段检查 | 配置不到位会跨段挪用库存 |
ATP 这块要单独强调。可用量检查如果没按段配置,系统会把所有段的库存当成一个大池子,销售订单明明要“黑-国内-江苏”,结果挪用了“白-国外-东北”的库存,账面上没超卖,实物上完全对不上。这种问题在报表上很难发现,只有到发货环节才暴露。
库存报表也一样。MMBE 默认视图未必把段列出来,得手动加。项目上线初期,我一般会让 ABAP 出一张按段汇总的库存报表,业务每天看,比事后查账有用得多。
5. 细分上线前的排查清单:五个高频翻车点与定位顺序
这套东西配下来,流程本身不复杂,复杂的是每个环节都有“看起来成功了其实埋了雷”的状态。下面五条是我在几个项目里真实遇到过的,按“现象 → 原因 → 解决”写,最后给一个可复用的排查顺序。
5.1 五个高频翻车点
第一条:特征组选错,相关性页签是灰的。现象是 CT04 建完特征,想维护前提条件,发现相关性页签点不进去。原因是特征组没选 SGT_SAP-C,选成了普通特征组或者留空。解决只能新建特征重来,因为特征组保存后不可修改。预防办法是在建特征前把命名规范和特征组写成检查项,让每个配置人员照着勾。
第二条:结构锁定后才发现漏了特征。现象是 SGTC 生成段的时候发现少了一个维度,回头想改结构,系统不让改。原因是结构已经被引用(物料分配、库存数据、甚至只是策略生成过),状态自动变成锁定。解决分两种:如果引用还干净,先把引用清掉再解锁;如果有存量库存,解锁基本无望,只能新建一个结构、新建策略、重新分配物料,老数据做迁移。这就是为什么结构定稿前要拉业务方一起过一遍维度清单,别一个人拍板。
第三条:空值段变成垃圾桶。现象是库存报表里总有一批数量挂在空白段上,按正常段查不到,实物又确实在库里。原因是结构勾了启用空值,前端又没做必填校验,收货和订单漏填就落进去了。解决是短期先出一张空白段明细报表,逐笔确认归属后做库存转储调整;长期要在订单和收货环节加必填校验,并且每周监控空白段增量。
第四条:物料没分配策略,但库存已经有段值。现象是某个物料收货时报错,或者段值莫名其妙丢了。原因是物料主数据漏填细分策略,但历史库存是从别的物料转过来的、带着段值。系统对这种“有段值但没策略”的状态处理得不一致,有的环节报错,有的环节静默丢弃。解决是把所有涉及细分的物料拉一张清单,跟策略分配表做比对,缺的补上;补之前先确认存量库存的段值是否合法。
第五条:传输顺序错,生产机 SGTC 报错。现象是配置传到生产后,打开 SGTC 提示找不到结构或结构未锁定。原因是请求号里策略先于结构传输,或者结构传过去了但没有锁定动作。解决是按“激活 → 特征 → 结构(含锁定)→ 策略 → 物料”的顺序重传,锁定这种动作类操作不能靠传输,得在生产机手工执行一遍并留记录。
5.2 一个可复用的排查顺序
出问题的时候别乱翻,按这个顺序从下游往上游推,基本能在半小时内定位。
先看物料主数据:这个物料的细分视图填了策略没有,填的策略名是不是拼错了。这是最高频的原因,也最好查。
再看策略:SGTC 里这个策略存不存在,段的数量对不对,目标段在不在列表里。如果段被删过或者压根没生成,业务端当然选不到。
再看结构:SGTS 里结构状态是锁定还是解锁,特征清单全不全。结构解锁状态下生成段会失败,这个报错信息不明显,容易被忽略。
再看特征:CT04 里特征组是不是 SGT_SAP-C,值域里有没有目标值,相关性有没有把目标组合卡掉。相关性卡组合这个坑很隐蔽,因为特征本身看起来完全正常。
最后看数据:库存表里这个物料各段的数量分布,有没有空白段异常增长。数据层面的异常往往能反推出是哪个环节漏了校验。
这套顺序的逻辑是“配置错误往下游放大”,越靠上游的问题影响面越大。养成习惯之后,看到报错先别急着改配置,按顺序走一遍,比凭直觉试错快得多。
6. 用功率段做一次压测:三段验证确认细分真的生效
配置跑通不等于业务生效。我在一个模拟项目里用光伏组件的电池片效率做过一次压测:客户要 500MW 组件,工艺评估需要 23.5% 效率的电池片,那就用它当特征值,把 23.1% 到 23.5% 拆成几个档位,建特征、建结构、生成段、挂物料,然后按下面这张矩阵逐项验证。
| 验证项 | 操作 | 通过标准 |
|---|---|---|
| 需求传递 | 建销售订单,行项目填 23.5% 段 | MRP 跑出的需求按段独立显示,不与 23.1% 混算 |
| 采购执行 | 按该段下采购订单并收货 | 库存落到对应段,MMBE 按段可查 |
| 跨段隔离 | 用 23.1% 段下销售订单查 ATP | 可用量不包含 23.5% 段的库存 |
三项里最容易挂的是第三项。前两项只要配置对就能过,第三项依赖 ATP 的按段检查配置,很多项目在这里偷懒,结果就是“段建了、数据分了、业务还是串的”。
批量核对我一般写个小程序扫一遍,比手工查快得多:
" 占位示例:表名与字段名请按 SE11 实际情况替换 SELECT matnr, werks, sgt_scat AS seg_strategy FROM mara INTO TABLE @DATA(lt_mat) WHERE sgt_scat IS NOT INITIAL. LOOP AT lt_mat INTO DATA(ls_mat). " 校验策略是否存在于 SGTC 生成结果中 SELECT SINGLE seg_strategy FROM zsgt_seg_policy INTO @DATA(lv_exists) WHERE seg_strategy = @ls_mat-seg_strategy. IF sy-subrc <> 0. WRITE: / ls_mat-matnr, '策略未找到:', ls_mat-seg_strategy. ENDIF. ENDLOOP.这段逻辑很直白:先把所有挂了细分策略的物料捞出来,再逐个去策略表里比对,对不上的打出来。参数上唯一要改的是表名和字段名,不同版本的系统里细分相关字段命名有差异,用 SE11 查准了再跑。跑完的结果不要只看条数,要抽几条去 MM03 里核对,确认程序和前台看到的是同一份数据。
从那以后我每次做细分上线,都会强制走一遍“一单到底”的验证:从销售订单建单、跑 MRP、下采购、收货、查库存、查 ATP,六个动作连续做一遍,中间不许换人。因为细分的坑几乎全在环节之间的传值上,单点测试永远测不出来。希望帮到你。
本文还有配套的精品资源,点击获取