SAP S/4HANA MM模块培训 10 - 框架协议、数量合同与金额合同

在 SAP S/4HANA 采购业务中,采购订单适合表达一次具体采购,但企业经常需要先与供应商约定一段时间内的价格、数量、金额和交付规则,再根据实际需求逐步执行。这类长期安排可以通过框架协议(Outline Agreement)管理。
本课从框架协议的定义开始,比较合同(Contract)与计划协议(Scheduling Agreement),重点讲解数量合同和金额合同,并在经典 SAP GUI 中进入 ME31K 演示数量合同的创建开头。
课程边界必须先说清楚:视频最终只完成供应商、合同类型、采购组织、采购组、工厂和有效期的输入,并打开物料选择列表。项目 10 的物料、目标数量和净价仍为空,合同没有保存,也没有生成合同号;金额合同、计划协议和合同释放订单都没有进行系统操作。
一、本课学习目标
完成本课后,应能理解:
- 框架协议解决什么长期采购问题;
- 合同与计划协议的关键差异;
- 数量合同
MK和金额合同WK分别控制什么; - 什么是合同释放订单;
- 合同可以参照哪些采购凭证创建;
ME31K创建数量合同的基本输入顺序;- 视频实际完成了哪些操作,哪些仍未完成;
- 目标数量、目标金额和有效期检查为什么不能写成绝对硬性限制。
二、什么是框架协议
框架协议是采购组织与供应商之间,在预定有效期内按约定条件采购物料或服务的长期安排。它通常先确定供应商、采购组织、有效期、采购对象、价格和其他条件,再通过后续凭证或计划行逐步执行。
视频在 00:30 左右用一年或两年作为口头示例,但这不是 SAP 固定期限。实际有效期取决于企业与供应商的商业约定和内部审批要求。

框架协议分为两类:
- 合同(Contract):维护目标数量或目标金额,发生实际需求时,创建引用合同的采购订单。
- 计划协议(Scheduling Agreement):直接用计划行维护具体交货数量和日期,供应商按计划行供货。
在采购语境中,合同双方应表述为“采购组织或采购方与供应商”。视频幻灯片使用了 customer 一词,但这里不是指 SAP 客户主数据中的销售客户。
三、合同与计划协议的执行方式
两者都属于供应来源,都可以保存有效期和采购条件,但需求落地方式不同:

1. 合同通过采购订单释放
合同只规定长期框架。实际采购时,需要创建引用合同的采购订单,在采购订单中明确本次数量和交货日期。这种采购订单称为合同释放订单(Contract Release Order 或 Call-off Order)。
释放订单不是一种完全独立的新凭证类别,它本质上仍是采购订单,只是项目引用了合同。创建后,系统可在合同释放文档中记录采购订单号、数量、金额、累计释放量和剩余量。
2. 计划协议直接维护计划行
计划协议把总需求拆分成多条计划行,每条计划行直接包含交货数量与日期。某些计划协议还会使用预测交货计划(Forecast Schedule)或 JIT 交货计划,但是否需要释放文档由计划协议文档类型和系统配置决定。
3. 视频幻灯片中的对比示例
视频约 03:20 的示意图使用了以下数据:
| 项目 | 合同示例 | 计划协议示例 |
|---|---|---|
| 协议号 | 4611 | 5500 |
| 行项目 | 10 | 10 |
| 物料 | M-01 | M-01 |
| 核心控制 | 目标数量或目标金额、条件 | 目标数量、条件和计划行 |
| 后续执行 | 采购订单 | 计划协议计划行 |
| 示例采购订单数量 | 10 | 不适用 |
| 示例采购订单日期 | 01/10/2021 | 不适用 |
| 计划行示例 | 不适用 | 10 / 01/10/2021、15 / 01/11/2021、12 / 01/15/2021 |
由于第三个日期是 01/15/2021,幻灯片显然采用 MM/DD/YYYY 格式。文章和项目文档中应先确认日期格式,不能把它自动解释成日/月/年。
四、数量合同与金额合同
合同进一步分为数量合同和金额合同:

