您的位置:首页 > 其它

BADI相关知识的链接及说明

2013-07-13 16:17 302 查看
1.利用系统提供的BADI做增强

http://scnblogs.techweb.com.cn/tcsapbw/archives/641.html

从例子中看到SE19是选择Classic BADI来创建Implementation,但其实在后面要实现Method之前会要求创建或选择Enhancement Implementation(这个图没给出来),这又是New BADI选项相关的,实在让人不太明白。

此外就是作为增强的BADI,查找起来只能按链接提到的搜索CL_EXITHANDLER,而有些BADI没有提供Documentation (e.g. CKML_UPDATE),能否实现特定功能以及如何实现某些功能都只能看具体情况去搜索,实在是非常不方便。
另外如 http://scnblogs.techweb.com.cn/tcsapbw/archives/573.html 所示,SAP还有其他的增强方法,但对于一个具体的需求,我们没有一个迅捷的方法(或者有而我不知道)知道可以采用怎样的增强来实现。

2.创建、实现及使用Classic BADI

http://scnblogs.techweb.com.cn/tcsapbw/archives/652.html

在这个例子中所看到的,简言之就是SE18的BADI Name下面包含了一个Interface,而SE19的BADI Implementation下面包含了一个实现该Interface的class (通过实现具体的Method)。而在代码程序里调用这个BADI实现某个功能的部分看起来和普通的ABAP OO没有什么太大区别(只不过是通过Call METHOD cl_exithandler=>get_instance 来获取类的示例对象),当然你可以说什么体现了什么工厂模式之类的,但在SAP本身这个面向业务的系统里,过份强调OO模式感觉意义并没那么大。
另外测试了一下,如果创建了多个BADI Implementation,调用时都会起作用,但一定要在SE18里选中Multiple use,否则在Call METHOD cl_exithandler=>get_instance 时会报ABAP错。

3.Enhancement Spot and BADI

/article/5710913.html
/article/5710914.html
/article/5710915.html

看上去,Enhancement Spot似乎可以简单看作是在BADI Name外面又来了一层,BADI Name可以和Enhancement Spot同名,可能造成一些误解。同样Enhancement Implementation看作是BADI Implementation外面又来了一层。

4.Differences Between Classic and New BAdIs

http://help.sap.com/saphelp_nw04s/helpdata/en/ee/6f3b42ea85b26be10000000a155106/content.htm

里面第1点可以简单验证如下:程序中如下的定义DATA:handle TYPE REF TO Z_TEST_NEW_BADI_001. 只对通过Enhancement Spot所定义的BADI“Z_TEST_NEW_BADI_001”有效,假如Z_TEST_NEW_BADI_001是Classic BADI,编译时会报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: