☰
SAP MM采购申请与计划协议:从PR到交货计划行的全流程解析
2026/10/3 17:22:57 网站建设 项目流程

1. 采购申请:SAP MM中“需求发起”的起点

聊SAP采购,很多人一上来就盯着采购订单(PO)怎么建、怎么审批,却容易忽略整个链条的第一环——采购申请(Purchase Requisition,简称PR)。实际跑过几个完整项目的都知道,PR才是那个真正决定“买什么、买多少、什么时候要”的源头单据。PO也好,计划协议也好,往往只是把PR里的需求“翻译”成对供应商的正式承诺。所以想搞懂SAP MM的采购逻辑,先吃透采购申请,比什么都重要。

1.1 采购申请到底解决什么问题

采购申请在SAP系统里的定位,简单说就是“内部需求凭证”。它记录的是企业某个部门、某条产线、某个项目在某一个时间点,需要多少物料或服务,以及期望的交货日期。它不直接对供应商产生法律效力,它只是企业内部表达需求的一种标准化方式。

这个设计思路非常符合实际业务逻辑。拿生产制造企业举例:生产计划员跑完MRP(物料需求计划),系统发现某种原材料的安全库存快见底了,于是自动生成一条采购申请,数量是2000公斤,交货日期是下周三。这时候这条PR需要经过内部审批,可能是生产经理确认、采购经理复核,然后才进入采购员的待办清单。采购员拿到PR后,可以选择转成采购订单发给老供应商,也可以先询价比价,再决定供应商是谁。也就是说,PR把“需求提出”和“采购执行”两个环节解耦了,这对于内部职责分离、审计追溯都很有价值。

还有一类常见的场景是手工创建PR。比如设备维修部门发现某台机器的轴承磨损了,备件库没有库存,维修工程师直接在SAP里敲一条PR,说明需要2个轴承、希望三天内到货。这种需求往往是零星的、非计划性的,但同样需要走采购流程。SAP的采购申请模块,对这两类需求(计划内和计划外)都提供了完整支持。

1.2 采购申请的核心字段与创建方式

采购申请不是随便填个物料号就完事的,它有一组关键字段决定了后续采购动作怎么走。我给刚入行的顾问或关键用户列几个最常见的:

字段作用注意事项
物料号指明需要什么若物料尚未建码,可用物料组+文本描述替代
数量需求量要与需求来源(PR、预留、计划订单)逻辑一致
交货日期期望到货时间直接影响MRP的排程结果
工厂/库存地点需求发生地跨工厂的需求要做STO(库存转储)设计
采购组负责该需求的采购员分组后续审批策略、货源策略都会参考它
固定供应商已指定货源则直接挂未指定时可留空,由采购员后续确定
凭证类型标准PR为NB不同凭证类型可配置不同编号范围和审批策略
项目类别正常库存/消耗类/服务类等决定了后续转PO时是普通采购还是服务采购

创建PR的方式,目前我接触过的项目里主流有四种:第一种是MRP自动生成,也是最常见的一种;第二种是手工事务代码ME51N创建;第三种是由其他模块的前端单据转换而来,比如设备维修订单的备件需求、销售订单的定制物料需求;第四种是通过BAPI/接口从外部系统导入,比如老旧的EAS系统或SRM系统推送过来的需求。

手工创建PR没什么门槛,但有个细节很多新手容易忽略:ME51N界面里,如果你只填了物料组和工厂,没有填物料号,系统会要求你必须维护一段需求文本,否则不能保存。这个文本就是给采购员看的说明,写清楚“为什么买、用于哪里”,后续转成PO后这段文本还能带到采购订单里,再通过打印输出传递给供应商。别嫌麻烦,这些信息在审计时是救命的。

1.3 采购申请里容易被低估的“科目分配类别”

科目分配类别(Account Assignment Category,通常叫“科目分配类别”或“K类别”)是PR上一个不太起眼、但影响深远的字段。它决定了这次采购是买回来进库存的,还是直接费用化到成本中心、资产、项目或订单上的。

