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

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

[ABAP] SAP开发增强详解

[复制链接]
跳转到指定楼层
楼主
发表于 2014-12-24 12:40:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x


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中国顾问公众平台】,扫描下方二维码参与互动。





楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-26 12:11

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表