Chinaunix首页 | 论坛 | 博客
  • 博客访问: 967424
  • 博文数量: 463
  • 博客积分: 10070
  • 博客等级: 上将
  • 技术积分: 4963
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-16 14:16
文章分类

全部博文(463)

文章存档

2011年(18)

2010年(144)

2009年(83)

2008年(218)

我的朋友

分类: IT职场

2008-07-28 17:15:28

    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的重复使用的特性。但是不管如何,它在标准程序中的实现有一定格式:
 
    这个图可以有助于我们理解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
 
    BAdI在实现时,还有可能要做一些congfigure,不同的出口方式可能不同,不过SAP会有相应的文档,到时候多看看就行了,万变不离其宗,只要搞明白BAdI的实现机制,那么一切都不是难事。
阅读(4751) | 评论(13) | 转发(0) |
给主人留下些什么吧!~~

zcywset152008-09-08 10:31:51

你要用se80建立一个带有subscreen的自定程序的。然后还要画上自定义字段。 PBO_DETAIL 中你要使用: E_CPROG = 'ZKEVIN_MIGO'. "程序名 E_DYNNR = '1111'. "屏幕号 E_HEADING = 'kevin sub'. "tab名 这个出口不需要配置,只要合理地实现那些方法就可以了。

chinaunix网友2008-09-05 12:24:17

呵呵,哥们BLOG做得不错哈,我最近在弄MIGO的screen exit,但是我的add tab不知道在哪里激活,以前做XD01的还有激活TAB的方法,这个没有找到,请兄弟能不能吧MIGO的screen exit写的详细点,这个出口是否需要配置?

chinaunix网友2008-08-01 10:15:28

写的很好啊!