物料主数据创建/修改报错:不能更改估价分类

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

1 问题重述

物料编号 601-027019 在物料主数据更新时出现如下错误:不能更改估价分类,选择“显示错误”

通过搜索相关的问题,能够更改评估分类的几个条件:

  • 该物料本期和上期都是零库存。物料有库存,不能变更评估分类和计划价格

  • 采购有未清订单(相关采购订单都已打上删除标记)

  • 相关生产订单已关闭

2 网上搜知识

SAP 那些事-技巧篇-19-如何修改物料主数据的评估类

首先明确一点,SAP 中只要有业务交易发生,主数据核心字段的修改就变得比较困难,因此主数据核心主数据最好是一次性维护正确,一次性维护正确,一次性维护正确!评估类修改的步骤如下:

  1. 先判断是否需通过修改物料类型修改评估类(MMAM),这种情况是指物料类型选择错误导致评估类也错误,此时可以通过 MMAM 修改物料类型来修改评估类。

如果不能通过 MMAM 修改评估类,直接需要通过 MM02 修改评估类,常规步骤如下:

  1. 相关的未清采购订单的处理,需标记删除。

  2. 相关的未清生产订单的处理,需标记删除。

  3. 库存价值调整为 0,当期交易的话可冲销相关移动来实现,前期已有的交易则需要把库存转移到中间科目,修改完毕后,再转回来。

  4. 修改消息 OMT4(MM-326/327,低于 4.6B 版本则需通过代码修改消息)类型为警告,默认消息类型为错误,目的是如果存在未清采购订单和未清的生产订单,消息为警告。

  5. 修改评估类(批量修改可使用 MASS 或 MM17,单个修改 MM02)

总结:有库存肯定是不能修改的,库存必须清零,根据 SAP 官方说法,未清采购订单和生产订单是需要处理或打删除标记的,但从测试来看,不打删除标记也是可以的(个人认为如果采购订单和生产订单没做任何物料移动,是无需打删除标记的;或者说所有订单均已关闭,即相关采购订单已全部发票校验,生产订单已全部 TECO),SAP 也说这个消息是可以修改为警告的(可参考 note:160970 )。因此通常的修改方法为库存清零(可通过程序开发或 LSMW,从财务角度来说,也必须清零,否则科目怎么会更换为新的库存科目),修改评估类(可通过程序或 LSMW 或 MM17 ),库存恢复(LSMW 或开发程序),库存清零和库存恢复建议使用移动类型 562 和 561 。

另外需注意特殊库存(销售订单库存和项目库存),特殊库存如果不单独设置评估类,其使用的评估类和非限制库存一致,但如果只修改表 MBEW 的评估类,特殊库存评估类不会自动修改,如 EBEW 销售订单库存,这个评估类也需要手工修改才行。

3 问题分析

但是针对本次业务场景的物料 601-027019 的评估类在两个系统是一致的,都为 7100。

后续跟 MM 顾问在确认问题的时候,发现这个物料在 3 月份的时候更改过物料的评估类。一开始这个物料在前台 PLM 系统第一次下发的数据,会默认一个值,我估计这个值经过 MDC 传给 SAP 的评估类是 3000。所以后续他们在业务出错的时候,在 3 月 18 号将 3000 的评估类更改为了 7100:

在 SAP 端也是将库存清掉,更改过来的报文:

4 问题解决

现在只能通过打断点,去程序 ZWJMDT001 找问题了。

发现问题出现的代码在 FORM frm_deserialize_data 当中这段逻辑中:

  LOOP AT ls_material-mbew INTO DATA(ls_input_mbew).
     MOVE-CORRESPONDING ls_input_mbew TO ls_mbew .
     IF ls_mbew-eklas IS INITIAL."如果销售订单评估分类空 那么用评估类替代
       ls_mbew-eklas = ls_mbew-bklas.
     ENDIF.
     ls_mbew-matnr   = gs_mara-matnr.
     APPEND ls_mbew  TO gt_mbew.

     IF ls_mbew-bwkey = '2901' AND gs_mdc001-zswitch = 'X'.
       LOOP AT gt_mdc002 INTO gs_mdc002.
         ls_mbew-bwkey = gs_mdc002-werks.
         APPEND ls_mbew TO gt_mbew.
       ENDLOOP.
     ENDIF.
   ENDLOOP.
  1. 问题点一:首先销售订单评估分类为空,用评估类替代,刚好这个物料在 MDC 传过来的数据没有销售订单评估类,而 SAP 的销售订单评估分类为空。就把 7100 赋值给了 eklas 这个字段。在 SAP 系统中,这个物料在 1020 工厂下的系统内的值为空,在接口调用过程中,被赋值了,经过确认,这个物料可以直接在前台维护销售订单评估类,所以将这个值更改为 7100。

  2. 问题点二:接口同时也会去更改上年的同步分类,按理说这个字段不应该在接口中进行更改的。