1. 数量合同(Quantity Contract)
数量合同按合同项目维护目标数量。每次引用合同创建采购订单后,系统累计对应项目的释放数量,并用它与目标数量比较。
视频的口头示例是:与供应商约定在一年内采购 1,000 件。这里的 1,000 件只是课堂示例,不代表系统默认数量。
SAP 标准常用文档类型 MK 表示数量合同,但文档类型、编号范围、字段选择和允许的项目类别均可配置,系统中也可能存在 Z* 自定义类型。
2. 金额合同(Value Contract)
金额合同在合同抬头维护总目标金额,所有释放订单的累计金额用于消耗这项目标。视频的口头示例是采购总额 120,000 EUR。
SAP 标准常用文档类型 WK 表示金额合同。金额合同适合具体品项可能变化、但总体采购预算或合同金额明确的业务。
3. 幻灯片中的合同卡片示例
| 字段 | 数量合同 | 金额合同 |
|---|---|---|
| 示例合同号 | 4711 | 4712 |
| 合同类型 | MK | WK |
| 有效期 | 2018-01-01 至 2022-12-31 | 2018-01-01 至 2022-12-31 |
| 物料 | M-01 | 项目 10 为 M-01,项目 20 为 M-02 |
| 目标数量 | 10,000 | 不适用 |
| 价格 | 1,200.00 | 幻灯片未列出项目价格 |
| 目标金额 | 不适用 | 120,000 |
幻灯片没有标明数量单位和金额币种,因此不能自行补充。上述编号和金额只是概念示例,也不是本课实际创建的合同。
五、超过目标数量或金额,系统一定会阻止吗
视频在 05:56 左右说,超过数量合同的目标数量后系统不会允许继续处理。这种说法过于绝对。
SAP 标准会对目标数量、目标金额和有效期进行检查,并可以给出警告。企业可以通过消息配置把相关警告升级为错误,从而阻止后续释放订单。因此,实际结果可能是:
- 仅显示警告,用户仍可继续;
- 显示错误并阻止保存;
- 根据业务状态、权限或审批配置采取其他控制。
此外,系统中的 Target Quantity 和 Target Value 是否构成法律承诺,不能只凭字段名称判断,仍需以双方合同条款为准。
六、合同可以如何创建
视频在 06:48 至 07:12 介绍了四种入口:无参考手工创建、参照采购申请、参照询价单,以及参照已有合同创建。

本课实际采用的是无参考手工创建。初始界面虽然显示 Reference to PReq 和 Reference to RFQ 按钮,但讲师没有进入参照创建流程。
参考创建的意义是复用已有凭证中的供应商、物料、数量或采购条件,减少重复输入;它不意味着所有源字段都会无条件复制。可复制范围仍受凭证类型、组织范围、字段选择和当前数据有效性影响。
七、合同释放订单中的“Release”不要混淆
SAP 采购中至少有三种常见 Release 表达:
| 表达 | 实际含义 |
|---|---|
| Contract Release Order | 引用合同创建的采购订单 |
| Scheduling Agreement Release | 发送给供应商的预测或 JIT 交货计划 |
| Release Contract / Scheduling Agreement | 企业内部对合同或计划协议进行审批 |
因此,ME35K 的合同审批不是创建合同释放订单;引用合同创建的采购订单才是本课所说的 Contract Release Order。
八、组织层级与工厂范围
采购合同抬头通常包含供应商、采购组织、采购组、合同类型和有效期等信息。合同项目可以指定工厂,也可以在适用场景下不指定工厂:
- 指定工厂时,合同项目面向该工厂使用;
- 未指定工厂时,可以由所属采购组织下符合条件的工厂在释放订单中确定工厂;
- 集中合同还可能按工厂维护不同条件。
计划协议通常是工厂专用的,不能简单照搬合同项目可不填工厂的规则。
经典采购中的 Centrally Agreed Contract 也不要与当前 Central Procurement Hub 中的 Central Purchase Contract 混为一谈。前者是采购组织范围内的集中协议;后者是中央采购系统创建并分发到连接系统的中央采购合同。
九、经典事务码与当前 Fiori 应用
| 对象 | 创建 | 修改 | 显示或维护 |
|---|---|---|---|
| 采购合同 | ME31K | ME32K | ME33K |
| 计划协议 | ME31L | ME32L | ME33L |
| 采购订单 | ME21N | ME22N | ME23N |
| 计划协议计划行 | — | ME38 | ME38 |
| 合同内部审批 | — | ME35K | ME35K |
| 计划协议内部审批 | — | ME35L | ME35L |
在当前 SAP S/4HANA Fiori 中,常见应用还包括:
- Manage Purchase Contracts(F1600A):创建和管理数量合同、金额合同、模板、版本与审批;
- Manage Purchase Scheduling Agreements(F2179):管理计划协议、计划行和相关释放;
- Manage Purchase Orders(F0842A):管理采购订单,包括适用场景中的合同引用。
具体应用能否使用以及功能范围,取决于 S/4HANA 部署方式、版本、激活范围和业务角色。本视频只演示经典 SAP GUI。
十、ME31K 创建数量合同:视频实际操作
步骤 1:从 SAP 菜单进入创建合同
视频 07:52 左右依次展开:
Logistics → Materials Management → Purchasing → Outline Agreement → Contract → ME31K - Create

菜单中还可看到 ME32K、ME33K、ME34K 和 ME35K。这些分别承担修改、显示、维护补充和审批等功能,不能把 ME35K - Release 误解为创建释放订单。
步骤 2:维护初始数据
视频选择并输入了以下培训系统数据:
| 字段 | 视频实际值 | 说明 |
|---|---|---|
| Vendor | 100274 | 系统显示 Alibaba Vendor |
| Agreement Type | MK | 数量合同 |
| Agreement Date | 30.08.2021 | 培训系统日期 |
| Purchasing Organization | 1710 | 培训组织 |
| Purchasing Group | 001 | 培训采购组 |
| Plant | 1710 | 培训工厂 |

