ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SAP SD可用性检查与需求传递全链路配置及VBBE/MRP排错

SAP SD可用性检查与需求传递全链路配置及VBBE/MRP排错 简介这份资料是 SAP SD 模块自学系列的第十一篇聚焦可用性检查与需求传递面向正在从事或准备转向 SAP 销售与分销实施、运维的顾问和关键用户帮助他们打通订单确认、交货日期计算与需求向 MRP 传输这条主线。PDF 正文约八页从检查组、检查规则、检查方案到需求分类、计划行类别逐层梳理 IMG 配置路径与对应事务码如 OVZ2、OVZ9、OVZ8、OVZG、OVZK 等。压缩包内仅 1 个 PDF 文件体积约 1.77MB可直接阅读标注无需额外环境。资源已有 1007 人学习说明其在同类自学材料中具备一定参考价值。内容中还区分了订单可用性检查与交货可用性检查讲解一次性交货、全部交货、交货建议三种规则在缺货场景下的日期与数量确认差异并说明 MM、PP 模块与 SD 的集成关系适合边读边在测试系统里对照配置验证。1. 为什么销售订单会被扣着不放SD 可用性检查与需求传递到底管什么销售下单按钮点下去系统凭什么立刻告诉你能承诺 X 天后发货答案落在 SD 里两套容易混淆的机制上可用性检查Availability CheckATP负责在订单保存那一刻算出一个可确认量和可确认日期需求传递Requirement Transfer负责把这张订单产生的需求送进 MRP让计划、采购、生产看得到。前者管这单现在能不能卖、能卖多少后者管后面怎么补库存。两者共用物料主数据里同一个检查组Checking Group任何一处配置错位结果要么是超卖、要么是 MRP 永远看不见这批销售需求。这篇适合三类人做过 SD 订单流程但被系统说能交、实际交不出投诉过的顾问在 MD04 里查不到销售需求、怀疑需求传递断了的内顾以及需要批量核对一堆物料可用性、准备写 CO09/MDVP 替代脚本的开发。下面按链路讲清 → 配置落地 → 实操命令 → 表级排查 → 进阶调优的顺序推所有配置都写事务码路径所有排查都给出可执行的代码或查询。2. 从物料主数据到销售订单可用性检查的三层配置链路2.1 检查组、检查规则、检查范围分别挂在哪里SAP 的 ATP 不是一张配置表说了算它是物料侧 流程侧 二者组合三层叠出来的一套规则。很多人配完不生效就是因为只改了其中一层。配置对象维护入口挂在什么上决定什么检查组 Checking GroupMM01/MM02 物料主数据 MRP3 视图单个物料该物料按哪种粒度做检查日/周/无检查检查规则 Checking RuleOVZ2或 SPRO 路径销售与分销 → 基本功能 → 可用性检查 → 可用性检查控制销售订单类型 项目类别这类流程该按哪套规则检查检查范围 Scope of CheckOVZ9同路径下定义检查范围检查组 检查规则组合真正算哪些库存和收发货参与 ATP需求传递开关OVZ9 同界面内的需求传递标识检查组 检查规则组合订单确认后要不要写 VBBE 需求记录关键点检查组决定哪些规则可选检查规则决定用哪套范围检查范围决定算哪些量。比如物料 MRP3 里检查组填了 01每日检查OVZ2 里 OR 标准订单项目类别 TAN 配了检查规则 A那么系统会去找 OVZ9 里 01A 这个交叉点的 scope of check用那里的勾选去算可用量。2.2 用 OVZ9 定义检查范围的具体勾选项进入 OVZ9 后先在左侧选中检查组 检查规则组合再决定右侧 scope of check 的每一个勾勾。这张表是排错频率最高的地方值得逐个记住。Scope 项勾选的含义不勾会怎样库存 Stock当前非限制库存计入可用量当期库存不算ATP 从零开始采购申请/采购订单未清在途计入未来可用在途的补货不参与承诺计划订单 Planned Order计划订单收货计入MRP 生成的计划收货不算日期会被推远生产订单 Production Order未清的工单产出计入自制件永远看不到未来产能入库预留 Reservations其他预留扣减可用其他模块占的库存没被扣销售需求 Sales Requirements其他销售订单已确认量扣减可用只算库存不算其他订单必超卖相关需求 Dependent Req.上层订单带出的相关需求扣减部分成品下的组件需求没扣提示scope of check 里库存和销售需求这两项在实践中几乎没人敢不勾——前者不勾等于库存白搭后者不勾等于 ATP 只算实物不正常扣需求。2.3 需求传递开关与物料检查组的配合需求传递不是独立开关它藏在 OVZ9 检查组 检查规则的组合维护界面里通常以需求传递或传递需求的标识出现。它必须同时满足两个条件才生效物料 MRP3 视图的检查组允许传递例如检查组 01 允许检查组 KP 表示不检查也不传递OVZ9 里该检查组 检查规则的组合上需求传递标识被勾选。只满足一条是常见的假象订单能确认、CO09 也显示占用量但 MD04 里就是没有销售需求——因为需求传递没走通VBBE 表里没写记录。判断方法后面第 4 章有具体 SQL。2.4 一个最小可用的配置顺序按下面顺序配出问题的概率最低物料主数据 MRP3填检查组新建物料的话先跑 MM01 只建基本MRP 视图OVZ2把检查规则分配到你要用的订单类型 项目类别组合OVZ9在检查组 检查规则组合下勾 scope of check 的库存、销售需求、采购在途并确认需求传递标识新建一张销售订单验证物料可用、交货日期填到 5 天后看计划行的确认日期是否是 5 天后还是被推后。四步里最容易漏的是第 2 步——OVZ2 没分检查规则销售订单就会走无检查分支直接全部确认看起来很爽实际是埋雷。3. 在真实订单里跑通可用性检查CO09、MDVP 与确认逻辑3.1 销售订单保存时到底发生了什么保存一张销售订单系统执行的动作顺序大致如下理解这套顺序对排错非常关键读销售订单类型 项目类别 → 找 OVZ2 里配的检查规则读物料主数据 MRP3 的检查组用检查组 检查规则去 OVZ9 取 scope of check以请求交货日期Requested Delivery Date为起点扣掉运输提前期、拣配/装载时间逆推出一个物料可用日期从这个日期往后按工作日受工厂日历控制逐日累加可用量直到满足订单量或到最大确认天数OVZ9 里也有这项把确认结果写到计划行Schedule Line的确认数量、确认日期同时如果需求传递开启把需求写进 VBBE。注意第 4 步和第 5 步这就是为什么有人抱怨客户 15 号要货系统确认到 22 号实际是运输和拣配提前期把起点往后拉了不是 ATP 算错。3.2 CO09 与 MDVP单人核对和批量核对CO09面向单个物料单个工厂输入物料、工厂、检查规则、需求日期范围直接给你一张可用量概览——按日期列出收货、发货、可用量、累计可用量。日常回答业务这个料什么时候能交就用它。MDVP是批量版逐物料跑一遍可用性检查适合月末冲量前复核或者一批料更换了检查范围配置后回归测试。参数面板关键三项参数含义建议值物料范围单物料还是选择集生产环境用选择集而不是全表工厂/MRP 区域决定读哪个MRP区域库存必须与订单上工厂一致检查规则用哪套规则跑填订单实际使用的规则别填 A 却拿 B 比跑 MDVP 时如果一条都没结果八成是选择集里物料的检查组是不检查如 KP系统直接跳过——这不算错。3.3 用 ABAP 取单个物料的可用量要在自开发报表里复刻 CO09 的可用量走标准函数BAPI_MATERIAL_AVAILABILITY最省事DATA: lt_available TYPE STANDARD TABLE OF wmdtc, ls_available TYPE wmdtc, lv_matnr TYPE matnr, lv_werks TYPE werks_d. lv_matnr MAT-1001. lv_werks 1000. 取当前日期起 30 天内的可用量明细 CALL FUNCTION BAPI_MATERIAL_AVAILABILITY EXPORTING material lv_matnr plant lv_werks unit PC end_date sy-datum 30 TABLES available lt_available EXCEPTIONS error_message 1 OTHERS 2. IF sy-subrc 0. 记录日志不要静默吞掉 RETURN. ENDIF. LOOP AT lt_available INTO ls_available. WRITE: / ls_available-datum, 日期 ls_available-gesme, 累计可用量 ls_available-gesmb. 累计需求量 ENDLOOP.逻辑说明函数内部会按物料主数据的检查组 传入的工厂去取库存、在途、需求逐日输出WMDTC结构。end_date控制查询窗口30 天是常用值跨度太大一次返回的行会非常多。参数说明material/plant必须和销售订单上的一致跨工厂取不到数unit是计量单位必须用基本单位否则会报单位换算错误end_date不填只返回当天函数本身不做检查规则区分如果 CO09 里按检查规则 A/B 分别算函数层需要另调AVAILABILITY_CHECK_ATP才能拿到检查规则维度BAPI 更偏向展示单个物料的累计可用量。注意BAPI_MATERIAL_AVAILABILITY只读库存视图不会触发需求写入用它做报表是安全的要模拟订单确认时的检查结果必须用AVAILABILITY_CHECK_ATP。3.4 从订单侧看确认结果想直接看某张销售订单的确认情况走 VA03 → 计划行页签能看到确认数量和确认日期两列。要批量看把 VA03 的计划行字段拆成 ALV 报表读 VBEPSELECT vbeln, posnr, ettyp, edatu, wmeng, bmeng FROM vbep WHERE vbeln 0000012345;ETTYP是计划行类别如 CP 是每日计划行EDATU是确认日期WMENG是确认数量BMENG是订单数量。确认量小于订单量就是被 ATP 压了需要结合 CO09 看是哪个日期的可用量不够。4. 需求传递与需求转计划VBBE/VBBS/VBUP 三张表怎么读4.1 需求传递真正写的是什么需求传递在 SAP 里的动作非常具体订单确认后系统把这张订单要占用的量按物料 MRP 区域 需求日期 需求类型汇总成一条独立需求记录写进VBBE表。这张表就是 MRP 运行时的输入——MD04 里看到的销售需求行本质就是 VBBE 里的一条记录。写不进 VBBE 的常见原因分两类配置类检查组或 OVZ9 的需求传递标识没开、数据类MRP 区域字段没维护、需求日期落在过去、订单项目状态被拒绝或冻结。排错时先用 SQL 看 VBBE 有没有记录再看配置。4.2 三张表的职责划分表存什么关键字段排查用途VBBE单条物料的销售需求记录MATNR、WERKS、PLART、BDTER、BDMNG、VBELN、POSNR、ETENR确认有没有写进去、写了多少、什么时候VBBS需求传递的状态指示VBELN、POSNR、VBTYP、传递相关状态位判断系统认为要不要传VBUP销售订单项目的整体状态VBELN、POSNR、各状态字段走活/冻结/拒绝一目了然VBBE 的关键字段含义BDTER是需求日期也就是确认生效的日期BDMNG是需求数量PLART是需求类型区分销售需求、相关需求等ETENR对到计划行号。一条订单行分解成多个计划行时VBBE 里会是多行各自带各自的需求日期。4.3 用 SQL 交叉核对订单和需求记录排查订单确认了但 MD04 看不到最直接的办法是把 VBAP订单行和 VBBE 做左外连接看哪些订单行没有对应的需求记录SELECT v.vbeln, v.posnr, v.matnr, v.werks, e.bdter, e.bdmng, e.plart FROM vbap AS v LEFT OUTER JOIN vbbe AS e ON e.vbeln v.vbeln AND e.posnr v.posnr WHERE v.erdat 20250101 AND v.abgru 未拒绝 AND e.vbeln IS NULL; 没有需求记录逻辑说明LEFT OUTER JOIN保留所有订单行e.vbeln IS NULL筛出需求记录缺失的那些行。abgru 排除已拒绝原因的订单——被拒绝的订单本来就不该传需求如果不排除会出现大量误报。改条件就能回答另一类问题想看需求传了但数量对不上把 VBBE 的BDMNG换成SUM(e.bdmng)再和v.kwmeng比较想看需求日期是不是被推到过去加上e.bdter sy-datum条件。4.4 需求转计划Requirements Transfer to MRP的边界需求传递到 VBBE 之后MRP 运行时才会把它当成独立需求参与净需求计算。这里有两个独立的检查点VBBE 有记录说明 SD 侧传递成功MD04 能看到该记录说明 MRP 区域的配置能读到 VBBE。第二点经常被忽略。VBBE 是按工厂 MRP 区域写记录的如果订单上的工厂配了 MRP 区域而 MD04 用另一个 MRP 区域查就看不到。用 MD04 时确认左上角的物料 工厂 MRP 区域三项和 VBBE 里的WERKS PLART定义一致是最基本的一条核对。提示物料主数据 MRP2 视图里的 MRP 区域和销售订单项目里的工厂派生规则在跨工厂销售、集团采购场景里最容易打架。跑 MDVP 或核对需求前先把这条链对一遍。5. 进阶排错五种对不上场景的定位路径配置和表都熟之后剩下的就是把典型症状对应到具体环节。下面五类在实践中占到九成以上每一类给出最短定位路径。场景一订单保存时不报错但从不扣减可用量。症状是 CO09 的累计可用量一直等于库存、不加其他销售需求。定位检查 OVZ9 的 scope of check销售需求这一项大概率没勾。顺手看 OVZ2 是不是把检查规则分配给了这个订单类型 项目类别组合。场景二能确认能扣减但 MD04 查不到。去看 VBBE 有没有记录。有记录但 MD04 看不到是 MRP 区域或工厂不一致VBBE 没记录是需求传递标识或检查组不允许传递。场景三确认日期总是比预期晚几天。这不是 ATP 的问题是运输提前期 拣配装载时间把可用日期起点往后拉了。在销售订单类型里检查运输计划的提前期设置或者看物料主数据 MRP3 里的收货处理时间一个常见做法是把这些提前期单独列出来给业务看别让他们以为系统卡着不批。场景四批量跑 MDVP 时一批料直接跳过。十有八九是这些物料的检查组填了 KP不检查。这不是 bug是主数据选择。处理方式是在选择集里按 MRP3 的检查组过滤只保留需要检查的物料。场景五需求传递开了但重跑 MRP 后需求还是消失。用下面这条 SQL 找需求日期落在过去的记录SELECT vbeln, posnr, matnr, bdter, bdmng FROM vbbe WHERE bdter sy-datum 需求日期早于今天 AND matnr MAT-1001;这些记录本身没坏只是已经过期不参与未来净需求。要么把订单的交货日期往未来改要么让业务确认这批需求是否要重新排产。最后一个常用的技巧是在变更前后做对照改 OVZ9 或 OVZ2 之前先用上面第 4.3 节那条 SQL 把现有 VBBE 记录导一份快照改完新开一张订单验证两张订单对比 VBBE 的记录数和BDMNG总和。这样配置改动是不是生效、有没有误伤存量需求一查便知不用等业务投诉再回头翻。本文还有配套的精品资源点击获取
返回列表