我见过不少初学SAP的朋友,在ME51N里看到一个“科目分配类别”下拉框,里面有一堆值,比如空、U、A、P、M、F,搞得一头雾水。简单理解就是:

  • 空:采购进库存,物料以后用于生产或销售,典型是原材料、半成品、成品。
  • U:直接费用到某个成本中心,典型是办公用品、维修备件。
  • A:费用归集到固定资产,用于资本性采购。
  • P:挂到项目(WBS元素)下的采购,工程项目里很常见。
  • M:挂在生产订单下的采购,有时候工艺路线临时需要某种物料。
  • F:挂在销售订单下的采购,按单生产的模式用得比较多。

这个字段千万别乱选,因为一旦选了科目分配类别,后续做收货时财务凭证的科目确定逻辑就完全变了。进库存的采购,收货时走GR/IR科目,发票校验时也是标准的三方匹配;而费用化采购,收货时可能直接借成本中心/资产/项目,根本不经过库存过渡。如果业务上本来该进库存的物料,你给PR选了费用化科目,后续库存账和财务账会对不上,盘点时哭都来不及。

2. 从PR到PO:采购申请转采购订单的关键逻辑

采购申请不是终点,多数情况下它需要转成采购订单(PO)发送给供应商,才算是真正进入执行阶段。这个转换动作在SAP里通过事务代码ME21N或ME57完成,但背后牵扯到的策略、审批、货源确定,才是实战中真正考验人的地方。

2.1 采购申请的审批策略

SAP的审批机制和OA系统的审批流不太一样,它不是简单画一个流程图就完事,而是基于“特性”驱动。也就是说,系统会根据审批策略里的条件,自动判断这条PR需不需要审批、需要哪个层级的审批。

最常见的做法是配置“批准组 + 批准代码 + 批准策略”。比如:

  • 批准组可以按采购组或物料组区分,比如MRO类备件一个组,原材料一个组。
  • 批准代码是“1、2、3”这种层级,每层代表一个审批人。
  • 批准策略里设定分类条件,比如“采购金额大于10万元”或“物料组属于危险化学品”。

实际项目里常遇到的情况是:一条PR金额超过了某个阈值,必须由部门总监审批;但如果金额更大,达到总经理级别,就要在总监之后再加一层。SAP通过“批准代码”的先后顺序和“审批状态”字段可以完美模拟这种多级审批场景,只要在配置里把各层级的先后关系和维护好,系统就会自动算出一条PR当前处在哪个审批关卡。

这一点我特别想提醒大家:采购申请审批不好好配置,后续PO审批、发票付款审批全都会乱。因为很多企业的内控要求是“先审批需求,再审批订单”,如果你把审批压力全部压到PO环节,等于把内部控制的堡垒后撤了,这是比较危险的。

2.2 货源确定:谁供货、什么价

PR转PO时,SAP会尝试根据货源清单、配额协议、信息记录等数据,自动带出供应商和采购价格。这一整套逻辑叫“货源确定”,虽然听起来简单,实际配置项却不少。

  • 货源清单(Source List):指定某物料在某工厂内可以由哪几家供应商供货,有效期多久。MRP运行后,如果配置了货源清单且勾选了“自动生成采购订单”或“自动生成计划行”,系统会优先从货源清单里选供应商。
  • 信息记录(Info Record):记录物料和供应商之间的采购价格、币种、交货条款等。PO上价格的默认来源就是它。
  • 配额协议(Quota Arrangement):按比例分配采购量,比如A供应商60%、B供应商40%,避免单一货源风险。

我建议用一句口诀帮助记忆:货源清单决定“能不能买”,信息记录决定“多少钱”,配额协议决定“买多少比例”。三者可以配合使用,但注意优先级和有效期维护,否则会出现PO上供应商是系统“拍脑袋”决定的情况。

2.3 ME57与ME21N:两条思路,一个目标

PR转PO时,采购员通常有两种操作习惯。一种是直接用ME21N,在“采购申请”标签页里填入PR号码,系统把PR的行项目自动带进PO;另一种是用ME57批量处理,把所有已审批且未转PO的PR显示出来,勾选几条,统一转成PO。

从生产性系统里的实际反馈来看,ME57更受资深采购员的欢迎。因为它可以在一个界面里同时看到所有待处理的PR,还能看到每条PR的货源建议、交货计划行信息,操作效率比ME21N一条条找要快不少。ME21N则更适合单一PR快速转PO的场景。

