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是变量)

posted @ 2022-02-21 18:55  LikZ-WM  阅读(758)  评论(0编辑  收藏  举报