abap基本语法汇总.docx

上传人:b****5 文档编号:28301743 上传时间:2023-07-10 格式:DOCX 页数:98 大小:84.28KB
下载 相关 举报
abap基本语法汇总.docx_第1页
第1页 / 共98页
abap基本语法汇总.docx_第2页
第2页 / 共98页
abap基本语法汇总.docx_第3页
第3页 / 共98页
abap基本语法汇总.docx_第4页
第4页 / 共98页
abap基本语法汇总.docx_第5页
第5页 / 共98页
点击查看更多>>
下载资源
资源描述

abap基本语法汇总.docx

《abap基本语法汇总.docx》由会员分享,可在线阅读,更多相关《abap基本语法汇总.docx(98页珍藏版)》请在冰豆网上搜索。

abap基本语法汇总.docx

abap基本语法汇总

一数据类型和对象

在ABAP中,可以使用与标准数据声明相似的语法处理数据类型,而与数据对象无关。

在程序中必须声明要使用的全部数据对象。

声明过程中,必须给数据对象分配属性,其中最重要的属性就是数据类型。

1.1基本数据类型

数据类型

默认大小

有效大小

初始值

说明

C

1

1-65535

SPACE

文本、字符(字母数字字符)

D

8

8

'00000000'

日期(格式:

YYYYMMDD)

F

8

8

0

浮点数

I

4

4

0

整型(整数)

N

1

1-65535

'00...0'

数字文本

P

8

1-16

0

压缩号

T

6

6

'000000'

时间(格式:

HHMMSS)

X

1

1-65535

X'00'

十六进制

对算术运算的非整型结果(如分数)进行四舍五入,而不是截断。

类型P数据允许在小数点后有数字。

有效大小可以是从1到16字节的任何值。

将两个十进制数字压缩到一个字节,而最后一个字节包含一个数字和符号。

在小数点后最多允许14个数字。

1.2系统定义的数据对象

SPACE

空白字符串

SY-SUBRC

系统执行传回值,0表示成功

SY-UNAME

用户

SY-DATUM

系统日期

SY-UZEIT

系统时间

SY-TCODE

当前执行程序的Transactioncode

SY-INDEX

当前LOOP循环过的次数

SY-TABIX

当前处理的是InternalTable(内部表)的第几行

SY-TMAXL

InternalTable(内部表)的总行数

SY-SROWS

屏幕总行数

SY-SCOLS

屏幕总列数

SY-VLINE

画竖线

SY-ULINE

画横线

SY-PAGNO

当前页号

SY-LINSZ

当前报表宽度

SY-LINCT

当前报表长度

SY-LISND

列表索引页

SY-LISTI

上一个列表的索引

SY-LILLI

绝对列表中选定的行号

SY-CUROW

屏幕上的行

光标列

真实行号

选择行的内容,长度为255

当前行

1.3确定数据对象的属性

如果要查明数据对象的数据类型,或者要在程序的运行期间使用其属性,可使用DESCRIBE语句。

语法如下:

DESCRIBEFIELD[LENGTH][TYPE[COMPONENTS]]

[OUTPUT-LENGTH][DECIMALS]

[EDITMASK].

将由语句的参数指定的数据对象的属性写入参数后的变量。

DESCRIBEFIELDS语句具有下列参数:

参数

用途

LENGTH

确定字段长度

TYPE

确定数据类型

OUTPUT-LENGTH

确定输出长度

DECIMALS

确定小数位

EDITMASK

确定转换例程

1.3.1确定字段长度

要确定数据对象的长度,利用DESCRIBEFIELD语句使用LENGTH参数,如下所示:

DESCRIBEFIELDLENGTH.

系统读取字段的长度,并将值写入字段

1.3.2确定数据类型

要确定字段的数据类型,利用DESCRIBEFIELD语句使用TYPE参数,如下所示:

DESCRIBEFIELDTYPE[COMPONENTS].

系统读取字段的数据类型,然后将值写入字段

除返回预定义数据类型C、D、F、I、N、P、T和X外,该语句还返回

s对于带前导符号的两字节整型

