ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

Oracle EBS ASCP高级计划排程:三层BOM完整计划案例解析

Oracle EBS ASCP高级计划排程:三层BOM完整计划案例解析

简介:针对Oracle EBS高级计划排程(ASCP)模块的方案设置测试文档,主要面向制造企业供应链计划员、EBS实施顾问以及需要深入理解高级排程的学员。文档以YY手机公司多工厂、多分销中心的实际业务为背景,完整覆盖ASCP方案从配置到执行验证的全过程,内容包括物料定义与组织分配、BOM与工艺路线维护、来源规则与分配清单设置、MDS需求定义、供应链计划定义与运行,以及计划下达、采购、生产、入库、发运等执行环节,并配合逐步操作截图和关键参数说明,可在学习时对照演练和排查故障。资源打包为1个doc文档,压缩包大小约1.43MB,结构清晰、流程完整,便于按章节循序渐进地阅读。已有1952人学习下载,是掌握EBS供应链计划模块配置路径与测试方法的实用参考资料。

1. Oracle EBS ASCP 高级计划排程:一套三层 BOM 的完整计划案例

当你想在 Oracle EBS 里验证高级计划排程(ASCP)能不能覆盖多工厂加多分销中心的真实场景时,最好的起步不是翻官方文档,而是把一套已经跑通的测试方案从头复现一遍。这套案例来自一份编号为“ASCP 测试”的测试文档,场景是一个手机公司(案例代号 YY)——3 个工厂分别承担组装、机盖、机身生产,零部件从 4 家供应商外购,成品发往 2 个分销中心。规模不大,但物料组织分配、BOM、工艺路线、来源规则、分配清单、MDS、供应链计划、计划下达与执行这些 ASCP 的核心配置一个不少。

文档里最难的不是某个单一功能,而是物料、产能、来源规则之间的联动关系——同一个物料在不同组织里计划方法不同,同一个零件在不同组织里来源类型不同,跑出来的建议计划就会完全两样。这套案例跑通后,你获得的不只是几个能点的界面,而是一条从分销需求追溯到采购建议的完整数据流。

适合正在做 ASCP 功能验证的企业内部顾问,也适合刚接手 EBS 供应链计划模块、想弄明白“计划为什么这么算”的实施顾问。新手可以直接按步骤搭,熟手可以重点看第 3 章的来源规则和第 4 章的踩坑记录。

2. 物料、BOM 与工艺路线:三层结构与产能参数怎么落到组织里

2.1 物料定义与组织分配:计划方法、例外集与三个工厂的职责

ASCP 跑计划之前,物料在主组织里建好只是第一步,更关键的是把物料分配给实际参与计划的组织。以机盖 YY-JG 为例,这套文档给的设置顺序是:先在主组织新建物料,复制自模板“子装配件”,然后把四条物料主数据属性钉死。

第一条是“MPS、MRP计划”区域里的“计划方法”,必须选“MRP/MPP计划”。很多人会疑惑为什么不是 MPS 计划,因为 YY-JG 是子装配件,不做主生产排程,它的需求完全由上层成品 YY-SJ 和下层库存策略驱动。预测控制选“冲减衍生”,意思是实际需求(MDS/MPS 传入的独立需求)优先消耗预测,避免需求重复计算。追溯属性选“总装、软发查”,这个决定计划跑完后你能在计划员工作台查到多深的供需来源。

第二条是“订单管理”里启用“客户订购”。只有开了这个,后续在分销中心 D1、D2 给 YY-SJ 建 MDS 时,物料才能作为需求源被订单类数据命中。

第三条是物料分配。YY-JG 要同时分配给 M1 和 M2,但两个组织里的属性完全相反:M1 的组织属性里“制造或采购”选“采购”,M2 里选“制造”。这里我多说一句,很多人以为“制造或采购”只影响报表显示,实际上 ASCP 计划引擎会直接据此决定这个组织对该物料生成采购申请还是离散任务。选反了,后面来源规则怎么配都白搭。

最后是例外集,M1、M2 的组织属性里例外集都选择 ASCP。例外集决定哪些例外消息在计划员工作台显示,如果这里留空,计划结果里的关键异常会被当成默认集过滤掉,你看到的预警永远是残缺的。

三个工厂在这个案例里的职责可以先用一张表固定下来,后面所有配置都以这张表为准:

组织关键工序输入物料输出物料对 YY-JG 的职责
M1总装机盖、机身、电池成品手机 YY-SJ采购机盖(从 M2 传送)
M2机盖生产屏幕、电路板机盖 YY-JG制造机盖
M3机身生产键盘、电路板机身 YY-JS制造机身

