SAP 4代增强
*20170325 160000
以下之外, 还有:.替代, -用过一次;
.BTE -没用过,
需要学习;
第二代增强和第三代增强的差别:
1.Tcode 不同:
第二代: CMOD 增强管理,SMOD 实施的增强点;
第三代: SE18 BADI定义,SE19 BADI实现;
2.实现方式不同;
SMOD 增强 是基于函数模块的增强,函数名称是 EXIT_程序名_'xxx',
使用CALL customer-function 'XXX'调用函数模块,
函数里面一般是 INCLUDE Zxxx 一句话,进去里面进行增强代码;
SE19增强 是基于面向对象的增强,
源代码发布以接口方式,通过接口的方法调用来实现使用。
通过 接口名称 找到对应的方法:
如:
采购订单创建的检查:BADI:ME_PROCESS_PO_CUST
在所提供方法中->找到对应方法->实施增强;
INITIALIZE
OPEN
PROCESS_HEADER
PROCESS_ITEM
PROCESS_SCHEDULE
PROCESS_ACCOUNT
CHECK
POST
CLOSE
FIELDSELECTION_HEADER_REFKEYS
FIELDSELECTION_HEADER
FIELDSELECTION_ITEM_REFKEYS
FIELDSELECTION_ITEM
3.查找方式不同,
4.能够实现的功能是否相同?
通过网络资料学习SAP 的4代增强:
SAP ABAP,增强就是对SAP 标准程序功能的扩充。比如在事物码ME31N 新建PO 时,
在保存时需要做一些特定的检查,这时候就需要用到增强:
【 ME_PROCESS_PO_CUSE 】
SAP 系统已经给我们预设好了很多增强,我们只需要往这些增强里写代码就行了。
SAP增强按照历史先后, 主要四类:
1.第一代(基于源代码的增强)是SAP提供了一个空代码的子过程,
这个子过程中,用户可以添加自己的代码,控制自己的需求。
这类增强需要修改sap的标准代码,它们在发布的时候都是空的,
集中在文件名倒数第二个字符为 Z 的包含程序中,
因为在标准程序中,所以:
(1)程序的全局数据可以使用。
弱点:系统升级时会被新版本覆盖;
这种源代码增强和 屏幕增强的说明
可以从Tcode:
SPRO 后台配置的相关模块的路径里找到;
一般是 UserExit_ 打头的子模块。
这类增强事先要到 service marketplace 申请对象键(Access key),
然后才可以修改这个子程序。
这类增强比较多用在SD模块,比如创建SO 时(VA01).
2.第二代增强(基于函数模块的增强),用SMOD和CMOD 维护
在SAP发布的版本中,使用Call customer-function 'xxx'调用函数模块的,
所以你可以通过在程序中搜索
cusomer-function 来查找第二代增强,
第二代增强函数名构成:EXIT_程序名_'xxx',
这样你就可以找到对应的增强函数模块了,它们在发布的时候只有一句代码
include 'xxx'
修改时无需像第一代增强一样需要ACCESS key,直接双击回车就可以了。
从第二代增强都是 子程序了,include or ???
只能使用接口中传递进来的参数。
第二代增强主要有以下几类:
1)E. Enhancement exits:
这些出口以Exit_ 打头,你可以到SE37 中查看,
也可以在表 TFDIR 中查询Exit_ 打头的函数,
2)C. Gui codes,(GUI增强)
3)S. Subscreen (屏幕增强)
4)T. include structure 表/结构 增强,
SAP扩充(增强表) MODSAP,里面记录了所有的smod 增强,
这个表里重要字段
NAME X 增强名
TYP X 组件类型
MEMBER X 增强
TFDIR 函数清单
重要字段:
FUNCName(函数名),
MAND(功能模块激活状态如果是C代表此函数模块激活)。
3.第三代增强(基于面向对象概念的增强 BADI-[ business add-in ]),使用SE18管理,SE19实施,
(1)SAP保证所有BADI的向上兼容性。版本升级不影响标准系统中增强的调用,也不会影响调用接口的有效性。你不必在SSCR中注册BADI。
(2)只能使用一次实施,增强功能可以同时被任意数量的客户激活。?
BADI可根据过滤器的值定义。这使您可以根据特定的标准来控制实施(例如:按照在特定国家)。
(3)BADI包含了所有必要实现特定任务的接口。?
源代码发布以接口方式,通过接口的方法调用来实现使用。
自定义增强实际上是实现一个或者多个基于这个接口的实现类,
因为-接口类实际上是一个抽象类,所以- 对于同一个增强会出现不同的源代码,
这些不同的源代码通过 过滤器(adapter) 来区分不同的 业务场景。
Tcode:SE18, SE19 来实现,
***BADI 的查找方法:
1)BADI 对象的信息存储在
SXS_INTER,
SXC_EXIT,
SXC_CLASS,
SXC_ATTR 这四个表
其中 SXC_ATTR 【Exit: Implementationsseite: Attribute】可以找到自建BADI,
IMP_NAME CHAR 20 0 业务加载项实施
VERSION CHAR 6 0 版本号
ACTIVE CHAR 1 0 客户增强激活
MST_LANG LANG 1 0 语言代码
ANAME CHAR 12 0 最后修改人
ADATE DATS 8 0 日期
ATIME TIMS 6 0 时间
UNAME CHAR 12 0 最后修改人
UDATE DATS 8 0 日期
UTIME TIMS 6 0 时间
LAYER CHAR 80 0 业务加载项管理的层值
MIG_ENHNAME CHAR 30 0
2)SAP BADI 程序都会调用
cl_exithandler=>get_instance 来判断对象是否存在,并返回实例,
**我们可以在这个方法处设置断点,获取实例。
这个方法实际是对上面四张表和视图 V_EXT_IMP 和V_EXT_ACT 进行检索,
3)它的调用方式是call method(instance), 可以通过exit_handler关键词来查找。
4)ST05选择“table buffer trace”而不是常用的"SQLtrace",
查找上面的几个表和视图找到对应的BADI.
5)se18 查找接口,se19 实现接口就可以实现用户增强
4.第四代是第三代的加强 switch Framework
SAP 进入NewWeaver 7.0后 推出的新增强体系,将BADI 改名叫新BADI。
还新增了 Enhancement spot 和Enhancement section 以及隐式增强点的概念,
基本在面向对象的程序里实现处处可以增强,
这类增强一般
可以加在一个函数过程的开头和结尾的地方。
***隐式增强:
1)寻找隐式增强方法:
使用debug 方式,跟踪业务处理过程,记下经过的 程序,子程序,函数名,
最好是在标准业务结束前的最后环节,去确认是否有可用的隐士增强点。
如有,实施步骤:
(1)使用圈圈 增强menu,
(2)菜单:编辑-》增强操作-》显示隐式增强选项;
(3)代码框行号前有箭头的表明有隐式增强点,可以创建,
操作隐式增强点 4个menu:
创建,更改,替代,撤销,(所以隐式增强没有删除,是标准撤销)
(4)创建实施,声明代码;
SAP 4代增强的更多相关文章
- SAP四代增强实现:销售订单复制项目文本时不需要显示文本框和回车
最近接收到一个业务需求,在SAP依据销售订单复制时,如果订单里面的项目有多个文本,系统就会显示复制的文本框处理,让用户选择是否复制,这个就让销售很不舒服,如果有几十个项目,每个项目有几个文本,那就就要 ...
- SAP增强总结-第二代增强(SMOD、CMOD)【转载】
第二代增强比第二代增强安全性提高了很多,第一代增强毕竟是在原标准程序中修改,大部分传递参数都可以直接使用,第二代增强做了一些封装,对用户可以修改的参数做了限制. 1.增强点查找方法 首先根据事物码找到 ...
- SAP中寻找增强的实现方法(转)
SAP 增强已经发展过几代了,可参考 SAP 标准教材 BC425 和 BC427.简单的说SAP的用户出口总共有四代:1.第一代 基于源代码的增强.SAP提供一个空代码的子过程,在这个子过程中用户 ...
- Azure 为 SAP 提供的增强监控解决方案
正如大家在之前公告中所看到的,多个SAP应用程序已获得认证可在 Azure虚拟机中运行,未来还会有更多 SAP应用程序获得认证.对于希望在 Azure中运行 SAP应用程序的客户来说,这是个激动人心的 ...
- 【ABAP系列】SAP ABAP MRKO增强
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP MRKO增强 ...
- 【MM系列】SAP 交货单屏幕增强
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 交货单屏幕增强 前言部分 ...
- 【ABAP系列】SAP VA01屏幕增强(user-exit)
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP VA01屏幕增强(user- ...
- SAP 销售条件表增强栏位
有时遇到一个比较特殊的业务,比如公司间免费订单,既要让价格为0,不读取VK11里创建的价格, 又要让公司间的价格读取VK11,这实际上是有矛盾的,也就是说一个订单里面的两行,物料一样,客户一样,就会出 ...
- SAP 金税接口增强 BADI
SAP与金税连接有两种方式:组件接口及文本接口. 文本接口为例: 1.SAP取发票数据.主要来自合同,销售订单,交货单.发票,客户供应商主数据等 2.SAP处理:合并.拆分,折扣等 3.导出TXT ...
随机推荐
- ARM Linux系统调用的原理
转载自:http://blog.csdn.net/hongjiujing/article/details/6831192 ARM Linux系统调用的原理 操作系统为在用户态运行的进程与硬件设备进行交 ...
- [Cocoa]深入浅出Cocoa多线程编程之 block 与 dispatch quene
深入浅出 Cocoa 多线程编程之 block 与 dispatch quene 罗朝辉(http://www.cppblog.com/kesalin CC 许可,转载请注明出处 block 是 Ap ...
- iOS 在Xcode中使用OpenSSL库
最近要做一个密码键盘,想内置一些加密算法,所以就想到了添加OpenSSL库,现在mac也自带了OpenSSL库,但是每次都从终端是生成是很麻烦的.网上找了很多文档.博客去介绍如何编译可以在Xcode中 ...
- centos7的时间同步机制:chrony使用
配置时间同步方法如下: 1.安装chrony时间同步服务(系统默认安装) #yum install chrony 可以先查询一下是否有安装: [root@localhost etc]# rpm -qa ...
- 传输层:TCP 协议
传输层:TCP 协议 一.概述 TCP 和 UDP 处在同一层——运输层,但是它们有很多的不同.TCP 是 TCP/IP 系列协议中最复杂的部分,它具有以下特点: (1) TCP 提供 可靠的 数据传 ...
- 七天学会ASP.NET MVC(七)——创建单页应用 【转】
http://www.cnblogs.com/powertoolsteam/p/MVC_Seven.html 系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学 ...
- 一次测试岗位针对Java和接口的面试题
1.post和get的区别? 1. get是从服务器上获取数据,post是向服务器传送数据.2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在UR ...
- F - 概率(经典问题)
Description Sometimes some mathematical results are hard to believe. One of the common problems is t ...
- 对Date的扩展,将 Date 转化为指定格式的String
<script language="javascript" type="text/javascript"><!-- /** * 对Date的扩 ...
- c#中使用ABCpdf处理PDF,so easy
QQ交流群:276874828 (ABCpdf ) 这几天项目中需要将页面导成PDF,刚开始使用iTextSharp,觉得在分页处理上比较复杂,后来无意中看到了ABCpdf,使用非常简单,并将一些常 ...