SAP MM物料主数据-分类视图的检查增强
问题点:
用户在使用MM01扩建物料主数据工厂层级视图时,会忘记扩建分类视图,或者扩建了分类视图,但是内容没维护或维护错了,
采购订单入库的时候,批次主数据无法自动创建分类视图数据
由于缺少批次分类视图里的‘最近收货日期’,最终在创建交货单的时候,无法根据先进先出的批次确定策略,自动确认出批次。
解决方法
一、 物料主数据加入增强检查
检查逻辑:
1、 判断事物代码是MM01(暂不考虑MM01(BAPI))
2、 判断物料是否已经扩建了分类视图,即MARA-PSTAT 是否包含‘C’,如果不包含,则进一步检查
3、 判断本次扩建的视图里是否包含分类视图,如果不包含分类视图,则报错:
分类视图必须维护!【类别种类填写:022,分配-类别填写:ZC_00】
增强BADI: BADI_MATERIAL_OD
实现效果:
1、MDM管理的已经存在基本视图的物料,使用MM01扩建时,如果没有选择分类视图则报错:
检查触发点:IF_EX_BADI_MATERIAL_OD~READ_OTHER_MATERIAL_DATA
2、SAP管理的物料,物料类型Z005,Z006, MM01创建物料主数据时,如果没有选择分类视图,则报错:
检查触发点:IF_EX_BADI_MATERIAL_OD~GET_OTHER_MATERIAL_DATA_BILD
不足点:
此增强只能检查用户必须扩建分类视图,但是用户在分类视图里是否维护了批次类别,系统无法判断,
为了解决此问题,查看了MM01里所有的BADI,都没有找到类别种类和类别这两个字段的入参,无法做增强检查。(如果类别字段输入了值,可以用CACL_CHARACTER_INPUT检查类别字段维护的是否正确)
类别种类:INOB-CUOBJ
类别:KLAH-CLASS (INOB+KSSK+KLAH)
补充检查:
二、MIGO入库的时候,检查物料主数据是否正确的维护了分类视图
1、 检查物料是否创建了分类视图,即维护状态MARA-PSTAT是否包含‘C’,如果不包含‘C’,则报错:
2、检查物料的分类视图是否维护了022的批次类别
根据物料号、类别种类INOB-KLART = ‘022’、对于分类的对象的数据库表名称INOB-OBTAB = ‘MARA’,取配置(内部对象号)INOB-CUOBJ,如果INOB-CUOBJ为空,则报错:
3.检查类别是否正确的填写为:ZC_00 中茶批次分类
根据
KSSK-OBJEK = INOB-CUOBJ要分类的对象码、
KSSK-MAFID = ‘O’ 标识: 对象/类、
KSSK-KLART = ‘023’ 类别种类,
KSSK-CLINT = KLAH-CLINT内部分类号,
取类别种类KLAH-CLASS, 如果类别种类KLAH-CLASS <> ‘ZC_00’,则报错:
增强BADI: MB_CHECK_LINE_BADI
实现代码:
其他资料:MM01创建物料过程中 涉及的BADI清单
进入事务代码:
BADI_SCREEN_LOGIC_RT
W_RETAILSYSTEM_IDENT
BADI_MATN1
点击选择视图:
BADI_MATERIAL_OD
选择完视图,进入维护界面:
BADI_MATERIAL_OD
BADI_MATERIAL_REF
BADI_LAYER
ECM_EXIT
维护下一视图时:
BADI_GTIN_VARIANT
CACL_CHARACTER_INPUT
/DSCSAG/CLASS
保存数据时:
BADI_MATERIAL_REF
BADI_MATERIAL_CHECK
EHSS_SPEC_CHECKS
BADI_SCREEN_LOGIC_RT
W_RETAILSYSTEM_IDENT
BADI_MATN1