字段 VJBKL 上年的评估类在 1020 是 3000,在这次接口改为 7100 了:

问题就出现在设置默认值这段程序,接口中有些字段虽然没改,但其实被这段程序把所有的值都给赋值了:

  LOOP AT gt_mbew ASSIGNING <fs_mbew>.
     CLEAR lv_mbew_exit.
**    确定价格控制
     READ TABLE gt_marc INTO DATA(ls_marc) WITH KEY matnr = <fs_mbew>-matnr werks = <fs_mbew>-bwkey BINARY SEARCH.
     IF sy-subrc = 0.
     ELSE.
       CLEAR ls_marc.
     ENDIF.

     READ TABLE lt_marc_db INTO ls_marc_db WITH KEY matnr = <fs_mbew>-matnr werks = <fs_mbew>-bwkey BINARY SEARCH.
     IF sy-subrc = 0.
     ELSE.
       CLEAR ls_marc_db.
     ENDIF.

     IF ls_marc-beskz IS INITIAL AND ls_marc_db-beskz IS NOT INITIAL.
       ls_marc-beskz = ls_marc_db-beskz.
     ENDIF.

     IF ls_marc-sobsl IS INITIAL AND ls_marc_db-sobsl IS NOT INITIAL.
       IF p_head-source NE 'MDC'.  "add xt on 211201
         ls_marc-sobsl = ls_marc_db-sobsl.
       ENDIF.
     ENDIF.

     READ TABLE lt_mbew_db TRANSPORTING NO FIELDS WITH KEY matnr = <fs_mbew>-matnr bwkey = <fs_mbew>-bwkey BINARY SEARCH.
     IF sy-subrc = 0.
       lv_mbew_exit = 'X'.
     ENDIF.

     PERFORM frm_determine_vprsv USING ls_marc lv_mbew_exit  CHANGING <fs_mbew>.

     IF <fs_mbew>-vprsv = 'S'.
       <fs_mbew>-mlast = '3'.
     ENDIF.
     IF <fs_mbew>-vprsv = 'V'.
       <fs_mbew>-mlast = '2'.
     ENDIF.
*    IF sy-datum+0(6) = '202109'.
     <fs_mbew>-vmvpr = <fs_mbew>-vprsv."控制标识
     <fs_mbew>-vjvpr = <fs_mbew>-vprsv."
     <fs_mbew>-vmbkl = <fs_mbew>-bklas."评估类
     <fs_mbew>-vjbkl = <fs_mbew>-bklas.
     <fs_mbew>-vmpei = <fs_mbew>-peinh."前期价格单位
     <fs_mbew>-vjpei = <fs_mbew>-peinh."去年价格单位
*    ENDIF.

*    gs_maw1-wbkla = <fs_mbew>-bklas.


   ENDLOOP.

其中这段语句就是问题:<fs_mbew>-vmbkl = <fs_mbew>-bklas."评估类,将上年期间的评估类也被重新赋值了,这个就是本次接口报错的原因。

同时,这段代码还会更改前期价格单位,去年价格单位等等,也不知道这样改是否符合 SAP 真实业务逻辑。

因为业务场景比较复杂,不可能一下子能将这段代码改掉,因此,我也是把这个字段在接口中手动改为 3000,然后 BAPI 没有报错了,如下图:

最终效果:

但是实际上,这段接口还是没有解决相应的问题,问题就在于前面的人将赋值不同物料的视图结构代码写的太通用了,但是没有数据校验。

参考文档

SAP 物料评估分类变更:从报错到成功的实战路径解析 本文详细解析了在SAP系统中使用MM02修改物料评估分类时遇到报错的实战解决方案。核心在于理解系统报错是出于财务数据完整性保护,并系统性地处理未清采购/生产订单、调整库存价值至零,最终安全完成变更。文章提供了从清理历史业务到执行修改的完整路径,强调了跨部门沟通与财务验证的重要性。 阅读详情

相关推荐

SAP物料主数据之‘评估分类’:从会计视图到库存价值,一次讲清修改前后的业务影响

