增强
使用到的TCODE:SE24 、SE18、SE19
需求样例:使用MM01创建物料的销售视图时,销项税分类的字段自动填写默认值0。(因为MM01创建销售视图时虽然屏幕上并没有必输项,但是直接保存会提示销项税没维护的错误)
- 介绍
由于一代、二代增强还是不能满足所有的业务需求,所有SAP在一代增强和二代增强的基础又开发出来第三代的增强。这就是BADI。BADI运用了面向对象的方式来体现增强。运用面向对象的思想来实现增强的话管理和实现起来就会方便很多,而且对系统的影响会比一代和二代增强小的多(因为,一代和二代增强都是直接在原程序里面进行修改的)。
- 学习的步骤
- 如何查找BADI.
第一种方式:
SE38->事务代码对应的程序名->在程序内搜索CL_EXIThandler
第二种方式:
SE24-> CL_EXITHANDLER->在GET_instance中打断点,然后运行相应事物码根据它来找到运行到的BADI。
第三种方式:
它的调用方式是call method(instance), 可以通过exit_handler关键词来查找
第四种方式:
ST05选择“table buffer trace”而不是常用的"sql trace",然后查找表和视图(SXS_INTER,SXC_EXIT,SXC_CLASS和SXC_ATTR)找到对应的BADI.
- 根据上面的方法来实现我们的需求:SE24-> CL_EXITHANDLER->在GET_INSTANCE中打断点
然后查找到下面这些BADI
输入TCODE-MM01后
BADI_SCREEN_LOGIC_RT
W_RETaiLSYSTEM_IDENT
BADI_MATN1
选择视图时
BADI_MATERIAL_OD
进入事务代码后
BADI_MATERIAL_OD
ECM_EXIT
BADI_LAYER
GOS_SRV_SELECT
BADI_MATERIAL_OD
BADI_MATERIAL_REF
- 查看BADI。
在SE18中分别查看这些BADI。如下图
这个增强BADI_MATN1下包含了一个接口IF_EX_BADI_MATN1,而这个接口下面包含了4个方法。查看这些方法是否有我们的需求。
点进方法里面取看,很显然,这是一个对MATNR进行输入输出转换增强。并不是我们想要的。
按照同样的步骤来查找最后可以找到是在BADI_MATERIAL_REF下CREATE_MATERIAL方法。然后在CT_SALES_TAX这个结构内去完成我们的需求。(小技巧,寻找BADI的时候如这个在给字段一个初始的默认值。那么可以先找到这个字段对应的字段名,然后根据参数中的描述和字段名去搜)
描述是对物料的税(非常接近我们想要的需求了)。
然后看它参考的结构,和屏幕字段上面的完全一致。确定就是它了。
- 已经找到需要的BADI了,接下来就是用BADI去实现我们的需求。
首先我们要创建一个BADI的实现(BADI是面向对象的思想,可以把BADI理解为一个类)可以在SE18下这里的增强或者点击显示进去后的创建,这2种方法是完全一致的。
双击方法进去写代码
写完后激活。
然后激活增强(上面是激活程序,这个是激活增强。不是一个东西!)
一般来说在测试增强前都要先检测确认下增强是否被激活
可以发现进入屏幕后自带默认值0了。完成测试。
学习心得: BADI可以说是基于面向对象概念的增强BADI源代码发布以接口的方式,通过接口来让用户实现增强,可以说让用户可以使用增强的地方更多了些。
容易的地方: 由于BADI都是一些接口,所以只需要找到对应的接口传对应的参数即可完成我们的需求。
难点:也由于BADI都是一些接口,所以有可能会有很多的参数。要找的我们需要的BADI和参数会有点难度。
相关阅读
每天都在讲ERP,公司在做ERP软件,到底ERP是什么意思呢?ERP和SAP指什么意思呢?老吧查询并整理了ERP和SAP的相关解释如下:ERP是英文Enterp
RtAudio与DirectSound、ASIO和WASAPI
之前写过一篇文章,谈到我在折腾 RtAudio 5.0 版本。它支持 DirectSound、ASIO和WASAPI 三种底层,最初的时候,使用 DS 肯定是最省事了
采购流程 : 采购订单--->采购收货--->采购发票--->采购付款(清帐) 1 总账做发票(仅仅总账) 2 采购订单 3 采购订单收货 4 采购订单做
https://www.cnblogs.com/rainysblog/p/8177930.html 1.PI - 信使中间件 (大公司多选择) 数据: SAP- PI- U8U8- PI- SAPPI 底层用
社交巨头三国杀:微信、WhatsApp、Line到底有啥区别?
美团创始人王兴在《九败一胜》里提出过一个“四纵三横”的理论:四纵即互联网的四大热门领域——资讯、交流(社交)、娱乐、商务。在这