abap(高级企业应用编程语言)

2023-01-24 84阅读

温馨提示:这篇文章已超过541天没有更新,请注意相关的内容是否还可用!

abap

高级企业应用编程语言

ABAP(Advanced Business Application Programming)起源于20世纪80年代,是一种高级企业应用编程语言。ABAP产生的最初目的是用以生成简单打印报表程序。ABAP程序执行并不直接读取源代码,而是执行内部经过“生成”的描述。

中文名高级企业应用编程语言
外文名Advanced Business Application Programming
代表机构安豆教育abap、91ABAP
起源时间20世纪80年代
开发商德国软件公司SAP
隶属NetWeaver平台
功能面向特定应用

平台

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的发展历史是必要的,ABAP产生的最初的目的是用以生成简单打印报表程序,我们知道SAP最初是为解决财务实时数据处理问题的,ABAP(Advanced Business Application Programming->;高级业务应用编程语言)用于编写SAP AG的几乎全部产品源代码。 严格地讲,ABAP/4不仅仅是一个开发工具,而且是一套完整的client/server开发环境,这很好理解,微软的Visiual Studio是一开发环境,VB,VC++等是开发工具.ABAP开发环境包含支持程序开发的一些函数和包等。

SAP开发环境的三层(多层)概念也不新鲜,比如在安装SAP时也可将DB instance安在一台server,Central instance在另一台所谓的Application server(我想这应是相关SAP基础系统包括各种应用程序所在),而通常客户端安装的SAP Logon Front End,SAP会话管理器等是所谓的表示层,它通过TCP/IP,SAP演示协议或RFC和应用服务器进行数据传输,用户看到的只是处理后的数据返回。

和Delphi的三层逻辑相近,在应用层包含多个组件象ABAP开发平台,身份验证,系统管理维护等用以处理会话,更新,排队,网关,数据层处理native和Open SQL等(这是从内部机制方面看),SAP各模块应用的业务逻辑都在应用层被处理(从用户角度)然后结果被返回。

SAP Logon,表示应用服务器(通常企业为了节省成本和方便管理可能会将应用服务器和数据库安装在同一起),System number,举个实例,开发和测试服务共用一台服务器,开发使用system number00,而测试使用system number 01,通过system number逻辑地将一台physical server逻辑地分成了两台application server。

现代信息化技术的快速发展与企业管理理念的不断进步,使得信息化管理系统已经在社会各领域中得到了广泛的应用,ERP系统作为现代企业信息化管理系统中应用最为广泛的一种,其对提高企业的管理与运行效率,推动企业的发展有着积极地作用。因此ERP系统的开发也越来越受到人们的重视,ABAP作为ERP系统开发重要工具及编程语言,加强对其应用的研究,对于提高ERP系统开发的水平与质量有着重要的意义。

特征

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层看到的透明表就和具体数据库无关),各种网络系统。

程序属性

简介

程序属性决定程序属于哪种应用程序以及程序所链接的逻辑数据库。必须谨慎输入属性以便系统能正确处理程序(有关程序属性的详细信息,参见重要的程序属性(页459))。

已经将名称分配给程序并选择“ABAP/4编辑器初始屏幕”上的“创建”时,出现“ABAP/4:程序属性”屏幕。

操作

1. 在字段“标题”中输入程序标题。选择描述程序功能的标题。系统自动将标题与文本摘要合并。如果以后要更改标题,请按如下操作进行:

- 选择“ABAP/4编辑器初始屏幕”上的“文本摘要”或“属性”。

- 选择“更改”。

2. 完成两个强制字段:

- 如果创建报表程序,则在“类型”字段中输入1,如果创建模块存储,则在“类型”字段中输入M。关于可能类型的列表,请单击可能条目箭头。

- 在“应用程序”字段中为应用程序输入分类字母,如财务会计输入F。

3. 如果创建报表(类型=1),请选择“确定”。

系统将特定报表属性自动插入输入字段。然后看见附加字段“逻辑数据库”、“从应用程序”和“选择屏幕”(版本)。