这张表看起来简单,但配置来源规则时非常容易绕晕,尤其是 M1 对机盖是“接收”而不是“制造”这个反直觉关系。

2.2 BOM 与工艺路线:资源产能单位换算与部门绑定

BOM 的定义在这套案例里是三层:成品 YY-SJ 由机盖 YY-JG、机身 YY-JS、电池 YY-BA 组成,BOM 建在组织 M1。注意,YY-JG 本身在 M2 还有自己的 BOM,组成是屏幕和电路板;YY-JS 在 M3 有 BOM,组成是键盘和电路板。ASCP 之所以叫“高级”计划排程,就是因为它会沿着这一层一层往下展开,把 M2、M3 的产能和 M1 的装配需求放在同一个计划里平衡。

工艺路线的定义以 YY-JG 为例,组织 M2。步骤拆开看是几步:定义资源 YY-M2-R1,定义一个部门 YY-M2-1,地点 M2,最后把资源和部门挂到 YY-JG 的工序上。

资源定义里最容易踩的是“24小时可用”勾选框。文档里明确要求去掉“24小时可用”,数量填 1,班次选白班、数量 1。这个配置合起来等于告诉计划引擎:该资源每天只有 1 个班次 8 小时可用,不是全天候资源。如果不清掉这个勾,ASCP 会把该资源当成年 8760 小时可用,有产能约束的计划跑出来排产日期普遍提前,后续工单根本排不下去。

工序资源设置里有一个数字让很多人懵,就是“单位使用量”填 10。文档注释写得很清楚:10 表示 1 小时生产 0.1 千件产品。换算一下,0.1 千件/小时等于 100 件/小时,10 可以理解为加工一件耗时相对基准的倍数。我在实际项目中更习惯把产能写在资源主数据上(每小时单位数直接写 100),工艺路线单位使用量填 1,报表和看板读起来都直观。但不管用哪种写法,本质是让计划引擎算出“M2 用这个资源 8 小时内最多产出 800 件”,超过这个量就需要加班或拖期。

工序资源里最后还有一个“计划”字段必须选“是”。这个字段是 ASCP 是否把该资源纳入产能约束计算的开关。选否的话,工艺路线照样存在,BOM 也可用,但计划引擎在计算时直接忽略该资源的产能限制,等于把高级计划排程降级成了只算物料不缺料的普通 MRP。

注意:“计划”字段选“是”只对需要参与产能约束的工序有效。如果只是想记录工艺不计产能,可以保留“否”,资源不会被计划引擎调度,也不会生成对应的能力计划消息。

2.3 用 SQL 快速校验物料与工艺设置

界面点完不代表配置就进去了。我每配完一个组织维度,习惯先跑一段 SQL 确认数据落库,尤其是物料分配和来源规则。

-- 校验 YY-JG 是否已分配给 M2,且计划属性正确 SELECT msi.organization_id, msi.segment1 AS item_code, msi.item_type, msi.planning_make_buy_code, msi.planner_code FROM mtl_system_items msi WHERE msi.segment1 = 'YY-JG' AND msi.organization_id = (SELECT organization_id FROM mtl_parameters WHERE organization_code = 'M2');

如果查询结果为空,说明 YY-JG 没分到 M2,ASCP 在整个计划周期里都不会看到这个组织有这个物料;planning_make_buy_code 如果对应“制造”,跑出来的才是预期结果,显示为“采购”的话后面直接返工。

再校验工艺路线是否被 ASCP 识别:

-- 查 YY-JG 在 M2 的工序资源是否启用计划 SELECT wro.operation_seq_num, wro.resource_seq_num, wro.schedule_flag FROM bom_operational_routings bor, bom_operation_resources wro WHERE bor.routing_type = 1 AND bor.routing_sequence_id = wro.routing_sequence_id AND bor.assembly_item_id = (SELECT inventory_item_id FROM mtl_system_items WHERE segment1 = 'YY-JG');

这段 SQL 在版本不同时列名会有点出入,但核心就是查工序资源上的 schedule_flag 是否为 1(勾选了“是”)。如果是,说明产能约束已经生效,可以进入第 3 章配来源规则了。这个字段我见过太多项目漏掉,结果是计划结果里 M2 永远满负荷,而 M1 的装配建议日期被推到很晚,供应链计划员完全不知道产能根本没被算进去。

3. 来源规则、分配清单与 MDS:把需求逐层传到工厂的三种方式

3.1 来源规则:采购来源、传送自、制造地点怎么选

