sap 一代增强_ABAP几代增强简介

本文介绍了SAP ABAP的几代增强技术,从面向对象编程的角度出发,阐述了封装、继承和多态的基本概念。文章讨论了从直接嵌入源代码的增强到BADI(Badis)的新一代增强,强调了BADI在ABAP面向对象开发中的重要性。
摘要由CSDN通过智能技术生成

URP是个模块,平台,学点ABAP开发,防止被开发忽悠。

ABAP几代增强简介:

简单理解面象对象编程思想

作为一种功能强大的现代数据处理工具,计算机正被人类寄予无限期望,它能帮助人们解决各式各样的现实问题,大大提高人类的生活质量,目前软件技术

也几乎渗透到社会各个领域,面向对象编程方法(Object Oriented

Programming,

OOP)由此产生,它非常符合人们认识世界的基本规律,因为人们认识世界首先是将世上万物在大脑意识中进行抽象,对象可以简单理解为现实世界中的任何一个实体,比如一个人或者一辆汽车就是一个对象,我们先来快速理解2个名词:

²

类是对世界客观事物抽象,具有相同特性和行为的出来就是类,是具有相同特征和共同行为的一组对象的集合,比如汽车就是一个类,人们想到汽车,思维中立即会想到“有轮子能开着跑”。人们的思维方式喜欢将事务分门别类,汽车还可按不同维度继续细分为多种类型,这就是类层次,在面向对象编程中,子类可自动共享父类数据结构和方法,比如汽车父类,家用小汽车就是子类,家用小汽车还有其子类,这个非常好理解。

²

对象

您的小汽车就是一个具体对象,类的具体化就是对象,通常对象是在程序运

行时的具体实例,参照类产生一个对象。人们日常谈论家庭小汽车时,这是一个类,谈到您的小汽车,才是一个具体的对象。每个对象都有自身唯一的标识,甚至在对象的整个生命期中,它的标识都不改变,每个对象都有自己唯一的标识。人是一个类,您就是具体对象,如何标示出一个唯一的的人?显然身份证号非常合适。

对象是类的具体实例,类/对象都包含有属性,方法和事件,简单理解如下:

ü

类: 汽车类(父类),家用小汽车(子类)

ü

对象:您家的那辆小汽车就是小汽车的一个具体对象

ü

属性:车的颜色,大小和型号

ü

方法:启动,运行,刹车都是方法,方法在事件中调用

ü

事件:汽车启动,汽车运行和汽车刹车事件 ,如当用车钥匙启动发动机就是一个事件,它调用车启动方法。再如您汽车上的音响的播放、快进和快倒是操作方法,您按下播放键就是一个播放事件。

二.结构化和面向对象编程方法对比

还有种常见编程思路,那就是曾经风靡一时的结构化编程方法,其设计思路不是将对象作为一个整体,而是将依附于客体之上的行为抽取出来,以功能模块为目标来设计构造应用系统。它最大的缺点就是微小调整都会影响到整个系统,难以适应软件系统规模的日趋扩大、应用环境的日趋复杂和需求变化的日趋加快,因此,需要将利用计算机解决问题的软件设计方法统一到人类解决问题的习惯思维,这正是提出面向对象的首要原因。是否必须使用面向对象编程方法呢,并非绝对,面向对象方法也有自身缺陷,比如在一些对相应速度要求极高的应用场合,等面向对象定义类,具体实例化对象,黄花菜都凉了。

各种面向对象方法论已经相当成熟,包括Coad方法、Booch方法和OMT方法等。

三.面象对象的三个基本特征

再来简单理解下面向对象有三大基本特征。

²

封装Encapsulation

封装可理解为将世界中客观事物的属性与行为绑定,并放置在一个逻辑单元

内,外界通过接口对其访问,操作用户可以不用了解里面的具体内容。

封装可以隐藏技术实现细节,代码模块化方便开发分工。

²

继承Inheritance。

现实世界事物分类是有层次的,就象从车类到汽车类到家用小汽车类,通过

类的继承可以满足这种关系,通过继承创建的新类称为“子类”或“派生类”,

被继承的类称为“基类”或“父类”,当一个子类继承其父类时,直接就继承了父类所有的属性和方法,同时有自己特定的属性和方法,继承的过程,就是从一般到特殊的过程,现实世界万物不也是采用这种层次分类思维?

继承可以有单重和多重继承,也就是从一个或多个父类中继承,建立类之间的关系,继承可以实现代码复用和方便系统的扩展。

²

多态Polymorphism

简单理解,就是相同的方法调用可采用不同的实现方式,多态是具有表现多种形态的能力的特征。多态可以实现接口重用,多态性作为面向对象的核心,增强了程序设计的灵活性。

四.ABAP新一代的面向对象增强

ABAP/4支持面向对象开发, 虽然SAP产品主要代码部分依旧使用ABAP,但传统的ABAP开发模式正逐步转移到面向对象模式,BADI正是基于面向对象的新出口技术,实现 BADI

要用到类、接口及方法等面向对象的概念,让我们简单回顾下SAP的数代增强出口:

²

第一代增强:直接嵌入源代码的增强

出口程序作为代码为空的包含程序(Include)嵌入主程序中,典型如SD模块程序SAPMV45A(对应Tcode:VA01),嵌入了多个带Z的包含程序,输入Tcode:VA01在初始界面走菜单“系统”->状态,就能看到对应的程序SAPMV45A,同样可以看到交货Tcode:VL02N的主程序SAPMV50A也嵌有多个包含出口程序,程序员直接在这些出口程序中实现自定义逻辑。

第六节的财务增强也是相当典型的第一代增强,使用这种方式体现不出高超水准,下面我们把它整复杂一点,使用新BADI来实现,让普通用户看不懂,在很多集团大项目中,高手们似乎都喜欢整点复杂玩意,要不能都不好意思称高手。

²

第二代增强:基于出口函数的增强

将用户出口作为带参数的函数独立开,这些函数通常默认只有一句include

某包含程序,出口通过tcode:SMOD/CMOD实现.您可用Tcode SE37:输入函数“MODX_FUNCTION_ACTIVE_CHECK”,打上断点,然后执行一个Tcode,从而快速找到给tcode留下的增强出口,程序员通常在增强函数对应的包含程序中实现自定义逻辑。

²

新一代增强:BADI和新BADI

(第3代和第4代增强)

有人将Classic BADI(旧BADI)认为是第三代增强,SAP

NetWeaver推出的新BADI为第四代增强,新BADI需建立一个增强点(Enhancement

Spot)做容器,只要在Tcode对应的主程序中输入查找关键字“CL_EXITHANDLER”,就可快速找到相应BADI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值