ABAP/4入门

这篇博客详细介绍了ABAP的基本语法,包括语句结构、数据声明、变量操作、运算符和表达式。还深入讲解了数据类型、内表、工作区、字符串操作以及逻辑表达式等内容,为ABAP初学者提供了全面的学习材料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ABAP语法规则

  1. ABAP程序是由若干个单独的语句组成的
  2. 每一个语句都用句点(英文)结束
  3. 语句的第一个单词一般为关键字
  4. 语句中单词之间至少要用一个空格隔开
  5. 语句可以缩进
  6. 一句语句可以由多行组成
  7. 在一行中可以由多个语句

ABAP 数据声明

变量定义基本格式

DATA < f > [(< length >)] < type> [< value>] [< decimals>].

< f >指定变量名
< length>指定变量长度
< type>指定变量的类型,还可以使用type来指定
< decimals> 指定变量小数的位数

  • 数据类型
    不占用内存空间。
    描述了数据对象的属性。
    是数据对象的属性并与数据对象联系紧密。
    用户可以自定义

  • 数据对象
    是程序在运行时使用的物理单元。
    占用内存空间。
    每个数据对象都有分配给它的特定数据类型。
    ABAP/4根据数据对象的数据类型处理数据对象。

  • 预定义基础数据类型
    在这里插入图片描述

简单的变量定义示范

DATA :  
W_CHAR          TYPE C,					"1位长度的字符变量  
W_MULCHAR(20)   TYPE C,					"20位长度的字符变量  
W_INTERGER      TYPE I VALUE 10,         "整型变量,并赋上了初值10  
W_FLOAT         TYPE F VALUE 1,2E-10,    "浮点数  
W_DATE          TYPE D VALUE '20030312', "日期  
W_TIME          TYPE T VALUE '123212',   "时间  
W_NUMBER        TYPE N,                  "1位数字变量  
W_MULNUM(10)    TYPE N,                  "10位数字变量  
W_QUAN          TYPE P,                  "缺省有3位小数的变量  	
W_CURR          TYPE P DECIMALS 2.       "固定2位小数的变量
DATA :  
W_CHAR_REF LIKE W_CHAR,					"和上面定义的W_CHAR一样  
W_MATNR    LIKE MARA-MATNR.              "和标准表MARA中字段MATNR一样 

预定义结构化类型
通常情况下,ABAP/4程序中的结构化数据类型是用户定义的。
在 ABAP/4 中,没有可用的预定义结构化数据类型,但下列例外:
例如: TABLES: sbooks.

生成了一个与表结构相同﹐命名相同的结构

常量定义
常量是包含值的数据对象,如果在程序中频繁使用某常量,可以利用常量语句,将其声明为具有固定值的变量:
语法:CONSTANTS < c>[< length>] < type> < value> [< decimals>].
要将字段串定义为常量,请写:
CONSTANTS: BEGIN OF < fstring>,
< component declaration>,

END OF < fstring>.
对于常量语句必须使用 参数,利用 参数指定的初始值,在程序的执行期间不能更改,否则,系统将报错误消息。

ABAP/4中的结构定义
结构声明同样有两种方法:

DATA / TYPES:
BEGIN OF <结构名>, <项目1>, <项目2>, …… <项目n>,
END OF <结构名>.

DATA : <结构名> TYPE|LIKE <结构|表>.

定义示例

1.直接声明
DATA:  
BEGIN OF TYP_STUDENT,    
NAME(40)   TYPE C,    
BIRTH_DATE TYPE D,    
BIRTH_TIME TYPE T,    
HEIGHT     TYPE P,    
WEIGHT     TYPE I,  
END OF TYP_STUDENT. 

2.使用like
DATA : 
TYP_STUDENT_REF LIKE TYP_STUDENT,  
TYP_MARA        LIKE MARA. 

3.特殊的用法中,在自己的结构中包含别的结构
DATA:  
BEGIN OF TYP_STUDENT2.    
INCLUDE STRUCTURE TYP_STUDENT.    
DATA:CLASS(2)     
TYPE N,         
DIRECTOR(40) TYPE C,  
END OF TYP_STUDENT2. 