需要留意的是,PR一旦被PO完全引用后,PR的状态会变成“已完成”。如果PO后来被删除或数量被修改,PR的状态也会相应回退,重新变回“未完成”,让采购员能重新操作。这种联动机制,保证了系统里不会出现需求凭空消失的情况,审计时也能追溯每一个环节的变更。

3. 采购计划协议与交货计划行:长期合作的“框架玩法”

聊完采购申请和PO,接下来进入这个标题的另一半重头戏——采购计划协议(Scheduling Agreement)和交货计划行(Delivery Schedule Line)。这不是一个冷门功能,凡是做汽车零部件、电子制造、快消品这类行业,几乎都离不开它。尤其是搞过JIT(Just In Time,准时制生产)的朋友,一定对“计划协议 + 交货计划行”的组合拳印象深刻。

3.1 计划协议和标准PO的本质区别

先明确一个概念:SAP里的采购计划协议本质上是一种“框架订单”(Outline Agreement),它不规定一次性交付的准确数量,而是约定了一个时间段内,供应商按照什么节奏、什么价格、供应什么物料。真正告诉供应商“这周送多少、下个月送多少”的,是计划协议下的交货计划行(Schedule Line),而不是PO。

这和标准PO有显著差异。标准PO是一单一议,采购员每次下单都是一个独立的交易;计划协议则是一个长期框架,比如和某家供应商签订一年的供货协议,约定物料单价、付款条件、交货条款,在这一年内通过下发“计划行”来调度每天的到货量。

用个生活化的类比:标准PO像是你每次去饭馆单点一道菜,价格、份量、上菜时间都在单子里写明;计划协议则像是你和健身房的私教签了年卡,签合同时定好单价和服务条款,具体哪天上私教课、每次练什么动作,按每周/每月的排课计划走。排课计划就是“交货计划行”,而年卡本身是那一份框架协议。

3.2 计划协议的类型与适用场景

在SAP MM中,计划协议主要有三种:

  1. 普通计划协议(LP):一般供应协议,不含JIT的“倒冲”概念。供应商根据你下发的计划行安排生产/发货,适合采购周期较长、BOM相对稳定的原材料或标准件。
  2. JIT计划协议(LPA):常见于汽车行业的JIT/JIS场景。核心特点是,计划协议下的计划行可以通过更细粒度的“JIT调用”来触发,供应商按精确的时间窗和顺序交货。SAP里有专门的JIT功能组件(比如Lean Logistics模块),可以和计划协议联动。
  3. 运输计划协议(SAP S/4HANA中的TSA,Transportation Scheduling Agreement):S/4HANA较新版本引入的功能,主要是为了解决多地点、多模式的运输调度问题,适用于供应链复杂度较高的企业。它把运输计划行和采购计划行更紧密地整合在一起。

选择哪种计划协议,不取决于系统里有没有这个功能,而是取决于企业的采购模式和供应商协同程度。比如,一个做精密机加工的工厂,A类物料每周一次交货、用普通计划协议就够了;但如果客户是主机厂,要求每天按订单顺序送零部件到线边,你就必须上JIT计划协议,同时配套EDI(Electronic Data Interchange,电子数据交换)报文跟供应商保持实时同步。

3.3 交货计划行的核心地位

很多刚接触计划协议的朋友,最困惑的就是“计划行”(Schedule Line)这个概念。实际上,它就藏在两个地方:一个是采购计划协议头下的计划行,一个是计划协议行项目下的计划行。前者表达“整个协议里,供应商什么时候交付哪一批货”,后者精确到“某个物料在某天之前交付多少数量”。

从数据模型上看,一张计划协议可以包含多个行项目(多个物料),每个行项目又可以有多个计划行。每个计划行有自己独立的交货日期和数量,也可以有独立的“交货状态”,比如已确认、未确认、已发货等。这种一对多的层级关系,给了供应链计划员很大的灵活性。

实际业务中,计划员可以在ME38(计划协议计划行维护)事务代码里批量调整计划行,比如把下周三的1500件提前到周二、把下月5号的500件推后到下月12号。这些调整如果通过EDI传输给供应商,供应商系统里会自动更新自己的生产计划。这就是为什么计划协议在供需协同里这么受欢迎的原因——它不是一张死板的订单,它是一份不断演进的生产节拍表。

