简介:围绕SAP MM模块供应商寄售业务整理的实操文档,面向需要理解寄售采购配置与日常操作的SAP顾问、关键用户及物料管理初学者,重点解决寄售主数据设置、库存转移和发票结算之间的衔接问题。内容以流程为主线,串联采购类型F与特殊采购类10的物料主数据维护、XK01供应商创建、ME11信息记录建立及OMEV后台激活,并延伸至ME51N采购申请、项目类别K、101收料、MMBE库存查看、MB1B 411K转非限制库存和MRKO发票校验等环节,同时提示信息记录先行、411K需Consignment类型P-info、异常时用412K冲销后再结算等细节。资源包共1个doc文件,约123KB,便于按步骤查阅与对照系统操作。已有570人学习,适合用作流程梳理、配置检查与常见报错排查的参考。
1. 寄售收料 101 之后财务凭证是空的:先别怀疑系统坏了
做 SAP MM 的人迟早会撞上这一幕:寄售采购订单用 MIGO 做 101 收货,物料凭证号正常生成,库存也进了,切到 FB03 一查会计凭证,空的。第一次遇到多半会以为系统出问题,冲销重收、换库存地点、再收一遍,库存越搞越乱。SAP 供应商寄售这条链路——物料主数据 MRP2 的 F/10、ME11 信息记录、OMEV 激活、项目类别 K、411 K 转移、MRKO 结算——每个环节的参数缺失都不会当场报错,而是延后到某一步才集中爆发。这篇是踩过几轮之后的复盘,写给正被「411K 无价值」「MRKO 结算不动」「寄售库存查不到」卡住的 MM 顾问和业务 Key User,照着查能少走不少弯路。
2. 建单阶段就埋雷:ME11 顺序错、OMEV 没激活、项目类别不是 K
寄售流程里最贵的错误都发生在最前面几步,因为它们不报错。物料主数据建了、供应商建了、采购申请也批了,看起来一切正常,等到 411K 转移或者 MRKO 结算那一刻,系统才把前面埋的雷一次性引爆。我一般的习惯是:动 ME51N 之前,先把「主数据 F/10、OMEV 已激活、ME11 是寄售类型、PR 行项目类别 K」这四点逐条确认一遍,确认成本不到五分钟,能省掉后面半天的排查。
2.1 寄售信息记录必须先于 101:顺序反了,报错会延后炸
正文里那句「寄售的采购订单开立时可以没有信息记录,101 收料时一定要有」是本流程最容易读漏的一句。很多人看到「开 PO 时可以没有」就先开单,等到收货前才补 ME11,补的时候又忘了在信息记录上勾寄售,结果建出来的是标准信息记录(ESOKZ = 0),系统压根不认这是寄售价格来源。
判断一份信息记录到底是哪种类型,ME13 打开看抬头标识最直观,批量排查我一般直接查 EINE 表,ESOKZ 这个字段就是信息记录类别:0 是标准、1 是寄售、2 是管道。同一物料同一供应商在同一采购组织下可以并存多条不同类型的记录,肉眼在 ME11 初始界面翻列表容易看花,用查询更稳。
" 按物料+供应商+采购组织,列出所有信息记录及其类别 SELECT infnr ekorg werks esokz netpr peinh waers mwskz FROM eine INTO TABLE @DATA(lt_eine) WHERE matnr = @lv_matnr " 物料号 AND lifnr = @lv_lifnr " 供应商 AND ekorg = @lv_ekorg. " 采购组织 LOOP AT lt_eine INTO DATA(ls_eine). " ESOKZ: 0=标准 1=寄售 2=管道;寄售流程必须命中 1 WRITE: / ls_eine-infnr, ls_eine-esokz, ls_eine-netpr, ls_eine-peinh, ls_eine-waers. ENDLOOP.这段查询的用途是「一眼看出有没有寄售记录」,不是用来改数据的。ESOKZ命中 1 才说明这份记录能支撑 411K 转移;NETPR和PEINH是转移时的取价来源,PEINH是价格单位,很多「金额差了 100 倍」的事故就是这里填了 100 而实际按 1 在理解。MWSKZ是税码,后面 MRKO 结算会用到,这里先记着。
如果已经建错了,不要试图在 ME12 里把标准记录「改成」寄售,条件会重新生成,历史价格段还在,后面取价容易取到旧段。常规做法是给这份错误记录打删除标记,重新用 ME11 建一份寄售类型,再回 ME51N/ME21N 把行项目上的信息记录号重新带一次。
注意:寄售信息记录不建,采购订单照样能存;但 101 收货时系统就会开始找它,找不到直接卡住,前面看起来「一切正常」全是假象。
2.2 OMEV 没激活:寄售信息记录建了也等于没建
第二步的高频坑在后台。SPRO 路径是「物料管理 → 采购 → 使用信息记录激活寄售」,事务代码 OMEV,说白了就是一个开关。这个开关不打开,你在 ME11 里建的寄售信息记录在采购申请、采购订单里带不出供应商和价格,行项目看着能存,价格是空的,等到 411K 转移才报「无价值」。
现场表现有几个特征,可以拿来反推:ME51N 输入物料后,系统不自动建议供应商,也不带价格;转成 PO 之后行项目净价是 0;101 收货能过(因为寄售 101 本来就不产生 FI 凭证);到了 MB1B 做 411 K,报错立刻出现。整条链路里只有最后一步会叫,这就是寄售流程最折腾人的地方。
OMEV 的检查成本极低,进事务代码看那个勾选状态就行,如果贵司是多公司代码、多工厂环境,注意这个开关是跨客户端的配置,改完要让 Basis 走传输请求,别在测试机点完就当生产也生效了。血泪经验是:测试环境跑通了、生产报错,十有八九就是配置没传过去。
顺带说一个相关的顺序问题:OMEV 是激活开关,ME11 是数据。开关没开时建的信息记录,激活之后不会自动「补全」所有行为,稳妥的做法是激活之后 ME13 逐条打开看一眼价格和税码是否完整,不要假设它在。
2.3 物料主数据 MRP2 的 F + 10,决定了 PR 的项目类别默认值
第三步的坑在物料主数据。MRP2 视图里采购类型填 F、特殊采购类填 10,这两个字段合起来告诉系统「这个物料走寄售采购」。字段名分别是 MARC-BESKZ 和 MARC-SOBSL,改错了不一定报错,但 ME51N 建申请时行项目的类别不会默认成 K,采购员手一抖选成空白,整张单就变成普通采购了。
批量核对可以直接查表,比一个个 MM03 翻快得多:
-- 核对物料在指定工厂下的采购类型与特殊采购类 SELECT matnr, werks, beskz, sobsl FROM marc WHERE matnr = 'MAT-0001' AND werks = '1000'; -- 期望:BESKZ = 'F'(外部采购),SOBSL = '10'(寄售)BESKZ是采购类型,E 代表自制、F 代表外部采购,寄售属于外部采购范畴,所以必须是 F。SOBSL是特殊采购类,10 就是供应商寄售,填成 20(寄售到客户)、30(转储)之类都会让后续行项目类别跑偏。这两个字段任一为空,ME51N 的项目类别就不会默认 K。
项目类别本身也要能在单据上查到,采购申请看 EBAN-EPSTP,采购订单看 EKPO-EPSTP。转单环节最常见的翻车是把 PR 转成 PO 之后手工改过行,把 K 改没了,这时 PO 上仍然是「寄售」的物料主数据,但行项目已经是标准采购,101 收料会直接进自有库存并产生 FI 凭证,账和实物同时错。
提示:项目类别 K 是寄售的身份证,只要它不在,后面所有的特殊库存、MB1B 411 K、MRKO 都无从谈起。
3. 411K 报 Pipeline/consignment movement posted without value:价格到底从哪来
这条报错原文是Pipeline/consignment movement posted without value,翻译过来是「管道/寄售移动无价值过账」。从字面看它把管道和寄售放在一起,很容易让人误以为是管道物料的配置问题,实际上在寄售场景里,它九成就是在告诉你:这次 411 K 移动,系统找不到可用于估价的寄售价格。搞清「系统到底在找哪个价」,比盲目重试有效得多。
3.1 报错原文拆解:系统在寄售信息记录里找不到有效价格
411 K 的业务含义是「把供应商寄售库存转成自己工厂的非限制库存」,也就是所有权转移。所有权一转移,就必须确认负债和成本,所以这一步必然产生会计凭证;而 101 收料时所有权还在供应商手上,所以不产生 FI 凭证。很多人把这两件事搞反,以为 101 少了凭证是系统故障,其实是业务设计如此。
既然是所有权转移,系统就必须知道「按什么价转移」。这个价不来自采购订单净价,而是来自寄售信息记录(ESOKZ = 1)里的价格条件。所以这条报错的完整含义是:411 K 触发了估价,系统去 EINE 里按物料、供应商、采购组织、工厂找寄售信息记录,没找到,或者找到了但价格为空/为 0,于是拒绝过账。
排查顺序我一般是这样:先 MB51 或 MB03 确认这次 411 K 的物料、工厂、供应商、数量;再 ME13 打开该供应商该物料的寄售信息记录看价格是否有效、有效期是否覆盖今天;最后才怀疑配置。顺序不能反,因为很多时候是有效期过了——信息记录的价格条件有起止日期,跨年结算的老物料经常踩这个。
还有一种情况是「信息记录建了,但建在别的采购组织或别的工厂下」。寄售信息记录是组织级别的数据,采购组织 A 下建的价格,在采购组织 B 的工厂做 411 K 用不到,系统照样报无价值。这类问题的排查用 2.1 里那段 EINE 查询最快,把 EKORG 和 WERKS 都框进条件里,一条都不命中就是明证。
3.2 MB1B 做 411 K 的字段清单,逐项对照
确认价格没问题之后,操作本身也有几个字段不能错。MB1B 做 411 K 的界面字段不多,但每一个都决定成败:
| 字段 | 应填值 | 填错的后果 |
|---|---|---|
| 移动类型 | 411 | 填成 301/311 会变成普通转储,不走寄售估价 |
| 特殊库存 | K | 空着会被当成非限制库存,直接报库存不足 |
| 供应商 | 寄售供应商编码 | 与信息记录的供应商不一致就找不到价格 |
| 物料 / 数量 | 实际转移量 | 超量会报库存不足,注意单位 |
| 工厂 / 库存地点 | 收货方工厂与地点 | 工厂决定价格取哪条组织级记录 |
| 过账日期 | 实际业务日期 | 早于信息记录有效期起点会报无价值 |
MB1B 界面填法(寄售转自有库存): 移动类型 411 特殊库存标识 K 供应商 V-000001 物料 MAT-0001 数量 100 工厂 1000 库存地点 0001 过账日期 当天(注意落在信息记录有效期内)这段是字段对照,不是代码,照着填即可。特殊库存标识 K 是关键,它告诉系统「我要动的不是自己的库存,而是某个供应商寄存在这里的库存」,填了 K 之后界面才会出现供应商字段;反过来,供应商填了但特殊库存没选 K,系统一样找不到那批货。过账日期这一项容易被忽略,尤其是补录上个月的转移时,如果信息记录价格是本月才生效的,补录就会报无价值,正确做法是回到价格有效的日期区间内处理,或者先把信息记录的有效期补齐。
3.3 转出来的会计凭证金额不对:PEINH 和税码两个高频错点
报错解决了,凭证出来了,但金额一看就不对,这种情况我见过两类。第一类是价格单位 PEINH。信息记录里净价 12.5、价格单位 100,含义是「每 100 个单位 12.5 元」,系统在转移 100 个时按 12.5 计,转移 1000 个时按 125 计;如果填的人理解成「单价 12.5」,就会觉得金额少了两个数量级。这类问题不要靠猜,ME13 里价格条件的单位和数值都在,逐项对一遍就能定位。
第二类是税码 MWSKZ 缺失。411 K 产生的会计凭证里如果税码为空,进项税那一行就不会出现,凭证能过但金额结构不对,后面 MRKO 结算时又会因为信息记录里没税信息而二次翻车。所以 411 K 之前就应该在 ME12/ME13 把信息记录的税码维护好,而不是等结算报错再回头补。
凭证出来之后想核对这张物料凭证到底有没有产生 FI 凭证、金额多少,可以直接查 MSEG:
-- 查某张物料凭证的所有行,确认是否产生会计凭证及金额 SELECT mblnr, zeile, bwart, shkzg, dmbtr, waers, mjahr FROM mseg WHERE mblnr = '4900000001' AND mjahr = '2024'; -- BWART=411 且 DMBTR > 0,说明估价成功 -- 若需要确认 FI 侧,再用 BKPF/AWKEY 反查(AWKEY 前 10 位为物料凭证号)BWART是移动类型,SHKZG是借贷标识,DMBTR是金额,WAERS是货币。411 K 的行如果DMBTR是 0,说明系统过了账但没估出价值,这在「信息记录存在但价格条件全部失效」的场景下会出现,比直接报错更隐蔽,对账时才发现,所以我习惯每次转移完顺手看一眼金额,而不是只看到「凭证已过账」就放心。
注意:101 寄售收货不产生 FI 凭证是正常设计,411 K 才产生;把这两者搞混会让人在错误的方向上排查很久。
4. MRKO 结算不动:消息被吞、税务信息缺、冲销顺序反了
寄售的发票校验不走 MIRO,而是 MRKO。这是个独立事务,业务逻辑是「按本期实际提取的寄售数量,和供应商结算」,所以它的输入不是采购订单,而是供应商 + 公司代码 + 工厂 + 期间。这也解释了为什么很多人拿 PO 号去 MIRO 里试,怎么都验不出一张发票——寄售根本没有以 PO 为对象的发票校验。
4.1 MRKO 一闪而过的报错:先把消息号捞出来
正文里提到「MRKO 结算时提示这个问题是消息管理的问题」,实际现场最常见的表现是:点了结算,界面闪一下,什么都没发生,或者只弹一条几秒钟就消失的提示。这不是系统不理你,而是消息被消息管理配置成了「低优先级」,一闪而过。
排查的第一步是把消息号捞出来。MRKO 执行后可以看生成的日志,也可以在 SLG1 里按对象和日期找当天的应用日志,把形如M7 xxx、06 xxx的消息号记下来。有了消息号,再去 SPRO 的消息控制节点(不同版本菜单名有差异,在自定义里搜「消息」也能定位到)把该消息由 E(错误)调成 W(警告)或空白,重跑 MRKO。
MRKO 执行路径(示意): 1) MRKO 输入 供应商 / 公司代码 / 工厂 / 期间 2) 先点「模拟」,看有没有结算行、金额是否为 0 3) 模拟有行、正式结算失败 → 记下消息号 4) SPRO 消息控制里查该消息号当前级别,按需调低 5) 回到 MRKO 重跑正式结算调消息级别这件事要克制。把错误改成警告只是让流程能继续,如果这条消息背后是真问题(比如信息记录缺税务数据),压下去之后凭证照样是错的,只是不报了。我的做法是:先按消息号定位到具体校验点,确认是误报或者业务上可接受,再调级别,并且把调整原因写在传输描述里,方便后人追溯。
4.2 信息记录税务视图缺失,结算金额挂零
MRKO 结算出来的凭证如果税额是 0,或者干脆结算不出金额,第一嫌疑就是信息记录的税务信息缺失。正文里那句「在寄售信息记录里一定要包含税务信息」不是可选项,是硬条件——MRKO 生成的是带税的结算凭证,税码从信息记录来,信息记录里没有,系统就不知道按几个点算。
检查方法是 ME13 打开该供应商该物料的寄售信息记录,切到税务相关页签,确认税码有值;批量确认可以回到 2.1 里的 EINE 查询,看MWSKZ这一列是不是空的。空的话用 ME12 补,注意税码是跟国家、供应商税分类绑定的,跨国供应商填错税码会导致税额算错但不报错,这种错最难发现,因为凭证是平的。
补完税码之后不要直接重跑 MRKO,先跑模拟。模拟出来的结算行会显示数量、单价、金额、税额,四项逐项对一遍再正式结算。我见过有人补完税码直接正式跑,结果因为期间内还有未结算的 411 K 提取,一次性全结了,金额远超预期,回头冲销又是一轮折腾。
还有一种「结算金额挂零」的原因是本期根本没有 411 K 提取。MRKO 结算的是「已经转成自有库存的那部分」,如果本期只有 101 收货、没有 411 K,MRKO 里就是空行,这不是报错,是没业务。判断方法很简单:MMBE 看寄售库存还在不在,或者 MSEG 里查本期有没有 411 K 的移动记录。
4.3 已经 411K 又发现错了:412K 才是回退的正确姿势
这是寄售流程里最容易被「想当然」处理的一步。发现 411 K 转错了数量或者转错了批次,第一反应往往是拿 MBST 或者 FB08 去冲销那张物料凭证/会计凭证,结果要么冲不掉,要么冲掉之后 MRKO 结算状态对不上,账更乱。
正文里给了明确结论:不能直接冲销凭证,必须先用 412 K 把 411 K 冲回去,再做发票校验。412 K 的业务含义是「把已经转成自有库存的寄售数量,原路退回寄售库存」,它是 411 K 的反向移动,走的是同一套寄售逻辑,估价、供应商、特殊库存标识都要重新填一遍。做完 412 K 之后,寄售库存回到转移前的状态,这时再调整数量、重新做正确的 411 K,然后才进 MRKO。
错误路径:411K → MRKO 已结算 → MBST 直接冲销物料凭证 → 结算与库存对不上 正确路径:411K → 发现错误 → MB1B 412 K 冲回寄售库存 → 修正数量/批次 → 重新 411 K → MRKO 结算判断「能不能直接冲销」有个简单标准:只要这批寄售库存已经被 MRKO 结算过,就不要动原始凭证,走 412 K。412 K 和 411 K 一样需要寄售信息记录和有效的价格,所以 3.1 里那套价格检查在回退时同样要做一遍,别以为回退就不用管价格。
我做这类回退时的习惯是:412 K 之前先在 MMBE 里把当前寄售库存数量截图或记下来,412 K 之后再查一次,两次差值应该正好等于回退数量。数字对不上就说明中间还有别的移动,先搞清楚再往下走,别一路点下去。
5. 避坑清单:五个让寄售流程反复翻车的现场问题
下面这五条是我在不同项目里反复见到的,写法统一按「现象 → 原因 → 解决」,方便对着现场情况直接比对。
5.1 收货与库存环节的三个坑
坑一:101 收料后没有会计凭证,被当成失败重收。
现象:MIGO 做 101,物料凭证生成,FB03 查不到 FI 凭证,操作人员以为没成功,再收一次,寄售库存翻倍。
原因:寄售 101 只做库存移动,所有权仍在供应商,按设计不产生 FI 凭证。这是正常现象,不是报错。
解决:把这条写进操作手册——寄售 101 无 FI 凭证是预期行为,判断成功与否看物料凭证号和 MMBE 里的寄售库存,不看 FB03。已经重复收货的,用 102 冲销多余的那几张,冲销前确认没有被 411 K 消耗掉。
坑二:411 K 报 Pipeline/consignment movement posted without value。
现象:MB1B 填好 411、K、供应商,一回车就报这条,反复重试无效。
原因:寄售信息记录缺失、ESOKZ 不是 1、价格为空、有效期不覆盖过账日期,四种之一。
解决:按 3.1 的顺序查 EINE 的 ESOKZ / NETPR / 有效期,缺什么补什么;补完不要急着正式过账,先在 MB1B 里用「模拟」看系统能不能估出金额。
坑三:MMBE 查不到寄售库存,以为货没收到。
现象:101 明明过账了,MMBE 输入物料和工厂,库存显示为 0 或只有非限制库存。
原因:MMBE 默认展示的是自有库存,寄售属于特殊库存,需要展开特殊库存节点或者选「供应商寄售」那一栏才看得到。
解决:MMBE 初始界面把「特殊库存」勾上,进入后选 K 节点,按供应商展开;习惯做法是收货后立刻在 MMBE 里确认寄售节点数量与收货数量一致,把问题挡在 411 K 之前。
5.2 结算与冲销环节的两个坑
坑四:MRKO 点完没反应,或者提示一闪而过。
现象:MRKO 正式结算后界面无变化,没有凭证号,也没有明显报错。
原因:消息被消息管理配置成低级别,一闪而过;或者本期没有可结算的 411 K 提取,属于无业务而非失败。
解决:先看模拟结果有没有结算行,有行但正式失败就去捞消息号调级别(详见 4.1);没有行就先回去确认本期是否做过 411 K,别在空数据上折腾配置。
坑五:411 K 做错了直接冲销物料凭证。
现象:用 MBST 或类似方式冲销了 411 K 的物料凭证,之后 MRKO 结算状态异常,或者库存与结算数量对不上。
原因:411 K 走的是寄售估价链路,直接冲销绕过了寄售的反向逻辑,结算侧没有对应记录。
解决:按 4.3 的路径,改用 412 K 把数量退回寄售库存,修正后重新做 411 K,再进 MRKO;已经被 MRKO 结算过的期间,回退前先确认结算状态,必要时联系财务一起看。
6. 快速定位寄售故障:把报错映射到一张表
寄售的问题有个共同特征——报错的位置往往不是出错的位置。所以我现在不太按「操作顺序」排查,而是按「报错关键词」反查,把现象当入口,两三步内定位到根因层。下面这张表是我自己常用的映射,贴在工位上比翻笔记快。
| 现象或报错关键词 | 首查入口 | 判断依据 |
|---|---|---|
| 101 收货后无 FI 凭证 | FB03 / MSEG | 寄售 101 本就不产生 FI,属正常;看物料凭证是否存在 |
| Pipeline/consignment movement posted without value | ME13 / EINE | ESOKZ 是否为 1、NETPR 是否有效、有效期是否覆盖过账日 |
| 采购申请带不出供应商和价格 | OMEV | 寄售激活开关是否勾选,配置是否已传到当前系统 |
| 行项目类别不是 K | MARC / EBAN-EPSTP | BESKZ=F、SOBSL=10 是否成立;PR 行是否被手工改过 |
| MRKO 无结算行 | MMBE / MSEG | 本期是否有 411 K 提取,寄售库存是否还在 |
| MRKO 结算税额为 0 | EINE-MWSKZ | 信息记录税码是否维护,税码与国家/税分类是否匹配 |
| 411 K 金额与预期差百倍 | ME13 价格条件 | PEINH 价格单位是否被误读为单价 |
| 411 K 后想回退 | MB1B 412 K | 不允许直接冲销,走寄售反向移动 |
用法很简单:先在表里找到最接近的现象,按「首查入口」那一列进去看,多数问题在看第一眼的时候就能排除一半。比如「MRKO 无结算行」,进去 MMBE 一看寄售库存还在,说明根本没做 411 K,那就不用去查税码和消息配置,问题在业务侧没执行完。反过来,寄售库存是 0 而 MRKO 还是没行,才需要往结算逻辑上想。
还有一个小技巧:把 MSEG 里这张物料凭证的BWART、SHKZG、DMBTR三列拉出来,基本能还原出「系统认为发生了什么」。411 且金额大于 0,是正常转移;411 且金额为 0,是估价失败但放行了;412 出现,说明有人做过回退。这条线索比问操作人员「你当时点了什么」可靠得多,人记不住的,表里都记着。
从那以后我每次接到寄售相关的问题,都强制先走一遍「主数据 F/10 → OMEV 是否激活 → ME11 是否寄售类型 → 行项目是否 K」这四步,再动任何单据。这四步花不了几分钟,但能挡掉八成以上的返工。希望帮到你。
本文还有配套的精品资源,点击获取