一、什么是增强?
1、基于SAP源代码的增强:对SAP所预留的空的子过程进行编码,用户可以编辑此过程,并在这个子过程中添加自定义的代码,以增加SAP标准程序的控制功能。
2、基于函数的增强:SAP为此类出口提供了相应的函数,依据函数结构指定的传入/传出参数,程序执行时,调用该函数并检查相应的代码。
3、SAP BADI:使用面向对象的方式实现增强。
什么是BADI?
1、BADI(business add-ins)是SAP在R/3 release 4.6A后增加的增强技术。中的来说,BADIS克服了之前出口的所有缺点,用的是OO技术实现。
BADI的调用机制:先调用一个方法,找到具体实现内容。
相关事务码,SE18创建及维护接口、类,SE19维护实例,功能的实现。
二、如何找BADI增强?
1、进SE24查看,对象类型CL_EXITHANDLER
2、找到GET_INSTANCE方法,双击进去
3、在第一个方法打断点
4、再执行需要做增强的事务码,如va01,直接就进入debug,查看变量exit_name,即BADI名
5、记录涉及到的每个增强的名称,F8找下一个增强的名字
BADI_SCREEN_LOGIC_RT
W_RETAILSYSTEM_IDENT
BADI_MATN1
到输入物料代码页面,选择视图
BADI_MATERIAL_OD
到选择销售视图
选择销售视图和分销渠道
进入事务码后
BADI_MATERIAL_OD
GOS_SRV_SELECT
BADI_LAYER
BADI_MATERIAL_OD
BADI_MATERIAL_REF
6、在以上增强函数中找出可以填写默认值的增强、物料的一般信息。
先在SE18中找出所有函数的描述,方便筛选出对应的函数
BADI_SCREEN_LOGIC_RT | 屏幕顺序/有效性客户自我控制出口 |
W_RETAILSYSTEM_IDENT | 系统配置 'SAP 零售'的识别 |
BADI_MATN1 | 转换退出MATN1的BAdI |
BADI_MATERIAL_OD | 物料或条款主数据中新对象的集成 |
GOS_SRV_SELECT | GOS: 限制一般服务的选择 |
BADI_LAYER | 业务加载项管理的层值管理 |
BADI_MATERIAL_OD | 物料或条款主数据中新对象的集成 |
BADI_MATERIAL_REF | 物料的附加客户定义缺省数据 |
找到三个可能的函数
7、SE18查看BADI,输入BADI名称
可以看到接口名称以及所包含的方法
8、双击接口名称,查看,最后找到的相关变量
三、增强实例
实现功能:MM01创建销售视图时自动填税分类为 1。
条件:
销售组织架构一般信息
工厂6011
销售组织6011
分销渠道10
将changing的参数
CT_SALLES_TAX-TAXKM,赋初始值1.
如何实现功能
1、SE18中创建
2、输入实施名称
3、填写文本后保存
类似类的继承
4、保存后双击进去写功能代码
5、根据需求写功能代码
6、激活接口
7、SE18查看实施
黄色表示已激活
反激活时
8、最终实现MM01创建销售视图时,税分类自动填1
如何查看字段名,F1