3.4 MD07与库存/需求清单:别小看计划行的活动性

热搜词里出现了“sap md07”,这正好是计划协议场景下的一个高频事务代码。MD07(库存/需求清单)是一个汇总显示物料需求状况的报表,能让人在一屏之内看到当前库存、在途量、计划订单、采购申请、计划协议计划行等全部供需要素。

做计划的人最容易犯的错,是只盯着采购订单的交期看,忽略了计划协议计划行的变动。比如,计划协议下的供应商是按月度框架备料的,你光看一单PO交期,根本不知道后续还有哪些计划行在排队;而MD07能把所有供需条目按时间轴展示出来,计划员一眼就能发现“这周有缺口,下周有积压”。所以,我强烈建议所有做MM供应链计划的朋友,把MD07当成日常检查的标配工具,养成每天早上跑一遍的好习惯。

4. 实操场景:计划协议从创建到计划行维护的完整流程

理论说了一堆,必须落到操作层面才有说服力。下面按实际项目里最常见的操作路径,完整走一遍“创建计划协议 → 下发计划行 → 收货过账”的关键步骤,尽量还原系统界面和事务代码,方便照着练手。

4.1 使用ME31L创建计划协议

ME31L是创建计划协议的经典事务代码,在S/4HANA里依然可用。操作步骤如下:

  1. 输入供应商代码、协议类型(选LP或LPA)、采购组织、采购组。
  2. 进入行项目维护界面,输入物料号、数量、交货日期、工厂/库存地点、价格(通常通过信息记录自动带出)。
  3. 保存后系统生成计划协议号。这个号码不是采购订单号,它是单独的凭证类型,通常前缀有区分码,比如“L”打头。

需要强调的是,计划协议创建后,通常不会像PO那样“发货/收货”一次就关闭。它是一份长期有效的框架,只要有效期没到,供应商可以在协议号下持续供货。所以,它的审批策略通常也和PO不同,很多企业选择对计划协议做“年度审批”,对下面的计划行做“日常调度”,不再逐单审批。

4.2 用ME38维护交货计划行

创建完计划协议行项目后,最核心的操作是维护计划行。事务代码ME38是标准操作入口。

  • 输入计划协议号、行项目号,系统进入计划行清单界面。
  • 可以新增计划行:输入日期、数量,保存。
  • 可以修改已有计划行:改日期、改数量,系统自动更新协议状态。
  • 可以删除计划行:前提是该计划行未收货,否则只能做数量冲销或红冲处理。

实际项目里,计划行的维护通常不是手工逐条录入,而是通过MRP运行结果自动生成,或者通过外部高级计划系统(如APO/IBP)的接口写入。这样做的目的是让计划行和内部的生产计划保持一致,避免“手工维护计划行导致库存不准”的问题。

如果企业上了EDI或供应商门户,计划行下发后通常会自动生成一份“采购计划行发布”的电子报文(格式可能是DELFOR/DELJIT),供应商收到后反馈一个“计划行确认”(SRM或WebEDI里的回传)。这时候如果供应商回复的确认数量和你要求的不一致,SAP会在计划行上标记一个“确认差异”,计划员可以据此提前拉响缺料警报。

4.3 收货操作:MIGO与计划协议收货的特殊之处

计划协议下的收货,和普通PO的收货在MIGO(发货/收货事务)里没有本质区别,但有几个细节值得留意。

  • 使用MIGO,选择“收货 → 采购订单”时,如果输入的号是计划协议号,系统会提示你选择具体是“计划协议收货”还是“计划协议计划行收货”。后者可以精确到某个计划行进行收货,比如供应商送来的这批货是“对应周二计划行”的,而“对应周三计划行”的还没送到。
  • 收货过账时,系统会根据计划协议里的价格、交货条款以及物料主数据里的评估类,自动确定财务科目。如果是协议框架内的大批量收货,务必要确保计划协议行项目上有正确的工厂和库存地点,否则过账时会报错“工厂XXXX中不存在库存地点YYYY”。
  • 计划协议收货后,MIGO里可以看到消耗的计划行数量被部分或全部标记为“已收货”,对应的采购需求也随之释放。

4.4 常见问题:计划协议改价与交期冲突