本画面中项目类别、科目分配类别、存储地点和物料组均未填写。字段是否必填取决于业务场景和文档类型配置。
步骤 3:维护合同有效期
进入抬头后,视频维护:
- Validity Start:
30.08.2021 - Validity End:
30.08.2022
系统同时带出公司代码 1710、货币 EUR、付款条件 0001、汇率 0.78000、Incoterms CFR、地点 Warehouse 和语言 EN 等数据。这些值来自培训系统的供应商与组织配置,不是 SAP 标准固定值。
由于本次选择的是数量合同,抬头 Target Value 保持为空是正常方向;真正的目标数量应在合同项目中维护。
步骤 4:进入项目总览并查找物料
进入项目总览后,行项目 10 的 Material、Short Text、Target Quantity 和 Net Price 均为空,工厂列显示 1710。讲师打开物料列表,列表中出现工厂 1710 的多个原材料:

画面中可以看到物料 7145、描述 Caramel Colour,物料类型 ROH,单位 G,价格列显示 5.00 USD。它只是物料选择列表中的候选行;视频没有证明该物料已成功写入合同项目。
步骤 5:视频结束时仍未完成项目
从物料列表返回后,视频约 10:18 的最终业务画面如下:

项目 10 的关键字段仍为空:
| 字段 | 视频结束状态 |
|---|---|
| Material | 空 |
| Short Text | 空 |
| Target Quantity | 空 |
| Net Price | 空 |
| Agreement Number | 空,合同未保存 |
因此不能写成“数量合同创建成功”,也不能给出本课生成的合同编号。
十一、如果要完成这个练习,还需要什么
视频没有继续,但一个完整的练习通常还需要:
- 在项目 10 中输入或选择物料;
- 检查项目类别、科目分配和工厂;
- 输入目标数量;
- 维护净价、价格单位和有效条件;
- 检查抬头、项目、文本和伙伴数据;
- 根据企业流程完成审批并保存合同;
- 记录系统生成的合同号;
- 在后续采购订单中引用合同;
- 检查释放文档、累计数量或金额和剩余量。
这只是基于 SAP 标准对象整理的后续验证路径,不是本视频已经完成的内容。
十二、常见误区
误区 1:合同和计划协议只是名称不同
不是。合同需要通过采购订单释放实际需求;计划协议直接以计划行维护数量和日期。
误区 2:合同释放订单是一种独立于采购订单的新单据
不是。它本质上是引用合同的采购订单。
误区 3:超过目标数量或目标金额后,所有系统都会无条件阻止
不准确。系统可以给警告,也可以通过消息配置升级为错误。
误区 4:MK、WK 和所有下拉列表类型都是全球固定配置
不准确。MK 和 WK 是常见标准类型,但系统可以配置自己的文档类型。视频下拉列表中的多项 Z* 或培训命名条目不能作为 SAP 标准清单。
误区 5:视频已经保存合同并创建释放订单
没有。视频停在空白项目行,既没有合同号,也没有采购订单。
误区 6:合同项目与计划协议都可以不指定工厂
不准确。合同项目可以按组织设计保持工厂为空,但计划协议通常是工厂专用。
十三、课程时间线
| 时间 | 内容 | 实际完成情况 |
|---|---|---|
| 00:00–01:28 | 框架协议定义、长期条件和集中协商 | 已讲概念 |
| 01:28–02:40 | 合同与计划协议两类框架协议 | 已讲概念 |
| 02:40–03:53 | 合同有效期、目标数量/金额和释放订单 | 已讲概念 |
| 03:53–04:25 | 计划协议和计划行 | 已讲概念,未操作 |
| 04:28–05:56 | 数量合同与金额合同 | 已详细讲解 |
| 05:56–06:48 | 两类合同的课堂示例 | 已讲示例 |
| 06:48–07:28 | 手工和参照创建、合同释放订单 | 已讲概念,参照创建未操作 |
| 07:52–08:18 | 菜单路径和 ME31K | 已操作 |
| 08:18–09:31 | 供应商、MK、采购组织、采购组和工厂 | 已输入 |
| 09:31–09:52 | 合同有效期 | 已输入 |
| 09:52–10:18 | 项目总览和物料搜索 | 只完成搜索,项目未填写 |
| 10:18–10:21 | 空白项目行后进入结束卡 | 未保存合同 |
十四、本课总结
框架协议把长期采购条件与每次具体采购分开管理。合同通过采购订单释放需求,计划协议则通过计划行安排交货。数量合同在项目层关注目标数量,金额合同在抬头关注总目标金额。
本课最重要的操作认识是:进入 ME31K、选择 MK 并填写组织数据,只是创建数量合同的开始。只有完成项目、价格和条件并保存后,才能获得正式合同号;随后引用合同创建采购订单,才形成合同释放订单。
参考资料
- SAP Learning:Maintaining a Purchasing Contract
- SAP Learning:Outline Purchasing Agreements
- SAP Learning:Introducing Contracts in SAP S/4HANA
- SAP Learning:Working with Contracts
- SAP Help:Contract Release Orders
- SAP Help:Scheduling Agreements
- SAP Help:ME31K、ME32K、ME33K
- SAP Help:Manage Purchase Contracts 功能对照
- SAP Help:Manage Purchase Scheduling Agreements
- 本课原始视频