4. 指定与程序相关的所有其他属性(有关程序属性的详细信息,参见重要的程序属性(页459))。

5. 选择“保存”以保存属性。

6. 出现“维护对象目录条目”窗口。

7. 输入开发类。

如果为培训或测试目的创建程序(如某私有对象),则输入开发类$TMP或选择“逻辑对象”。

8. 选择“保存”以保存开发类。

这将关闭“维护对象目录条目”窗口并返回“ABAP/4:程序属性”屏幕。

9. 选择“后退”离开屏幕。如果要直接转到ABAP/4编辑器,请选择“转向->;源代码”。

如果通过预定义开发类在“对象浏览器”中创建程序,则跳过步骤6到8。

最重要的程序如下所述。关于其它属性的详细信息(或关于此处描述的属性的详细信息),请选择相关的输入字段,并单击可能的条目箭头。

注意下述某些属性只适用于报表程序并不适用于其他ABAP/4程序。

1. 在“SAPR/3”初始屏幕上选择“工具->ABAP/4工作台”。

出现“ABAP/4开发工作台”屏幕

2. 选择“ABAP/4编辑器”

“ABAP/4编辑器初始屏幕”如下所示:

3. 为在“程序”字段中创建的程序输入名称(关于创建程序名称的详细信息,参见命名程序规则(页455))。

4. 选择“创建”。

不论在“对象组件”下选择什么,都出现“ABAP/4:程序属性”屏幕。

当命名并创建程序后,可以定义其属性(关于定义程序属性的详细信息,参见指定程序属性(页457))。

创建ABAP/4程序还有其它过程。例如,可以:

1. 选择“ABAP/4开发工作台”屏幕上的“对象浏览”。

2. 选择“对象列表”下的“程序”。

3. 选择“单一对象”下的“程序对象”。

4. 输入程序名并单击“显示”。

类型

除了类型1(如同报表的独立程序)和M(模块存储),还应该注意类型I(包含程序)。包含程序是个独立的程序,它有两个主要特征。首先,它包含程序代码,不同程序都可使用该代码。其次,它用于模块化程序源代码,该代码分成逻辑相关部分。其中每个部分都存储在不同的包含程序中。包含程序改善源代码的可读性并有助于维护。(有关包含程序的详细信息,参见包含程序)。

应用程序

“应用程序”字段包括应用程序的缩写,如,财务会计缩写为F。该必需条目使系统能将程序分配给适当的业务区。

开发类

开发类对系统之间进行传输非常重要。执行传输时,可以将分配给某个开发类的工作台对象组合起来。

如果用户在某组中工作,也许要将程序分配给现有开发类或创建新的开发类。分配给开发类$TMP的程序是私有对象并且不能传输到其他系统。

但是,也可以通过选择“ABAP/4编辑器初始屏幕”上的“程序->重新分配...”更改分配给程序的开发类。

应用程序中的逻辑数据库(仅报表程序)

这些属性决定报表使用哪个逻辑数据库检索数据,以及逻辑数据库属于哪个应用程序。应用程序中数据库名称必须是唯一的。但是,整个系统可以包括数个同名数据库。因此指定应用程序很重要。关于逻辑数据库的详细信息,参见逻辑数据库的特性和维护。

如果报表程序直接读取数据,而未使用逻辑数据库(关于此主题的详细信息,参见访问带逻辑数据库的数据库表),则应该象通常一样指定应用程序,但将“逻辑数据库”字段置空。

选择屏幕版本(仅报表程序)

如果没有指定选择屏幕版本,则系统在逻辑数据库选择标准、报表特定参数及选择选项的基础上自动创建选择屏幕(关于选择屏幕的详细信息,参见使用选择屏幕)。

如果想使用自己的选择屏幕,请在此字段中输入号码。该号码必须小于1000。可以通过按F4或在DBxxxSEL程序中找到现有选择屏幕号码(详细信息,参见逻辑数据库选择)。

大写/小写

