SAP ABAP——数据类型(六)【预定义基本数据类型详解】

举报
Thunder Wang 发表于 2023/01/31 22:24:23 2023/01/31
【摘要】 本文主要对SAP ABAP中预定义数据类型进行一个详细地介绍,在此前文章中我们已经对预定义数据类型有了一个最基本的了解,本文在此基础上会进行更加详细深入细致地讲解,主要包括预定义数据类型的分类。

 💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。


💅文章概要:本文主要对SAP ABAP中预定义数据类型进行一个详细地介绍,在此前文章中我们已经对预定义数据类型有了一个最基本的了解,本文在此基础上会进行更加详细深入细致地讲解,主要包括预定义数据类型的分类。


🤟每日一言:保护好你的梦想,等到它开花结果的那天,它会让你俯视所有曾经看低你的人。


预定义数据类型

           预定义的数据类型包括两种,一种是在系统中已经预定义好的基本数据类型,在T-CODE:SE38 ABAP编辑器中定义数据对象时可以直接使用的,其中大致有如下最常用的8种:

数据类型 默认长度 有效长度 默认值 解释说明
I 4 4 0 整型
F 8 8 0 浮点型
P 8 1~16 0 压缩数类型(将两个十进制数字压缩到一个字节)
C 1 1~65535 '...' 文本型
D 8 8 '00000000' 日期型(YYYYMMDD)
N 1 1~65535 '0...0' 数字字符串类型(0~9之间的字符组成的数字字符串)
T 6 6 '000000' 时间类型(格式:HHMMSS)
x 1 1~65535 X'0......0' 十六进制字段
STRING 0 ANY SPACE 字符串类型

           此外在T-CODE:SE11中定义数据元素时还有31种ABAP字典数据类型,它们是用于专门维护数据元素所使用的,列举如下:

数据类型 简短描述
ACCP 过账期间YYYYMM
CHAR 字符串
CLNT 集团
CUKY 货币字段的货币码
CURR 采用BCD格式的货币字段
DF16_DEC 以BCD格式保存的十进制浮点数
DF16_RAW 以二进制数字形式保存的十进制浮点数
DF16_SCL 具有比例的十进制浮点数(已弃用)
DF34_DEC 以BCD格式保存的十进制浮点数
DF34_RAW 以二进制数字形式保存的十进制浮点数
DF34_SCL 具有比例的十进制浮点数(已弃用)
DATS 使用格式YYYYMMDD的日期
DEC 采用BCD格式的压缩数字
FLTP 浮点数
INT1 1字节整数,0到255
INT2 2字节整数,-32768到32767
INT4 4字节整数,-2147483648到2147483467
INT8 8字节整数
LANG 语言代码
LCHR 长字节串
LRAW 长字节字符串
NUMC 数字文本
PREC 过时数据类型
QUAN 采用BCD格式的数量字段
RAW 字节序列
RAWSTRING 字节字符串(BLOB)
SSTRING 字符串
STRING 字符串(CLOB)
TIMS 格式为HHMMSS的时间
UNIT 数量字段的单元码
VARC 过时数据类型

预定义数据类型分类

  • 数字型

(一) 整数型I

           (1)值的范围是-2^31(-2147483648)~2^31(-2147483647)

DATA: gv_i type i VALUE -2147483649."默认值超出整型范围系统会报错


           (2)只支持整数类型
           (3)非整数类型的数据会进行四舍五入的计算

DATA: gv_i TYPE i VALUE '2.5'.
WRITE:gv_i.


(二) 小数型P

           (1)允许有小数位

DATA: gv_p TYPE p VALUE '2.5' DECIMALS 2.
WRITE:gv_p.


           (2)若不使用DECIMALS关键字指定小数位则与类型I效果一致

DATA: gv_p TYPE p VALUE '2.5' .
WRITE:gv_p.


           (3)可用长度为1~16,小数位最大长度为14位