计划协议在实际运行中最容易踩的两个坑,一是改价,二是交期冲突。

改价的场景出现在年度调价或供应商提价时。有些企业直接在计划协议行项目上改价,这其实是不推荐的,因为计划协议是框架性的,改价会影响历史数据的可比性。更稳妥的做法是:在信息记录里维护新版价格,并通过“条件更新”同步到计划协议下一次新计划行中去。如果一定要改协议上的价格,最好保留价格修改的历史记录,并走内部审批流。

交期冲突则是指计划协议的框架有效期和计划行的交货日期不一致。比如协议有效期到12月31日,但计划员在12月15日维护了一个1月5日交货的计划行。系统通常会允许保存,但实际业务里这可能变成纠纷点:供应商到底按协议框架接不接单?如果框架已过期,理论上供应商没有义务再生产。建议在配置里启用“计划行交货日期必须落在协议有效期内”的检查,或者在供应商合同中明确约定“所有计划行必须覆盖在有效期内”。

5. 计划协议在JIT/JIS场景下的进阶玩法

近些年供应链管理强调精益化和数字化,SAP MM的计划协议功能被越来越多地推向JIT(Just In Time,准时制)和JIS(Just In Sequence,按序供应)的前沿场景。如果你所在企业正在做汽车、新能源或高端装备制造,大概率绕不开这个方向。

5.1 JIT计划协议与传统计划协议的差异

传统计划协议,计划员的粒度通常是“天”或“周”,供应商按计划行批量送货到仓库,再由仓库分拣配送上线。这种模式对库存缓冲的要求较高,动不动就建一堆高架货架和线边超市。

JIT计划协议则把粒度压缩到“小时”甚至“单车/单序”。供应商收到的不再是“下周三送500件”,而是“上午10点到11点之间,按序列号从1到300,依次送到线边道口”。这就对系统数据的实时性、传输报文的准确性、供应商响应速度都提出了极高的要求。

SAP在处理这类需求时,除了传统的计划协议功能,还提供了“JIT调用”(Lean Logistics JIT Call)功能。它可以在生产订单下达时,根据生产序列和BOM展开,实时生成对供应商的JIT呼叫,并通过IDoc(Intermediate Document,中间文档)或RFC(Remote Function Call,远程函数调用)接口发送给供应商。供应商按序列回传发货信息,到货后扫描序列号收货。

5.2 计划行状态机:从计划到实绩的闭环

计划协议计划行的状态,是判断整条供应链是否健康的重要指标。我常跟用户讲,计划行有“生命周期”的概念,大致包括:

  • 已建议(Suggested):MRP跑出来、系统生成的计划行,还没经过计划员确认。
  • 已确认(Confirmed):计划员或供应商已确认,具备采购约束力。
  • 已锁定(Fixed):不允许轻易变动,通常用于当天的锁定窗口或已发出的JIT呼叫。
  • 已交货(Delivered):已经完成收货过账。
  • 已取消(Cancelled):计划行被删除或取消。

这些状态不仅仅是为了好看,它们直接影响MRP运算时对“供给”的判断。比如,某个计划行已经“确认”过,MRP会把它视为固定供给,即使内部需求下降,系统也不会自动把数量减掉;相反,如果只是“建议”状态,MRP用“删除/重建”策略时可能直接把它删掉重建。所以,计划员必须理解这套“状态机”的管理逻辑,否则会做出看似合理实则破坏计划的调整动作。

5.3 序列号管理与EWM PPF:计划协议的下游联动

如果计划协议走得足够深,下游还会牵涉序列号管理和EWM(Extended Warehouse Management,扩展仓库管理)的PPF(Post Processing Framework,后处理框架)。

举个例子:某新能源汽车工厂的驱动电机是JIS供货的,电机有唯一序列号。供应商按计划协议发货时,提前通过EDI把序列号清单传给SAP;MIGO收货时仓管员扫描序列号核对,系统自动关联到对应的计划行。如果序列号对不上,收货就会报错。这其实已经不只是MM模块的功课,而是MM、EWM、Quality Management(质量管理)、PP(生产计划)的协同。

