abap基本语法汇总Word文档下载推荐.docx
《abap基本语法汇总Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《abap基本语法汇总Word文档下载推荐.docx(76页珍藏版)》请在冰豆网上搜索。
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<
f>
[LENGTH<
l>
][TYPE<
t>
[COMPONENTS<
n>
]]
[OUTPUT-LENGTH<
o>
][DECIMALS<
d>
]
[EDITMASK<
m>
].
将由语句的参数指定的数据对象<
的属性写入参数后的变量。
DESCRIBEFIELDS语句具有下列参数:
参数
用途
LENGTH
确定字段长度
TYPE
确定数据类型
OUTPUT-LENGTH
确定输出长度
DECIMALS
确定小数位
EDITMASK
确定转换例程
1.3.1确定字段长度
要确定数据对象的长度,利用DESCRIBEFIELD语句使用LENGTH参数,如下所示:
LENGTH<
.
系统读取字段<
的长度,并将值写入字段<
。
1.3.2确定数据类型
要确定字段的数据类型,利用DESCRIBEFIELD语句使用TYPE参数,如下所示:
TYPE<
的数据类型,然后将值写入字段<
除返回预定义数据类型C、D、F、I、N、P、T和X外,该语句还返回
XXXs对于带前导符号的两字节整型
XXXb对于无前导符号的一字节整型
XXXh对于内表
XXXC对于组件中没有嵌套结构的结构
XXXC对于组件中至少有一个嵌套结构的结构
1.3.3确定输出长度
要确定字段的输出长度,利用DESCRIBEFIELD语句使用OUTPUT-LENGTH参数,如下所示:
OUTPUT-LENGTH<
的输出长度,并将值写入字段<
1.3.4确定小数位
若要确定类型P字段的小数位的个数,利用DESCRIBEFIELD语句使用DECIMALS参数,如下所示:
DECIMALS<
的小数个数,并将值写入字段<
1.3.5确定转换例程
要确定ABAP/4词典中某字段的转换例程是否存在,如果存在,名称是什么,利用DESCRIBEFIELD语句使用EDITMASK参数,如下所示:
EDITMASK<
如果ABAP/4词典中字段<
的转换例程存在,则系统将其写入字段<
,然后将系统字段SY-SUBRC中的返回代码设为0。
可以像下面所显示的那样,在WRITE语句中将字段<
直接用作格式模板:
WRITE<
USINGEDITMASK<
如果字段<
没有转换例程,则系统将返回代码设为4。
二数据输出到屏幕
2.1在屏幕上定位Write输出
通过制定字段名称前面的格式规范,可以在屏幕上定位WRITE语句的输出:
WRITEAT[/][<
pos>
][(<
len>
)]<
此处
XXX斜线‘/’表示新的一行
XXX<
是最长为三位数字的数字或变量,表示在屏幕上的位置
是最长为三位数字的数字或变量,表示输出长度
如果格式规范只包含直接值(即,不是变量),可以忽略关键字AT。
2.2格式化选项
对WRITE语句,可以使用不同的格式化选项。
WRITE....<
<
选项>
(1)所有数据类型的格式化选项:
选项
LEFT-JUSTIFIED
输出左对齐
CENTERED
输出居中
RIGHT-JUSTIFIED
输出右对齐
UNDER<
g>
输出直接开始于字段<
下
NO-GAP
忽略字段<
后的空格
指定格式模板<
USINGNOEDITMASK
撤消对ABAP/4词典中指定的格式模板的激活。
NO-ZERO
如果字段仅包含零,则用空格代替它们
对类型C和N字段,将自动代替前导零
(2)数字字段的格式化选项:
NO-SIGN
不输出前导符号
DECIMALS<
定义小数点后的数字位数。
EXPONENT<
e>
在类型F字段中,在<
中定义幂数
ROUND<
r>
用10**(-r)乘类型P字段,然后取整
CURRENCY<
c>
按表格TCURX中的货币<
格式化。
UNIT<
u>
按表格T006中为类型P字段所指定的单位<
固定小数位数
(3)日期字段的格式化选项:
DD/MM/YY
用户主记录中定义的分隔符
MM/DD/YY
DD/MM/YYYY
MM/DD/YYYY
DDMMYY
无分隔符
MMDDYY
YYMMDD
2.3输出符号和图标
使用下列语法,可以在屏幕上输出符号和R/3图标:
symbol-name>
ASSYMBOL.
icon-name>
ASICON.
符号和图标的名称(<
符号名>
和<
图标名>
)是定义系统的常量,这些常量在包含程序<
SYMBOL>
ICON>
(尖括号是名称的一部分)中指定。
这些包含程序也包含符号和图标的简短说明。
输出符号和图标最简单的方法是使用语句结构。
要使符号和图标对程序可用,必须在程序中输入恰当的包含程序或更易理解的包含程序<
LIST>
2.4输出线和空行
(1)水平线
用下列语法,可以在输出屏幕上生成水平线:
ULINE[AT[/][<
)]].
它等同于
WRITE[AT[/][<
)]]SY-ULINE.
AT后的格式规范,与在屏幕上定位WRITE输出中为WRITE语句说明的格式规范完全一样。
如果没有格式规范,系统则开始新的一行,并用水平线填充该行。
否则,只按指定输出水平线。
生成水平线的另一种方法,是在WRITE语句中键入恰当数量的连字符,如下所示:
)]]'
-----...'
(2)垂直线
用下列语法,可以在输出屏幕上生成垂直线:
]]SY-VLINE.
或
]]'
|'
(3)空行
用下列语法,可以在输出屏幕上生成空行:
SKIP[<
该语句从当前行开始,在输出屏幕上生成<
个空行。
如果没有指定<
的值,就输出一个空行。
(4)要将输出定位在屏幕的指定行上,使用:
SKIPTOLINE<
该语句允许将输出位置向上或向下移动。
2.5将字段内容作为复选框输出
使用下列语法,可以将字段的第一个字符,作为复选框输出到输出屏幕上:
ASCHECKBOX.
的第一个字符是一个“X”,就显示复选框已填充。
的第一个字符是SPACE,就显示复选框为空。
该语句创建的复选框,默认状态是可输入的。
就是说,用户可以通过单击鼠标来填充它们或使其为空。
三赋值
在ABAP/4中,可以在声明语句和操作语句中给数据对象赋值。
在声明语句中,将初始值赋给声明的数据对象。
为此,可以在DATA、常量或STATICS语句中使用VALUE参数。
要在操作语句中给数据对象赋值,可以使用:
XXXMOVE语句和WRITETO语句,对应于赋值运算符(=)
3.1用MOVE赋值
3.1.1基本赋值操作
要将值(文字)或源字段的内容赋给目标字段,可以使用MOVE语句或赋值运算符(=)。
MOVE语句的语法如下所示:
MOVE<
f1>
TO<
f2>
MOVE语句将源字段<
的内容传送给目标字段<
可以是任何数据对象。
必须是变量,不能是文字或常量。
传送后,<
的内容保持不变。
赋值运算符(=)的语法如下所示:
=<
MOVE语句和赋值运算符功能相同。
3.1.2用指定偏移量赋值
可以在每条ABAP/4语句中为基本数据类型指定偏移量和长度。
在这种情况下,MOVE语句语法如下:
[+<
o1>
l1>
)]TO<
o2>
l2>
)].
将字段<
从<
+1位置开始且长度为<
的段内容赋给字段<
,覆盖从<
的段。
在MOVE语句中,所有偏移量和长度指定都可为变量。
3.1.3在字符串组件之间赋值
描述的MOVE语句赋值方法适用于基本数据对象和结构化数据对象。
另外,还有一种MOVE语句变体,允许将源字段串组件内容复制到目标字段串组件中。
MOVE-CORRESPONDING<
string1>
string2>
该语句将字段串<
组件的内容赋给有相同名称的字段串<
组件。
对于每对名称,系统都执行MOVE语句,如下所示:
MOVESTRING1-<
component>
TOSTRING2-<
系统分别执行所有必要类型转换。
该处理不同于包括整个字段串的赋值。
在这种情况下,应用不兼容的字段串和基本字段所述的转换规则。
3.2用WRITETO赋值
要将值(文字)或源字段内容写入目标字段,可以使用WRITETO语句:
[<
option>
WRITETO语句将源字段<
内容写入目标字段<
可以是任何数据对象,<
写入后,<
内容保持不变。
对于<
,可以使用WRITE语句的所有格式化选项(UNDER和NO-GAP除外)。
WRITETO语句总是检查用户主记录中的设置。
例如,这些设置指定是将小数点显示为句号(.),还是逗号(,)。
WRITETO语句并不遵循类型转换中所述的转换规则。
目标字段解释为类型C字段。
系统总是将源字段内容转换为类型C,它不将结果字符串转换为目标字段的数据类型,而直接写入目标字段。
因此,不应使用数值数据类型的目标字段。
3.2.1运行时指定源字段
可以使用WRITETO语句在运行时指定源段。
为此,需用括号将包含源字段名的数据对象名括起来,并将其放在源字段位置:
WRITE(<
)TO<
系统将赋给<
的数据对象值放到<
中。
然而,如果要在运行时指定目标字段,则必须按使用字段符号中所述,使用字段符号。
3.2.2用指定偏移量写入值
可以指定每条ABAP/4语句中基本数据对象的偏移量和长度。
WRITETO语句语法如下:
中从<
的内容赋给字段<
在WRITETO语句中,目标字段的偏移量和长度指定可为变量。
四数值运算
要处理数值数据对象并将结果值赋给数据对象,可以用COMPUTE语句或赋值运算符(=)。
COMPUTE语句语法如下所示:
COMPUTE<
expression>
关键字COMPUTE可选。
4.1基本算术运算
ABAP/4支持四种基本算术运算,同时还支持乘方计算。
可以用数学表达式指定以下算术运算符:
+
加法
-
减法
*
乘法
/
除法
DIV
整除
MOD
求余
**
求幂
可以用关键字ADD、SUBTRACT、MULTIPLY和DIVIDE进行基本算术运算,而不使用数学表达式中的运算符。
4.2字符串的算术运算
类似于用MOVE-CORRESPONDING语句在字段串之间复制值,可以用以下关键字,执行字段串的算术运算:
XXXADD-CORRESPONDING
XXXSUBTRACT-CORRESPONDING
XXXMULTIPLY-CORRESPONDING
XXXDIVIDE-CORRESPONDING
对于所有同名字段串组件,ABAP/4进行相应算术运算。
然而,仅当所有相关组件都是数值型数据类型时,该运算才有意义。
4.2.1添加字段顺序
除基本算术运算中所述的基本加法之外,ADD语句有几个变体,用于添加字段顺序。
例如,添加字段顺序并将结果赋给另一个字段:
ADD<
n1>
THEN<
n2>
UNTIL<
nz>
GIVING<
如果<
、<
、...、<
是在内存中相同类型和长度的等距字段序列,则进行求和计算并将结果赋给<
添加字段顺序并将结果添加到另一个字段内容中:
该语句除了将字段总和添加到<
的旧内容中之外,与上面语句的工作方式相同。
4.3数学函数
以下内部函数使用所有三种数值数据类型(F、I和P)作为参数。
函数
结果
ABS
参数的绝对值
SIGN
参数符号:
1X>
0
SIGN(X)=0ifX=0
-1X<
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<
[BY<
PLACES][<
mode>
该语句将字段<
移动<
个位置。
如果省略BY<
PLACES,则将<
解释为一个位置。
是0或负值,则<
保持不变。
超过<
长度,则<
用空格填充。
可为变量。
对不同(<
)选项,可以按以下方式移动字段<
:
LEFT:
向左移动<
位置,右边用<
个空格填充(默认设置)。
RIGHT:
向右移动<
位置,左边用<
个空格填充。
CIRCULAR:
向左移动<
位置,以便左边<
个字符出现在右边。
5.1.2移动字符串到给定串位置
要移动字段内容以到给定串位置,则使用SHIFT语句,用法如下:
UPTO<
str>
ABAP/4查找<
字段内容直到找到字符串<
并将字段<
移动到字段边缘。
选项与按给定位置数移动字符串中所述相同。
中找不到<
,则将SY-SUBRC设置为4并且不移动<
否则,将SY-SUBRC设置为0。
5.1.3根据第一个或最后一个字符移动字符串
假设第一个或最后一个字符符合一定条件,则可用SHIFT语句将字段向左或向右移动。
为此,请使用以下语法:
LEFTDELETINGLEADING<
RIGHTDELETINGTRAILING<
假设左边的第一个字符或右边的最后一个字符出现在<
中,该语句将字段<
向左或向右移动。
字段右边或左边用空格填充,<
5.2替换字段内容
要用其它字符串替换字段串的某些部分,使用REPLACE语句。
REPLACE<
str1>
WITH<
str2>
INTO<
ABAP/4搜索字段<
中模式<
前<
个位置第一次出现的地方。
如果未指定长度,按全长度搜索模式<
然后,语句将模式<
在字段<
中第一次出现的位置用字符串<
替换。
如果指定长度<
,则只替换模式的相关部分。
如果将系统字段SY-SUBRC的返回代码设置为0,则说明在<
中找到<
且已用<
非0的返回代码值意味着未替换。
5.3大小写转换并替换字符串
可以将字母转换大/小写或使用替换规则。
要转换大/小写,使用TRANSLATE语句,用法如下:
TRANSLATE<
TOUPPERCASE.
TOLOWERCASE.
这些语句将字段<
中的所有小写字母转换成大写或反之。
使用替换规则时,使用以下语法:
USING<
该语句根据字段<
中存储的替换规则替换字段<
的所有字符。
包含成对字母,其中每对的第一个字母用第二个字母替换。
5.4转换为可排序格式
可以将字符字段转换为可按字母顺序排列的格式:
CONVERTTEXT<
INTOSORTABLECODE<
sc>
该语句为字符字段<
填充可排序目标字段<
字段<
必须是类型C且字段<
必须是类型X,最小长度为<
长度的16倍。
该语句目的是为字符字段<
创建相关字段<
,作为<
的按字母顺序排列的排序关键字。
在内表的内容和已解压缩的数据中进行排序。
如果对未转换的字符字段进行排序,则系统创建与各字母的特定平台内部编码相对应的顺序。
在对目标字段进行排序之后,转换CONVERTTEXT按这样的方式创建目标字段,相应的字符字段顺序按字母排序。
例如,在德语中,顺序为‘Miller、Moller、Mller、Muller’,而不是‘Miller、Moller、Muller、Mller’。
转换方法依赖于运行ABAP/4程序的文本环境。
文本环境在用户主记录中定义。
例外的是可以使用如下语句,在程序中设置文本环境:
SETLOCALELANGUAGE<
lg>
[COUNTRY<
cy>
][MODIFIER<
该语句根据语言<
设置文本环境。
对于选项COUNTRY,只要特定国家语言不同,就可以在语言以外指定国家。
对于选项MODIFIER,只要一个国家内语言不同,就可以指定另一个标识符,例如,排序顺序在电话簿和词典之间不同。
必须是类型C且长度必须与表TCP0C的关键字段长度相等。
表TCP0C是一个表格,从中进行平台相关的文本环境维护。
在语句SETLOCALE期间,系统根据TCP0C中的条目设置文本环境。
除了内部传送的平台特性之外,用SET语句指定表关键字。
等于SPACE,则系统根据用户主记录设置文本环境。
如果对于指定的关键字在表中无条目,则系统将产生运行错误。
文本环境影响ABAP/4中依赖于字符集的所有操作。
5.5覆盖字符字段
要用另一字符字段覆盖字符字段,使用OVERLAY语句,用法如下:
OVERLAY<
c1>
c2>
[ONLY<
该语句用<
的内容覆盖字段<
中包含<
中字母的所有位置。
如果省略ONLY<
,则覆盖字段<
中所有包含空格的位置。
如果至少要替换<
中的一个字符,则将SY-SUBRC设置为0。
对于所有其它情况,将SY-SUBRC设置为4。
比<
长,则只覆盖<
中的长度。
5.6搜索字符串
要搜索特定模式的字符串,请使用SEARCH语句,用法如下:
SEARCH<
FOR<
options>
该语句在字段<
中搜索<
中的字符串。
如果成功,则将SY-SUBRC的返回代码值设置为0并将SY-FDPOS设置为字段<
中该字符串的偏移量。
否则将SY-SUBRC设置为4。
搜索串<
可为下列格式之一:
目的
pattern>
搜索<
(任何字符顺序)。
忽略尾部空格
.<