我是靠谱客的博主 忧虑宝贝,这篇文章主要介绍ABAP数据定义和类型,现在分享给大家,希望可以做个参考。

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:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
*&---------------------------------------------------------------------* *& *& 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种:

复制代码
1
2
3
* 直接运行(SE38、SA38)。 * 从一个程序调用另一个程序(内部调用)。

程序调用code:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
*&---------------------------------------------------------------------* *& *& 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:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
*&---------------------------------------------------------------------* *& *& 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:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
*&---------------------------------------------------------------------* *& *& 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数据定义和类型内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部