ABAP基础

来源:互联网 发布:安卓微信数据恢复大师 编辑:程序博客网 时间:2024/05/22 09:07
ABAP语言是整个SAP系统的基础开发工具和技术平台,其包含:事件驱动(Evet-Driven)、机制和模块化技术(Modularization)、完整的面向对象概念及实现方法(Object Oriented)。

ABAP程序的源代码结构包括数据定义和处理块两部分:

数据定义:整个程序中可见的全局数据类型和数据对象、选择屏幕元素以及ABAP Object中自定义的类和接口。

处理块(Processing Blocks):是ABAP的主要结构单元,定义程序在不同状态下执行的具体功能,在编译运行中,每一块都是一个独立的实体。

注:数据(包括选择屏幕元素)定义和声明语句是独立于任何处理块的,其他所有语句则都必须隶属于某个处理块。

 

 

 

 

 

1. ABAP程序含有三种类型的处理块:

·事件块(Event Blocks):每一个事件都需要有一个时间关键字引导,并单独构成一个语句,其后续语句隶属于该关键字代表的时间块,直到下一关键字出现为止。包括:报表事件、列表事件、屏幕事件

初始化:INITIALIATION

数据选择开始:START-OF-SELECTION

列表行选择:ATLINE-SELECTION

屏幕输出前处理:PROCESS BEFORE OUTPUT

平和输入后处理:PORCESS AFTER INPUT

·对话模块(Dialog Modules):开始和结束都有相关的关键字作为标志,是相对独立的程序单元。

·过程(Procedures):代码部分的开始和结束都有相关的关键字,也是相对独立的程序单元。过程包括功能模块和子程序,以及对象中的类方法可以被其他的模块调用,实现程序模块化和代码复用。

 

 

 

 

 

2. 处理块调用

处理块使程序代码模块,也是运行期间的单元;其具体出现的顺序与其在程序代码中的先后顺序无关。

 

 

 

 

 

3. 事件驱动

在各种处理块中,系统对事件快的调用过程有其特殊性:其调用总是与某时间地发生相关,也成为事件的触发。

 

 

 

 

 

4. 处理块与工作过程

通过调度机(Dispatcher)把应用程序的各个代码模块分解成许多对话步骤,并通过工作过程(Work Processes ,是系统的软件元素)在系统的应用层的虚拟机上进行处理,这保证了ABAP程序运行是的系统硬件平台无关性。

       程序类型

在创建ABAP程序时均需要指定其类型,程序类型将决定在改程序中可以包含哪些处理块,已经运行环境是如何处理该程序的。

ABAP程序分为两大类:一类是可以分陪事务代码,直接运行的应用程序,这类程序往往用于完成一种系统功能;另一类不是为了实现特定的功能,可能只在系统开发过程中具有意义。

各种不同程序类型的介绍:

1. 应用程序类型:

·可执行程序(Executable Program , 类型代码1):常常用于创建通常以以上的报表,整个程序由REPORT关键字语句进行引导,可以包含自定义的屏幕,在ABAP编辑器中进行编辑,并可以直接在ABAP编辑器中执行。此外,还可以通过SUBMIT语句或者分配报表事务代码来运行。

·模块池(Module pool , 类型代码M):出案件时有系统自动生成,由PROGRAM关键字进行引导,一般包含程序自定义的屏幕和对话模块,必须通过事务代码运行。

习惯上,应用程序往往被分为报表程序和对话程序(又称动态程序、事务程序),可执行程序中可以处理报表事件,也可以加入屏幕和对话模块;而模块池程序一般只用于事务程序的设计。

 

2. 其他程序类型:

其不能直接执行,但这些类型作为代码容器,可以为ABAP程序提供各种各样的模块化代码单元。

·功能组(Function groups ,类型代码F):由FUNCTION-POOL语句引导,包含一个或多个功能模块,可包含自己的屏幕,一般不能直接运行功能。功能模块是模块化的代码段,不嫩那个直接执行,需要在普通程序中调用。

·ABAP类库(Class pools , 类型代码K):由CLASS-POOL语句引导,是系统ABAP对象类和多个局域类。类库在ABAP工作台工具Class Builder进行创建。

·ABAP接口库(Interface pools , 类型代码J):由INTERFACE-POOL语句引导,与类型K程序相似,用于定义ABAP对象的接口,可被人以全局类和局部类实现,不能直接运行。

