Chinaunix首页 | 论坛 | 博客
  • 博客访问: 967430
  • 博文数量: 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的实现机制,那么一切都不是难事。
阅读(4752) | 评论(13) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-11-04 13:49:46

自建的屏幕我出了两个,在哪里能控制一下呢!比如定义全局变量什么的? 谢谢!

chinaunix网友2008-10-14 14:26:17

写的不错,赞! 能不能把step by step 发一份给我,急需!chuanhong.li@gmail.com 非常感谢!!!!

chinaunix网友2008-09-24 20:54:19

太感谢了!先谢谢兄台了!

zcywset152008-09-21 21:20:46

等我有时间的时候,专题给你写一个step by step的吧,争取在10.1中给你详细的答复。

chinaunix网友2008-09-18 23:52:37

首先感谢楼主的回复,我现在是从function来创建子屏幕,但是激活后还是没有出现子屏幕,如果用自定义程序,那么自定义屏幕怎么跟主程序进行数据交互呢?比如显示或者更新,谢谢!如果不涉及源代码泄密问题,楼主能不能贴多一点代码给小弟study一下呢?非常感谢!