ABAP语句类型
声明语句(Declarative statements):用于数据元素(常量和变量)的定义和声明,常用声明语句关键字有TYPES、DATA、PARAMETER、TABLES。
模块化语句(Modularization statements):用于定义ABAP程序运行时内的处理代码块。事件关键字有AT SELECTION-SCREEN、START-OF-SELECTION、AT USER-COMMAND;过程定义关键字有FORM/ENDFORM、FUNCTION/ENDFOUNCTION、MODULE/ENDMODULE。
控制语句(Control statements):用于通过某种条件控制程序处理块内部的程序流程。例如IF、WHILE、CASE。
调用语句(Call statements):用于调用已经定义好的处理块,常用语句有PERFORM、CALL、SUBMIT、LEAVE TO。
操作语句(Operational statements):用于程序内部数据操作或输出,关键字有WRITE、MOVE、ADD。
数据库语句(Database statements):用于数据库操作,有两张操作类型Open SQL、Native SQL。
Tips:在ABAP编辑器中书写语句时各个关键字、选项及操作数之间至少保留一个空格。
在连续使用相同关键字引导的语句处,可以使用关键字后的“:”和语句间的“,”符号形成语句链,将它们连接在一起。例如:WRITE: text1, text2.
ABAP语言不区分大小写,习惯上将所有的ABAP关键字设为大写,数据对象、程序标题等设为小写形式。
三种类型的处理块
事件块(Event Blocks):包括报表事件、列表事件和屏幕事件。
例如:
INITIALIZATION(初始化)
START-OF-SELECTION(数据选择开始)
AT LINE-SELECTION(列表行选择)
对话模块(Dialog Modules):用于用户对话事务设计中,从属于对话事件(PAI、PBO)。
过程(Procedures):包括功能模块和子程序,以及ABAP对象中的类方法。可以拥有自己的局部数据。可以实现程序模块化和代码复用。
处理块code:
*&---------------------------------------------------------------------*
*&
*& Program Name: Z_PROCESSING_BLOCK
*& Author
: Leifchen
*& Date
: 2016.04.19
*& Description : ABAP 处理块
*&
*&---------------------------------------------------------------------*
REPORT z_processing_block.
DATA: text1 (10) TYPE c VALUE 'basic list',
text2( 14) TYPE c VALUE 'second list'.
*Processing Block 1: Event Block - START-OF-SELECTION
START-OF-SELECTION.
DO 5 TIMES .
PERFORM output_line USING sy -index.
ENDDO.
*Processing Block 2: Event Block - AT-LINE-SELECTION
AT LINE-SELECTION.
WRITE: text2 , sy- lsind.
*Processing Block 3: Procedure - Subroutine output_line
FORM output_line USING p_index.
WRITE: / text1 , p_index.
ENDFORM.
程序类型
1、应用程序类型
可执行程序(Executable Program):用于报表的创建,由REPORT关键字语句引导。可执行程序可以包含所有类型的ABAP处理块,但不能在其中定义功能模块(但可以进行调用)。
模块池(Module Pools):由PROGRAM关键字语句引导,必须通过事务代码运行,而且不能设定为后台工作方式。模块池可以包含除报表事件和功能模块外所有类型的ABAP处理块,包括屏幕PBO、PAI事件等。
2、其他程序类型
函数组(Function Groups):由FUNCTION-POOL语句引导,是模块化的代码段,不能直接执行,需要被程序调用。
类库(Class Pools):由CLASS-POOL语句引导,是系统ABAP Objects的定义部分。
接口库(Interface Pools):由INTERFACE-POOL语句引导,用于定义ABAP Objects的接口。
子程序池(Subroutine Pools):由PROGRAM语句引导,包含一个或多个子程序代码模块或类方法。
类型组(Type Groups):由TYPE-POOL语句引导,在数据字典中定义,用于定义全局数据类型。
包含程序(Include Programs):不需要任何语句引导,目的是代码复用。
习惯上,ABAP程序可分为两大类:报表程序和对话程序。
报表程序:包含一个选择屏幕供用户输入选择标准,据此筛选整理数据,并显示商用报表。
对话程序:包含一个或多个自开发的SAP标准屏幕,并在其中进行用户交互,实现比较复杂的事务功能(如数据库表更新等)。
程序调用
ABAP程序的启动方式有2种:
* 直接运行(SE38、SA38)。
* 从一个程序调用另一个程序(内部调用)。
程序调用code:
*&---------------------------------------------------------------------*
*&
*& Program Name: Z_CALLING_PROGRAM
*& Author
: Leifchen
*& Date
: 2016.04.19
*& Description : 程序调用
*&
*&---------------------------------------------------------------------*
REPORT z_calling_program.
START-OF-SELECTION.
WRITE 'This program calls another program.'.
*无返回调用
*
SUBMIT z_hello.
*调用并返回
SUBMIT z_hello AND RETURN .
结束程序:可以利用LEAVE语句在任意点强制结束当前运行的程序。
LEAVE PROGRAM.
源代码复用
包含程序:用于将主程序分割成几个独立的部分进行维护。不是可执行程序,不能单独运行,必须被其他程序调用。
宏:为了增强程序的可读性。
数据定义
数据类型和数据对象的区别
数据对象是程序内存中操作的数据值,数据类型定义它的属性,可以看作是生成对象的模板不占据内存单元,数据对象是类型的实例,是内存中的存储单元。
基本数据类型的定义和声明code:
*&---------------------------------------------------------------------*
*&
*& Program Name: Z_DEFINE_DATA
*& Author
: Leifchen
*& Date
: 2016.04.19
*& Description : 数据定义和声明
*&
*&---------------------------------------------------------------------*
REPORT z_define_data.
DATA: number1
TYPE n,
char1
TYPE c ,
date1
TYPE d,
time1
TYPE t,
int1
TYPE i ,
float1
TYPE f,
p1
TYPE p DECIMALS 2,
x1
TYPE x,
string1
TYPE string,
xstring1 TYPE xstring.
number1 = '123456'.
char1 = 'chen'.
date1 = '20160419'.
time1 ='163800'.
int1 ='123456'.
float1 ='123.456'.
p1 ='123.456789'.
x1 ='A2'.
string1 = 'leifchen'.
xstring1 = 'a3d2'.
WRITE: / 'number1=', number1 .
WRITE: / '-------'.
WRITE: / 'char1=', char1 .
WRITE: / '-------'.
WRITE: / 'date1=', date1 .
WRITE: / '-------'.
WRITE: / 'time1=', time1 .
WRITE: / '-------'.
WRITE: / 'int1=', int1 .
WRITE: / '-------'.
WRITE: / 'float=', float1 .
WRITE: / '-------'.
WRITE: / 'p1=', p1 .
WRITE: / '-------'.
WRITE: / 'x1=', x1 .
WRITE: / '-------'.
WRITE: / 'string1=', string1 .
WRITE: / '-------'.
WRITE: / 'xstring1=', xstring1 .
WRITE: / '-------'.
结构类型由多个数据元素作为组件构成,参照结构类型生成的数据对象称为结构体。
结构体定义code:
*&---------------------------------------------------------------------*
*&
*& Program Name: Z_DEFINE_STRUCTURE
*& Author
: Leifchen
*& Date
: 2016.04.19
*& Description : 结构体定义和声明
*&
*&---------------------------------------------------------------------*
REPORT z_define_structure.
TYPES: spfli_type
TYPE spfli,
surname( 20) TYPE c ,
BEGIN OF address,
name
TYPE surname ,
street( 30) TYPE c ,
city
TYPE spfli_type -cityfrom,
END OF address.
DATA my_add TYPE address.
my_add-name = 'Leifchen'.
my_add-street = 'highsunchina'.
my_add-city = 'changle'.
WRITE: / my_add .
表类型和内表
表类型的数据对象称为内表。一个内表定义时需要指定表的种类、行类型和表关键字等性质,这些性质将决定系统对内表的处理方式。
We have to be greater than what we suffer.
最后
以上就是忧虑宝贝最近收集整理的关于ABAP数据定义和类型的全部内容,更多相关ABAP数据定义和类型内容请搜索靠谱客的其他文章。
发表评论 取消回复