内表

  • 概念
    内表是一种临时的数据表,它并不建立在Database Server上,而是建立在本地内存空间中,所以它不占用系统资源,而且存取速度快。正因为这些特性,使得内表在ABAP编程中显得相当的重要。

  • 特征
    内部表是ABAP/4中最核心的处理对象
    内部表是用来处理(增加、查询、修改、删除)一系列具有相同结构的数据的
    内部表涵盖了在其它编程语言中数组的功能
    内部表仅在ABAP/4程序运行时在内存空间里存在
    内部表是自动化的对象,它自动完成相关的内存管理

  • 分类
    内表可以分为有序表和无序表(hashtable),有序表又分为标准表和排序表。这三种表在使用中各有区别,一般我们未特别指明的情况下都是用的标准表。
    标准表是以Index来进行排列的,我们可以使用Index和Key来访问它。排序表是以Key来进行排列的,同样的,我们也可以使用Index和Key来进行访问。
    无序表是(hashtable)不按照任何规则进行排列的,对它的访问只能按照Key来进行。
    在这里插入图片描述

  • 内表的声明
    内部表的声明和结构的声明很相似,差别在于声明中有表明内部表身份的关键字OCCURS
    例:

    DATA :
    BEGIN OF TD_STUDENT OCCURS 0,
    NAME(40) TYPE C,
    BIRTH_DATE TYPE D,
    BIRTH_TIME TYPE T,
    HEIGHT TYPE P,
    WEIGHT TYPE I,
    END OF TD_STUDENT.

    DATA : TD_MARA LIKE MARA OCCURS 0.

  • 还有另外的声明方式
    语法

    DATA: < itab> TYPE < itabkind> OF < linetype>
    [WITH {UNIQUE | NON-UNIQUE} KEY < keydef>]
    [INITIAL SIZE < n>]
    [WITH HEADER LINE].

    例:

    TYPES:
    BEGIN OF TYP_FLIGHT,
    CARRID LIKE SPFLI-CARRID,
    CONNID LIKE SPFLI-CONNID,
    CITYFROM LIKE SPFLI-CITYFROM,
    FLDATE LIKE SFLIGHT-FLDATE,
    SEATSMAX LIKE SFLIGHT-SEATSMAX,
    END OF TYP_FLIGHT.

    DATA:
    TD_FLIGHT TYPE TABLE OF TYP_FLIGHT WITH HEADER LINE,
    TH_FLIGHT TYPE TYP_FLIGHT.

工作区

  • 概念及特征
    程序对内表的行操作不能直接进行,必须通过一种接口来进行,这个接口就是工作区(work area)。
    程序需要从关系数据库中提取数据到内表行中时,必须先将数据读入工作区,然后把工作区中的数据赋给内表的行。
    工作区必须具有和内表行一致或者可以相互转换的数据结构(一般是与内表行类型相同的结构体)。

  • 工作区的定义
    定义内表的同时,需要首先定义一个与该内表行结构相同的工作区对象供程序使用,将数据写入内表时,必须首先给工作区赋值,再通过APPEND等语句将工作区中的值添加或者插入到内表中

  • 示例

    TYPES:
    BEGIN OF TYP_STUDENT,
    	NAME(10) TYPE C,
    	AGE(2) TYPE N,
    	SEX(6) TYPE C,
    END OF TYP_STUDENT.
    
    DATA:
    TH_STUDENT TYPE TYP_STUDENT,			"声明工作区
    TD_STUDENT TYPE TABLE OF TYP_STUDENT	"声明内表
    
    TH_STUDNET-NAME = '张三'.
    TH_STUDENT-AGE = 22.
    TH_STUDENT-SEX = '男'.
    APPEND TH_STUDENT TO TD_STUDENT			"工作区赋值给内表
    
    TH_STUDNET-NAME = '惜梦'.
    TH_STUDENT-AGE = 22.
    TH_STUDENT-SEX = '女'.
    APPEND TH_STUDENT TO TD_STUDENT			"工作区赋值给内表
    
    CLEAR TH_STUDENT.						"清除工作区(复位赋值)
    
    LOOP AT TD_STUDENT INTO TH_STUDENT.		"循环输出
    " WRITE:
    	/ TH_STUDENT-NAMA,
    	  TH_STUDENT-AGE,
    	  TH_STUDENT-SEX.
    	CLEAR TH_STUDENT.
    ENDLOOP.
    
    
    
    输出结果:
    张三 22 男
    惜梦 22 女
    

