最具影响力的数字化技术在线社区

sap虹 发表于 2014-12-24 12:40:25

SAP开发增强详解


http://mmbiz.qpic.cn/mmbiz/Cicll4C565AwskUiccPG5UUek7RRS1wHa2k6Gck5sFsibaLk5su5hOzPLKeXpFv1A6snsVXtIsKjEcGNCjYAC4biag/0?tp=webp
SAP虹: 在SAP ABAP,增强(enhancement)就是对SAP标准程序功能的扩充.比如在事务码ME21N新建采购单时,在保存时需要做一些特定的检查,这时候就需要用到增强(ME_PROCESS_PO_CUST).SAP系统已经给我们预设好了很多增强,我们只需要往这些增强里写代码就行了.
SAP增强按照历史先后,主要分为以下四类:
1. 第一代(基于源代码的增强)是SAP提供一个空代码的子过程在这个子过程中用户可以添加自己的代码,控制自己的需求。这类增强都需要修改sap的标准代码,它们在发布的时候都是空的,集中在一些文件名倒数第二个字符为Z的包含程序中,由于在标准程序中,所以所有程序的全局数据都可以使用,但同时系统升级时会被新版本覆盖;这种源代码增强和屏幕增强的说明可以从事务码 SPRO后台配置中相关模块的路径里面找到;一般是以UserExit_打头的子模块。
这类增强事先要到 service marketplace 申请对象键(ACCESS KEY),然后才能修改这些子程序。这类比较多的用在SD模块中,比如在创建销售单时(VA01).
2. 第二代增强(基于函数模块的增强),用SMOD和CMOD维护在SAP发布的版本中,使用Call customer-function ‘xxx’调用函数模块的,所以你可以通过在程序中收cusomer-function来查找第二代增强,第二代增强函数名构成:Exit_程序名_’xxx(3 digital number)’,这样你就可以找到对应的增强函数模块了,它们在发布的时候只有一句代码include ‘xxxxxxx’,修改时无需像第一代增强一样需要ACCESS key,直接双击回车就可以了,但同时这种增强以及后面几代的增强都不能像第一代一样随便使用程序的全局数据,只能使用接口中传递进来的参数。
第二代增强中主要有以下几类:1)E . Ehancement exits: 这些出口以Exit_打头,你可以到SE37中查看,也可以在数据字典中TFDIR(函数表)中查询Exit_打头的函数。2)C .GUI codes, (GUI增强) 3) S. Subscreens(屏幕增强)4)T. include structure 增强Enhancement比较重要的表MODSAP,这个表里重要的字段增强名(Name),组件类型(TYP: E C S T),组件功能模块名(Member):里面记录了所有enhancement的增强.TFDIR所有的函数表,重要字段FUNCName(函数名),MAND(功能模块激活状态如果是C代表此函数模块激活)。
3.第三代增强(基于面向对象概念的增强BADI(business add-in))源代码发布以接口的方式,通过接口的方法调用来实现使用的。用户增强实际上是实现一个或多个基于这个接口的实现类,因为接口类实际上是一个抽象类,所以对同一个增强会出现不同的源代码,这些不同的源代码是通过过滤器(adapter)来区别用于不同的业务场景的。这种增强是用SE18 ,SE19来实现的。
BADI的查找方法:
1)BADI对象的信息存储在SXS_INTER,SXC_EXIT,SXC_CLASS和SXC_ATTR这四个表中。
2)SAP BADI程序都会调用cl_exithandler=>get_instance来判断对象是否存在,并返回实例,这个方法实际就是对上面4个表和视图V_EXT_IMP和V_EXT_ACT进行查询和搜索的。我们可以在这个方法处设置断点,获取实例。
3)它的调用方式是call method(instance), 可以通过exit_handler关键词来查找。
4)ST05选择“table buffer trace”而不是常用的"SQL trace",然后查找上面的几个表和视图找到对应的BADI.
5)se18 查找接口,se19 实现接口就可以实现用户增强
4.第四代其实是第三代的加强switch Framework

当SAP进入NewWeaver 7.0以后推出的新增强体系,将BADI进行了改进,叫新BADI了。还新增 Enhancement Spot 和 Enhancement Section 以及隐式增强点的概念,基本可以在面向对象的程序里实现处处皆可以增强.这类增强一般可以加在一个函数过程的开头和结尾的地方.


---生命苦短,虹满人间欢迎实名互粉。想爆料或各种合作,请发邮件至105087631@qq.com或关注微博@SAP虹,微信:saprain私信留言。
了解更多详情请关注公众微信号【SAP中国顾问公众平台】,扫描下方二维码参与互动。http://mmbiz.qpic.cn/mmbiz/Cicll4C565AzwF8icw78alRRRTw6vF7VgHTAEwUanNaHrb6fb6CHV3gMgp8V7UvWxKVn69tO5XWBX3jSQ3GJRMOA/0




sap虹 发表于 2014-12-24 12:40:58

先自顶起:)
页: [1]
查看完整版本: SAP开发增强详解