b对于无前导符号的一字节整型

h对于内表

C对于组件中没有嵌套结构的结构

C对于组件中至少有一个嵌套结构的结构

1.3.3确定输出长度

要确定字段的输出长度,利用DESCRIBEFIELD语句使用OUTPUT-LENGTH参数,如下所示:

DESCRIBEFIELDOUTPUT-LENGTH.

系统读取字段的输出长度,并将值写入字段

1.3.4确定小数位

若要确定类型P字段的小数位的个数,利用DESCRIBEFIELD语句使用DECIMALS参数,如下所示:

DESCRIBEFIELDDECIMALS.

系统读取字段的小数个数,并将值写入字段

1.3.5确定转换例程

要确定ABAP/4词典中某字段的转换例程是否存在,如果存在,名称是什么,利用DESCRIBEFIELD语句使用EDITMASK参数,如下所示:

DESCRIBEFIELDEDITMASK.

如果ABAP/4词典中字段的转换例程存在,则系统将其写入字段,然后将系统字段SY-SUBRC中的返回代码设为0。

可以像下面所显示的那样,在WRITE语句中将字段直接用作格式模板:

WRITEUSINGEDITMASK.

如果字段没有转换例程,则系统将返回代码设为4。

二数据输出到屏幕

2.1在屏幕上定位Write输出

通过制定字段名称前面的格式规范,可以在屏幕上定位WRITE语句的输出:

WRITEAT[/][][()].

此处

斜线‘/’表示新的一行

是最长为三位数字的数字或变量,表示在屏幕上的位置

是最长为三位数字的数字或变量,表示输出长度

如果格式规范只包含直接值(即,不是变量),可以忽略关键字AT。

2.2格式化选项

对WRITE语句,可以使用不同的格式化选项。

WRITE....<选项>.

(1)所有数据类型的格式化选项:

选项

用途

LEFT-JUSTIFIED

输出左对齐

CENTERED

输出居中

RIGHT-JUSTIFIED

输出右对齐

UNDER

输出直接开始于字段

NO-GAP

忽略字段后的空格

USINGEDITMASK

指定格式模板

USINGNOEDITMASK

撤消对ABAP/4词典中指定的格式模板的激活。

NO-ZERO

如果字段仅包含零,则用空格代替它们

对类型C和N字段,将自动代替前导零

(2)数字字段的格式化选项:

选项

用途

NO-SIGN

不输出前导符号

DECIMALS

定义小数点后的数字位数。

EXPONENT

在类型F字段中,在中定义幂数

ROUND

用10**(-r)乘类型P字段,然后取整

CURRENCY

按表格TCURX中的货币格式化。

UNIT

按表格T006中为类型P字段所指定的单位固定小数位数

(3)日期字段的格式化选项:

选项

用途

DD/MM/YY

用户主记录中定义的分隔符

MM/DD/YY

用户主记录中定义的分隔符

DD/MM/YYYY

用户主记录中定义的分隔符

MM/DD/YYYY

用户主记录中定义的分隔符

DDMMYY

无分隔符

MMDDYY

无分隔符

YYMMDD

无分隔符

2.3输出符号和图标

使用下列语法,可以在屏幕上输出符号和R/3图标:

WRITEASSYMBOL.

WRITEASICON.

符号和图标的名称(<符号名>和<图标名>)是定义系统的常量,这些常量在包含程序(尖括号是名称的一部分)中指定。

这些包含程序也包含符号和图标的简短说明。

输出符号和图标最简单的方法是使用语句结构。

要使符号和图标对程序可用,必须在程序中输入恰当的包含程序或更易理解的包含程序

2.4输出线和空行

(1)水平线

用下列语法,可以在输出屏幕上生成水平线:

ULINE[AT[/][][()]].

它等同于

WRITE[AT[/][][()]]SY-ULINE.

AT后的格式规范,与在屏幕上定位WRITE输出中为WRITE语句说明的格式规范完全一样。

如果没有格式规范,系统则开始新的一行,并用水平线填充该行。

否则,只按指定输出水平线。