变量操作

  • 赋值

    一般可以使用以下几种方式赋值
    等号赋值: A = B.
    MOVE赋值: MOVE B TO A.
    WRITE赋值: WRITE B TO A,
    复位赋值: CLEAR A.

  • 数据计算

    一般的加减乘除
    A = B + C.
    A = B – C.
    A = B * C.
    A = B / C.
    幂,取模,整除
    A = B ** C.
    A = B MOD C.
    A = B DIV C.
    数学函数(SIN,COS,TAN,ABS,CEIL,FLOOR)
    A = SIN(B).
    A = COS(B).
    计算的优先顺序
    括号
    函数
    **
    */DIV MOD
    +和-

  • 字符串操作

    STRLEN 取长度
    测量操作数的长度
    < n > = STRLEN < c >.
    示例:
    DATA :
    W_CHAR(20) TYPE C VALUE ‘AT21’.
    DATA :
    W_LEN TYPE N.
    W_LEN = STRLEN( W_CHAR ).
    WRITE W_CHAR.
    WRITE / W_LEN.
    那么输出结果就为:
    AT21
    4

    CONCATENATE字符串连接
    CONCATENATE < c1 > … < cn > INTO < c > [SEPARATED BY < s >].
    示例:
    DATA :
    W_RESULT(50) TYPE C,
    W_STR1(10) TYPE C VALUE ‘123’,
    W_STR2(15) TYPE C VALUE ‘ABC’,
    W_STR3(10) TYPE C VALUE ‘MK1’,
    W_DELIMITER TYPE C VALUE ‘/’.
    CONCATENATE W_STR1 W_STR2 W_STR3 INTO W_RESULT SEPARATED BY W_DELIMITER.
    WRITE : W_STR1,
    / W_STR2,
    / W_STR3,
    / W_RESULT.
    输出为:
    123
    ABC
    MK1
    123/ABC/MK1

    REPLACE字符串替换
    REPLACE < str1> WITH < str2> INTO < c> [LENGTH < l>].
    示例:
    DATA:
    T(10) VALUE ‘abcdefghij’,
    STRING LIKE T,
    STR1(4) VALUE ‘cdef’,
    STR2(4) VALUE ‘klmn’,
    STR3(2) VALUE ‘kl’,
    STR4(6) VALUE ‘klmnop’,
    LEN TYPE I VALUE 2.
    STRING = T.
    WRITE STRING.
    REPLACE STR1 WITH STR2 INTO STRING.
    WRITE / STRING.
    STRING = T.
    REPLACE STR1 WITH STR2 INTO STRING LENGTH LEN.
    WRITE / STRING.
    STRING = T.
    REPLACE STR1 WITH STR3 INTO STRING.
    WRITE / STRING.
    STRING = T.
    REPLACE STR1 WITH STR4 INTO STRING.
    WRITE / STRING.

    CONDENSE压缩
    CONDENSE < c> [NO-GAPS].
    示例:
    DATA:
    STRING(25) VALUE ‘one two three four’,
    LEN TYPE I.LEN = STRLEN( STRING ).
    WRITE: STRING, ‘!’.
    WRITE: / 'Length: ', LEN.
    CONDENSE STRING.
    LEN = STRLEN( STRING ).
    WRITE: / STRING, ‘!’.
    WRITE: / 'Length: ', LEN.
    CONDENSE STRING NO-GAPS.
    LEN = STRLEN( STRING ).
    WRITE: / STRING, ‘!’.
    WRITE: / 'Length: ', LEN.

    SHIFT移位
    SHIFT < c> [ BY < n > PLACES] [< mode >].
    SHIFT < c> LEFT DELETING LEADING < str >.
    SHIFT < c> RIGHT DELETING TRAILING < str >.
    示例:
    DATA :
    TEMP(20) VALUE ‘A213NALA2’,
    STRING LIKE TEMP,
    STR(2) VALUE ‘A2’.
    STRING = TEMP.
    WRITE STRING.
    SHIFT STRING BY 3 PLACES LEFT.
    WRITE / STRING.
    STRING = TEMP.
    SHIFT STRING BY 2 PLACES RIGHT.
    WRITE / STRING.
    STRING = TEMP.
    SHIFT STRING LEFT DELETING LEADING STR.
    WRITE / STRING.
    结果:
    A213NALA2
    3NALA2
    A213NALA2
    13NALA2

    TRANSLATE切换大小写
    TRANSLATE < c > TO UPPER CASE.
    TRANSLATE < c > TO LOWER CASE.
    示例:
    DATA :
    STR1(20) VALUE ‘a21gFDFS123’,
    STR2(20) VALUE ‘a21gFDFS123’.
    TRANSLATE STR1 TO UPPER CASE.
    TRANSLATE STR2 TO LOWER CASE.
    WRITE : STR1 , / STR2.
    输出结果为:
    A21GFDFS123
    a21gfdfs123

    SEARCH字符串搜索
    在字符串中查指定的内容
    SEARCH < c > FOR < str > < options >.
    示例:
    DATA :
    STRING(30) VALUE ‘This is a simple sentence’.
    SEARCH STRING FOR ‘Thisis’.
    WRITE: SY-SUBRC, SY-FDPOS.
    SEARCH STRING FOR ‘SEN’.
    WRITE: / SY-SUBRC, SY-FDPOS.
    输出结果为:
    4 0
    0 17
    注:SY-FDPOS用于显示查找字符串在母字符串中的位置
    在字段c中查找字符串str.如果找到,则将SY-SUBRC返回0,SY-FDPOS返回字段c中该字符串的位置(从左算起的字节偏移量),否则SY-SUBRC返回4

    SPLIT字符串分割
    SPLIT < c> AT < del > INTO < c1 > … < cn >.
    示例:
    DATA :
    STR(30) VALUE ‘Part1 * Part2 * Part3 * Part4’,
    STR1(30), STR2(30), STR3(30),
    DEL(1) VALUE ‘*’.
    SPLIT STR AT DEL INTO STR1 STR2 STR3.
    WRITE : STR, / STR1, / STR2, / STR3.
    输出结果为:
    Part1 * Part2 * Part3 * Part4
    Part1
    Part2
    Part3 * Part4

  • 内表操作

    1.初始化工作区以及内表
    要初始化有或没有表头的内表,请使用 REFRESH 语句,用法如下:REFRESH .该语句将内表重置为填充它以前的状态,这意味着表格将不包含任何行。
    如果使用没有表格工作区域的内表,可以使用 CLEAR 语句代替 REFRESH 语句,用法如下:CLEAR < itab>.
    如果使用有表头行的内表,CLEAR 语句仅清除表格工作区域。要重置整个内表而不清除表格工作区域,使用 REFRESH 语句或 CLEAR 语句,用法如下:CLEAR < itab>[].内表名称之后的方括号指内表体。
    使用 REFRESH 或 CLEAR 初始化内表后,系统保持在内存中保留的空间 。可以用 FREE 语句释放内存,用法如下:FREE < itab>.
    也可以使用 FREE 语句重置内 表并直接释 放其内存,而不必先使用 REFRESH 或 CLEAR。与 REFRESH 一样,FREE 在表格体上,而不在表格工作区域上工作。
    在 FREE 语句之后,可以再次定位内表。这样,系统就再次保留内存空间。
    可以使用如下逻辑表达式检查内表是否为空:… < itab> IS INITIAL …

    APPEND
    APPEND [wa |INITIAL LINE] TO itab.
    语句用来把表头或工作区< wa >里的数据添加到内表< itab >的末尾。 APPEND [wa TO] itab SORTED BY f.
    把工作区wa中的数据添加到itab内表中,并按字段f排序。
    注:工作区< wa >结构要和内表itab结构要一样。
    如果是wa则把工作区中的数据添加到内表itab的末尾,如果用“INITIAL LINE”则添加一个空行。

    INSERT
    INSERT [wa |INITIAL LINE] INTO itab [INDEX idx].
    INSERT [wa |INITIAL LINE] INTO TABLE itab.
    INSERT LINES OF itab1 [FROM idx1] [TO idx2] INTO itab2 [INDEX idx3].
    INSERT LINES OF itab1 [FROM idx1] [TO idx2] INTO TABLE itab2.
    INSERT语句用来把表头或工作区里的内容添加< itab >的指定位置。
    如果INDEX被指定,该语句将会将记录插入到指定置。
    如果INDEX未指定,对标准表记录会被添加到末尾,对排序表记录会自动按照Key进行排序。
    TYPES:
    BEGIN OF TYP_STUDENT,
    NAME(10) TYPE C,
    AGE(2) TYPE N,
    SEX(6) TYPE C,
    END OF TYP_STUDENT.
    DATA:
    TH_STUDENT TYPE TYP_STUDENT, “工作区
    TD_STUDENT TYPE TABLE OF TYP_STUDENT. ”内表
    TH_STUDENT-NAME = ‘张三’.
    TH_STUDENT-AGE = 22.
    TH_STUDENT-SEX = ‘男’.
    APPEND TH_STUDENT TO TD_STUDENT.”工作区赋值给内表
    TH_STUDENT-NAME = ‘惜梦’.
    TH_STUDENT-AGE = 22.
    TH_STUDENT-SEX = ‘女’.
    APPEND TH_STUDENT TO TD_STUDENT.
    TH_STUDENT-NAME = ‘追风’.
    TH_STUDENT-AGE = 22.
    TH_STUDENT-SEX = ‘女’.
    INSERT TH_STUDENT INTO TD_STUDENT INDEX 1. "指定了index,插入到指定的位置
    结果:
    追风 22 女
    张三 22 男
    惜梦 22 女

    MODIFY
    MODIFY itab [FROM wa] [INDEX idx] [TRANSPORTING f1 … fn]. MODIFY TABLE itab [FROM wa] [TRANSPORTING f1 … fn]. MODIFY itab [FROM wa] TRANSPORTING f1 … fn WHERE cond.
    MODIFY语句可以根据指定的Index或Key来把表头或工作区的内容修改到中的相应记录。当然,指定Index或Key的记录首先必须在中存在。
    TRANSPORTING限定被修改的列。当我们不需要修改内表中的所有列时,用TRANSPORTING 关键字。

    COOLECT
    COLLECT [wa INTO] itab. Addition: … SORTED BY f
    COLLECT根据表关键字附加行,如果用APPEND语句附加行,则具有相同表关键字的数据行(甚至是完全相同的数据行)可以同时存在于一个内表中,但COLLECT 语句可以在内表中根据表关键字唯一的确定数据行(即具有相同关键字段的数据行不能重复出现)。
    注:使用COLLECT将内表值进行合计时,要先将内表数据进行排序。
    COLLECT根据表关键字附加行,如果用APPEND语句附加行,则具有相同表关键字的数据行(甚至是完全相同的数据行)可以同时存在于一个内表中,但COLLECT 语句可以在内表中根据表关键字唯一的确定数据行(即具有相同关键字段的数据行不能重复出现)。
    COLLECT [wa INTO] itab. Addition: … SORTED BY f
    例:
    TYPES:
    BEGIN OF TYP_COMPANY,
    NAME(20) TYPE C,
    SALES TYPE I,
    END OF TYP_COMPANY.
    DATA:
    TH_COMPANY TYPE TYP_COMPANY, "工作区
    TD_COMPANY TYPE HASHED TABLE OF TYP_COMPANY WITH UNIQUE KEY NAME."无序表
    TH_COMPANY-NAME = ‘Duck’.TH_COMPANY-SALES = 10.
    COLLECT TH_COMPANY INTO TD_COMPANY.
    TH_COMPANY-NAME = ‘Tiger’.TH_COMPANY-SALES = 20.
    COLLECT TH_COMPANY INTO TD_COMPANY.
    TH_COMPANY-NAME = ‘Duck’.
    TH_COMPANY-SALES = 30.
    COLLECT TH_COMPANY INTO TD_COMPANY.
    结果:
    NAME | SALES
    ---------------
    Duck | 40
    Tiger | 20

    READ
    READ TABLE itab FROM wa [additions].
    READ TABLE itab WITH TABLE KEY k1 = v1 … kn = vn [additions].
    READ TABLE itab WITH KEY k1 = v1 … kn = vn [BINARY SEARCH] [additions].
    READ TABLE itab INDEX i [additions].
    如果用【BINARY SEARCH】,则首先要对内表进行排序。
    示例:
    READ TABLE TD_STUDENT INTO TH_STUDENT INDEX 1.

    LOOP
    LOOP AT itab.
    LOOP AT itab INTO wa.
    LOOP AT itab ASSIGNING < fs >.
    Additions:
    1… FROM n1 2. … TO n2 3. … WHERE logexp

    AT
    AT NEW f.
    在关键字f发生改变时,才执行相应的操作; AT END OF f. 在以f为关键字的数据行处理完毕后,才执行相应的操作;
    AT FIRST.在进行内表操作之前,执行的相应操作;
    AT LAST.
    在内表数据操作完毕之后,执行的相应操作。

    DELETE
    DELETE itab.
    DELETE TABLE itab WITH TABLE KEY k1 = v1 … kn = vn.
    DELETE TABLE itab [FROM wa].
    DELETE itab INDEX idx.DELETE itab WHERE logexp.
    DELETE ADJACENT DUPLICATES FROM itab.
    ADJACENT关键字用来删除内表中重复的数据行。

    DESCRIBE
    DESCRIBE TABLE itab.
    Additions:
    1… LINES n2. … OCCURS n3. … KIND k
    1,LINES表示内表的行数
    2,OCCURS 内表的初始大小
    3,KIND 内表的类型

    SORT
    SORT itab.
    … BY f1 f2 … fn
    … ASCENDING
    … DESCENDING
    … AS TEXT
    … STABLE
    AS TEXT主要是用于排序表
    使用STABLE,当SORT KEY不变时,经过多次排序,内表中的数据顺序不变。如果不用STABLE,则每次排序后,内表中的数据顺序可能发生改变。

