SAP进阶技术分享一:ABAP增强(1)

文章详细介绍了SAP系统中的几种增强技术,包括基于源代码的增强,通过出口、函数模块进行功能扩展,BADI(BusinessAdd-Ins)以及SwitchFramework。这些技术允许用户自定义标准程序,满足特定业务需求,但同时也涉及到系统升级兼容性和代码维护的问题。SAP的增强体系不断发展,提供了更加灵活和安全的增强方式。

一:基于源代码的增强

1.定义

  源代码增强以子程序形式发布,可以用PERFORM调用这些子程序,发布的时候是空的,提供一个空代码的子过程,用户可以添加自己的代码。

2.特点

  需要修改sap的标准代码。
  屏幕增强以客户屏幕形式发布,包含在标准程序中没有什么特别规律。
  源代码增强和屏幕增强的说明可以从事务码spro后台配置中相关模块的路径里面找到。
  可以用se11打开透明表,为数据表追加新的字段。

3.增强操作

  首先到service marketplace申请对象键,才能修改这些子程序。

4.查找增强方法

  第一步:打开SE38输入欲增强的程序;
在这里插入图片描述
  第二步:选择显示对象列表按钮,查找以”UserExit”开头的子程序,根据子程序前面的注释文档来查找用户出口;
在这里插入图片描述

5.缺点

  这种更改标准程序的方法现在很少使用,可能因为系统升级不能工作;而且改变了全局变量,还可能会破坏系统原有的逻辑。

二:出口

1.定义

  标准程序最后要调用的一个函数或者功能模块,这个函数或功能模块的输入已经由Sap定义好。

2.类型

  源代码、屏幕和表结构增强。
在这里插入图片描述

3.特点

  正常的业务系统不能满足实际需求,可以在出口中增加一些功能,来达到要求。
  自己写的SAP出口程序在系统升级时会被保留,如果是标准程序更改会被覆盖。

4.如何查找出口

  可以通过配置文档的帮助和SAP library寻找业务系统的出口,sap library在’implementation guide’中寻找出口,在说明文档中描述相关的出口。

5.怎么写出口程序

(1)专门管理出口程序的事务代码是CMOD(实现)、SMOD(维护);
(2)出口函数有标准处理程序传入的参数和输出参数;
(3)针对数据表的增强是CI_结构,这些结构以.INCLUED结构的形式包含在SAP发布的数据库表中,可以通过向这些结构中添加字段而对数据表进行增强。

三:基于函数模块的增强

1.定义

  源代码增强以函数模块形式发布,使用CALL CUSTOMER-FUNCTION调用这些函数模块,发布时只有一句代码INCLUDE xxxxxxx。增强的时候,直接双击这个包含,然后回车,就可以创建相关的包含文件,编写对应的代码。

2.特点

  只能使用接口中传递的参数,不能使用调用程序的全局变量。
  屏幕增强也包含在函数模块所属的函数组中。
  专门管理出口程序的事务代码是CMOD。

四:基于面向对象概念的增强

1.定义

  面向对象的增强就是BADI(Business Add-Ins),源代码增强以接口形式发布,也是通过接口(类接口)的方法调用来使用。
  用户增强时,实际是实现一个(或多个)基于这个接口的实现类,对一个增强可以有多种不同的源代码,通过过滤器应用于不同的业务场景。

2.特点

  通过EXIT_HEADLER查找BADI。
  使用事务码SE18创建、SE19实现。

五:Switch Framework

1.定义

  SAP从NetWeaver7.0以后推出的新增强体系,对BADI做出了改进,叫做新BADI。还新增了Enhancement SpotheEnhancement Section以及隐式增强点的概念,基本可以在面向对象里实现处处皆可增强的作用。

2.特点

  可以在任何有ENHANCEMENT-POINT的地方做增强。
  只能在程序的头和尾做增强。
  不像user-exit那么难找,不像badi那么麻烦,只需要在业务所对应的FM种找到ENHANCEMENT-POINT就可以,系统升级也不影响。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP顾问李昂

你的创作将会激励我,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值