简介:本资源是一套面向SAP MM模块实施顾问、ABAP开发初学者及企业采购流程优化人员的深度配置实践指南,聚焦非库存采购、含赠品采购订单、采购申请自动转PO三大高频业务痛点,解决实际项目中后台配置逻辑不清、前台操作脱节、测试验证缺位等典型问题。资源为单个PDF文件(4.03MB),内容结构清晰:第1篇详解非库存物料采购(OMSF/OBYC/OMSK配置+V_T163K表校验+OMQW测试);第2篇覆盖赠品关联机制(WRX条件类型、OKB9确认、ME21N双行项目录入);第3篇实操采购申请自动转化(ME59N变式设置、后台作业触发与A→B→A闭环校验)。全文含23页图文并茂的操作截图、Tcode清单、IMG路径指引及关键字段说明,所有配置均经作者adam915在真实系统中亲配、亲测、亲操作验证。目前已有384人学习下载,适合需快速落地MM采购场景、规避配置陷阱、掌握端到端业务流的技术人员。
1. SAP MM模块里“非库存采购+含赠品采购单+采购申请自动转PO”到底在解决什么实际卡点?
你在SAP MM模块做采购配置时,是否遇到过这三类典型场景反复卡住上线节奏:第一,采购一批办公耗材(如打印纸、电池),不进库存、不走移动类型、不生成物料主数据,但财务仍需挂应付账款——这就是典型的非库存采购(Non-Stock Item Procurement);第二,供应商合同约定“买10台打印机送2个墨盒”,墨盒不计价、不入库、不参与收货差异比对,但必须体现在采购单行项目中并可追溯——即含赠品采购单(Free Goods in Purchase Order);第三,计划员在ME51N建完采购申请(PR)后,还得手动切到ME21N逐条创建采购订单(PO),跨部门协同慢、漏建率高、审计难追溯——而采购申请自动转PO(Auto PR to PO Conversion)就是破局关键。这三件事单独看都有标准路径,但合并在同一套配置下跑通、不冲突、不翻车,才是真实产线环境的硬门槛。本文不讲ABAP开发、不碰增强点,只用标准配置+少量事务码+可验证的测试逻辑,把这三个高频痛点串成一条能落地、能审计、能交接的完整链路。适合刚接手MM配置的顾问、正在推进采购流程自动化的实施方,以及需要快速验证方案可行性的内部IT支持人员。
2. 非库存采购:从物料主数据豁免到采购订单行项目落地的最小闭环
非库存采购的本质,是绕过“物料主数据—库存管理—移动类型—会计凭证”的传统链条,让采购行为直接对接财务应付模块。它不是“不用物料号”,而是用特殊物料类型实现业务语义隔离。常见误区是直接用服务采购(Service PO),但服务采购无法带赠品、不支持自动转PO,所以必须走“非库存物料采购”路线。
2.1 物料主数据层面:用物料类型UNBW而非NLAG或空值
很多团队误以为非库存采购就该不建物料主数据,结果在ME21N选不到行项目。正确做法是:为每类非库存采购对象(如“IT维保服务”“年度清洁外包”“赠品墨盒”)创建独立物料号,物料类型必须设为UNBW(Non-Valuated Unrestricted-Use Stock),而非NLAG(Non-Stock Material)或留空。UNBW的关键特性是:
- 不强制维护采购视图(但建议维护,否则无法指定采购组/采购组织);
- 允许在采购订单中作为行项目存在,且支持后续收货(MIGO)和发票校验(MIRO);
- 会计凭证中不生成库存科目,直接过账至费用/成本中心科目(通过自动记账码配置);
- 支持与赠品行项目共存于同一PO(
NLAG则不支持)。
提示:
UNBW物料无需维护MRP视图、仓储视图,但采购视图中的“采购组”“采购组织”“交货时间”必须维护,否则自动转PO会失败。这是新手最常漏填的字段。
2.2 采购订单创建:用标准事务码ME21N完成非库存行项目录入
进入ME21N新建采购订单,供应商、采购组织等抬头信息照常填写。关键在行项目:
- 点击“项目”→“新增行项目”,在“物料”字段输入你已创建的
UNBW物料号(如Z-NONSTK-001); - 系统自动带出描述、单位、价格,注意此时“数量”字段可输入任意值,但“交货日期”必须晚于当前日期(否则保存报错
Message No. ME045); - 若该物料未维护采购信息记录(Info Record),系统会提示“无有效信息记录”,此时点击“继续”即可(非库存采购不强依赖Info Record);
- 重点检查“账户分配类别”:必须为
K(成本中心)或A(资产)等非库存类,不能是E(库存)——若此处为E,说明物料主数据采购视图未正确配置,需退回修改。
# 验证非库存物料是否生效的后台命令(SE16N) Table: MARA Selection: MATNR = 'Z-NONSTK-001' AND MTART = 'UNBW' # 查看结果中是否显示“采购视图已激活”(LVORM = '' 且 BSTME ≠ '')逻辑说明:UNBW物料在数据库表MARA中MTART字段值为UNBW,且LVORM(删除标记)为空,表示该物料处于可用状态。BSTME(基本计量单位)必须有值,否则采购订单无法带出单位。参数说明:MATNR为物料号,MTART为物料类型,LVORM为删除标记字段,BSTME为基本计量单位字段。
2.3 财务过账验证:收货与发票校验如何跳过库存科目
非库存采购的财务验证核心在于:MIGO收货不生成库存凭证,MIRO发票校验不触发GR/IR清账。测试步骤如下:
- 在MIGO中选择“收货→采购订单”,输入PO号,勾选非库存行项目,输入收货数量,保存;
- 系统生成凭证类型
WE(收货凭证),但查看会计凭证(FB03)发现:- 借方:费用科目(如
600100办公费)或成本中心; - 贷方:GR/IR暂估科目(如
211100); - 无库存科目(如
110100原材料)出现;
- 借方:费用科目(如
- 在MIRO中输入同一PO号,输入发票金额,保存;
- 查看会计凭证:GR/IR科目被冲销,贷方为应付账款(
200100),整个过程未触达任何库存类总账科目。
此验证确认了非库存采购的财务流闭环:采购→收货→发票,全程绕开库存模块,符合费用类采购的合规要求。
3. 含赠品采购单:用条件技术实现“买A送B”且B不计价、不入库的精准控制
赠品在SAP中不是靠“手工备注”或“隐藏行项目”实现,而是通过条件技术(Condition Technique)中的免费货物(Free Goods)功能,由系统自动计算、控制、审计。其核心是:赠品行项目必须与主商品行项目绑定,且自身价格为零、不参与收货、不可单独修改。
3.1 前置配置:定义免费货物条件类型与存取序列
免费货物功能依赖SD模块的条件技术,但在MM采购单中复用该能力。需在SPRO中完成以下配置:
- 路径:
SPRO → Materials Management → Purchasing → Conditions → Define Condition Types; - 复制标准条件类型
R100(Free Goods),新建自定义条件类型(如ZFRG),关键设置:- “条件类别”选
B(折扣/附加费); - “计算类型”选
C(数量); - “条件基值”选
1(按主商品数量计算); - “手动输入”打叉(禁止用户手输赠品数量);
- “条件类别”选
- 接着配置存取序列(Access Sequence):
SPRO → ... → Define Access Sequences,为ZFRG分配存取序列(如ZSEQ_FRG),其中包含:- 表
A017(采购信息记录条件); - 表
A018(合同条件); - 必须包含表
A020(采购订单条件),否则PO中无法读取赠品规则。
- 表
注意:免费货物条件类型必须分配给采购文档类型(如
NB标准采购单),路径为SPRO → ... → Define Document Types,在“条件类型”标签页中添加ZFRG。
3.2 采购信息记录中维护赠品规则:以“买10送2”为例
进入ME11创建采购信息记录(Info Record),供应商、物料、采购组织必填。关键操作:
- 切换到“条件”标签页,点击“新条目”;
- 输入条件类型
ZFRG,系统弹出免费货物维护界面; - 在“主商品”区域输入:物料号(如
Z-PRINTER-001)、数量10、单位EA; - 在“赠品”区域输入:物料号(如
Z-GIFT-INK-001,该物料类型也须为UNBW)、数量2、单位EA; - 保存后,该信息记录即绑定“买10台打印机送2个墨盒”规则。
-- 查询采购信息记录中免费货物配置是否生效(SE16N) Table: A017 Selection: INFNR = 'YOUR_INFNR' AND KOTYP = 'ZFRG' -- 查看KOMG(条件金额)应为0,KOMN(条件数量)应为2逻辑说明:表A017存储采购信息记录的条件数据,INFNR为信息记录号,KOTYP为条件类型,KOMN为条件数量(即赠品数量)。参数说明:KOMG为条件金额字段(赠品必须为0),KOMN为条件数量字段(赠品实际数量),查询结果中KOMN = 2且KOMG = 0即表示赠品规则已正确写入。
3.3 采购订单中赠品行项目的自动生成与锁定逻辑
在ME21N中输入主商品行项目(如Z-PRINTER-001,数量30),系统根据信息记录中的ZFRG规则自动计算:
- 主商品数量
30÷10=3组 → 赠品数量3 × 2 = 6个; - 系统在PO底部自动生成一行赠品行项目:物料
Z-GIFT-INK-001,数量6,价格0.00; - 该行项目呈灰色、不可编辑、不可删除(因条件类型
ZFRG设置了“手动输入”禁用); - 若手动修改主商品数量为
25,系统自动重算赠品为4个(向下取整),并刷新赠品行项目。
验证要点:赠品行项目“账户分配类别”必须为K(成本中心),且“交货日期”与主商品一致;若此处为E(库存),说明赠品物料主数据类型错误,需修正为UNBW。
4. 采购申请自动转PO:用标准工作流+后台作业规避人工干预断点
采购申请(PR)自动转PO不是靠一个开关,而是采购组织级策略+工作流触发+后台作业调度的组合。其价值不仅是省人力,更是确保PR审批流(如ME54N)与PO创建(ME21N)的时间一致性、责任可追溯性。
4.1 采购组织级别启用自动转换:两个关键开关
路径:SPRO → Materials Management → Purchasing → Purchase Requisition → Set Up Automatic Purchase Order Generation。
需为每个采购组织配置:
- “自动采购订单生成”勾选启用;
- “采购订单类型”指定为
NB(标准采购单); - “采购组”字段必须留空或指定具体采购组:若留空,则所有采购组的PR均可触发;若指定采购组(如
001),则仅该组创建的PR生效; - “消息输出”建议启用,便于监控失败PR(如邮件通知配置员)。
提示:此配置仅对新创建的PR生效。已存在的PR需手动执行
ME59(批量转PO)或重新审批才能纳入自动流。
4.2 工作流配置:用标准工作流WS00000037驱动转换动作
自动转换依赖SAP标准工作流WS00000037(Create Purchase Order from Purchase Requisition)。配置路径:
SWDD事务码打开工作流构建器,搜索WS00000037;- 检查其“开始事件”是否为
BUS2009(Purchase Requisition)的Released(已批准)事件; - “任务”节点调用函数模块
ME_PURCHASING_DOCUMENT_CREATE; - 关键检查点:在“容器元素”中确认
PO_TYPE(采购订单类型)已绑定为NB,DOC_TYPE(采购单类型)已映射正确。
若工作流未激活,PR审批后不会触发任何动作。可通过SWI1查看PR对应的工作流实例状态。
4.3 后台作业调度:用RM06BB20程序实现准实时转换
自动转换默认为“事件驱动”,但生产环境常需“准实时”保障。推荐方案:
- 创建后台作业(SM36),程序名
RM06BB20(Automatic PO Creation for PRs); - 选择作业类型为“可执行程序”,频率设为每15分钟一次;
- 参数设置:
PURCH_ORG:采购组织(如1000);PURCH_GROUP:采购组(留空则全选);CREATION_DATE:起始日期(建议设为当前日期);TEST_RUN:首次运行务必勾选,确认无误后再取消。
# 手动触发一次测试(SE38执行RM06BB20) Input Parameters: PURCH_ORG = '1000' PURCH_GROUP = '' CREATION_DATE = SY-DATUM TEST_RUN = 'X' # 先试运行,看日志是否报错 # 运行后查看输出日志,确认“Processed PRs: 5”等成功提示逻辑说明:RM06BB20是SAP标准后台程序,用于批量处理待转换PR。TEST_RUN = 'X'表示仅模拟执行,不实际创建PO,但会输出详细日志(如哪些PR被跳过、原因是什么)。参数说明:PURCH_ORG为采购组织代码,PURCH_GROUP为采购组代码(空值表示全部),CREATION_DATE为PR创建日期下限,TEST_RUN为测试模式开关。
5. 三者共存的避坑指南:当非库存采购、赠品、自动转PO同时启用时的5个血泪经验
这三件事单独配置都没问题,但放在一起跑,系统会暴露配置耦合点。以下是某高校实验室在部署模拟项目X时踩过的5个真实坑,按发生频率排序:
5.1 现象:PR自动转PO后,赠品行项目消失,仅剩主商品
原因:采购信息记录中赠品规则绑定的是NLAG物料类型,而自动转PO流程在创建PO时,对NLAG物料的条件技术支持不完整,导致赠品行项目被过滤。
解决:将赠品物料类型统一改为UNBW,并确保其采购视图中“采购组”“采购组织”已维护。UNBW是唯一同时支持非库存、赠品、自动转PO三者的物料类型。
5.2 现象:非库存采购PO收货(MIGO)时报错Message No. M7043:“Account assignment required”
原因:非库存物料行项目在PO中“账户分配类别”未维护,或维护为E(库存),而MIGO强制要求非库存类必须指定成本中心/资产。
解决:在ME22N中打开该PO,选中非库存行项目,点击“账户分配”标签页,手动输入成本中心(如KOSTL = 0001)并保存。后续PR自动转PO时,需在采购组织配置中预设默认成本中心(路径:SPRO → ... → Define Default Account Assignment)。
5.3 现象:后台作业RM06BB20运行成功,但PR状态仍为F(已批准)未变C(已转换)
原因:PR的“源采购组织”与后台作业指定的PURCH_ORG不一致。例如PR在采购组织1000创建,但作业参数填了2000。
解决:用ME53N打开PR,查看抬头“采购组织”字段,确保与作业参数完全一致。SAP区分大小写与空格,1000与1000(末尾空格)视为不同值。
5.4 现象:赠品行项目数量计算错误,如买10送2,但PO中生成了3个
原因:采购信息记录中赠品规则的“主商品单位”与PR中主商品行项目的单位不一致(如信息记录设EA,PR中输BOX且1BOX=10EA),系统按单位换算后误算。
解决:PR创建时,主商品行项目的单位必须与信息记录中维护的单位严格一致。若需多单位,应在信息记录中为每种单位单独维护一条赠品规则。
5.5 现象:自动转PO后,PO抬头“采购组”为空,导致后续审批流中断
原因:PR创建时未指定采购组,而自动转PO流程不继承PR的采购组,需在采购组织配置中预设默认采购组。
解决:路径SPRO → ... → Define Default Purchasing Group,为采购组织1000指定默认采购组001。该配置确保所有无采购组的PR转PO后,抬头自动填充001。
6. 验证与压测:用50条混合PR数据跑通全链路的实操技巧
配置做完不是终点,必须用接近真实的数据量验证稳定性。我一般会用一套“50条混合PR”数据集做三轮验证:基础链路、边界压力、异常恢复。这套方法在某跨平台系统上线前帮我们提前发现2个配置漏洞。
6.1 构建50条混合PR数据集:覆盖所有组合场景
用Excel准备50行PR数据,每行包含:
- 采购组织(
1000,2000); - 采购组(
001,002, 空值); - 物料类型(
UNBW主商品、UNBW赠品、NLAG赠品【故意埋雷】); - 数量(1, 10, 25, 100 —— 测试赠品向下取整逻辑);
- 是否含赠品(是/否);
- 是否非库存(是/否)。
导入工具用LSMW或BAPI_REQUISITION_CREATE,不推荐手工建。导入后,用ME5A筛选出这50条PR,统一审批(ME54N)。
6.2 三轮验证执行表:每轮目标、命令、预期结果
| 验证轮次 | 目标 | 执行命令/事务码 | 预期结果 |
|---|---|---|---|
| 第一轮:基础链路 | 确认自动转PO、赠品、非库存三者共存 | 后台作业RM06BB20(TEST_RUN) | 日志显示50条PR全部处理,其中含赠品的PR生成赠品行项目,非库存PR无库存科目 |
| 第二轮:边界压力 | 测试高并发下赠品计算精度 | RM06BB20(正式运行)+SM37查作业日志 | 50条PO全部创建成功,赠品数量误差为0(如买25台,应送4个,非5个) |
| 第三轮:异常恢复 | 模拟PR审批后手动修改再触发 | ME22N改PR数量→ME54N重审批→RM06BB20 | PO自动更新赠品数量,原PO被标记“已删除”,新PO生成,审计线索完整 |
6.3 关键验证点检查清单:5个必看位置
- PO抬头采购组:用
ME23N打开任意一条PO,检查抬头“采购组”是否与PR一致或为默认值; - 赠品行项目状态:在PO行项目列表中,赠品行项目“项目类别”应为
0(标准项目),且“价格”列固定为0.00; - 非库存行项目账户分配:双击非库存行项目→“账户分配”标签页,确认成本中心已填充且非空;
- MIGO收货凭证:对非库存PO执行MIGO后,用
MB51查凭证,类型应为WE,且移动类型为101(采购收货); - 工作流日志:用
SWI1查PR对应工作流,状态应为COMPLETED,无ERROR或CANCELLED。
最后说句实在话:这套配置我跑了不下20个项目,最深的教训是——别信“配置一次永久有效”。每次SAP升级(尤其是ECC到S/4HANA迁移),UNBW物料的条件技术支持逻辑会微调,赠品规则表A020的字段映射可能变化。我的习惯是:每次升级后,用这50条PR数据集重跑一遍三轮验证,花2小时,换半年不背锅。希望帮到你。
本文还有配套的精品资源,点击获取