这里对sap三代增强做一下总结,虽然已经是过时的技术了.
- 三代BADI的创建
- 三代BADI的实施
- 三代BADI的调用
- 三代BADI的包及相关表
- 三代BADI的运行原理
- 三代BADI的屏幕增强
- 三代BADI的创建
事务代码:SE18
由于三代增强已经是过时的技术了,现在提倡用4代增强NEW BADI.所有三代增强的创建入口被隐藏在实用程序下边.
入口 SE18--Utilities--Create classic BAdi.
填写必要字段
注意一下系统自动生成的类 ZCL_EX_TEST_OLD_BADI2.这个类是BADI运行的关键.后面会讲到.
Multiple Use 如果打勾了,那么这个Badi可以同时存在多个激活的实例.但实例执行的顺序是没有规律的.
如果Multiple Use打勾了,则该BADI定义就不能有按键增强和子屏幕增强了.
Filter-Depend如果打勾了,需要填写一个过滤器类型,过滤器类型有如下限制: 是char类型的数据元素;长度不能超过30位;具有搜索帮助;有一个具有固定值或者值表的域.
如果启用了过滤器,则所有BADI接口的方法的参数中会自动(也必须)包含一个输入参数(importing):FLT_VAL.
如果Filter-Depend打勾了,则该BAID就不能有按键增强.
在创建BADI时系统会自动根据BADI的名称建议一个接口名称,该名称和自动生成的BADI类只是前缀不同.当然接口名称可以修改.
双击接口名称就可以创建该接口,在接口创建界面定义方法和属性值.
如果启用了过滤器,则所有BADI接口的方法的参数中会自动(也必须)包含一个输入参数(importing):FLT_VAL.
此处创建的接口将作为BADI实施类的接口.
当激活BAID时,系统将会根据接口生成有一个上边提到的BADI类ZCL_EX_TEST_OLD_BADI2,自然该类将包含接口中的所有方法及属性.
关于按键增强(状态栏增强)及子屏幕增强将在后边讲.
2. 三代BADI的实施
事务码:SE19.
在Create Implementation 框中,选择Classic BAdI.输入BADI名称,点击Create按键创建BADI实施.
指定BADI实施名称,继续.
如果BADI包含实施过滤器FILTER.则在BADI实施的属性页中必须指定过滤值Filter value(可以是多值).只用在在调用BADI的类的接口方法时,传入给参数FLT_VAL的值等于该实施的
Filter value 时,该实施对应的方法才会被调用.详情见BADI的调用.
然后可以在interface页中重写所有BADI接口的方法了. 没有问题后激活,则badi实施就完成了.
3. BADI的调用.
稍后更新