注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

XINBO'S SAP BLOG

你所浪费的今天,是昨天死去的人奢望的明天。你所厌恶的现在,是未来的你回不去的曾经

 
 
 

日志

 
 

ABAP总结之十一,Enhancement(6)--BAdIs   

2009-05-18 12:38:31|  分类: ABAP COMMENT |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
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的重复使用的特性。但是不管如何,它在标准程序中的实现有一定格式:
 
ABAP总结之十一,Enhancement(6)--BAdIs  - xingbo.com - 柏拉的BOLOG-ABAP
    这个图可以有助于我们理解BAdI的实现方式。同时,它也给我提供了一个寻找事务BAdI的一个途径。在事务执行时,如果事务中存在BAdI,类cl_exithandler=>get_instance方法就会执行。所以大家就可以,用se24->cl_exithandler->双击GET_INSTANCE进入方法-> 在如下语句上设置断点 CALL METHOD cl_exithandler=>get_class_name_by_interface->运行相应的事务,比如MIGO,MM02等,程序就会停在断点处,这样就可以查到相关事务的BAdI了。
    其实,BAdI就是综合了SAP之前一些增强技术的之长,在标准程序预留了出口,通过面向对象的接口技术,使增强更加灵活。一个出口,可以有多个实现,但是一个client的话,只有一个是起作用的,我试下来,是按创建的先后顺序及是否active来判断的,不过一般一个实现就够了,所以也不必那么麻烦,只能说SAP的技术架构确实是比较先进。
下面来举个例子说明一下:
se19->MB_MIGO_BADI->创建一个实现->Interface->PBO_DETAIL 键入如下代码
  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
ABAP总结之十一,Enhancement(6)--BAdIs  - xingbo.com - 柏拉的BOLOG-ABAP
 
    BAdI在实现时,还有可能要做一些congfigure,不同的出口方式可能不同,不过SAP会有相应的文档,到时候多看看就行了,万变不离其宗,只要搞明白BAdI的实现机制,那么一切都不是难事。
  评论这张
 
阅读(598)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017