ABAP程序开始语句(Introductory Statements),程序类型(一)
ABAP Introductory语句,由于没找到合适的翻译术语,我们姑且把它叫做ABAP开始语句,源码中所有的语句都是在开始语句之后的(有一个例外就是INCLUDE语句,它是可以被允许出现在第一个位置),并且每个程序只能包含一个这样的语句,不同类型的程序对应的是不同的开始语句,当然它们也决定了ABAP程序中声明和处理块可以包含什么以及他们在ABAP运行时环境被怎么执行。
下表包含ABAP中各独立编译单元对应的系统中程序类型(创建程序时,程序属性可以看到):
| 编译单元 | 程序类型 | 执行 | 开始语句 | 全局声明 | 处理块 |
| 可执行程序 | 可执行程序(1) |
SUBMIT语句或者通过使用事务码调用的dynpro或者选择屏幕, 可以直接执行,或者后台执行 |
REPORT | 本地接口和类,所有其他声明性语句 | 除了函数模块 |
| 类池 | 类型池(K) |
包含类,类制作器设置 使用事务码或者通过CALL METHOD调用可见方法 |
CLASS-POOL | 类库的一个全局类,本地接口和类,TYPES和CONSTANTS语句 | 只有方法 |
| 函数组或者函数池 | 功能组(F) |
函数组,由函数编辑器设置, 使用CALL FUNCTION调用一个函数模块或者使用事务码调用的一个dynpro |
FUNCTION-POOL | 本地接口和类,所有其他声明性语句 | 除了报表事件的事件块 |
| 接口池 | 接口池(J) | 包含接口,类制作器设置 | INTERFACE-POOL | 类库的全局接口 |
无 |
| 模块池 |
模块池(M) |
使用事务码调用一个dynpro 通过屏幕编辑器创建的模块池程序,可以使用事务码或者菜单功能执行 |
PROGRAM | 本地接口和类,其他声明性语句。 | 除了报表的事件块和函数模块 |
| 子例程池 | 子例程(S) | 程序FORM的部分,外部使用PERFORM调用 | PROGRAM | 本地接口和类,其他声明性语句。 | 事件块LAOD-OF-PROGRAM,子例程,方法 |
| 类型组或者类型池 | / | 无 | TYPE-POOL | TYPES和CONSTANTS语句 | 无 |
| 包含(I) |
说明:上图中标红的不能在程序属性中修改。
对于上图来说,有两个特殊的:
(1)创建程序的时候还包含一种类型的程序:包含(I),包含程序是被用在编译单元的上下文,所以不反映在上图中。
(2)类型池:从逻辑上来说它是独立的程序,但是他们不含可以执行的代码,只有类型和常量的定义,所以作为一个编译单元他们有自己的开始语句。

浙公网安备 33010602011771号