ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

SAP PP 能力计划与能力均衡:CM01/CM21/CM25 负荷排查实战

SAP PP 能力计划与能力均衡:CM01/CM21/CM25 负荷排查实战 简介《SAP PP能力计划指南中文版》面向SAP PP顾问、生产计划员与制造企业IT实施人员聚焦生产环节中的产能管理问题。内容围绕可用能力与能力需求的界定、能力评估的数据流与基本元素、标准可用能力与班次顺序设置、排产计划元素与工序持续时间等基础概念展开。进一步覆盖能力需求分配码与分配策略、能力负荷缩减、能力均衡与有限排产、计划表图形与Excel接口、车间信息系统及各类参数文件等模块可帮助读者判断工作中心产能能否满足订单需求并据此调整排产与资源配置。整包共1个文件为单个pdf文档约993KB便于随查随用。目前已有278人学习下载适合需要系统理解SAP能力计划逻辑、对照实施配置与排错的中高级用户参考。1. SAP PP 能力计划订单都排下去了为什么车间还是堵MDVP 跑完MD07 里缺料清单清得干干净净生产订单也一张张建出来可车间主任还是拍桌子说干不完。这类矛盾八成不出在物料上而是出在能力上。SAP PP 的能力计划Capacity Planning常说的 CRP管的不是有没有料而是设备、产线、班组在未来一段时间里还吃得下多少工时。它以工作中心为对象把工艺路线里的准备时间、机器时间、人工时间按订单数量和日期摊开形成逐日、逐周的能力需求再和班次、工厂日历算出的可用能力对比。适合负责生产排产、车间计划、产能评估的计划员和维护工艺路线的工程人员。搞清这套账你才能在接单前回答这条线到底接不接得住而不是等到交期到了才改期。2. 工作中心、能力类别与工艺路线标准值如何拼出能力需求2.1 工作中心里的能力头与能力类别能力计划的起点是工作中心事务 CR01/CR02/CR03。工作中心里有几组数据必须分清基本数据里的工厂、成本中心能力数据里的能力类别Capacity category和能力头以及排程数据里的公式参数。一个工作中心可以挂多个能力类别常见的划分方式是 001 机器、002 人工、003 其他资源每一类下面再有一套独立的能力头记录该类资源有几个人、几台机器、每天几班。真正决定可用能力有多少的是三段数据能力头给出该类别的总容量上限班次序列给出每天的工作时段工厂日历给出哪些日子根本不上班。系统把这三者展开成按日期的可用能力记录底层表 KAPA你在 CM01 里看到的绿色柱子就是它。这里最容易踩的坑是改了一个工作中心的能力数值却忘了看它挂在哪个能力类别上结果调的是人工能力实际瓶颈在机器能力。层级维护对象常见事务影响什么工作中心基本数据、成本中心CR02归属工厂、成本核算能力类别001/002/003 等CR02 能力页签需求与可用量按类别分开统计能力头单机/多机、班次序列CR02 能力页签每天可用小时数的上限工厂日历工作日、节假日SCAL哪些日期不产生可用能力2.2 工艺路线标准值到能力需求的换算能力需求不是自动感觉出来的它来自工艺路线工序里的标准值。维护工序CA01/CA02时有四个常用标准值字段准备时间Setup、机器时间Machine、人工时间Labor、拆卸时间Teardown。计划订单或生产订单带出工序时系统按标准值公式折算成每道工序的能力需求。常见做法是公式 SAP_001它的参数映射大致是订单数量除以基准数量乘上机器时间再加上准备时间和人工时间最后除以对应能力类别的换算因子。具体参数顺序要以你系统里公式定义的实际配置为准不同项目经常改过。理解这一点很重要订单数量变了准备时间通常不跟着翻倍它是按批次一次性摊的这也是为什么小批量多批次会吃掉大量产能。另一个关键开关是控制码Control key。控制码决定这道工序走不走能力计划、要不要确认、要不要打印工票。如果一张订单里工序用了一个不参与能力计划的控制码CM01 里就永远看不到这条需求——这不是系统坏了是配置本来如此。2.3 用 CM01 验证一条需求是怎么算出来的排查问题时我一般先拿一张已知订单去 CM01 对账看系统算出的需求和手算是否一致。CM01工作中心负荷的选择屏填工作中心、能力类别、期间划分日/周/月执行后可以看到该工作中心在时间轴上的需求柱和可用能力柱。要对到原始数据可以顺着订单工序和需求记录去读表。下面这段 ABAP 的思路是按工作中心把能力需求汇总出来用于和 CM01 的图形互相印证 汇总某工作中心在指定期间的能力需求总量 REPORT z_pp_cap_check. PARAMETERS: p_arbpl TYPE crhd-arbpl OBLIGATORY, 工作中心 p_days TYPE i DEFAULT 28. 向后看多少天 DATA: lv_from TYPE dats, lv_to TYPE dats, lv_sum TYPE kbed-bedar. lv_from sy-datum. lv_to sy-datum p_days. KBED 为能力需求记录字段名以 SE11 实际结构为准 SELECT SINGLE SUM( bedar ) INTO lv_sum FROM kbed AS k INNER JOIN crhd AS c ON c~objid k~objid WHERE c~arbpl p_arbpl AND k~datum BETWEEN lv_from AND lv_to. WRITE: / 工作中心, p_arbpl, / 期间, lv_from, 至, lv_to, / 能力需求合计, lv_sum.逻辑说明先用参数接收工作中心和天数算出区间端点然后按工作中心对象号关联能力需求表对需求字段求和。参数说明上p_arbpl必须是工作中心代码本身而不是描述文本p_days控制观察窗口验算时建议设成 7 或 14太长不好定位是哪张订单贡献的。如果这里查出来是 0 而 CM01 有柱状图多半是日期字段或对象号关联写错了用 SE11 看一下 KBED 的实际结构再改。把汇总值和 CM01 的数值对上你就有了继续往下查的依据。3. CM21 与 CM25能力负荷查询和能力均衡的完整操作路径3.1 CM21 能力计划表的选择参数怎么填CM21 是能力计划表Planning Table它比 CM01 多了一层可操作性不只是看负荷还能在时间轴上直接处理订单。选择屏上几个参数决定了你看到什么、能改什么。参数含义实用填法工作中心 / 能力类别观察对象先按瓶颈工作中心逐个看不要一上来全选期间划分日、周、月排产用日或周产能规划用月计划范围取哪些订单只取已下达或已确认的订单更贴近现实订单状态筛选控制订单是否显示排除已技术完成的订单否则负荷虚高能力均衡是否进入均衡模式只查看时关掉要挪订单时再打开实际操作顺序一般是先按瓶颈工作中心执行一次找到红柱子需求超过可用能力的时段再切换期间划分确认是长期超载还是某几天扎堆。判断标准不要只看总量还要看峰值。一个工作中心月总需求 800 小时、可用 900 小时看起来没问题但如果前三周各 300 小时、可用只有 200 小时那就是实打实的延期风险。CM21 里显示的订单分两类来源一类是计划订单来自 MDVP 跑的 MRP日期还算软的一类是生产订单通常已经下达日期改动要走改期流程。区分这两类才知道哪些能随便挪、哪些挪了要通知车间。3.2 CM25 能力均衡把超载时段的订单挪走CM25能力均衡解决的是怎么挪的问题。它把 CM21 的负荷视图升级成可操作的排产界面核心动作是分派Dispatching和去分派De-allocating。基本流程是先设定时间轴范围把超载时段的订单勾出来然后按规则重新分派到有富余的时段。均衡模式常见的有两类选型时要想清楚无限能力排产只按订单优先级和交期排序不保证一定塞得进产能适合先看理论顺序。有限能力排产严格卡在可用能力内塞不进去的订单顺延结果更接近真实车间但可能把低优先级订单推得很远。做均衡时我一般会先打开分派规则把按交期和按优先级两种跑一遍对比结果再决定用哪个。另外能力均衡动的是订单日期动了生产订单就等于动了车间的开工计划操作前务必确认是否要连带改组件需求日期否则会出现料和工不同步——这也是很多项目里 MIGO 发料和工序开工对不上的隐藏原因。3.3 把重复的负荷检查做成后台作业每天手动跑 CM21 不现实常见做法是把 CM21 或 CM01 存成变式挂到后台作业里定时跑再配合邮件或报表提醒。变式的关键是把工作中心列表和期间划分固定下来避免每次执行都弹出选择屏。 批量抓出所有超载工作中心供后续提醒使用 REPORT z_pp_cap_overload. TYPES: BEGIN OF ty_load, arbpl TYPE crhd-arbpl, bedar TYPE kbed-bedar, kapaz TYPE kapa-kapaz, END OF ty_load. DATA: lt_load TYPE TABLE OF ty_load. 期间建议取未来 4 周覆盖排产窗口 SELECT c~arbpl, SUM( k~bedar ) AS bedar, SUM( p~kapaz ) AS kapaz INTO TABLE lt_load FROM crhd AS c INNER JOIN kbed AS k ON k~objid c~objid INNER JOIN kapa AS p ON p~objid c~objid WHERE k~datum BETWEEN sy-datum AND ( sy-datum 28 ) GROUP BY c~arbpl. 需求超过可用能力的就是需要人工介入的对象 LOOP AT lt_load ASSIGNING FIELD-SYMBOL(ls). IF ls-bedar ls-kapaz. WRITE: / 超载工作中心:, ls-arbpl, 需求:, ls-bedar, 可用:, ls-kapaz. ENDIF. ENDLOOP.逻辑说明把能力需求表和可用能力表都按对象号关联到工作中心分组求和后逐行比较。参数说明上日期区间要和你的排产窗口一致只看未来四周通常够用bedar与kapaz的单位必须一致否则比较无意义。这段代码只做筛选不做修改适合放在预警环节真正的调整还是回到 CM25 里做因为那里有交期约束和优先级判断。4. 能力需求为 0、单位错、日期错位的排查链路4.1 能力需求算不出来的四条链路CM01 里某个工作中心一片空白按下面顺序查基本能定位第一订单是否已经展开工序。计划订单刚建、未做计划运行的情况下工序可能还没生成自然没有需求记录。第二工序用的控制码是否参与能力计划不参与就不会写需求记录。第三公式是否配了公式参数里引用的标准值字段是不是空的空标准值自然算出 0。第四能力类别是否匹配工序里的工作中心和 CM01 里选的能力类别如果不是同一套能力头需求会记到另一个类别上去。提示查这类问题时先把一张订单在 CM01 里的需求数和工艺路线里四个标准值手算一遍比对着看哪一步开始对不上比盲目翻配置快得多。4.2 单位与换算因子小时、分钟混用最容易翻车标准值的单位、能力类别的单位、公式里的换算因子这三者必须统一。常见事故是工艺路线里机器时间按分钟维护能力头按小时定义每天可用 8 小时结果系统算出来的需求看起来大了 60 倍。排查时不要只看数字大小先看单位字段。出错点典型现象处理方式标准值单位不一致需求整体偏大或偏小整数倍统一按分钟或小时维护改公式因子基准数量填错数量翻倍需求不翻倍确认基准数量是否为 1换算因子为空需求直接按原始值写入补齐能力类别的换算因子公式参数顺序改过需求结构与预期不符用一张订单反推参数映射4.3 工厂日历、班次与日期错位可用能力算不对八成是日历和班次的问题。工厂日历决定哪些天不上班班次序列决定每天的工作时段和休息间隔。如果某台设备周末加班但日历里没维护CM01 会显示那两天可用能力为零所有需求都挤到工作日。反过来如果班次序列里维护了三班但实际只开两班可用能力虚高超载就看不出来。还有一个容易忽略的点是日期错位订单工序的日期来自排程排程又依赖工作中心的排程公式和浮动时间。改过排程参数之后同一张订单在 CM01 里的需求分布会和之前完全不同。-- HANA 侧快速核对某工作中心的可用能力分布 SELECT p.objid, p.datum, p.kapaz, p.begda, p.endda FROM kapa AS p INNER JOIN crhd AS c ON c.objid p.objid WHERE c.arbpl WC-ASSY-01 AND p.datum BETWEEN CURRENT_DATE AND ADD_DAYS(CURRENT_DATE, 28) ORDER BY p.datum;逻辑说明这段查询绕过 SAP 前端直接在数据库层看可用能力记录用来验证 CM01 里绿色柱子的来源。参数说明上arbpl换成你的工作中心代码日期区间与排产窗口保持一致。如果这里查到周末也有可用能力而你的日历里周末不应上班那就是工厂日历或班次序列的分配问题回到前端调整即可。5. 进阶让能力计划和车间确认形成闭环前面几章都在讲事前算账能力计划真正的价值在于和事后数据形成闭环否则永远只是纸面数字。闭环的第一环是确认回写工序报工如 CO11N写入确认记录后实际工时和计划工时的差异就出来了。把实际值和 CM01 里的计划需求对比能看出公式参数是否偏乐观尤其是准备时间——很多项目的准备时间维护得比实际短导致排产看起来轻松、车间天天加班。第二个技巧是用需求减可用做偏离量排序而不是看绝对负荷。按偏离量降序取前十个工作中心比逐个翻 CM21 快得多前面那段 ABAP 稍加改造就能用。第三个技巧是给能力均衡设边界在 CM25 里限定最大顺延天数避免有限能力排产把订单推到几个月之后那种结果没人敢执行。最后一个实操建议是关于版本和期间的一致性。排产用的日历、公式、班次改动之后历史期间的数据不会自动重算比较新旧方案时要固定同一套主数据否则会得出改了参数之后负荷反而变高的错觉。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

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