本文深入解析SAP物料主数据中评估分类变更的业务影响与风险控制策略。评估分类作为连接物料管理与财务会计的关键纽带,其变更会直接影响库存价值计算、成本核算及跨模块集成。通过MM02事务码修改时需注意系统限制机制,并做好业务准备与系统配置调整,确保数据一致性。文章还提供了变更后的验证体系,帮助用户安全高效地完成评估分类调整。

weixin_30642561的博客 487

SAP调整评估类

本文档深入浅出,讲述了在SAP系统中修改评估类的方法

SAP MM02改物料评估分类报错?别慌,这5步操作帮你搞定(含MASS批量修改技巧)

本文详细解析了SAP MM02修改物料评估分类时常见的报错问题,提供了五步解决方案,包括问题诊断、清理未清业务单据、库存价值调整、修改系统消息类型OMT4以及执行评估分类修改。特别分享了MASS批量修改的高效技巧,帮助SAP顾问和关键用户快速解决物料主数据评估分类修改难题。

weixin_33704234的博客 461

SAP 消息号M3191 估价分类不允许分离估价

消息号M3191 估价分类不允许分离估价

weixin_44537682的博客 2541

SAP 变更物料主数据的评估分类

标记删除未清采购订单,这是为了保证在修改评估类时,不会受到未完成采购业务的干扰。因为未清采购订单中的数据可能与原评估类相关联,如果不处理,可能会导致数据不一致或修改失败。尝试直接修改评估分类代码,然后保存。如果系统允许,说明可以直接完成变更。对单个物料的评估类进行修改,适用于只需要修改个别物料评估类的情况。选择相应的视图(如会计视图),找到评估分类字段。对多个物料的评估类进行批量修改,提高工作效率。登录 SAP 系统,使用事务码。进入物料主数据修改界面。

qq_50547009的博客 1843

工厂6850中的物料8021215至物料分类账的连接缺失(消息号C+470)

关于 +470,我需要在物料分类账帮助台事务代码 KMHELP 中以更新模式执行多个报表。只有 SAP 可以更新运行修复报告。我是否可以更新运行报表以重新创建物料 8021215 工厂 6850 的物料分类账抬头数据?关于错误 +470,是由缺少 SAP 应创建物料分类账抬头数据导致的。更正前,请确保事务 OMS2 中的相应物料类型设置为“数量和价值更新”。

追梦的博客 4292

SAP物料评估类如何修改

3.对于已存在货物移动的工单,如果是修改评估类的物料是工单中的组件,则建议将已发料数262退回,并将工单设为删除状态,对于已存在货物移动的工单,如果修改评估类的是工单抬头产品料号,则将已入库部分102冲销,待修改评估类之后再重新收货,或者等月结之后再在没有新的工单入库的情况下才修改评估类。步骤2:使用MMBE查询该物料的库存,如果没有库存这一步跳过,不用处理,但如果有库存,当期交易的话可冲销相关的移动来实现,前期已有的交易则需要把库存转移到中间科目,修改完毕后,再转回来。

weixin_44506537的博客 2841

SAP 物料主数据中 Base Unit of Measure 的变更逻辑与落地检查

摘要:SAP物料主数据中的Base Unit of Measure(基本计量单位)并非普通字段,它关联库存、采购、销售等核心业务数据。官方建议在物料创建初期慎重选择该单位,因其变更将影响历史业务数据的语义一致性。系统对修改设有严格限制:库存必须为零,且无相关采购订单等未清业务。实际项目中,更推荐使用替代计量单位而非直接修改基础单位,以避免数据断层风险。变更前需全面检查相关业务对象,并建立完善的治理流程。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1万+

从 Material Master 生成 Materials List,SAP 物料清单查询背后的主数据逻辑

文章摘要 SAP系统中的Materials List功能是检查物料主数据完整性的实用工具,特别适用于月结前数据核对、上线前主数据验证及系统迁移场景。该功能通过物料类型、工厂、物料号范围等条件筛选,快速识别已维护完整(含会计视图)的物料。关键选项"Valuated Materials Only"默认开启,仅显示具备工厂级和会计视图的物料;取消勾选可查看所有物料(包括仅基础数据的)。此功能比逐个MM03查看或临时SQL查询更高效,能帮助用户快速定位主数据缺失问题,确保物料可正常参与库存估价等业务处理。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2742

修改物料类型、归档物料数据

MMAM、SARA、MM71、MM06、MM60、CKR3(归档cost estimates产品成本核算数据,归档对象CO_COPC)、CKR1(取消物料标准成本发布)

bbsangel8080的博客 1173

SAP 物料主数据里的 Purchase Order Text,采购文本到底该怎么设计、维护和读取