运算符&表达式

  • 基础运算

    加减乘除取模整除幂+ - * / ** MOD DIV
    也可以用关键字 ADD、SUBTRACT、 MULTIPLY和 DIVIDE进 行基本算术运算
    操作符两边需要有空格

  • 日期运算

    日期变量的定义。
    常用的获取日期的系统变量
    日期的定义
    DATA: ULTIMO TYPE D.
    时间的定义
    DATA: P_TIME TYPE T.
    获取当前日期:
    ULTIMO = SY-DATUM.
    获取当前时间。
    P_TIME = SY-UZEIT .
    在某些情况下(例如按递减顺序对日期进行排序),用关键字 CONVERT 将日期从格式D转换为相反日期非常有用。语法:
    CONVERT DATE < d1 > INTO INVERTED-DATE < d2 >.
    CONVERT INVERTED-DATE < d1 > INTO DATE < d2 >.
    这些语句将 字段 < d1> 从格式 DATE 或 INVERTED-DATE 转换为格式 INVERTED-DATE 或 DATE 并将其赋给 < d2 >。
    对于该转换,ABAP/4 形成 9 的补数。
    备注:
    1、在ABAP语言中,在日期计算中,可以直接通过算术运算进行日期的加减,不过对于在平常的应用中我们也可以通过SAP的标准函数来实现。
    2、系统变量在SAP中的结构SYST中,在程序中我们可以通过SY-<变量名> 获取系统当前的相关信息。
    3、除了以上的常用的日期格式,有时候我们还会用到格林威治时间:GET TIME STAMP FIELD TIME_STAMP.

  • 逻辑表达式

    通用逻辑运算符:
    EQ(=):等于;NE(<>、><):不 等于;
    LT(<): 小 于;LE(<=):小 于等于
    GT(>):大 于;GE(>=):大 于等于
    IS操作符:
    IS INITIAL 检查字段是否为初始值;
    IS ASSIGNED 检查字段是否被分配。
    组合逻辑表达式:
    NOT AND OR
    字符串比较:
    CO 仅包含
    CN 不仅包含
    CA 包含任何
    NA 不包含任何
    CS 包含字符串
    NS 不包含字符串
    CP 包含模式
    NP 不包含模式
    因为除类型 N 和 C 外,系统不能执行任何其它类型转换,所以,在进行包含这些运算之一的比较时,操作数应该是类型 N 或 C。

  • 标准运算函数
    在这里插入图片描述