显示和存储时,如果要让ABAP/4编辑器将程序代码与输入时保持相同,则请将该字段置空。如果选择该字段,则所有的程序代码(除了引号中的文本及注释外)都转换成大写字母。屏幕显示依赖于所使用的编辑器模式(详细信息,参见文档ABAP/4工作台工具。

编辑器锁定

如果设置此属性,则其他用户则不能修改、改名或删除程序。只有用户可以更改程序、维护属性、文本摘要及文档;或者解除锁定。

定点算术

如果设置此属性,系统则根据小数点位数将类型P字段四舍五入,或用零填补(关于类型P字段的详细信息,参见数字数据类型(页3-4))。这种情况下,无论在用户主记录中指定了什么,小数点字符总是句点(.)。

通过变式启动(仅报表程序)

如果设置该属性,则用户只可以使用变式启动报表程序。在启动程序之前,必须创建至少一个报表变式(关于创建变式的详细信息,参见使用变式预设置选择)。

程序应用

概述

在ABAP/4编辑器中编写ABAP/4程序。

可以直接从“ABAP/4程序属性”屏幕切换到编辑器,也可以从“ABAP/4编辑器初始屏幕”中调用编辑器。

编写程序操作

1. 在“ABAP/4程序属性”屏幕上选择“转向->;源代码”或“源代码”。

选定“源代码”并选择“ABAP/4编辑器初始屏幕”上的“更改”。

出现“ABAP/4编辑器编辑程序”屏幕。

系统自动输入第一个ABAP/4语句,如

REPORTor PROGRAM .

对于 ;,系统使用在“ABAP/4编辑器初始屏幕”上输入的名称。

语句REPORT和PROGRAM实际上具有相同功能。它们使系统能识别报表程序或任何其他ABAP/4程序并允许为输出列表指定一定的标准:

REPORT或PROGRAM语句可以有不同的参数,如LINE-SIZE、LINE-COUNT或NO STANDARD PAGE HEADING。这些参数主要适用于报表程序,用来分析数据并输出结果列表。

关于列表的详细信息,参见或参见REPORT和PROGRAM上的关键字文档。

2. 输入程序代码。

3. 选择“检查”进行语法检查。然后系统扫描程序代码寻找语法错误及不相容处。如果检查出错误,则出现消息报告它并且有可能的话将建议解决方案或更正。将光标放在适当的位置上。

4. 选择“保存”保存代码。

源文本存储在程序库中。

测试程序

测试程序检查代码是否正确工作。

为测试目的要运行程序,选择“ABAP/4编辑器编辑程序”屏幕上的“程序->;执行”。

系统执行该程序,如同从“ABAP/4编辑器初始屏幕”中启动的一样。例如,创建报表程序之后,则首先出现从中输入条件的选择屏幕,然后是结果列表。

如果正创建ABAP/4程序模块,则必须在运行程序之前创建事务代码(关于创建事务代码的详细信息,参见对话编程简介)。

出于测试目的,可以先不进行保存,直接运行某个不是模块存储部件的程序。编辑器保留一个包含更改的临时版本。但是,测试结束后必须返回编辑器以确保所有更改都已保存。

程序的显示更改

本节主要说明如何显示或更改现有程序。此处相关的是技术步骤而不是实际代码更改。

要显示或更改程序,请进行如下操作:

1. 在“ABAP/4编辑器初始屏幕”上的“程序”字段中输入要更改的程序名称。

2. 选择“源代码”并选择“显示”或“更改”。

如果选择“更改”则继续步骤3。

如果选择“显示”,则看到“ABAP/4编辑器显示程序”屏幕。此处也显示源代码,但不能进行更改。可以通过选择“显示->;更改”切换到更改模式。

3. 如果其他用户锁定该程序对编辑器的访问,则系统显示下列消息:

Userforbade all changes.

在这种情况下,不能更改程序。要更改程序,必须将它复制到新程序中并用新程序名再开始步骤1。否则,继续步骤5。

4. 输入对程序代码的更改。

5. 选择“检查”检查语法。

6. 保存程序的更改版本。

如果更改程序的私有版本(开发类$TMP),则立即保存更改版本。

如果从$TMP之外的开发类更改程序,则会出现一个窗口,从中可以指定更正请求号(Change Request Number)。

7. 运行程序测试它(关于测试的详细信息,参见测试程序(页11))。

配给程序

介绍

可以将事务代码分配给类型1的单独程序,以后就将这些程序作为事务代码处理。在中对事务有说明。

运用

1. 按照本节上述主题所述,创建单独程序。

2. SAP菜单树:工具 -> ABAP 工作台 -> 开发 -> 其他工具 -> 事务,事务代码:SE93。

3. 填入事务代码并选择“维护事务”屏幕上的“创建”

4. 在下列对话屏幕上选择“报表事务”;

5. 在下列“创建报表事务”屏幕上填入所需条目“事务说明”和“程序”。

6. 将事务代码保存在开发类中。

开发类可以用事务代码SM30维护视图V_TDEVC来创建或修改。

快速入门

首先、ABAP是技术开发,想快速培训出师,你必须得有编程基 础。从这点考察培训机构,你就看看他们有没有笔试,如果 啥条件都不要求,那肯定是不能参加的。编程基础不是一天 两天都锻炼出来的。

其二、打听定向委培的公司,是否真正有项目。这个很好办, 招聘求职的网上一搜就知道了。

其三、看培训机构的老师水平和课程安排如何。这个没办法 从网上了解太多,只能实地考察了。

其四、做好这方面的求职准备。培训机构推荐是一回事,你自 己找机会也不能忽略。

其五、ABAP职位需求非常旺盛,有点谱,学到了其实是蛮 容易找工作的。培训带你入门,修行看个人嘛 我见到过很好 的培训机构,里面有的学员照样学不出来,为啥? 不努力呗 !

最后,市 面上做这方面培训的,叫的出来的有达沃旗,sap私塾和91abap,赛跑网ABAP。选择比较好的培训机构至关重要。建议考虑口碑,价格,就业率等等各方面的因素。

展示报表

ABAP是SAP的基石,入门SAP,首先学好ABAP至关重要,ABAP中ALV部分也很重要,展示一个例子:

TABLES:marav. "MARA&MAKT 视图

*---------------------------------------------------------------------*

DATA:BEGIN OF gt_tab OCCURS 100,

matnr LIKE marav-matnr,

maktx LIKE marav-maktx,

matkl LIKE marav-matkl,

ntgew LIKE marav-ntgew,

gewei LIKE marav-gewei,

END OF gt_tab.

DATA i_repid LIKE sy-repid.

***ALV设定

TYPE-POOLS: slis.

DATA gt_fieldcat TYPE slis_t_fieldcat_alv.

DATA is_layout TYPE slis_layout_alv.

***选择屏幕制作

SELECT-OPTIONS:

s_matnr FOR marav-matnr MATCHCODE OBJECT mat1.

START-OF-SELECTION.

***取数据

SELECT * FROM marav

INTO CORRESPONDING FIELDS OF TABLE gt_tab

WHERE

matnr IN s_matnr.

END-OF-SELECTION.

i_repid = sy-repid.

*使用函数得到gt_fieldcat内表

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = i_repid

i_internal_tabname = 'GT_TAB' "capital letters!

i_inclname = i_repid

CHANGING

ct_fieldcat = gt_fieldcat

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

IF sy-subrc <> 0.

ENDIF.

***layout设定

is_layout-zebra = 'X'.

is_layout-colwidth_optimize = 'X'. "优化列宽选项是否设置

***单击弹出明细设定

* is_layout-f2code = '&ETA'.

* is_layout-detail_popup = 'X'.

* is_layout-detail_initial_lines = 'X'.

* 展示数据

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = i_repid

it_fieldcat = gt_fieldcat

i_save = 'A'

i_callback_user_command = 'FRM_UCOMM' "实现双击事件

is_layout = is_layout

TABLES

t_outtab = gt_tab

EXCEPTIONS

program_error = 1

OTHERS = 2.

IF sy-subrc <> 0.

ENDIF.

参考资料

1.ERP系统开发工具——ABAP的应用研究·中国知网

目录[+]