DATA: gv_p TYPE p VALUE '2.5' DECIMALS 15."小数位超过14位系统会报错
WRITE:gv_p.


(三) 浮点型F

           (1)F类型的显示值的方式为科学计数法

DATA: gv_f TYPE f VALUE '25000'.
WRITE:gv_f.


上述图片中的值在数学中则是:2.5000000000000000×10^(+4)
说明:使用下面表格解释上述显示值各部分的含义

尾数 精度值 指数符号 正负符号 指数大小
2.5 后面的0 E + 04

           (2)值的范围是10^-307~10^308
           (3)F类型转换成二进制时会发生进位误差
           (4)F类型不能显示高精度数据

DATA: gv_p TYPE f VALUE '2.5635635'."从结果可以看出f类型在输出高精度数据时会无限趋近但不能等于该值
WRITE:gv_p.


  • 字符串型

(一) 文本型C

           (1)用于定义文字、数字、特殊文字

DATA: gv_c_1    TYPE c LENGTH 5 VALUE '你好',
      gv_c_2(5) TYPE c VALUE 12345,
      gv_c_3    TYPE char25 VALUE '$%^&*'.
WRITE:/ gv_c_1, / gv_c_2, / gv_c_3.


           (2)使用C类型时需指定长度,否则默认为一位长度

DATA: gv_c_1  TYPE c  VALUE 12345."不指定长度,默认为一位长度
WRITE:/ gv_c_1.


           (3)使用C类型指定长度语法拥有多种,下面几个例子的表达均不同但是效果一样:

DATA: gv_c_1    TYPE c LENGTH 5 VALUE 12345,
      gv_c_2(5) TYPE c  VALUE 12345,
      gv_c_3    TYPE char5  VALUE 12345.
WRITE:/ gv_c_1, / gv_c_2, / gv_c_3.

           (4)当使用C类型定义数字时,若定义长度超过数字长度,则自动在数字前面补齐空字符串

DATA: gv_c_1 TYPE c LENGTH 5 VALUE 12345,
      gv_c_2 TYPE c LENGTH 20 VALUE 12345.
WRITE:/ gv_c_1, / gv_c_2.


(二) 数字文本型N

           (1)用于显示C类型数字,以字符串形式显示整数

DATA: gv_n TYPE n LENGTH 5 VALUE 12345.
WRITE:/ gv_n.

           (2)定义长度超过变量值时,补充前导0输出
DATA: gv_n TYPE n LENGTH 6 VALUE 12345.
WRITE:/ gv_n.


           (3)使用N类型时需指定长度,否则默认为一位长度

DATA: gv_n TYPE n VALUE 12345.
WRITE:/ gv_n.



(三) 日期型D

           (1)用于显示日期类型(关于sy-datum和sy-datlo的区别将在后续文章中进行讲解)

DATA: gv_d_1 TYPE d ,
      gv_d_2 TYPE d .
gv_d_1 = sy-datum.
gv_d_2 = sy-datlo.
WRITE:/ gv_d_1, / gv_d_2.



(四) 时间型T

           (1)用于显示时间类型(时间类型以秒s作为单位)

DATA: gv_t TYPE t.
gv_t = sy-uzeit.
WRITE:/ gv_t.


  • 固定长类型

    ABAP提供了8种固定长度的基本预定义数据类型,罗列如下:

固定长类型 默认长度 有效长度 默认值 解释说明
I 4 4 0 整型
F 8 8 0 浮点型
P 8 1~16 0 压缩数类型(将两个十进制数字压缩到一个字节)
C 1 1~65535 '...' 文本型
D 8 8 '00000000' 日期型(YYYYMMDD)
N 1 1~65535 '0...0' 数字字符串类型(0~9之间的字符组成的数字字符串)
T 6 6 '000000' 时间类型(格式:HHMMSS)
x 1 1~65535 X'0......0' 十六进制字段
  • 不定长类型

不定长类型 默认长度 有效长度 默认值 解释说明
STRING 0 ANY SPACE 字符串类型

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。