摘要:SAP MM模块中,物料主数据"Purchase Order Text"字段常被忽视但至关重要,它自动带出到采购订单行项目,承载规格、包装、检验等关键信息。不同于物料短描述,这段多语言文本面向采购全流程,适用于所有组织层级。文章分析了其与Basic Data Text等其他长文本的边界,指出维护入口(Industry用MM01/02/03,Retail用Article Master)及技术存储方式(STXH/STXL表需READ_TEXT读取)。实施时需注意:避免多语言混写、工厂级差异应通过采购信息

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1016

从 Plant Stock 到 Storage Location Stock,看懂 SAP 物料主数据里的库存视图

文章摘要: SAP物料主数据中的库存视图(Plant Stock和Storage Location Stock)仅用于显示库存余额,不能直接修改。库存数量通过货物移动(如采购收货、生产发料等)自动更新,而非手工维护。Plant Stock汇总工厂层级的库存,Storage Location Stock细化到库存地点层级,两者均依赖业务凭证链,确保财务与物流数据一致。SAP强调通过标准业务事务(如Manage Stock应用)调整库存,而非直接修改主数据,以符合Clean Core原则并保持审计追踪。开发时需

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1868

SAP学习笔记 - MM模块01 - 物料主数据 物料类型,物料的视图,主数据的三层结构,内部给号/外部给号设定,单位,物料状态

复习MM模块内容

shi_ly的专栏 212

SAP_MM模块-物料分割评估按批次管理库存价值

业务场景:同一个物料,可能会有很多情况导致价格不一致,但是秉承着SAP一物一码的原则,不会新增多个物料进行管理,如以下情况: (1)自产的价值与外购的价格不一样; (2)不同的制造商制造相同的物料,价格不同; (3)相同物料不同批次有不同的价格; (4)破损及维修后的物料与新的物料价值不一样 (5)其它同一物料价值不同的现象。 由于以上原因导致的一个物料有不同价格,所以会启用分割评估进行管理;以下举例讲解根据物料的批次不同来管理物料不同的价格

风沙的博客 4964

SAP物料评估类型与评估类别:物流与财务集成的核心配置解析

在ERP系统中,物料评估是连接物流与财务模块的核心桥梁,它决定了物料移动时系统如何自动生成会计凭证。其基本原理是通过定义不同的价值视角(评估类型)和业务规则(评估类别),实现多维度的成本核算与库存计价。这项技术的核心价值在于支持企业复杂的业务场景,如同一种物料在不同工厂采用不同成本、或按批次特性进行独立计价,从而满足集团计价、税务评估及管理会计等多重需求。在SAP实施中,评估类型与评估类别的协同配置是实现分割评估、确保月结准确性的关键。本文以分割评估和物料账为例,深入解析其配置逻辑与常见问题排查方法,为顾问

weixin_34379433的博客 382

SAP物料评估类型与类别详解:从核心逻辑到配置实战

在ERP系统中,物料成本核算是财务与供应链集成的核心环节,其准确性直接影响企业利润计算与库存价值。SAP系统通过一套严谨的评估体系来实现这一目标,其底层逻辑主要围绕两个关键概念展开。评估类别物料层级的“成本核算基因”,它从根本上决定了物料采用标准价、移动平均价还是期间单价进行计价。而评估类型则是这一“基因”在特定公司或工厂(评估范围)下的具体表达,它定义了详细的计价规则、过账科目,并支撑了分割评估等高级功能。理解这两者的协同原理,对于实现MM与FICO模块的无缝集成、确保成本准确流转至关重要。在实际应用中

weixin_33863087的博客 524

SAP物料计价方式详解:标准价与移动平均价的选择与应用

物料计价是企业资源管理(ERP)中成本核算与库存管理的核心基础,它直接影响财务报表的准确性和业务决策的有效性。其原理在于通过不同的计价逻辑来反映物料价值,标准价采用静态的预算价格,便于成本控制和绩效分析;移动平均价则动态跟踪实际采购成本,实时反映市场波动。这两种方式的技术价值在于平衡了管理稳定性与核算真实性,是SAP系统中物料管理(MM)与成本控制(CO)模块集成的关键。典型的应用场景包括制造业的成本控制、贸易行业的实时库存估价以及应对大宗商品价格波动。本文将聚焦于SAP中的标准价与移动平均价,深入解析其底

weixin_34355559的博客 405

SAP 报错异常大全

SAP 报错异常大全

Li958172829的博客 2701
上一篇: SAP 如何重置采购订单的新利润中心
下一篇: 了解 SAP 生成式 AI 领航员:Joule
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值