生成水平线的另一种方法,是在WRITE语句中键入恰当数量的连字符,如下所示:

WRITE[AT[/][][()]]'-----...'.

(2)垂直线

用下列语法,可以在输出屏幕上生成垂直线:

WRITE[AT[/][]]SY-VLINE.

WRITE[AT[/][]]'|'.

(3)空行

用下列语法,可以在输出屏幕上生成空行:

SKIP[].

该语句从当前行开始,在输出屏幕上生成个空行。

如果没有指定的值,就输出一个空行。

(4)要将输出定位在屏幕的指定行上,使用:

SKIPTOLINE.

该语句允许将输出位置向上或向下移动。

2.5将字段内容作为复选框输出

使用下列语法,可以将字段的第一个字符,作为复选框输出到输出屏幕上:

WRITEASCHECKBOX.

如果字段的第一个字符是一个“X”,就显示复选框已填充。

如果字段的第一个字符是SPACE,就显示复选框为空。

该语句创建的复选框,默认状态是可输入的。

就是说,用户可以通过单击鼠标来填充它们或使其为空。

三赋值

在ABAP/4中,可以在声明语句和操作语句中给数据对象赋值。

在声明语句中,将初始值赋给声明的数据对象。

为此,可以在DATA、常量或STATICS语句中使用VALUE参数。

要在操作语句中给数据对象赋值,可以使用:

MOVE语句和WRITETO语句,对应于赋值运算符(=)

3.1用MOVE赋值

3.1.1基本赋值操作

要将值(文字)或源字段的内容赋给目标字段,可以使用MOVE语句或赋值运算符(=)。

MOVE语句的语法如下所示:

MOVETO.

MOVE语句将源字段的内容传送给目标字段

可以是任何数据对象。

必须是变量,不能是文字或常量。

传送后,的内容保持不变。

赋值运算符(=)的语法如下所示:

=.

MOVE语句和赋值运算符功能相同。

3.1.2用指定偏移量赋值

可以在每条ABAP/4语句中为基本数据类型指定偏移量和长度。

在这种情况下,MOVE语句语法如下:

MOVE[+][()]TO[+][()].

将字段+1位置开始且长度为的段内容赋给字段,覆盖从+1位置开始且长度为的段。

在MOVE语句中,所有偏移量和长度指定都可为变量。

3.1.3在字符串组件之间赋值

描述的MOVE语句赋值方法适用于基本数据对象和结构化数据对象。

另外,还有一种MOVE语句变体,允许将源字段串组件内容复制到目标字段串组件中。

语法如下:

MOVE-CORRESPONDINGTO.

该语句将字段串组件的内容赋给有相同名称的字段串组件。

对于每对名称,系统都执行MOVE语句,如下所示:

MOVESTRING1-TOSTRING2-.

系统分别执行所有必要类型转换。

该处理不同于包括整个字段串的赋值。

在这种情况下,应用不兼容的字段串和基本字段所述的转换规则。

3.2用WRITETO赋值

要将值(文字)或源字段内容写入目标字段,可以使用WRITETO语句:

WRITETO[

WRITETO语句将源字段内容写入目标字段

可以是任何数据对象,必须是变量,不能是文字或常量。

写入后,内容保持不变。

对于

WRITETO语句总是检查用户主记录中的设置。

例如,这些设置指定是将小数点显示为句号(.),还是逗号(,)。

WRITETO语句并不遵循类型转换中所述的转换规则。

目标字段解释为类型C字段。

系统总是将源字段内容转换为类型C,它不将结果字符串转换为目标字段的数据类型,而直接写入目标字段。

因此,不应使用数值数据类型的目标字段。

3.2.1运行时指定源字段

可以使用WRITETO语句在运行时指定源段。

为此,需用括号将包含源字段名的数据对象名括起来,并将其放在源字段位置:

WRITE()TO.

系统将赋给的数据对象值放到中。

然而,如果要在运行时指定目标字段,则必须按使用字段符号中所述,使用字段符号。

3.2.2用指定偏移量写入值

可以指定每条ABAP/4语句中基本数据对象的偏移量和长度。

WRITETO语句语法如下:

WRITE[+][()]TO[+][()].

将字段中从+1位置开始且长度为的内容赋给字段,覆盖从+1位置开始且长度为的段。

在WRITETO语句中,目标字段的偏移量和长度指定可为变量。

四数值运算

要处理数值数据对象并将结果值赋给数据对象,可以用COMPUTE语句或赋值运算符(=)。

COMPUTE语句语法如下所示:

COMPUTE=.

关键字COMPUTE可选。

4.1基本算术运算

ABAP/4支持四种基本算术运算,同时还支持乘方计算。

可以用数学表达式指定以下算术运算符:

+

加法

-

减法

*

乘法

/

除法

DIV

整除

MOD

求余

**

求幂

可以用关键字ADD、SUBTRACT、MULTIPLY和DIVIDE进行基本算术运算,而不使用数学表达式中的运算符。

4.2字符串的算术运算

类似于用MOVE-CORRESPONDING语句在字段串之间复制值,可以用以下关键字,执行字段串的算术运算:

ADD-CORRESPONDING

SUBTRACT-CORRESPONDING

MULTIPLY-CORRESPONDING

DIVIDE-CORRESPONDING

对于所有同名字段串组件,ABAP/4进行相应算术运算。

然而,仅当所有相关组件都是数值型数据类型时,该运算才有意义。

4.2.1添加字段顺序

除基本算术运算中所述的基本加法之外,ADD语句有几个变体,用于添加字段顺序。

例如,添加字段顺序并将结果赋给另一个字段:

ADDTHENUNTILGIVING.

如果、...、是在内存中相同类型和长度的等距字段序列,则进行求和计算并将结果赋给

添加字段顺序并将结果添加到另一个字段内容中:

ADDTHENUNTILTO.

该语句除了将字段总和添加到的旧内容中之外,与上面语句的工作方式相同。

4.3数学函数

以下内部函数使用所有三种数值数据类型(F、I和P)作为参数。

函数

结果

ABS

参数的绝对值

SIGN

参数符号:

1X>0

SIGN(X)=0ifX=0

-1X<0

CEIL

不小于参数的最小整数值

FLOOR

不大于参数的最大整数值

TRUNC

参数的整数部分

FRAC

参数的分数部分

4.4浮点函数

以下内部函数用浮点数据类型(F)作为参数。

函数

解释

ACOS、ASIN、ATAN;

COS、SIN、TAN

三角函数

COSH、SINH、TANH

反三角函数

EXP

基数为e的求幂函数(e=2.7182818285)

LOG

基数为e的自然对数

LOG10

基数为10的对数

SQRT

平方根

对于所有函数,正常数学约束适用。

否则,会产生运行错误。

五字符串

5.1移动字符串

5.1.1按给定位置数移动字符串

要按给定位置数移动字段内容,使用SHIFT语句,用法如下:

SHIFT[BYPLACES][].

该语句将字段移动个位置。

如果省略BYPLACES,则将解释为一个位置。

如果是0或负值,则保持不变。

如果超过长度,则用空格填充。

可为变量。

对不同()选项,可以按以下方式移动字段

LEFT:

向左移动位置,右边用个空格填充(默认设置)。

RIGHT:

向右移动位置,左边用个空格填充。

CIRCULAR:

向左移动位置,以便左边个字符出现在右边。

5.1.2移动字符串到给定串位置

要移动字段内容以到给定串位置,则使用SHIFT语句,用法如下:

SHIFTUPTO.

ABAP/4查找字段内容直到找到字符串并将字段移动到字段边缘。

选项与按给定位置数移动字符串中所述相同。

可为变量。

如果中找不到,则将SY-SUBRC设置为4并且不移动

否则,将SY-SUBRC设置为0。

5.1.3根据第一个或最后一个字符移动字符串

假设第一个或最后一个字符符合一定条件,则可用SHIFT语句将字段向左或向右移动。

为此,请使用以下语法:

SHIFTLEFTDELETINGLEADING.

SHIFTRIGHTDELETINGTRAILING.

假设左边的第一个字符或右边的最后一个字符出现在中,该语句将字段向左或向右移动。

字段右边或左边用空格填充,可为变量。

5.2替换字段内容

要用其它字符串替换字段串的某些部分,使用REPLACE语句。

REPLACEWITHINTO[LENGTH].

ABAP/4搜索字段中模式个位置第一次出现的地方。

如果未指定长度,按全长度搜索模式

然后,语句将模式在字段中第一次出现的位置用字符串替换。

如果指定长度,则只替换模式的相关部分。

如果将系统字段SY-SUBRC的返回代码设置为0,则说明在中找到且已用替换。

非0的返回代码值意味着未替换。

可为变量。

5.3大小写转换并替换字符串

可以将字母转换大/小写或使用替换规则。

要转换大/小写,使用TRANSLATE语句,用法如下:

TRANSLATETOUPPERCASE.

TRANSLATETOLOWERCASE.

这些语句将字段中的所有小写字母转换成大写或反之。

使用替换规则时,使用以下语法:

TRANSLATEUSING.

该语句根据字段中存储的替换规则替换字段的所有字符。

包含成对字母,其中每对的第一个字母用第二个字母替换。

可为变量。

5.4转换为可排序格式

可以将字符字段转换为可按字母顺序排列的格式:

CONVERTTEXTINTOSORTABLECODE.

该语句为字符字段填充可排序目标字段

字段必须是类型C且字段必须是类型X,最小长度为长度的16倍。

该语句目的是为字符字段创建相关字段,作为的按字母顺序排列的排序关键字。

在内表的内容和已解压缩的数据中进行排序。

如果对未转换的字符字段进行排序,则系统创建与各字母的特定平台内部编码相对应的顺序。

在对目标字段进行排序之后,转换CONVERTTEXT按这样的方式创建目标字段,相应的字符字段顺序按字母排序。

例如,在德语中,顺序为‘Miller、Moller、Mller、Muller’,而不是‘Miller、Moller、Muller、Mller’。

转换方法依赖于运行ABAP/4程序的文本环境。

文本环境在用户主记录中定义。

例外的是可以使用如下语句,在程序中设置文本环境:

SETLOCALELANGUAGE[COUNTRY][MODIFIER].

该语句根据语言设置文本环境。

对于选项COUNTRY,只要特定国家语言不同,就可以在语言以外指定国家。

对于选项MODIFIER,只要一个国家内语言不同,就可以指定另一个标识符,例如,排序顺序在电话簿和词典之间不同。

字段必须是类型C且长度必须与表TCP0C的关键字段长度相等。

表TCP0C是一个表格,从中进行平台相关的文本环境维护。

在语句SETLOCALE期间,系统根据TCP0C中的条目设置文本环境。

除了内部传送的平台特性之外,用SET语句指定表关键字。

如果等于SPACE,则系统根据用户主记录设置文本环境。

如果对于指定的关键字在表中无条目,则系统将产生运行错误。

文本环境影响ABAP/4中依赖于字符集的所有操作。

5.5覆盖字符字段

要用另一字符字段覆盖字符字段,使用OVERLAY语句,用法如下:

OVERLAYWITH[ONLY].

该语句用的内容覆盖字段中包含中字母的所有位置。

保持不变。

如果省略ONLY,则覆盖字段中所有包含空格的位置。

如果至少要替换中的一个字符,则将SY-SUBRC设置为0。

对于所有其它情况,将SY-SUBRC设置为4。

如果长,则只覆盖中的长度。

5.6搜索字符串

要搜索特定模式的字符串,请使用SEARCH语句,用法如下:

SEARCHFOR.

该语句在字段中搜索中的字符串。

如果成功,则将SY-SUBRC的返回代码值设置为0并将SY-FDPOS设置为字段中该字符串的偏移量。

否则将SY-SUBRC设置为4。

搜索串可为下列格式之一:

目的

搜索(任何字符顺序)。

忽略尾部空格

..

搜索,但是不忽略尾部空格

*

搜索以

展开阅读全文
相关搜索

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1