SAP ABAP 基础语法(声明语句、算术/比较/字符串运算符、引用类型、常用函数、条件循环语句、字符串操作语句)
1.声明语句:
|
|
说明 |
示例 |
|
TYPES |
定义数据结构类型 |
TYPES:BEGIN OF TY_STU1, ID TYPE N, NAME TYPE STRING, AGE TYEP I, END OF TY_STU1. |
|
DATA |
定义数据结构对象 |
DATA: GT_STU TYPE STANDARD OF TY_STU. |
|
CONSTANTS |
声明常量 |
CONSTANTS: BEGIN OF CT_STU2, NAME TYPE STRING VALUE ‘XIAOLI’, AGE TYEP I VALUE 12, END OF TY_STU2. |
|
TABLES |
声明表工作区 |
TABLES:STU. |
|
TYPE |
其后跟某种类型 |
DATA:BEGIN OF GS_STU3, ID TYPE N VALUE 00000001, NAME TYPE STRING VALUE ‘LILI’, END OF GS_STU3. |
|
LIKE |
其后可以跟实例对象 |
DATA:BEGIN OF GS_STU2, MSG LIKE GS_STU1 AGE TYPE I VALUE 12, END OF GS_STU2. |
(1) TYPES和DATA的区别
TYPES是用来自定义某种类型的,需要用DATA实例化后才可以使用,而DATA是用来声明实例变量的。
(2) TYPE和LIKE的区别
TYPE后面只能跟某种类型,LIKE后面跟实例对象;②参照结构体对象生成内表时,只能用LIKE,不能用TYPE;参照结构类型生成内表时,可以用LIKE(直接拥有参照结构类型的元素结构),也可以用TYPE(间接拥有被参照结构类型的元素结构);
2.运算符
|
算术运算符 |
说明 |
|
+ |
加 |
|
- |
减 |
|
* |
乘 |
|
/ |
除 |
|
DIV |
整除 |
|
MOD |
取模 |
|
** |
乘方 |
|
= |
赋值 |
|
MOVE-CORRESPONDING |
将一个结构中得数据赋值给另一个结构中得对应字段,只能存一行数据(注意:当遇到两个源结构字段不同,目标结构的字段同时包含源结构字段时,会出现部分源结构中的字段没有因为赋新值而清空的情况,需要用到CLEAR清空) |
|
比较运算符 |
说明 |
|
EQ(=) |
等于 |
|
NE(<>) |
不等于 |
|
GT(>) |
大于 |
|
LT(<) |
小于 |
|
GE(>=) |
大于等于 |
|
LE(<=) |
小于等于 |
|
A BETWEEN B AND C |
A是否在B和C之间 |
|
IS INITIAL |
是初始值 |
|
IS NOT INITIAL |
不是初始值 |
|
IS BOIND |
引用变量是否指向一个有效的引用 |
|
IS ASSIGNED |
FIELD SYMBOL是否分配有内存区域 |
|
IS SUPPLIED |
参数是否被实参赋值 |
|
字符串运算符 |
说明 |
|
CO |
仅包含 |
|
CN |
不仅包含 |
|
CA |
包含任何 |
|
NA |
不包含任何 |
|
CS |
包含字符串 |
|
NS |
不包含字符串 |
|
CP |
包含模式 |
|
NP |
不包含模式 |
3.引用类型
|
引用类型 |
语法 |
说明 |
|
FIELD-SYMBOLS |
①确定结构的FS:FIELD-SYMBOLS <FS> TYPE I. ②不确定结构的FS:FIELD-SYMBOLS <FS> TYPE ANY. |
FIELD-SYMBOLS相当于C语言的指针,定义并分配某个变量、结构或者内表给它,才能使用;如果使用前未分配,则会发生未分配错误。 |
|
ASSIGN |
ASSIGN (ID) TO <FS>. |
动态分配时,会修改SY-SUBRC,成功值为0;当分配不成功时,保持上一次的状态。 |
|
ASSIGN ID TO <FS>. |
静态分配时,不会修改SY-SUBRC,使用<FS> IS [NOT] ASSIGNED判断,当分配不成功时,是未分配状态。 |
|
|
UNASSIGN |
UNASSIGN <FS>. |
解除分配(初始化FS) |
|
COMPONENT … OF STRUCTURE |
ASSIGN COMPONENT COMP-ID OF STRUCTURE <FS1> TO <FS2> |
动态访问结构成员 |
|
TYPE REF TO |
|
定义一个数据对象,用来指向另外的数据 |
|
CREATE DATA |
|
动态避开内存 |
|
GET REFERENCE |
|
指向已经存在的内存变量 |
4.常用函数
|
函数名 |
说明 |
|
ABS(N) |
绝对值 |
|
SIGN(N) |
符号值,整数返回1,0返回0,负数返回-1 |
|
CEIL(N) |
向下取整 |
|
FLOOR(N) |
向上取整 |
|
TRUNC(N) |
取整数部分 |
|
FRAC(N) |
取小数部分 |
|
STRLEN(N) |
取长度 |
|
LINES(ARG) |
取行数 |
5.条件/循环语句
|
条件/循环语句 |
语法 |
|
IF |
IF <condition1>. …… ELSEIF <condition2>. …… ELSE. …… ENDIF. |
|
CASE |
CASE <X>. WHEN <X1>. …… WHEN <X2>. …… WHEN OTHERS. …… ENDCASE. |
|
DO |
DO [<N> TIMES]. …… ENDDO. |
|
WHILE |
WHILE <condition>. …… ENDWHILE. |
|
LOOP(通常用于内表) |
LOOP AT ITAB. …… ENDLOOP. |
循环中可能用到的关键词:
|
关键词 |
说明 |
|
CONTINUE |
无条件终止当前循环,执行下一次循环 |
|
CHECX |
有条件终止当前循环 |
|
EXIT |
终止所有循环 |
|
WAIT UP TO <N> SECONDS |
添加等待时间 |
6.字符串操作语句
|
关键词 |
说明 |
示例 |
|
CONCATENATE |
拼接 |
CONCATENATE ‘AAA’ ‘BBB’ TO TEXT. (TEXT是变量) |
|
REPLACE |
替换字符串内容 |
REPLACE ‘ABC’ WITH ‘MMF’ INTO ‘ABCDE’. |
|
SHIFT |
①移动字符串内容;②移动字符串给到定字符串。LEFT:向左移动<N>个位置(默认),RIGHT:向右移动<N>个位置,CIRCULAR:向左移动<N>个位置,右边出现<N>个字符。 |
SHIFT ‘ABDCE’ BY 2 PLACES LEFT. SHIFT ‘ABCDE’ UP TO ‘C’ LEFT. |
|
SHIFT ‘ABDCE’ BY 2 PLACES RIGHT. SHIFT ‘ABCDE’ UP TO ‘C’ RIGHT. |
||
|
SHIFT ‘ABDCE’ BY 2 PLACES CIRCULAR. SHIFT ‘ABCDE’ UP TO ‘C’ CIRCULAR. |
||
|
SPLIT |
拆分字符串 |
SPLIT ‘AA/BB’ AT ‘/’ INTO TEXT1 TEXT2. (TEXT1,TEXT2是变量) |
|
CONDENSE C [NO-GAPS] |
删除字符串中的空格 NO-GAPS删除前后空格 |
CONDENSE ‘AA BB CC’. |
|
TRANSLATE |
转换大/小写字符 |
大写:TRANSLATE ‘aBcDeF’ TO UPPER CASE. 小写:TRANSLATE ‘aBcDeF’ TO LOWER CASE. |
|
SEARCH |
搜索字符串 |
SEARCH ‘ABCDEFG’ FOR ‘C’. |
|
OVERLAY |
覆盖字符串 |
OVERLAY ‘a c e’ WITH ‘ABCDE’. |
|
WRITE TO |
把源的格式赋值到目标 |
WRITE SY-DATUM TO CHAR. (CHAR是变量) |
|
MOVE TO |
把源的值赋值到目标 |
MOVE SY-DATUM TO CHAR.(CHAR是变量) |

浙公网安备 33010602011771号