ABAP开发

ABAP数据类型总结

2019-03-31  本文已影响0人  扇动蝴蝶的翅膀

数据对象:前面所定义的变量实际是指数据对象,所谓的数据对象只有在程序执行期间占用内存物理地址。ABAP语句首先利用数据对象名称确认地址,然后根据参照数据类型的字段长度及小数位等信息解析内容。数据对象里存在没有固定名称的类型。

ABAP程序包含三种数据类型:

数据类型层次结构

1. 标准数据类型

ABAP基本数据类型是系统内部定义的数据类型,可以分为完整的和非完整的

a. 完整的数据类型
b. 非完整的数据类型

类型F、I更接近于机器代码,因此执行演算时类型F、I比P速度块(差异不明显)
字符串类型分为4中:C、N、D、T
C:默认大小(1),初始值(space)
N:默认大小(1),初始值('00…0')
P:默认大小(8),初始值(0)
F:默认大小(8),初始值(0)
I:默认大小(4),初始值(0)
D:默认大小(8),初始值('00000000')
string:默认大小(变长),初始值('')

2. 本地数据类型

TYPES: BEGIN OF STU,
       NAME(10) TYPE C,
       AGE TYPE I,
       SEX TYPR C,
       END OF STU.
DATA: LISI TYPE STU.
LISI-NAME = '李四'.
LISI-AGE = 20.
LISI-SEX = 'BOY'.
WRITE:/ LISI.

3. 全局数据类型

更多系统数据参见数据表SYST
全局数据类型详细内容:https://www.jianshu.com/p/402f9c79f64f

4. DATA语句

TYPE type
DATA:gv_num  TYPE i.

多次执行相同命令时使用冒号可以避免反复使用相同命令的现象。如下:

DATA gv_num1 TYPEⅠ,               DATA:gv_num1 TYPEⅠ,
DATA gv_num2 TYPEⅠ.                      gv_num2 TYPEⅠ.
LIKE num
DATA:gv_num3 LIKE gv_num1.
VALUE int
DATA:gv_num    TYPE i        VALUE123
      gv_flag                 VALUE 'X'
      gv_val                  VALUE IS INITIAL,
      gv_idx   LIKE sy-tabix  VAlUE 45
LENGTN n
DATA:gv_num   TYPE n   LENGTH 2.
DECIMALS n
DATA:gv_num  TYPE p  DECIMALS 3.

5. 变量

定义全局变量
定义全局变量
定义局部变量

6. 赋值

a. 给变量赋值

MOVE var1 TO var2. 将var1的值存至变量var2,也可以写成下列方式
var2 = var1.
如果var1和var2的数据类型不同,就存在类型冲突的可能性,这时候如果存在转换规则,则会进行自动类型转换。

MOVE-CORRESPONDING<STRING1>TO<STRING2>.
WRITE<f1>TO<f2>[<option>].
*CORRESPONDING:相当的,相应的,一致的
  1. MOVE TO语句与<f2> = <f1>.中的Equal(=)语句相同。
  2. 复制字符串字段值时可以使用MOVE-CORRESPONDING语句,这时<string1>和<string2>的字段名可以不相同。
    MOVE-CORRESPONDING语句还经常用于不同结构体之间赋值,其特点是找到名字相同的字段名进行赋值。
  3. 当字段名及顺序不同的结构体之间相互赋值时,如果用MOVE语句,则会按顺序进行赋值,因此要使用MOVE-CORRESPONDING语句。
  4. MOVE语句还可以用于类型转换,即<f1>的数据类型会转换成<f2>类型。
  5. 在ABAP语言中除了类型D(Date)与类型T(Time)外都可以互相转换类型,一共有64种形态可以互相转换。
  6. WRITE语句主要有两种用法,一种是输出报表,另一种是变量赋值。
  7. 变量赋值时一般用WRITE TO语句,将数据对象<f1>的值转换成类型C后赋值给<f2>。前提条件是<f1>类型是可以转换成C类型的字段,否则会发生Syntax或runtime error的错误。
  8. 后面<option>里可以使用除了UNDER和NO-GAP以外的所有编辑格式选项。关于<option>具体参数可以在HELP中查询。

b. 利用Offset进行赋值

利用Offsets and Lengths 可以给部分字段赋值
从f1字段的p1+1位开始截取长度位11的字符串赋值给f2字段的从p2+1位开始截取长度位12的字符串的写法。
MOVE<f1>[+<p1>][(<11>)]TO<f2>[+<p2>][(<12>)].

c. 结构体之间的计算操作

结构体之间赋值用MOVE-CORRESPONDING语句,利用下面语句可以进行结构体之间的计算操作。

ADD-CORRESPONDING
SUBTRACT-CORRESPONDING
MULTIPLY-CORRESPONDING
DIVIDE-CORRESPONDING

CLEAR语句根据类型清除数据对象,恢复成默认值。

7. 运算符及函数

a. 算术符号

ABAP程序中,数学表达式可以进行任意多层嵌套
(20 + 10) * 10 + 10 / 2.

b. 数值函数

例:WRITE CEIL(-5.65)  =》-5.00
    WRITE CEIL(4.54)   =》 5.00
例:WRITE CEIL(-5.65)  =》-6.00
    WRITE CEIL(4.54)   =》 4.00

c. Floating-Point 函数:

Floating Point函数

8. 其他变量的定义

https://www.jianshu.com/p/191030c21ffc

数值文字:123、-123、……
字符文字:‘Hello’、‘123.234’、‘123.13E02’

附:

1. 命名程序规则

2. 数据类型和对象

数据类型和对象主要特征的概述:

3. 单引号 ' 和 grave ` 的去别

上一篇下一篇

猜你喜欢

热点阅读