DATA :
N TYPE P DECIMALS 2.
DATA :
M TYPE P DECIMALS 2 VALUE '-5.55'.
N = ABS( M ).  
 WRITE:   'ABS:  ', N.
 N = SIGN( M ).  
 WRITE: / 'SIGN: ', N.
 N = CEIL( M ).  
 WRITE: / 'CEIL: ', N.
 N = FLOOR( M ). 
 WRITE: / 'FLOOR:', N.
 N = TRUNC( M ). 
 WRITE: / 'TRUNC:', N.
 N = FRAC( M ).  
 WRITE: / 'FRAC: ', N.
输出如下:
ABS:              5.55
SIGN:             1.00-
CEIL:             5.00-
FLOOR:            6.00-
TRUNC:            5.00-
FRAC:             0.55-
这些函数的参数不必为数值数据类型。如果选择其它类型 ,则被转换为数值类型。然而,由于性能原因 
应尽可能使用正确类型。
DATA: T1(10),      
T2(10) VALUE '-100'.
T1 = ABS( T2 ).
WRITE T1.
输出为: 
       100
执行了两种转换。首先 ,将类型 C 字段的内容 T2 转换为类型 P 并且系统用转换结果处理函数 ABS。
然后,在类型 C 字段 T1 的赋值期间 ,将函数结果转换回类型 C。

