SAP增强实施步骤-三代增强BADI技术
SAP R/3 4.0之前 ABAP完全是面向过程的语言,面向对象的编程技术是在SAP R/3 4.0后版本中逐渐改造增加进去的,至目前ABAP已基本包含了面向对象的所有技术,所以完全可以说ABAP是面向对象的编程语言,虽然目前ABAP面向过程编程方法仍可以解决业务中大部分需求,但未来面向对象技术应用在SAP中一定会越来越多.下面要介绍的BADI增强就是使用面向对象技术来实现的。
SAP三代增强BADI实施步骤:
BADI技术具体原理不在这里介绍,百度上应该非常多这方面资料,大家可以百度下找下相关资料看看。
下面介绍下具体实施步骤:
步骤1:查找增强点,即要找到对应事务码的BADI的名称和它的方法,它的方法也就所谓的增强点,写增强代码的地方.
先运行SE24,查看类对象CL_EXITHANDLER, 在其方法:GET_INSTANCE的14行( CALL METHOD CL_EXITHANDLER=>GET_CLASS_NAME_BY_INTERFACE)打上一个断点。




退出或另开页面,输入需要查询是否存在badi的事务码,比如你想查询MIGO,就输入MIGO,按正常操作步骤执行MIGO,可以找到那一步存在badi . 下面以SAP官方提供的学习BADI的程序为例来说明如何实施badi增强,此程序对应TCODE 为bc425_chng00
接下来运行事务代码,当有BADI时将会被执行,这时在DEBUG模式下,会进入类CL_EXITHANDLER 的GET_INSTANCE 方法,按F6执行这个方法之后,点参数EXIT_NAME查看其对应的值,所有的方法实现都在此类对象中,此时就是我们所要找的BADI


点击修改后,因为这步骤后存在badi,系统进入如下debug调试界面


通过上面步骤,我们找出了这个TCODE对应的badi名称BC425_00FLIGHT2, 这个是其中之一,现以这个BADI为例说明,如何实施BADI增强.
步骤2:实施BADI增强. BADI其实是使用面向对象语言的接口技术,增强其实就是实现BADI接口的方法。
进入SE19,选择Create Implementation中的Classic BADi





双击GET_DATA

双击PUT_DATA

增强代码写完后激活
一般BADI增强(非屏幕和菜单增强),完成这些步骤,激活后算完成了.
本例BAID 是屏幕增强,即需要在TCODE对应的程序界面增加附加屏幕,比如上面TCODE未实施屏幕增强前显示如下,
现在需要在红色框中增加一个自己设计的屏幕,显示一些其他参数或供用户输入一些信息.

下面步骤介绍如何增加附加屏幕
回到上面6步骤界面如下

上图2个栏位应该输入什么? 因为是屏幕增强,这里要求设计一个子屏幕。屏幕增强还需进行如下步骤进行操作
输入se80进入如下界面

回车后进入如下




记下这个屏幕号,后面步骤要用到.


保存,返回

双击 get_instance.创建如下程序

双击 get_data.创建如下程序

双击put_data.创建如下程序





回到最前面的疑问处,如下栏位输入上面31步骤记下的程序名 和 17步骤创建的子屏幕编号0500

完成后最后点击激活,完成此BADI的屏幕增强。
再次执行TCODE 下面是效果:

- 0000
- 0000
- 0000
- 0005
- 0000