ASCP 和普通 MRP 的一个核心区别就在来源规则。MRP 只认物料在某组织是制造还是采购,ASCP 则允许你对同一个物料在不同组织定义完全不同的获取方式,并且把组织间调拨也纳入计划。

本案例中,M1 组织里要定义三组来源规则。电池 YY-BA,类型为“采购来源”——M1 不自己做电池,只能从供应商 S1 采购。机盖 YY-JG 和机身 YY-JS,类型为“传送自”——M1 的生产计划需求不由自己制造,而是从 M2、M3 传送过来。产成品 YY-SJ,类型为“制造地点”——定义来源组织为 M1,ASCP 会为它生成 M1 的装配任务。

组织物料来源规则类型来源组织/地点
M1YY-BA采购来源供应商 S1
M1YY-JG传送自M2
M1YY-JS传送自M3
M1YY-SJ制造地点M1
M2YY-SC / YY-CB采购来源供应商 S4 / S3
M3YY-KB / YY-CB采购来源供应商 S2 / S3

这里有一个规律值得记住——同一种物料在不同组织的来源类型可以不同。比如 YY-CB 电路板,在 M2 是采购来源,在 M3 也是采购来源,但消耗它的父项不同;你如果手滑把 M1 对 YY-JG 配成“制造地点”,计划引擎就会在 M1 生成一个机盖的制造任务,跟 M2 的制造任务撞车,M1 既收传送又自己生产,供应翻倍。

注意:来源规则是按组织维度定义的,切换组织前先看左上角当前组织是不是你要配的那一个。EBS 里组织上下文切错,规则会静默落到别的组织,计划结果完全对不上。

3.2 分配清单与指定集:把规则打包发给计划引擎

来源规则告诉 ASCP“某个组织里某个物料能怎么获得”,但还缺一个关键信息:D1、D2 的需求应该由哪个组织承担。这部分由分配清单完成。

分配清单的操作路径是:切换责任为供应链计划员,为 YY-SJ 定义分配清单,名称 YY-M1;接收组织分别输入 M1、D1、D2;然后逐个点接收组织,选择类型,M1 选“制造地点”,D1、D2 选“传送自”,来源组织都填 M1,分配 100%,级别 1。

“分配 100% + 级别 1”的含义是:所有需求先全部由 M1 承担,只有 M1 产能不足以满足时,才升级到下一级别的来源。这是 ASCP 里分销需求向上传递的主要路径。

然后定义指定集,名称 YYAPS-1,把下面两项都拖进这个集合:产成品 YY-SJ 的分配清单,以及前面定义的全部物料的来源规则。指定集相当于一个配置快照,供应链计划定义时选定“TST:YYAPS-1”,计划引擎才会用一套完整的规则去算。只配规则不建指定集,或者建了指定集但计划选项里没选它,是 ASCP 设置里最隐蔽的问题——计划能跑通,但结果像自由落体,完全不受来源规则约束。

3.3 MDS 定义与冲减衍生:D1、D2 的需求怎么命中计划

分销中心的需求通过主需求计划 MDS 进入 ASCP。在责任“制造和分销经理”下,更改组织为 D1,输入名称 YY-D1-MDS1,选择“冲减”,物料 YY-SJ,在详细资料里输入需求日期和数量——5 月 21 日 10 千件,5 月 25 日 20 千件。D2 同样操作一次。

理解 MDS 是理解整个案例的关键:MDS 是独立需求的来源,它不关心 YY-SJ 在哪生产,只记录“哪天、哪个地点、需要多少”。ASCP 拿到 MDS 后,结合 BOM、工艺路线、来源规则、库存与在途,把所有节点的供应建议算出来。

“冲减”这个选择对应物料属性里的“预测控制=冲减衍生”。意思是当实际销售订单和 MDS 预测同时存在时,实际订单先去消耗预测数量,剩下的预测才参与计划。如果你在 D1 已经挂了实际订单,又不去勾冲减,系统会把两者相加,需求被重复计算,计划结果里采购建议量凭空翻倍。

4. ASCP 设置避坑指南:五个把计划拖垮的翻车点

4.1 物料组织维度:计划跑完却没数据,多半是分配和例外集在作怪

现象:运行供应链计划提示“已完成”,但在计划员工作台按组织查 YY-JG,计划结果里一片空白,没有供应建议也没有需求明细。

原因:主组织物料建好后漏了组织分配,或分配后组织属性里的“制造或采购”没有选对,计划引擎根本不把该物料纳入计算。另一种可能是例外集没有选择 ASCP,导致该物料的例外消息在计划员工作台里被过滤掉了。

