加载中…
个人资料
SD模块那些事儿
SD模块那些事儿
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,636
  • 关注人气:57
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

详解SD增强

(2013-08-21 10:15:11)
标签:

sap

增强

enhancement

user_exit

mod

分类: SAP实施
项目快上线了,博主忙的要死,快一个月没更新博客了。今天回来做点功课,说说SD常用的用户出口和增强。
在说之前,先纠正一个发音,就是user exit的exit。很多顾问,包括很多高级顾问,都习惯把这个词读成exist,这点博主非常不能接受……翻译过来,一个是出口,一个是存在,发音也差挺多,大家一定注意哈,别让人看笑话。应该读成:“埃可死诶特”而不是“诶哥贼死特”http://www/uc/myshow/blog/misc/gif/E___6725EN00SIGG.gif
好了不说废话,进入正题。本篇博文主要是帮助模块顾问快速、准确的找到增强点,并非对ABAP的讲解。
先来增强的几种类型:
1.User Exit,也就是用户出口。著名的MV45AFZZ系列就是这种出口。一般项目上通过算个号直接修改这种简单粗暴的方式来处理,SAP也会默认认为这个是增强性的修改而不是修改标准程序。对这类程序的修改也可以通过后面讲到的Enhancement Implementation来实现,看上去要稍微专业一些。
2.SAP Enhancements,也就是SMOD,通过CMOD来实现。博主理解SMOD = SAP Modification, CMOD = Customer Modification。意思就是SMOD是SAP发布的一些Function Module,这些FM一般都在标准程序里面有调用,里面一般都会是一个PERFORM ZXXXX,你要做增强,其实就是创建这个Z开头的程序,在里面写一些代码。FM能做的事以及输入、输出参数都是SAP预设置好的,也就是说你要干什么事就得找到什么样的SMOD,然后创建CMOD去实现它。
3.Business Add-In,也就是BADI。BADI也需要通过Create Implementation来实现,跟SMOD/CMOD比较类似,功能更宽泛一些,多半是一些Method的组合,通过每个Method可以实现不同的功能。
4.Enhancement Implementation,这个是很灵活的一种增强,SAP在它的标准程序里面会预留一些Enhancement Spot,如果你需要在这个程序里面做一些修改,可以考虑通过在Enhancement Spot上面创建Enhancement Implementation来实现。
博主了解到的增强方式就这么几种了,下面说说怎么来找到这些增强。
1.SPRO。这是找到增强最直接的方式。基本上每个大菜单下面都会有一个叫做System Modifications的菜单,在这个菜单里面你可以看到很多的子菜单,每个子菜单的Documentation里面(而不是直接点运行)就会写有哪些增强可以使用,是什么类型的增强。比如著名的MV45AFZZ就在下面的路径里面可以看到。
这里面除了告诉你有MV45AFZZ这个东西,还给你讲解了每个FORM能做什么事情。实在是相当贴心。
另外一些BADI也可以通过这个方式来找到,比如给客户主数据创建一些附加视图:
2.通过PACKAGE查找。进入SE80,选择Package,然后输入VMOD,就可以看到SD模块下面的一些用户出口,都在Includes里面。MV45AFZZ也在其中(真是无处不在啊)。
3.通过程序查找。这个是个很简单的办法。只要在Sandbox或者IDES里面创建一个程序,就可以很方便的找到SMON/CMOD以及BADI类型的增强点了。程序博主会单独放到另外一篇博文里面。
4.通过Table: MODSAP查找。这个方法不到万不得已不推荐使用,因为这里面的东西实在是很多,并且缺乏描述。这里找到的都是SMOD/CMOD方式的增强,可以通过检索"SD*"来查找SD相关的增强。
5.查找BADI。这个方法基本上可以找到一个T-CODE下面所有的BADI,比用第三种方式的程序找的要全。当然过程也会稍微复杂一些。首先进入SE24,查看Object Type:CL_EXITHANDLER。
在GET_INSTANCE这个Method里面设置如下断点:
然后进入你要进的T-CODE(如果需要在这个T-CODE后续动作中查找,建议先进入T-CODE,在操作开始前再设置断点),Debug窗口会自动弹出,通过查看EXIT_NAME的值,就可以找到这段程序所调用的每一个BADI。
6.直接DEBUG/找程序源代码。这种方式适用于查找CMOD/SMOD类型的增强,以及Enhancement Implementation方式的增强。
先说CMOD/SMOD:在程序里面查询"Customer-Function",如果有的话,那就是一个SMOD/CMOD的增强。通过双击编号(本例里面是002)就可以进到对应的SMOD的FM。
回头到MODSAP这个表里面就可以找到对应的SMOD名称
找Enhancement Implementation就更简单了,在你想做增强的标准程序里面点击下图所示的按钮
然后找到如下菜单路径:
如果上述操作完成后,在程序里面出现了黑色的箭头以及对应的虚线行,就可以在这里做Enhancement Implementation了,随心所欲,想怎么搞就怎么搞,而且是SAP支持的方式,升级什么的不受影响哦!
嗯,基本上增强就这些了,希望大家增的开心,强的愉快http://www/uc/myshow/blog/misc/gif/E___6708EN00SIGG.gif

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有