1 概述
ABAP程序的源代码结构包括数据定义和处理块两个部分。
- 数据定义部分包含整个程序中可见的全局数据类型和数据对象,选择屏幕元素以及ABAP Objects自定义的类和接口。
- 处理块是ABAP程序的主要结构单元
Event Block (事件块)
每一个事件块都需要有一个事件关键字引导,这些事件关键字单独构成一个语句,其后续语句隶属于该关键字代表的事件块,直到下一个事件关键字出现为止,该事件块自动结束,因此没有显示的事件块结束关键字。事件块包括报表事件,列表事件,屏幕事件等。
- INITIALIZATION(初始化)
- START-OF-SELECTION(数据选择开始)
- ATLINE-SELECTION(列表行选择)
- PROCESS BEFORE OUTPUT(屏幕输入前处理)
- PRICESS AFTER INTPUT(屏幕输入后处理)
Dialog Modules(对话模块)
这种处理快代码部分的开始和结束都有相关的关键字作为标志,是相对独立的单元。
Procedures(过程 )
代码部分的开始和结束也有相关的关键字作为标志,是相对独立的程序单元。过程则包括功能模块和子程序,以及ABAP对象中的类方法,可以被其他的模块调用,以实现程序模块化和代码复用。
REPORT z_first_program.
DATA: text1(10) TYPE c VALUE 'Basic List',
text2(14) TYPE c VALUE 'Secondary List'.
START-OF-SELECTION .
DO 5 TIMES.
PERFORM output_line USING sy-index.
ENDDO.
AT LINE-SELECTION.
WRITE: text2, sy-lsind.
FORM output_line USING p_index.
WRITE: / text-001,
p_index.
ENDFORM.
ABAP处理块
对话模块和时间模块是在ABAP程序外部调用,过程则是通过程序语句内部调用。
2 程序类型
1 应用程序类型
- Executable program(可执行程序,类型代码为1)
常常用于创建通常意义上的报表,整个程序由REPORT
关键词引导,在ABAP编辑器中进行编辑,并可以直接在ABAP编辑器中执行。除此之外,还可以通过SUBMIT
语句或者分配报表事务代码来运行。可执行程序可以包含所有类型的ABAP处理块,但不能在其中定义功能模块(可以调用)。 - Moudel pool(模块池程序,类型代码为M)
在程序创建时由系统自动生成PROGRAM
关键字语句进行引导,一般包含程序自身定义的屏幕和对话模块,在ABAP编辑器中进行编辑,且必须通过事务代码运行。可以包含除报表事件和功能模块所有类型的ABAP处理块。
2 其他程序类型
其他程序类型的程序不能直接(或通过事务代码)执行的,但这些类型作为代码容器,可以作为ABAP程序提供各种各样的模块化代码单元。
- Function groups(功能组,类型代码F)
由FUNCTION-POOL 语句引导,包含一个或多个功能模块。 - Class pools(ABAP类库,类型代码K)
由CLASS-POOL语句引导,是APAB对象的定义部分。 - Interface pools(ABAP接口库,类型代码J)
由INTERFACE-POOL引导,与K类型程序相似,用于定义ABAP对象的接口。 - Subroutine pools(子程序池,类型代码S)
由PROGRAM语句引导,包含一个或多个子程序代码模块或类方法。 - Type groups(无类型代码)
由TYPE-POOL语句引导,在数据字典中定义。 - Include programs(包含程序,类型代码F)
不需要任何语句引导,也不需要包含完整的处理模块。
3 程序元素
- Source code(源代码)
- Variants(变式)
与选择屏幕有关,用于用户存储在选择屏幕中输入的数据,类比变量 - Attributes(属性)
- Text Elements(文本元素)
一种特殊的程序元素,储存在文本池中的文字,包括文本符号(Text symbols),选择文本(Selection texts),列表标题(List Headings) - Documentation(文档)
4 屏幕
- Screens(普通屏幕)
- Selection Screens(选择屏幕)
- Lists(传统列表屏幕)
5 语句类型
- 声明语句,用于数据元素的定义和声明,常用的关键字有
TYPES
,DATA
,PARAMETER
,TABLES
- 模块化语句,用于定义程序运行时内处理的代码块,还可以细分为事件关键字语句和过程关键字语句。
事件关键字:
AT SELECTION-SCREEN
AT USER-COMMAND
INITIALIZATION(初始化)
START-OF-SELECTION(数据选择开始)
ATLINE-SELECTION(列表行选择)
PROCESS BEFORE OUTPUT(屏幕输入前处理)
PRICESS AFTER INTPUT(屏幕输入后处理)
事件关键字:
FORM/ENDFORM
FUNCTION/ENDFUNCTION
MODULE/ENDMODULE
- 控制语句,控制程序流程
- 调用语句,用于调用已经定义好的处理块,例如子程序,功能模块等,常用语句包括
PERFORM
,CALL
,SUBMIT
,LEAVE TO
等 - 操作语句,程序内数据操作或输出,
WRITE
,MOVE
,ADD
- 数据库语句
3 程序运行
1 直接运行
在Transcation SE38 or SA38 中运行
2 调用执行
功能 | 报表调用 | 事务调用 |
---|---|---|
无返回调用 | SUBMIT | LEAVE TO TRANSACTION |
调用并返回 | SUBMIT AND RETURN | CALL TRANSACTION |
内部调用可以从另一个程序通过SUBMIT语句进行。
REPORT z_calling_program.
START-OF-SELECTION.
WRITE 'This program calls other program'.
SUBMIT Z_DATA_MANIPULATION.
image.png
通过Transcation code 调用的程序语句为LEAVE TO TRANSACTION
OR CALL TRANSACTION
3 事务代码
- SE80 对象导航器
- SE81 仓库信息系统
- SE84 仓库对象
- SE38 ABAP编辑器
- SE11 数据字典
网友评论