在这里插入图片描述

DATA: 
RESULT TYPE F,      
PI(10) VALUE '3.141592654'.
RESULT = COS( PI ).
WRITE RESULT.
输出为 -1.00000000000000E+00。 在进行计算之前,自动将字符字段 PI 转换为类型 F 字段。
ABAP/4开发宝典中文版是关于ABAP/4编程语言的手册。其目的在于: · 向新的ABAP/4程序员提供从基本语言组件到复杂报表和事务编码的全面指导 · 向资深ABAP/4程序员提供解决特殊问题的参考方案 为满足这些需求,特提供一个整体概述并本宝典分成三个部分,循序渐进,逐步深入 · ABAP/4的基本组件 · 如何编写报表程序 · 如何编写事务 ABAP/4开发宝典中文版目的不在替换ABAP/4关键字文档。可以通过如下方式调用该文档 · 从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序->ABAP/4关键字文档 · 选择ABAP/4编辑器中的“帮助” · 将光标放在ABAP/4编辑器中的关键字上,然后按下F1键 ABAP/4开发宝典中文版的真正目的在于说明如何使用以及为何使用ABAP/4关键字。并为此提供了许多示例,构成用户自己测试程序的基础。 要获取详细信息,可以进行以下某种操作: · 关于关键字的详细信息,请参阅关键字文档。 · 关于ABAP/4环境术语的详细信息,请从“ABAP/4编辑器:初始屏幕”(事务SE38)中选择“实用程序->ABAP/4关键字文档”。然后就会出现与解释文本相链接的主题层次。要找出这些文本用于哪些主题,请选择“查看->标题和关键字”。屏幕右侧就会出现一个名称列表。对于所有以ABEN而非TITL开头的名称,如果双击树结构中的主题,则会出现文本屏幕。 · 关于如何提高ABAP/4任务性能的技巧,请从“ABAP/4开发工作台”上选择事务SE30或“测试->运行时间分析”,然后单击“提示和技巧”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值