SAP BOM实战:别再傻傻分不清!用CS_BOM_EXPL_MAT_V2和CS_BOM_EXPL_KND_V1搞定生产与销售订单BOM展开

张开发
2026/4/19 21:06:25 15 分钟阅读

分享文章

SAP BOM实战:别再傻傻分不清!用CS_BOM_EXPL_MAT_V2和CS_BOM_EXPL_KND_V1搞定生产与销售订单BOM展开
SAP BOM深度解析CS_BOM_EXPL_MAT_V2与CS_BOM_EXPL_KND_V1的实战应用指南在SAP系统中物料清单BOM是生产制造和销售订单管理的核心组件。对于SAP顾问和开发人员而言正确理解和应用BOM展开函数是确保系统高效运行的关键。本文将深入探讨CS_BOM_EXPL_MAT_V2和CS_BOM_EXPL_KND_V1这两个核心函数的应用场景、参数配置及实战技巧帮助您从基础使用进阶到精通水平。1. BOM基础概念与函数选择BOMBill of Materials是描述产品组成结构的清单在SAP系统中根据业务场景不同分为多种类型标准BOM适用于常规生产场景存储在MAST表中销售订单BOM针对特定客户需求配置存储在KDST表中生产订单BOM实际生产使用的BOM基于RESB表选择正确的BOM展开函数需要考虑以下关键因素选择标准CS_BOM_EXPL_MAT_V2CS_BOM_EXPL_KND_V1适用场景MTSMake to Stock生产MTOMake to Order生产关键参数物料号(MTNRV)、工厂(WERKS)物料号(MTNRV)、配置对象(CUOBJ)数据来源标准BOMMAST表销售订单BOMKDST表典型应用常规生产计划、物料需求计算客户定制产品、配置相关生产提示判断使用哪个函数的最简单方法是确认物料是否为MTO类型。如果是必须使用CS_BOM_EXPL_KND_V1并传入销售订单的配置对象(CUOBJ)。2. CS_BOM_EXPL_MAT_V2参数详解与实战CS_BOM_EXPL_MAT_V2是处理标准BOM展开的核心函数其参数配置直接影响展开结果。以下是关键参数解析CALL FUNCTION CS_BOM_EXPL_MAT_V2 EXPORTING capid PP01 应用程序通常固定为PP01 datuv sy-datum BOM有效期通常为当前日期 mtnrv lv_matnr 要展开的物料号 werks lv_werks 工厂代码 mehrs X 多层展开标志 mdmps 虚拟件处理标志 IMPORTING topmat ls_topmat 顶层物料信息 dstst lv_dstst BOM状态标志 TABLES stb lt_stb BOM展开结果 matcat lt_matcat. 包含下级BOM的物料MDMPS与MEHRS参数组合的四种情况MDMPS MEHRSX结果完全展开包含虚拟件适用场景需要完整BOM结构包括所有虚拟件MDMPSX MEHRSX结果展开1-2层遇到虚拟件则继续展开其下层适用场景需要查看虚拟件下层物料但不需要完全展开MDMPS MEHRS 结果仅展开第一层不展开虚拟件下层适用场景快速查看直接组件MDMPSX MEHRS 结果与情况3相同仅展开第一层注意当MEHRS为空时MDMPS设置不影响结果3. CS_BOM_EXPL_KND_V1高级应用技巧CS_BOM_EXPL_KND_V1专门用于处理销售订单相关的BOM展开其特殊之处在于需要传入配置对象(CUOBJ)。以下是典型应用场景DATA: lv_cuobj TYPE cuobn. 获取销售订单项的配置对象 SELECT SINGLE cuobj INTO lv_cuobj FROM vbap WHERE vbeln lv_vbeln AND posnr lv_posnr. CALL FUNCTION CS_BOM_EXPL_KND_V1 EXPORTING capid PP01 datuv sy-datum mtnrv lv_matnr cuobj lv_cuobj 关键配置对象 werks lv_werks mehrs X mdmps X IMPORTING topmat ls_topmat dstst lv_dstst TABLES stb lt_stb matcat lt_matcat.常见问题与解决方案CUOBJ获取失败检查点确认物料是否为可配置物料KMAT类型解决方案通过事务码CU01检查物料配置参数BOM展开结果为空检查点确认销售订单BOM是否已创建CS61解决方案检查KDST表中是否存在对应记录虚拟件展开不符合预期检查点确认MDMPS和MEHRS参数组合解决方案根据需求调整参数组合4. 性能优化与最佳实践BOM展开操作可能涉及大量数据性能优化至关重要。以下是提升效率的关键策略优化技巧清单缓存机制对频繁展开的BOM结果进行缓存批量处理使用并行处理技术处理多个BOM展开字段限制只选择必要的输出字段减少数据传输量索引利用确保相关表MAST、STKO、STPO等有适当索引性能对比表优化措施执行时间(ms)内存占用(MB)适用场景无优化120045单次小规模BOM字段限制80028仅需部分字段批量处理1500120多个BOM同时展开缓存机制20015重复展开相同BOM代码示例字段限制优化DATA: lt_stb TYPE STANDARD TABLE OF stpox, lt_matcat TYPE STANDARD TABLE OF cscmat. 只选择必要字段 SELECT matnr werks stlan stlal FROM mast INTO TABLE DATA(lt_mast) WHERE matnr lv_matnr AND werks lv_werks. 限制STB输出字段 LOOP AT lt_stb ASSIGNING FIELD-SYMBOL(fs_stb). CLEAR: fs_stb-ojtxp, fs_stb-ojtxb, fs_stb-mtart. ENDLOOP.5. 实战案例BOM展开在MRP中的应用在实际MRP物料需求计划运行中BOM展开的正确性直接影响计划结果。以下是典型应用流程确定物料类型区分MTS/MTO物料选择适当函数根据类型选择CS_BOM_EXPL_MAT_V2或CS_BOM_EXPL_KND_V1配置展开参数设置MEHRS和MDMPS处理展开结果计算组件需求异常处理检查BOM状态和组件可用性MRP集成代码片段 根据物料类型选择BOM展开函数 IF lv_mto_flag abap_true. MTO物料 CALL FUNCTION CS_BOM_EXPL_KND_V1 EXPORTING capid PP01 datuv sy-datum mtnrv lv_matnr cuobj lv_cuobj werks lv_werks mehrs X TABLES stb lt_stb EXCEPTIONS error 1 OTHERS 2. ELSE. MTS物料 CALL FUNCTION CS_BOM_EXPL_MAT_V2 EXPORTING capid PP01 datuv sy-datum mtnrv lv_matnr werks lv_werks mehrs X TABLES stb lt_stb EXCEPTIONS error 1 OTHERS 2. ENDIF. 计算组件需求 LOOP AT lt_stb ASSIGNING FIELD-SYMBOL(fs_component). lv_required_qty lv_parent_qty * fs_component-menge. 更新库存/需求记录 ENDLOOP.在多个项目实施中发现正确处理虚拟件和多层展开标志的组合是确保MRP计算结果准确的关键。特别是在处理具有复杂BOM结构的产品时建议先在测试环境验证不同参数组合的结果。

更多文章