更新时间:2022-08-25 17:26
ABAP(高级商务应用编程)是一种高级语言,由德国软件公司SAP开发。和最近引入的Java一起,ABAP主要用作SAP的编程。这个服务器软件是SAP NetWeaver平台的一部分,这个平台主要用来开发商务应用。ABAP支持有面向过程和面向对象。
ABAP开发环境包括设计和开发程序、屏幕、菜单、功能模块等所需的一切工具。它还包括了程序调试、性能和在线分析、测试所需的实用程序。
ABAP/4是SAP自己的第四代编程语言。从4.0版本开始,它简称为ABAP;它是经技术改进的I刮名语言,主要添加了新特性以成为面向对象的语言。
ABAP的意思是“先进经营应用编程语言(Advanced Business Application ProgrammingLanguage)”,这表明SAP编程语言用于开发R/3套件中所有的标准经营应用程序。
围绕着ABAP编程语言,SAP设计了一个完整的开发环境,像一个CASE环境,称作“ABAP开发平台”。它和R/3系统完全集成在一起,客户可以根据其需求用它开发特定的解决方案,或改进、改善标准的应用程序。
ABAP开发环境的中央有两个核心构件: “ABAP数据字典”和“ABAP经营对象库”, 即BOR( Business Object Repository).
“数据字典”包含所有的系统元数据,也就是对程序所使用的数据结构的描述。此字典是元数据库,因此包含表格定义、字段的合法值、视图、数据元素等等;更重要的是它定义了表格的关系。精通浏览和使用数据字典非常重要,不仅对数据库管理员和开发人员,对定制咨询顾问也是如此。
“经营对象库”包含ABAP平台上的所有开发对象:程序、字典数据、dynpros(动态程序的屏幕)、文档等等。此库对于控制和测试开发工作是必不可少的构件。
从3.0版本开始,开发环境还包括“平台组织者”,这是传输系统的附加构件。平台组织者和定制组织者负责控制开发对象和定制设置的开发与转换,以便将它们传输到其他系统上。
“平台组织者”的特性包括方案管理、程序修改控制、团队开发的协调、对象锁定和解锁定。
传输系统负责开发和定制设置系统之间的物理传输。比如说,SAP应用补丁和升级是SAP自身系统和用户系统之间真正大块的对象传输。这是一个重要工具,开发人员、定制者和系统管理员对它必须非常熟悉。
自从SAP R/3的3.1H版本以及4.0版本的普遍推广,产生了一种新的传输系统,称作TMS(传输管理系统),它引入了传输域和组的概念。它允许在传输组中对系统进行图形化定义,从系统内部引入修改请求,而无须访问操作系统。
ABAP作为一种面向特定应用的第四代编程语言最早在20世纪80年代开发。它原本是作为一种报表语言应用在SAP R/2上,这是一个帮助大型公司在大型机上建立原材料管理和财务会计管理商务应用的平台。ABAP本来也是德语AllgemeinerBerichtsaufbereitungsprozessor的缩写,意思是“通用报表预处理器”。ABAP第一次引入了“逻辑数据库”的概念,它在基本的数据库层提供了更高级的抽象。
ABAP编程语言最初被SAP的开发者用于开发SAP R/3平台。但它也被设计让SAP的客户用于增强SAP的软件应用–客户可以用ABAP编程开发自定义的报表和界面。这个编程语言对于程序员来说很容易学习但并不是一个非程序设计人员可以直接使用的工具。编写ABAP程序需要良好的编程技巧和关系数据库方面的知识,如果知道面向对象设计的概念更好。
虽然SAP最早于1992年就发布了R/3,但ABAP仍可以用于为R/3系统编写程序。在20世纪90年代,随着计算机硬件的发展,越来越多的SAP的应用软件和系统都用ABAP来实现。一直到2001年,几乎所有的基本功能都是由ABAP编程实现的。在1999年,SAP在发布R/3 4.6版的同时也发布了一个对ABAP的面向对象扩展,叫做ABAP Objects。
SAP最新的开发平台NetWeaver同时支持ABAP和Java。
所有的ABAP程序都驻留在SAP数据库里。他们不像Java或者C++程序那样存储在一个单独的外部文件里,在数据库里所有的ABAP代码都以两种形式存在:可以用ABAP workbench查看和编辑的源代码和由ABAP运行环境载入和解释的“编译”代码(技术上更精确地说是“产生”代码)。当一段ABAP源代码第一次被调用时会隐含的进行代码产生。如果稍后源代码改变了或者程序访问的对象改变了(比如数据库的表添加了新的字段),产生代码就会自动重新产生。
ABAP程序在运行时系统(SAP核心的一部分)的控制下运行在SAP应用服务器里。运行时系统负责处理ABAP语句,控制显示的逻辑序列和响应事件(比如,用户按一下屏幕上的一个按钮)。ABAP运行时系统的一个关键组件是数据库接口,它把ABAP的数据库无关语句(“开放SQL”)变成底层数据库管理系统可以理解的语句(“本地SQL”)。数据库接口处理ABAP程序和关系数据库之间所有的通信;它也有一些其他的作用,比如把经常访问的数据缓存到应用服务器本地的存储器里。
所有的SAP数据和软件都存在/运行于SAP系统的环境中。这个系统包括一个中心关系数据库和一个或多个访问该数据库里的数据和程序的应用服务器(“实例”)。一个SAP系统至少包括一个实例,但可以更多,主要看大小和性能上的需求。在一个多实例系统中,负载平衡机制来保证负载比较平均的分摊到各个可用的应用服务器上。
典型安装的Web应用服务器(部署方案)包括三个系统:一个用于开发,一个用于测试和质量保证,一个用于生产。这个部署方案可以包含更多的系统,比如一个单独用于单元测试和产前测试的系统,或者也可以不完全包含这三个系统,比如只有开发和生产,没有单独的质量保证系统;但三个是最常见的。ABAP程序的创建和首次运行都在开发系统里。然后被分发到部署方案的其他系统里。这些都是在变化和传输系统(CTS)的控制下进行的。CTS是一个负责并发控制(比如防止两个开发人员同时修改同一段代码),版本管理和在质量保证和产品系统上部署程序的系统。
Web应用服务器有三层组成:数据库层,应用层和表现层。这些层可以在同一台或不同的物理机器上运行。数据库层包括关系数据库及相关软件。应用层包括系统的实例。所有应用相关的过程,包括业务事务和ABAP开发,都运行在应用层。表现层处理和系统的用户之间的交互。对ABAP应用服务器的在线访问可以通过专用图形接口SAPGUI或者浏览器进行。
ABAP有两种不同类型的程序:
报表程序遵循一个相对简单的编程模型,用户可选的输入一系列参数(比如,在一个数据子集上的选择),然后程序根据输入的参数以一个交互式列表的形式产生一张报表。报表程序的输出之所以是交互式的是因为它不是一个被动的显示;它允许用户使用ABAP语言通过深入挖掘功能以获得某个数据更细节的视图,或者通过菜单命令触发更深入的处理,比如按不同的方式排序数据或者按某种选择条件过滤数据。这种表现报表的方法有很大的优势,特别是对于那些需要处理大量信息但又要以很灵活的方式来检查这些信息的用户,这样他们就不会再被限制到一种固定的显示形式或者大小上无法管理的列表形式的报表中了。这种方便的开发交互式报表的方式是ABAP语言的一大重要闪光点。
“报表”这个词有时会给人一种误解,其实创建数据可以在底层数据库修改而不仅仅是只读的报表程序是完全可以的。
在线程序(也叫模块池)不产生列表。这些程序使用一系列的屏幕来定义更复杂的用户交互模式。术语“屏幕”是指用户看到的实际的物理图像。每个屏幕还有一个“流逻辑”;这是指由屏幕触发的ABAP代码,比如初始化屏幕,响应用户请求的应答和控制模块池的屏幕之间的序列的逻辑。每个屏幕都有自己的流逻辑,每个流逻辑都分为“PBO”(输出前处理)和“PAI”(输入后处理)部分。在SAP的文档中,术语“dynpro”(动态程序)用来表示这种屏幕和流逻辑的结合。
在线程序并不是通过名字调用的,而是和一段事务代码联系在一起。用户可以通过自定义,角色依赖,事务菜单来触发它们。
除了报表和在线程序外,以类库,功能库和子程序池的形式开发共享代码段也是可以的。
ABAP Workbench有几个不同的工具用于编辑容器对象。这些工具可以为你提供涵盖整个软件开发周期各阶段的辅助。创建和编辑容器对象的最重要的工具有:
ABAP Editer:编写程序代码
ABAP Dictionary:处理数据库表定义,检索全局类型
Menu Painter:设计用户界面(包括菜单栏,标准工具栏,应用栏,配置功能键)
Screen Painter:为用户对话框设计屏幕(动态程序)
Function Builder:显示和处理功能模块
Class Builder:显示和处理ABAP对象类
1.和SAP紧密结合,尤其在开发报表方面,坦率地讲,除了和SAP集成的好处,.我认为ABAP在报表开发上比Crystal report Tool要高效简单。
2.和VB一样,ABAP是解释型的,如读者精通VB,学习ABAP应该毫不费力,倒是既然SAP是企业管理解决方案,ABAPer必须对企业管理流程熟悉。
解释型的另一好处是可以很好跟踪程序逻辑(使用/H),这对了解业务逻辑的实时追踪错误很有效. 和VB不同的是,VB跟踪时允许程序运行指针随意往回或往全拉而ABAP程序却不行,但是ABAP程序允许在运行时修改变量的值,这是编译程序不能做到的.当然通常编译比解释执行的速度会更快。
ABAP程序执行并不直接读取源代码,而是执行内部经过“生成”的描述,对于ABAP/4字典的修改激活后将触发内部描述的重新生成,如程序并没激活就执行原版本,或者出现错误(程序没激活可能造成ABAP Dumping ABAP)。
3.在对数据库处理方面,除了可直接执行SQL(使用native sql,缺点是错误处理很难控制,相当于有开发环境将SQL语句直接传给DB去执行),SAP在ABAP开发环境层还提供了一套Open SQL访问底层数据库。
4. 程序员都知道Windows平台下开发都支持事件驱动,Windows系统本身也支持事件驱动,ABAP也提供了事件驱动,这表Dialog编程方面,但是ABAP在此方面并不强,而且相对讲也比较难于掌握(在后面会讨论)。
5.基于面向对象的风靡,ABAP在此方面也有相当反应,在SAP强大的软件包中提供了大量可重复使用的程序,读者也可定义类并使用它快速建立新的对象。
6.类似Java,ABAP开发的程序能运行于任何操作系统(Java有Java虚拟机,ABAP也有ABAP processor),多种数据库(比如在ABAP字典中实现了透明表对各种底层数据库表的映射,这样在ABAP层看到的透明表就和具体数据库无关),各种网络系统。