解决:把 2.3 节的 SQL 跑一遍,确认 YY-JG 在 M1、M2 各自的 organization_id 记录都在,且 planning_make_buy_code 对应的值符合“采购/制造”设定;然后去组织属性看例外集是否为 ASCP。我在这类问题上翻车过两次,每次都是“计划结果空白”这种静默失败,界面无任何报错,排查全靠 SQL。

4.2 流程编排维度:来源规则配错与 MDS 不勾冲减,结果翻倍

现象:计划跑完后,M1 同时出现两条供应——一条是从 M2 传送机盖的供应,另一条是 M1 自己生成机盖的制造任务;或者在 D1 有 10 千件实际订单的情况下,计划结果里需求总数变成 20 千件。

原因:来源规则里 M1 对 YY-JG 误选了“制造地点”,而不是“传送自”。ASCP 按“该组织自行制造”展开 BOM,于是 M1 有了机盖制造任务。同时,如果 MDS 定义时没有选“冲减”,独立需求和实际订单在同一时格内被重复合计。

解决:来源规则按第 3.1 节的表逐一核验,特别是 M1 对 YY-JG、YY-JS 必须为“传送自”,来源组织指向 M2、M3;MDS 定义时把“冲减”复选框勾上,并在物料主数据里确认预测控制为“冲减衍生”。这两个问题不报错,全靠结果不对劲才能发现。

4.3 执行落地维度:采购申请生成后消失,计划名也容易写错

现象:ASCP 释放后计划建议生成了采购申请,但切到采购管理-自动创建里找不到那条申请;或者跑计划时填计划名称 YYASP-1,系统提示找不到计划。

原因:ASCP 释放的采购申请没有在 PO 模块生成标准订单编号,只有通过“自动创建”批次处理后才会生成可供审批的订单草稿。计划名称的问题更常见——文档里前文定义的是 YYAPS-1,释放时写成 YYASP-1,字母位置一换,系统完全换了一张脸。

解决:采购侧操作按文档路径走一遍:采购管理-自动创建,先删除采购员查找条件,找到 YY-BA 后点“自动”,然后选供应商、创建,再在发运 Tab 分配子库存 RIP,最后审批,状态才变成“批准”。计划名称则在定义完成后,直接复制定义界面的全名到运行界面,不要手打。

5. 跑完计划后的验证技巧:多级供应链清单与执行前的最后检查

计划跑完,最先看的不应该是例外消息,而是计划员工作台里的多级供应链清单。按这条路径操作:责任高级供应链计划员,组织 M1,分配集选择 TST:YYAPS-1,组织选 D1,物料 YY-SJ,右键“查看多级清单”。

一份合格的 ASCP 结果会呈现一条完整链路:

计划层次内容来源规则动作
需求层D1、D2 的 MDS 需求 10/20 千件按日期倒入
总装层M1 对 YY-SJ 生成装配任务制造地点
部件层M1 对 YY-JG / YY-JS 生成接收传送传送自 M2 / M3
采购层电池、屏幕、键盘、电路板分别生成采购申请采购来源

这条链按第 2、3 章的规则逐级展开,任何一级脱节都说明配置有断点。尤其要盯“传送自”那层——M1 对机盖的供应类型应该是“远端供应”,如果显示成“内部制造”,立刻回去查来源规则。

验证脚本可以加一段:

-- 核对计划结果里的供应是否按日期落在需求之前 SELECT mp.plan_name, msd.segment1 AS item_code, msd.supply_demand_type, msd.new_schedule_date AS plan_date, msd.order_qty FROM msc_supply_demand msd, msc_plans mp WHERE msd.plan_id = mp.plan_id AND mp.plan_name = 'YYAPS-1' AND msd.segment1 = 'YY-SJ' ORDER BY msd.new_schedule_date;

看结果时脑子里过一个不等式:到货日期 ≤ 需求日期 - 提前期。YY-BA 提前期 3 天,那么 5 月 21 日 10 千件的需求,采购建议的到货日期最晚应该是 5 月 18 日。如果系统给出的是 5 月 20 日,说明提前期没被正确读取,去查物料主数据的提前期属性。

建议在测试环境里把这份测试方案原样复现一遍,它比任何幻灯片都接近生产。从那以后,我每次跑 ASCP 都会强制走一遍多级供应链清单核对,这个习惯帮我抓住过三次来源规则配错的现场,而且都是在业务部门看到计划之前。多花十分钟看链路,能省掉后面计划会上的所有解释口径。希望帮到你。

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

RELATED READING

延伸阅读

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