ABAP总结之十一,Enhancement(6)--BAdIs
2008-07-29 07:57
295 查看
BAdIs(Business Add-Ins)是SAP在R/3 release 4.6A后增加的增强技术。总的来说,BAdIs克服了之前出口的所有缺点,并且还是用最新的OO技术实现,可谓是万千宠爱于一身。不过在项目中,用BAdIs的顾问还是比较少,多数是用Customer Exit和User Exit完成。
T-code se18 BAdI Definition
T-code se19 BAdI Implement
BAdIs可以实现,Program/Menu/Screen Exit,同时还有BTEs的重复使用的特性。但是不管如何,它在标准程序中的实现有一定格式:
500)this.width=500;" border=0>
这个图可以有助于我们理解BAdI的实现方式。同时,它也给我提供了一个寻找事务BAdI的一个途径。在事务执行时,如果事务中存在BAdI,类cl_exithandler=>get_instance方法就会执行。所以大家就可以,用se24->cl_exithandler->双击GET_INSTANCE进入方法-> 在如下语句上设置断点
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L0S52 {
color: #0000FF;
}
CALL METHOD cl_exithandler=>get_class_name_by_interface->运行相应的事务,比如MIGO,MM02等,程序就会停在断点处,这样就可以查到相关事务的BAdI了。
其实,BAdI就是综合了SAP之前一些增强技术的之长,在标准程序预留了出口,通过面向对象的接口技术,使增强更加灵活。一个出口,可以有多个实现,但是一个client的话,只有一个是起作用的,我试下来,是按创建的先后顺序及是否active来判断的,不过一般一个实现就够了,所以也不必那么麻烦,只能说SAP的技术架构确实是比较先进。
下面来举个例子说明一下:
se19->MB_MIGO_BADI->创建一个实现->Interface->PBO_DETAIL 键入如下代码
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S33 {
color: #4DA619;
}
E_CPROG = 'ZKEVIN_MIGO'.
E_DYNNR = '1111'.
E_HEADING = 'kevin sub'.
'ZKEIVN_MIGO'是一个自建的程序,'1111'是这个程序中自建的屏幕,'kevin sub'是Tab的标签。
你可以在自建的程序中增加PBO和PAI程序,同时在自定义屏幕中添加自己的屏幕元素及逻辑流。在BAdIs中的POST_DOCUMENT方法,可以在生成标准数据时,也在自己的Z表中插入数据,功能很强大。
做出来效果是这样的,T-code MIGO
500)this.width=500;" border=0>
BAdI在实现时,还有可能要做一些congfigure,不同的出口方式可能不同,不过SAP会有相应的文档,到时候多看看就行了,万变不离其宗,只要搞明白BAdI的实现机制,那么一切都不是难事。
T-code se18 BAdI Definition
T-code se19 BAdI Implement
BAdIs可以实现,Program/Menu/Screen Exit,同时还有BTEs的重复使用的特性。但是不管如何,它在标准程序中的实现有一定格式:
500)this.width=500;" border=0>
这个图可以有助于我们理解BAdI的实现方式。同时,它也给我提供了一个寻找事务BAdI的一个途径。在事务执行时,如果事务中存在BAdI,类cl_exithandler=>get_instance方法就会执行。所以大家就可以,用se24->cl_exithandler->双击GET_INSTANCE进入方法-> 在如下语句上设置断点
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L0S52 {
color: #0000FF;
}
CALL METHOD cl_exithandler=>get_class_name_by_interface->运行相应的事务,比如MIGO,MM02等,程序就会停在断点处,这样就可以查到相关事务的BAdI了。
其实,BAdI就是综合了SAP之前一些增强技术的之长,在标准程序预留了出口,通过面向对象的接口技术,使增强更加灵活。一个出口,可以有多个实现,但是一个client的话,只有一个是起作用的,我试下来,是按创建的先后顺序及是否active来判断的,不过一般一个实现就够了,所以也不必那么麻烦,只能说SAP的技术架构确实是比较先进。
下面来举个例子说明一下:
se19->MB_MIGO_BADI->创建一个实现->Interface->PBO_DETAIL 键入如下代码
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L1S33 {
color: #4DA619;
}
E_CPROG = 'ZKEVIN_MIGO'.
E_DYNNR = '1111'.
E_HEADING = 'kevin sub'.
'ZKEIVN_MIGO'是一个自建的程序,'1111'是这个程序中自建的屏幕,'kevin sub'是Tab的标签。
你可以在自建的程序中增加PBO和PAI程序,同时在自定义屏幕中添加自己的屏幕元素及逻辑流。在BAdIs中的POST_DOCUMENT方法,可以在生成标准数据时,也在自己的Z表中插入数据,功能很强大。
做出来效果是这样的,T-code MIGO
500)this.width=500;" border=0>
BAdI在实现时,还有可能要做一些congfigure,不同的出口方式可能不同,不过SAP会有相应的文档,到时候多看看就行了,万变不离其宗,只要搞明白BAdI的实现机制,那么一切都不是难事。
相关文章推荐
- ABAP总结之十一,Enhancement(3)--User Exits
- ABAP总结之十一,Enhancement(2)--Dictionary Elements
- ABAP总结之十一,Enhancement(1)--BTEs
- ABAP总结之十一,Enhancement(4)--Customer Exits
- 【转载】ABAP总结之十一,Enhancement(3)--User Exits .
- ABAP总结之十一,Enhancement(5)--Field Exits
- [SAP ABAP开发技术总结]增强Enhancement
- 软件测试总结(十一)
- OC语言自学《十一》---- OC(内存管理知识总结)
- Jxls导出excel的若干方式总结(十一)-- 同一个sheet中显示来自不同数据表的对象记录
- spring学习总结(十一):spring 对 JDBC 的支持
- sap abap 日期处理总结
- [SAP ABAP开发技术总结]ABAP调优——代码优化
- [SAP ABAP开发技术总结]ABAP读写、解析XML文件
- 【程序优化】ABAP程序优化的一些总结
- 总结一下ABAP中的各种接口技术
- JVM调优总结(十一)-反思
- 博客总结十一——C++的类
- ABAP总结之五,Table Control
- ABAP Enhancement