销售与运营计划 S&OP
S&OP 是供应链最重要的跨职能协同机制——每月一次,销售、供应链、财务和高管坐在一起,让供需真正平衡。
S&OP 月度流程
graph TD
W1["第1周\n数据收集与刷新"] --> W2["第2周\n需求评审"]
W2 --> W3["第3周\n供应评审"]
W3 --> W4["第4周\n管理层决策会"]
W4 --> EXEC["执行计划\n下月开始"]
W1 --> D1["历史销售数据\n市场预测\n新品计划"]
W2 --> D2["共识需求计划\n机会与风险标注"]
W3 --> D3["供应能力评估\n差距分析\n备选方案"]
W4 --> D4["最终批准计划\n产能投资决策\n KPI 目标"]
style W4 fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style EXEC fill:#c8e6c9,stroke:#388e3c,stroke-width:2px
S&OP 核心计算模型
"""
S&OP 供需平衡分析
"""
from dataclasses import dataclass
@dataclass
class MonthPlan:
month: str
demand_forecast: int # 需求预测(件)
confirmed_orders: int # 已确认订单
opening_stock: int # 期初库存
production_plan: int # 生产计划
capacity_max: int # 最大产能
safety_stock_target: int # 安全库存目标
class SOPAnalyzer:
"""S&OP 供需平衡分析器"""
@staticmethod
def analyze(plan: MonthPlan) -> dict:
"""供需平衡分析"""
# 需求取预测和确认订单的最大值(保守原则)
effective_demand = max(
plan.demand_forecast, plan.confirmed_orders
)
# 期末库存
closing_stock = (
plan.opening_stock
+ plan.production_plan
- effective_demand
)
# 供需差距
gap = plan.production_plan - effective_demand + plan.opening_stock
# 产能利用率
utilization = plan.production_plan / plan.capacity_max
# 库存健康
stock_days = closing_stock / (effective_demand / 30) if effective_demand else 0
return {
"月份": plan.month,
"有效需求": effective_demand,
"生产计划": plan.production_plan,
"期初库存": plan.opening_stock,
"期末库存": closing_stock,
"库存天数": round(stock_days, 1),
"安全库存目标": plan.safety_stock_target,
"产能利用率": f"{utilization*100:.1f}%",
"供需平衡": (
"供不应求 — 需扩产或增库存"
if closing_stock < plan.safety_stock_target
else "库存过高 — 考虑减产"
if closing_stock > plan.safety_stock_target * 3
else "平衡"
),
}
@staticmethod
def rolling_plan(
months: list[MonthPlan],
) -> list[dict]:
"""滚动计划分析"""
results = []
prev_closing = months[0].opening_stock
for i, month in enumerate(months):
month.opening_stock = prev_closing
result = SOPAnalyzer.analyze(month)
prev_closing = month.opening_stock + month.production_plan - max(
month.demand_forecast, month.confirmed_orders
)
results.append(result)
return results
@staticmethod
def gap_scenarios(
demand: int,
current_capacity: int,
options: dict[str, int],
) -> list[dict]:
"""差距填补方案对比"""
gap = demand - current_capacity
if gap <= 0:
return [{"状态": "产能充足,无需调整"}]
scenarios = []
for option, additional_capacity in options.items():
can_fill = min(gap, additional_capacity)
remaining_gap = max(0, gap - additional_capacity)
scenarios.append({
"方案": option,
"新增产能": additional_capacity,
"可填补差距": can_fill,
"剩余缺口": remaining_gap,
"填补率": f"{can_fill/gap*100:.0f}%",
})
return sorted(scenarios, key=lambda x: x["剩余缺口"])
# 演示 — 6 个月滚动 S&OP
monthly_plans = [
MonthPlan("2024-04", 12000, 10500, 3000, 11000, 15000, 2000),
MonthPlan("2024-05", 13500, 12000, 0, 12000, 15000, 2200), # 旺季来临
MonthPlan("2024-06", 15000, 14200, 0, 13000, 15000, 2500), # 6月大促
MonthPlan("2024-07", 11000, 9000, 0, 12000, 15000, 2000), # 旺季结束
MonthPlan("2024-08", 10000, 8500, 0, 10500, 15000, 1800),
MonthPlan("2024-09", 14000, 13000, 0, 13500, 15000, 2300), # Q3 大促备货
]
print("=== 6 个月滚动 S&OP ===")
for result in SOPAnalyzer.rolling_plan(monthly_plans):
status = result["供需平衡"]
print(f"\n{result['月份']}:")
print(f" 需求: {result['有效需求']:,} 生产: {result['生产计划']:,} 期末库存: {result['期末库存']:,}")
print(f" 库存天数: {result['库存天数']}天 产能利用率: {result['产能利用率']}")
print(f" 状态: {status}")
print("\n=== 6月差距方案对比(差距 2000 件)===")
scenarios = SOPAnalyzer.gap_scenarios(
demand=15000, current_capacity=13000,
options={
"加班加班(双倍工资)": 1500,
"外包给合作工厂 A": 2500,
"调用渠道安全库存": 2000,
"说服客户分批交付": 1000,
},
)
for s in scenarios:
print(f" {s['方案']}: 可填 {s['可填补差距']} 件,剩余 {s['剩余缺口']} 件 ({s['填补率']})")
S&OP 会议关键角色
| 角色 | S&OP 责任 | 典型输出 |
|---|---|---|
| 供应链总监 | 流程主持,汇总各方输入 | 供需平衡方案 |
| 销售/市场 | 提供需求预测,标注机会风险 | 共识需求计划 |
| 生产/运营 | 评估产能,提供供应计划 | 产能缺口分析 |
| 采购 | 评估关键物料供应 | 物料风险清单 |
| 财务 | 审查库存投资,财务影响 | 财务模拟 |
| CEO/COO | 最终决策(产能投资、目标优先级) | 批准计划 |
成熟 S&OP 的标志
| 成熟度 | 特征 |
|---|---|
| L1 (初级) | 仅有财务计划,无产销协同 |
| L2 (基础) | 有月度会议,但信息不准确,决策缺席 |
| L3 (中级) | 数据可靠,跨部门达成共识 |
| L4 (高级) | 与战略规划融合,模拟多情景 |
| L5 (卓越) | 实时供需感知,AI 辅助决策 |
行动清单
- [ ] 建立 S&OP 月度日历:第 1 周数据收集,第 2 周需求评审,第 3 周供应评审,第 4 周决策会
- [ ] 定义标准需求预测模板(预测 + 确认订单 + 机会/风险注释)
- [ ] 建立供需平衡电子表格,计算每月期末库存和库存天数
- [ ] 邀请 CFO/COO 参加月度决策会,确保关键决策有权威授权
- [ ] 设置 S&OP 质量指标:计划达成率、预测准确率(MAPE)、库存周转天数
- [ ] 对历史 6 个月的供需差距做复盘,找出系统性偏差根因
下一节:03-供需协同与CPFR — 将供应链信息共享推进到供应商和客户。