部署EWM以后,计划协议计划行会通过接口生成EWM里的“预收货”(Expected Goods Receipt)单据,仓库人员靠这个预收货指导收货、上架和后续的波次分配。EWM的PPF机制则负责在特定节点自动触发后续动作,比如收货完成后自动生成质量检验通知、自动释放到库存等。计划协议、PPF和EWM体系的配合,才构成了现代制造业仓储供应链的完整闭环。

6. 常见问题排查与实用技巧

最后这部分,我整理几个高频率踩坑点,都是从实际运维和支持中积累下来的,希望能帮大家少走弯路。

6.1 MIGO收货报错“工厂/库存地点无效”怎么办

这个错误多半出在计划协议行项目上。检查顺序应该是:

  1. 计划协议行项目的工厂是不是空着?如果空着,系统会默认使用的登录工厂,有时会选错。
  2. 该工厂下有没有对应的库存地点?MIGO里输入计划协议号后,系统会让你选库存地点;如果没有收到任何可选列表,说明物料主数据里没有扩展该工厂的视图,或者库存地点没有分配给该工厂。
  3. 物料主数据的“物料状态”是否为“锁定采购/收货”?如果物料被设置了“删除标志”或“采购冻结”,收货一样会报错。

这类问题多半不是配置问题,而是主数据或操作习惯的问题。把工厂、库存地点、物料主数据三个点逐一排查,基本都能解决。

6.2 计划协议计划行无法删除或被锁定

计划行删除的报错,最常见的原因是:

  • 该计划行已经有收货记录,需要先冲销收货,再删除计划行。
  • 计划行状态已是“已锁定”或“已下达”,需要先解除锁定,系统才会允许删除。
  • 后台配置里启用了“计划行变动日志”,某些状态下禁止删除。

遇到这种问题别硬删,先看看状态字段具体是什么。用事物代码ME38查看计划行时,每一行都有“交货状态”“调用状态”“锁定状态”等字段,看懂这组状态后再操作,效率会高很多。

6.3 计划协议在MRP运算后反复“抖动”

这是让计划员最头疼的问题——MRP一跑,某些计划行的数量忽高忽低,今天2万件明天又变1.5万件。原因往往是需求侧的波动被直接传导到了计划协议,而没有经过计划员的“确认”缓冲。

解决办法有两点:第一,把计划协议的MRP参数设置调整为“MRP不自动删除/重建计划行”(对应MRP组里的“计划行处理”参数),让系统在既有计划行基础上做增量修改,而非推倒重建;第二,在计划协议上应用“固定计划行”机制,对近期锁定窗口内的计划行设置固定标记,MRP不会对其自动修改。这也在一定程度上避免了和供应商之间的交期纠纷。

6.4 关于“有发票过账凭证但打不开发票号”的补充说明

在检索资料时,我注意到有用户反馈“有发票过账凭证但打不开发票号”,这种状况在供应链日结或月末结账时特别容易发生。原因通常是发票校验时生成了财务凭证,却在后续查找时因为编号范围或显示权限问题无法调出。

遇到这种情况,优先去FB03里查财务凭证电子凭证号(或使用MIRO的“显示发票凭证”通过供应商/过账日期查询),千万不要在发票列表里反复刷新,那样只会增加系统压力。如果电子凭证号查到了,但MIRO里打不开,大概率是凭证类型的显示范围权限没给全,找BASIS查一下角色上的“单据类型”权限字段就知道问题在哪里了。

7. 我的个人体会与一点建议

我在做SAP MM实施和运维的这些年里,越来越深地感受到一点:采购申请、计划协议、交货计划行这些“看起来基础”的功能,恰恰是企业供应链管理水平最真实的投影。一个计划员如果能把PR的科目分配类别理清楚、能把计划协议的计划行状态管理明白,那这家企业的采购内控和供应链协同通常不会差到哪里去。反过来说,如果连PR和计划协议都飘忽不定,哪怕你上了再先进的集成平台,也很难救回来。

最后分享一个自己养成的习惯:每次项目上线后,我都会专门给关键用户做一次“三张表”的培训——PR生命周期状态表、计划协议行项目状态表、MRP供需例外信息表。让用户搞明白这三张表里每一个状态字段的含义和流转条件,比教他一百个事务代码都有用。系统操作只是表层,理解背后的业务逻辑才是长期价值所在。希望这篇文章能帮你把这“三张表”的思路也打通一点。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询