·子程序池(Subroutine pools , 类型代码S):由PROGRAM语句引导,包含一个或多个程序代码模块或类方法,续被普通程序调用,不可包含自定义的用户屏幕,在ABAP编辑器中进行编辑。

·类型组(Type groups , 无类型代码):由TYPE-POOL语句引导,在数据字典中定义,不包含任何屏幕和处理块,用于定义全局数据类型。

·包含程序(Include programs , 类型代码I):不需要任何语句引导,也无需要包含完整的处理块。无需独立编译,包含程序只是代码复用,在ABAP中编辑,可直接插入其他程序中。包含程序可通过INCLUDE语句被多个程序引用,与其他程序之间不存在参数接口。

程序元素

 

一个ABAP应用程序并不是仅仅由源代码组成,在上述各种类型的程序中,可能包含一个或多个下述程序元素的组合:

 

1. ABAP元素

·源代码(Source code)是ABAP语句的集合;分数据定义和具体处理代码两部分。

·变式(Variants)与选择屏幕相关,用于储存在选择屏幕中输入的数据选择标准,以方便再次输入。

·属性(Attributes)创建前后的维护修改,其中包含程序类型,使用的逻辑数据库以及应用模块等。

·文件元素(Text Elements)用于储存在文本池中的文字,包括:文本符号、选择文本、列表标题。

·文档(Documentation)程序的说明文,也指程序中的注释部分。

 

2. 屏幕

ABAP中可以包含屏幕的程序类型有可执行程序、模块池以及功能组程序。这些程序中能可已包含三种不同类型的屏幕:

·普通屏幕(Screens , 也称为SAP标准屏幕)经常出现在SAP系统事务设计中,包括幕布局,流逻辑,不能在ABAP编辑器中维护。

·选择屏幕(Selection screens)经常出现在报表程序中,用于接受用户输入。

·传统列表屏幕(List , 又称Classical Lists)是SAP发布ALV表格控制之前的主要报表程序输出界面。

 

3. GUI

Graphi User Interface,图形界面接口:式屏幕的组成部分,但设计过程中独立于SAP屏幕而存在。GUI元素在程序调用时分为状态(GUI Status)和标题(GUI Title)两个部分。不可以在ABAP编辑器中维护,但是可通过Object Navigtor(SE80)添加至程序中,并使用想过工具开发(Screen Painter和Menu Painter)。

语句格式

 

1. 语句结构

所有程序语句都有一个ABAP语句关键字引导,并由一个“.”作为结束的标志。

·声明语句:用于数据元素的定义和声明,形成独立于各个处理块的数据声明代码区域。

   常用数据声明关键字:TYPES、DATA、PARAMETER和TABLES等。

·模块化语句:用于定义ABAP程序运行时内的处理代码块,还可细分为时间关键字语句和过程定义关键字语句。

   事件关键字有:AT SELECTION-SCREEN、START-OF-SELECTION、AT USER-COMMAND等。

   注:期结束取决于下一时间关键字的出现。

   过程定义关键字有:FORM / ENDFORM、FUNCTION / ENDFUNCTION、MOSDULE / ENDMOSDULE等。

   注:一般有对应的END关键字标志出现。

·控制语句:通过条件控制程序处理块每部的程序流程。 IF、WHILE、CASE等。

·调用语句:用于调用已经定义好的处理块。如子程序、功能模块、其他程序。PERFORM、CALL、SUBMIT、LEAVE TO等。

·操作语句:用于程序内部数据操作和输出,该类型关键字较多:WRITE、MOVE、ADD等

·数据库语句:用于数据操作。包含Open SQL和Native SQL。

 

2. 编辑格式

在ABAP编辑器中书写语句时各个关键字,选项及操作数之间应至少保留一个空格,系统将换行符也解释为一个空格,而且并不要求每一语句都占一行。

   注:ABAP编辑器中的Pretty Printer功能可以实现缩进控制。

 

3. 语句链

如果连续使用相同关键字引导的语句,可以使用关键字后加“:”和语句间加“,”来形成语句链。

    例: WRITE : text1 , text2 .

等价于 WRITE test1 .

             WRITE text2 .

 

4. 注释

ABAP中的注释有两种形式:

·在开头使用“*”,则该整行都成为注释。

·在行中使用“"”,则符号后面的文字为注释部分。

   注:ABAP不区分大小写,习惯上所有ABAP关键字设为大写;数据对象、程序标题等设为小写形式,可通过编辑器中的Pretty Printer功能进行设定。

原创粉丝点击