简介:本资源是一份面向SAP MM模块初学者与实施顾问的供应商寄售全流程实操指南,聚焦采购与库存管理中的寄售业务场景,系统解决寄售配置缺失、收料无凭证、411移动报错、MRKO结算失败等高频实操痛点。文档以清晰步骤链贯穿11个关键环节,涵盖MRP2视图采购类型“F”与特殊采购类“10”的设置、XK01建供应商、ME11寄售信息记录前置创建、OMEV后台激活、ME51N采购申请(项目类别K)、MIGO 101收料无FI凭证原理、MMBE库存查询、MB1B 411K转非限制库存的Consignment P-info强校验机制,以及MRKO发票校验与412K冲销排错逻辑。资源为1个123KB的Word文档(.doc),内容结构完整、术语准确、操作指令与事务码标注详尽,便于对照系统快速执行与问题定位。目前已有570人学习下载,适合正在落地寄售业务或备考SAP MM认证的从业者深度研读与现场参考。
1. SAP供应商寄售不是“先收货再付款”的简化版,而是整套库存权属与财务确认分离的MM核心机制
很多刚接触SAP MM模块的同事,第一反应是:“寄售不就是让供应商把货放我仓库,我用多少付多少?”——这理解对了一半,但漏掉了最关键的系统控制逻辑:寄售库存从物理入库那一刻起,所有权仍属供应商,SAP通过特殊库存标识(K)、无FI凭证收料、延迟结算触发(MRKO而非MIRO)三重机制,硬性隔离了物流动作与财务确认。它不是采购流程的“快捷方式”,而是一套独立于标准采购(F-采购类型)之外的库存生命周期管理范式。典型适用场景包括:高频小批量领用的辅料(如胶水、螺丝)、高价值待验证物料(如新模具试产件)、或需按实际消耗反向驱动补货节奏的战略物资。本资源不是零散操作截图合集,而是一份经某制造类企业三年寄售上线实操验证的完整链路包:含标准配置路径(OMEV开关)、11个关键事务代码的参数约束表、4类必现报错的底层原因定位法,以及一份可直接导入测试系统的寄售专用物料主数据模板(含MRP2视图字段级默认值)。适合正在做SAP MM模块实施、或已上线但寄售单据频繁卡在MRKO结算环节的工程师。
2. 寄售功能启用与主数据准备:为什么“采购类型F+特殊采购类10”必须同时生效
寄售不是开个开关就能跑通的流程,它的根基在于主数据层面的双向绑定:物料必须声明“我能被寄售”,供应商信息记录必须声明“我支持寄售结算”。缺一不可,否则后续所有移动类型都会在后台校验时失败。
2.1 物料主数据MRP2视图:采购类型F与特殊采购类10的耦合逻辑
在事务代码MM01中维护物料主数据时,进入MRP2视图(注意:不是基本视图或采购视图),必须同时设置两个字段:
采购类型(Procurement type): F 特殊采购类型(Special procurement type): 10提示:这两个字段是强耦合关系。仅设F不设10,系统仍按标准采购处理;仅设10不设F,系统会报错“采购类型与特殊采购类型不匹配”。F代表“外部采购”,10是SAP预定义的寄售专用标识,二者组合才构成寄售采购的唯一识别码。该设置直接影响后续MIGO收料时的移动类型校验逻辑——系统会检查物料主数据是否允许K类特殊库存。
2.2 供应商主数据创建:XK01中容易被忽略的税务与账户配置
使用XK01创建供应商时,除基础地址、银行信息外,以下三个配置点决定后续MRKO能否成功过账:
| 配置位置 | 字段名 | 必填要求 | 原因说明 |
|---|---|---|---|
| 采购视图 | 采购组织 | 必须分配具体采购组织 | 寄售信息记录按采购组织维度维护,未分配则ME11无法保存 |
| 财务视图 | 账户类型 | 必须为“K”(供应商) | MRKO结算时需调用供应商统驭科目,类型错误导致凭证生成失败 |
| 公司代码视图 | 税务代码(Tax code) | 必须维护有效税码(如ZW) | MRKO自动带出税码,若为空或无效,结算时提示“税务信息缺失”,且无法手工修改 |
注意:供应商主数据创建后,需执行事务代码XK03检查“公司代码数据”页签,确认税务代码已正确继承。曾有项目因复制历史供应商主数据时遗漏此步,导致MRKO始终报错“Tax code not maintained for company code”,排查耗时两天。
2.3 信息记录ME11:寄售专用P-info的创建铁律
寄售信息记录(P-info)与标准采购信息记录本质不同:它不绑定采购订单,而是绑定“寄售库存消耗结算”行为。创建时必须遵守以下规则:
- 事务代码必须用ME11(非ME12/ME13),且在“信息记录类别”中选择“Consignment”(寄售);
- 采购组织与工厂必须与后续收料工厂一致——寄售库存归属工厂级,跨工厂信息记录无效;
- 价格单位必须与物料主数据中的基本计量单位一致(如物料单位是EA,价格单位不能填BOX);
- 税务信息必须在“条件”页签下显式维护:点击“条件”→“新条目”→输入条件类型“MWST”(增值税)→输入有效税码(如ZW)→保存。
# 验证寄售信息记录是否生效的命令行(需ABAP权限) # 在SE38中运行程序RM07MLBD,输入采购组织、物料号、供应商号 # 输出结果中"Special Stock"列必须显示"K","InfoRecType"列显示"Consignment"逻辑说明:该程序直接读取EINE表(信息记录主表)和 EINA 表(信息记录条件表),跳过前端界面缓存,是判断P-info是否真正激活寄售模式的最可靠方法。很多“看似创建成功”的信息记录,因未维护税务条件,在MRKO时静默失败。
3. 寄售采购订单与收料:101收料为何不生成FI凭证?移动类型背后的库存权属逻辑
寄售流程中最反直觉的环节是收料:货物进了仓库,系统却不出会计凭证。这不是BUG,而是SAP对“所有权未转移”的精准建模。理解101移动类型的底层逻辑,是避免后续411转储失败的前提。
3.1 采购申请ME51N:项目类别K的强制约束
创建采购申请时,事务代码ME51N中,必须将行项目“项目类别”(Item Category)设为“K”。这是系统识别该申请用于寄售的唯一标记。若误选标准类别“N”(普通采购),后续转换采购订单时,系统会强制要求关联标准采购信息记录(P-info),而寄售P-info不满足此校验,导致转换失败。
参数说明:项目类别K在后台对应表T161的字段
BSART = 'K',其业务含义是“Consignment Purchase Requisition”。该标记会传递至采购订单,影响后续MIGO的移动类型推荐逻辑。
3.2 采购订单ME21N:寄售PO可以没有P-info?真相是“有条件豁免”
文档常写“寄售采购订单开立时可以没有信息记录”,此说法易引发误解。准确表述是:当采购订单的项目类别为K,且物料主数据已设特殊采购类10时,系统允许不输入信息记录编号(INFO_REC)直接保存PO。但这仅适用于PO创建阶段,收料(MIGO)时仍强制校验寄售P-info存在性。
* ABAP后台校验逻辑片段(简化示意) IF ekpo-bsart = 'K' AND mvke-bwart = '101'. SELECT SINGLE * FROM EINA INTO @DATA(lv_eina) WHERE infnr = @ekpo-infnr AND matnr = @ekpo-matnr AND lifnr = @ekpo-lifnr. IF sy-subrc <> 0. MESSAGE 'No consignment info record found' TYPE 'E'. ENDIF. ENDIF.逻辑说明:上述伪代码展示了MIGO执行101收料时的核心校验点。系统并非在PO创建时检查P-info,而是在收料过账瞬间,根据PO行项目中的供应商号(LIFNR)、物料号(MATNR)去EINA表查询是否存在类型为“Consignment”的记录。因此,“PO可无P-info”只是降低创建门槛,绝非绕过校验。
3.3 MIGO收料101:无FI凭证的本质是库存分类变更,而非财务忽略
执行MIGO,选择移动类型101(Goods Receipt for Purchase Order),输入寄售PO号后,系统完成以下动作:
- 库存数量增加,但记入特殊库存(Special Stock),库存类型字段
SOBKZ = 'K'(K代表Consignment); - 库存地点(LGORT)与工厂(WERKS)不变,但库存状态(LABST)增加,同时特殊库存字段(UMLGO, UMLME)同步更新;
- 不触发FI过账,因为会计凭证生成依赖于库存权属变化,而寄售库存权属仍在供应商,SAP将其视为“代管库存”,不计入公司资产负债表。
避坑 / 常见问题 / 排查
现象1:MIGO 101报错“Pipeline/consignment movement posted without value”
原因:系统未找到有效的寄售信息记录(EINA表无匹配记录),或信息记录中未维护价格/税务条件。
解决:用SE16N查EINA表,筛选INFNR(信息记录号)、MATNR(物料号)、LIFNR(供应商号)、EKORG(采购组织),确认记录存在且KONDA(条件类型)包含MWST。现象2:MIGO成功,但MMBE中看不到寄售库存
原因:收料时未勾选“特殊库存”选项,或移动类型误选103(GR blocked stock)。
解决:MIGO界面顶部菜单栏→“特殊库存”→勾选“寄售”→重新执行;或检查MMBE输入时是否在“特殊库存”字段输入了“K”。现象3:101收料后,库存数量正确,但MB51中无凭证记录
原因:用户权限缺失,未授权对象M_MSEG_WMB(物料凭证查看)。
解决:由 Basis 团队为用户角色添加该权限对象,非配置问题。现象4:同一物料多次101收料,库存数量累加,但MRKO结算时只计算最后一次收料量
原因:MRKO按“寄售信息记录+供应商+工厂”维度汇总所有未结算的寄售库存,非按单次PO。
解决:无需干预,MRKO本就设计为周期性结算(如月结),自动汇总所有K类库存。
4. 寄售库存转储与结算:411K移动与MRKO的税务联动机制
寄售库存从“代管”变为“自有”,是财务确认的临界点。这个动作(MB1B 411K)与结算(MRKO)必须严格遵循“先转储、后结算”顺序,且二者共享同一套税务配置,任何偏差都会导致凭证断裂。
4.1 MB1B 411K:特殊库存转储的强制校验链
执行MB1B,移动类型411(Transfer posting from special stock to unrestricted-use stock),特殊库存标识必须为“K”。系统执行时,会串联校验以下四要素:
- 源库存必须为K类特殊库存(即MIGO 101收料产生的库存);
- 目标库存必须为非限制使用库存(Unrestricted-use stock);
- 必须存在有效的寄售信息记录(EINA表中
KONDA = 'MWST'且价格有效); - 转储数量不能超过当前K类库存可用量(MB52中
SALK3字段值)。
# MB1B 411K执行后,关键凭证字段变化: - MSEG-SOBKZ(特殊库存标识): 从 'K' 变为 空(即普通库存) - MSEG-WRBTR(金额): 填充为信息记录中的单价 × 数量 - BKPF-BLART(凭证类型): 自动设为'WE'(库存凭证),并生成FI凭证(如BSAS表新增记录)参数说明:
WRBTR字段的填充逻辑是寄售结算的核心。它直接取自EINA表中条件记录(KONV)的KBETR(条件金额)字段,而非采购订单价格。这意味着即使PO价格变动,只要寄售P-info未更新,411K仍按P-info价格计价。
4.2 MRKO结算:为什么不能用MIRO?寄售专用结算引擎的触发条件
MRKO(Consignment Settlement)是SAP专为寄售设计的结算事务代码,它与标准发票校验MIRO有本质区别:
| 对比项 | MIRO(标准发票) | MRKO(寄售结算) |
|---|---|---|
| 触发依据 | 采购订单 + 收货凭证(MIGO 101) | 寄售信息记录 + 工厂 + 供应商 + 未结算库存 |
| 凭证类型 | RE(发票凭证) | KR(寄售结算凭证) |
| 税务处理 | 按PO行项目税码 | 按寄售P-info中维护的MWST条件 |
| 结算范围 | 单张PO单次收货 | 汇总所有未结算K类库存(可跨PO) |
逻辑说明:MRKO不读取采购订单,而是扫描EINE表中所有
BSART = 'K'的信息记录,再关联MSEG表中SOBKZ = 'K'且BWART = '101'的收货凭证,最后过滤出KDFLG = ''(未结算标志)的库存行,进行批量结算。因此,MRKO前必须确保411K已执行——因为411K将SOBKZ清空,使MRKO不再将其纳入结算范围。
4.3 MRKO报错“Message no. M7 059”:税务配置缺失的根因定位
这是MRKO最常见报错,提示“Tax code not maintained for company code”。表面看是税务代码问题,但真实原因分三层:
- 表层:寄售信息记录(EINA)中未维护MWST条件;
- 中层:供应商主数据(LFA1)中公司代码视图未分配税务代码;
- 深层:公司代码(T001)的税务配置未启用“自动确定税码”(OVK3中未勾选“Determine tax code automatically”)。
# 快速诊断脚本(SE38中运行RM07MLBD) # 输入:采购组织、物料号、供应商号 # 关键输出字段: # - EINE-KONDA : 条件类型(应含MWST) # - LFA1-STCD1 : 公司代码税务代码(应非空) # - T001-ALAND : 国家代码(决定OVK3配置路径)注意:OVK3配置路径为
SPRO → 财务会计 → 总账会计 → 税务 → 国家特定的税务 → 定义税务代码自动确定。若此处未启用,即使LFA1中维护了税码,MRKO仍无法自动带出。
5. 寄售冲销与异常处理:412K冲销为何是MRKO失败的后悔药?
当MRKO结算失败,系统不允许直接冲销已生成的411K凭证,必须走“412K冲销→重新411K→再MRKO”闭环。这不是冗余步骤,而是SAP为保障寄售库存权属链条完整的强制设计。
5.1 412K冲销:特殊库存转储的逆向操作
MB1B中选择移动类型412(Reversal of transfer posting),特殊库存标识为K。该操作执行后:
- 将411K转出的库存,从非限制使用库存(
SOBKZ = '')重新转回寄售库存(SOBKZ = 'K'); - 同时冲销原411K生成的FI凭证(如BSAS表对应行
SHKZG = 'H'); - 关键效果:重置
KDFLG字段为''(未结算),使该批库存重新进入MRKO结算池。
参数说明:412K必须与原411K凭证号(MSEG-VBELN)完全匹配,且冲销数量不能大于原转储数量。系统通过凭证号关联原始库存行,确保权属追溯可逆。
5.2 MRKO失败后的标准恢复流程
当MRKO报错中断(如税务缺失、价格异常),必须按以下顺序操作,任何跳步都将导致库存状态混乱:
- 执行MB1B 412K:输入原411K的凭证号(MSEG-VBELN),冲销全部转储数量;
- 修正主数据:根据报错信息,补充EINA中的MWST条件,或更新LFA1中的税务代码;
- 重新执行MB1B 411K:确保411K成功过账,生成新凭证;
- 再次运行MRKO:此时系统将读取修正后的P-info,完成结算。
# 验证412K是否成功的关键字段(SE16N查MSEG表) - MSEG-VBELN : 新增412K凭证号(与原411K同号但方向相反) - MSEG-SOBKZ : 从空变回 'K' - MSEG-KDFLG : 从 'X'(已结算)变回 ''(未结算)避坑 / 常见问题 / 排查
现象1:执行412K后,MRKO仍报同样错误
原因:412K未完全冲销,或冲销后未刷新缓冲区(SM37中检查后台作业是否完成)。
解决:用MB51查原411K凭证,确认412K凭证已生成;执行事务代码/$SYNC强制同步缓冲区。现象2:412K成功,但MMBE中寄售库存未恢复
原因:412K执行时未勾选“特殊库存”→“K”,误选为普通库存冲销。
解决:MB1B界面顶部→“特殊库存”→必须勾选“寄售”→重新执行。现象3:MRKO结算后,发现价格错误,想部分冲销
原因:MRKO不支持部分冲销,只能全量冲销KR凭证(FB08),再重新MRKO。
解决:FB08冲销KR凭证→MRKO重新结算(系统自动排除已冲销部分)。现象4:411K后未及时MRKO,下月再结算,价格按哪期?
原因:MRKO取价逻辑是“结算时点有效的寄售P-info价格”,非收料时点。
解决:若需锁定价格,应在收料前冻结P-info(ME12中设“有效至”日期)。
6. 寄售配置与监控:OMEV开关、寄售报表开发与日常巡检清单
寄售不是“配完就完事”的一次性配置,它需要持续监控库存健康度、结算时效性与主数据一致性。本章提供一套可落地的运维工具包:从后台开关校验到自定义报表SQL,再到每日必查的5项指标。
6.1 OMEV配置校验:寄售功能启用的终极确认点
路径SPRO → 物料管理 → 采购 → 使用信息记录激活寄售(Tcode: OMEV),此配置决定系统是否允许创建寄售信息记录。但配置本身不保证业务可用,必须交叉验证:
| 配置项 | 值 | 校验方式 | 不一致后果 |
|---|---|---|---|
| 采购组织 | 必须勾选具体采购组织 | SE16N查T161F表,EKORG字段应存在 | 未勾选采购组织,ME11无法保存寄售P-info |
| 特殊采购类型 | 必须包含'10' | SE16N查T161F表,BESKZ = '10' | 缺失10,MRP2视图无法保存特殊采购类10 |
| 信息记录类别 | 必须启用"Consignment" | SE16N查T161F表,INFAR = 'K' | INFAR不为K,ME11中无法选择寄售类别 |
提示:OMEV配置后,必须执行
SA38 → RM07MLBD程序,输入采购组织与任意物料号,确认输出中Special Stock列显示“K”。这是比前端界面更可靠的激活验证。
6.2 寄售库存健康度监控报表(SQL脚本)
以下SQL可在SE16N或SQVI中直接运行,生成寄售库存日报,替代手工查MMBE:
-- 寄售库存日报(按工厂+物料+供应商汇总) SELECT mseg~werks AS 工厂, mseg~matnr AS 物料号, makt~maktx AS 物料描述, lfa1~lifnr AS 供应商号, lfa1~name1 AS 供应商名称, SUM(mseg~menge) AS 寄售库存数量, AVG(eina~kbetr) AS 当前寄售单价, SUM(mseg~dmbtr) AS 库存金额 FROM mseg INNER JOIN mkpf ON mseg~mblnr = mkpf~mblnr AND mseg~mjahr = mkpf~mjahr INNER JOIN mara ON mseg~matnr = mara~matnr INNER JOIN makt ON mseg~matnr = makt~matnr AND makt~spras = '1' INNER JOIN lfa1 ON mseg~lifnr = lfa1~lifnr LEFT JOIN eine ON mseg~matnr = eine~matnr AND mseg~lifnr = eine~lifnr AND eine~ekorg = (SELECT ekorg FROM t024 WHERE werks = mseg~werks) WHERE mseg~sobkz = 'K' -- 仅寄售库存 AND mseg~bwart = '101' -- 仅收料凭证 AND mkpf~budat >= ADD_DAYS( SY-DATUM, -30 ) -- 近30天收料 GROUP BY mseg~werks, mseg~matnr, makt~maktx, lfa1~lifnr, lfa1~name1 ORDER BY mseg~werks, SUM(mseg~menge) DESC.逻辑说明:该脚本关联MSEG(物料凭证)、MKPF(凭证抬头)、MAKT(物料描述)、LFA1(供应商)及EINA(信息记录)五张核心表,按工厂、物料、供应商三级聚合,输出实时寄售库存量、单价与金额。
ADD_DAYS函数确保只统计活跃库存,避免历史呆滞数据干扰。
6.3 寄售日常巡检清单:5项必查指标与处置建议
| 检查项 | 检查方式 | 正常阈值 | 异常处置 |
|---|---|---|---|
| 1. 未结算寄售库存占比 | MB52 → 输入工厂 → 特殊库存K → 查看SALK3/SLABS比值 | < 15% | >15%:立即运行MRKO,检查是否因税务缺失阻塞 |
| 2. 寄售信息记录有效期 | ME12 → 输入物料+供应商 → 查看“有效至”字段 | 未来6个月以上 | 到期前30天:通知采购更新P-info,避免MRKO失败 |
| 3. 411K与MRKO时间差 | MB51 → 筛选移动类型411 → 查看凭证日期与MRKO凭证日期 | ≤ 3工作日 | >3天:检查MRKO作业是否被调度,或存在批量结算锁 |
| 4. 寄售收料无P-info比例 | SE16N → MSEG表 → 筛选SOBKZ='K' & BWART='101' & INFNR='' | 0% | 存在:追溯MIGO操作员,培训P-info前置创建规范 |
| 5. MRKO结算失败率 | SM37 → 查找MRKO后台作业 → 统计失败次数/总次数 | < 1% | >1%:导出失败日志,重点检查EINA-MWST与LFA1-STCD1一致性 |
从那以后我每次上线新寄售供应商,都强制走一遍这5项巡检:先用RM07MLBD确认OMEV激活,再用SE16N扫一遍EINA表的MWST条件,最后跑一次SQL日报看库存分布。曾经有个项目因跳过第4项检查,导致23%的寄售收料没挂P-info,MRKO批量失败后才发现,返工三天。现在这套清单已固化进我们团队的《SAP MM寄售上线Checklist》V3.2版,每次交接都带着走。希望帮到你。
本文还有配套的精品资源,点击获取