【ABAP】数据类型(二)「预定义数据类型」

在这里插入图片描述

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


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


🤟每日一言: 永远年轻,永远热泪盈眶!

目录

  • 预定义数据类型
  • 预定义数据类型分类
    •  数字型
      •   (一) 整数型 I
      •   (二) 小数型 P
      •   (三) 浮点型 F
    •  字符串型
      •    (一) 文本型 C
      •    (二) 数字文本型 N
      •    (三) 日期型 D
      •    (四) 时间型 T
    •  固定长类型
    •  不定长类型
  • 文末福利 | 好书推荐


预定义数据类型

在这里插入图片描述

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

数据类型默认长度有效长度默认值解释说明
I440整型
F880浮点型
P81~160压缩数类型(将两个十进制数字压缩到一个字节)
C11~65535‘…’文本型
D88‘00000000’日期型(YYYYMMDD)
N11~65535‘0…0’数字字符串类型(0~9之间的字符组成的数字字符串)
T66‘000000’时间类型(格式:HHMMSS)
x11~65535X’0…0’十六进制字段
STRING0ANYSPACE字符串类型

   此外另一种预定义数据类型是在【T-CODE:SE11】中定义数据元素时使用的,它们是用于专门维护数据元素所使用的,列举如下:

在这里插入图片描述

PS:这两种数据类型都可以进行互相转化,所以说它们的本质都是一样的


预定义数据类型分类

在这里插入图片描述

  预定义数据类型有四大分类,它们分别如下:

  • 数字型
  • 字符串型
  • 固定长型
  • 不固定长型

 数字型

  在ABAP中,数字型数据类型用于存储数值执行算术运算。以下是ABAP中常见的数字型数据类型:

  (一) 整数型 I

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

  下面给出一段代码,展示了如果参照整数型I定义数据对象时如果超出范围的提示报错:

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

在这里插入图片描述

PS: 当超出范围时,激活程序时会发生Overflow错误!

  • 2) 只支持整数类型

  • 3) 非整数类型的数据会进行四舍五入的计算

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

默认值2.5进行四舍五入运算变为3

  (二) 小数型 P

  • 1) 允许有小数位
DATA: gv_p TYPE p VALUE '2.5' DECIMALS 2.
WRITE:gv_p.

在这里插入图片描述

PS: DECIMALS 2代表小数点后两位。

  • 2) 若不使用DECIMALS关键字指定小数位则与类型I效果一致
DATA: gv_p TYPE p VALUE '2.5' .
WRITE:gv_p.

在这里插入图片描述

PS: 在上述代码中没有使用DECIMALS关键字指定小数位,与类型I效果一致,会对默认值进行四舍五入运算。

  • 3) 可用长度为1~16,小数位最大长度为14位
DATA: gv_p TYPE p VALUE '2.5' DECIMALS 15."小数位超过14位激活系统会报错
WRITE:gv_p.

在这里插入图片描述

PS: 小数位超过14位激活系统会报错!

  (三) 浮点型 F

  • 1) F类型的显示值的方式为科学计数法
DATA: gv_f TYPE f VALUE '25000'.
WRITE:gv_f.

在这里插入图片描述

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

尾数精度值指数符号正负符号指数大小
2.5后面的0E+04
  • 2) 值的范围是10^-307~10^308

  • 3) F类型转换成二进制时会发生进位误差

PS: 举个例子:0.1 的二进制表示是一个无限循环的二进制小数,即 0.0001100110011...(重复)。由于二进制无法精确表示 0.1 这个十进制小数,因此会出现无限循环,这就是所谓的进位误差

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

在这里插入图片描述

PS: 从结果可以看出f类型在输出高精度数据时会无限趋近但不能等于该值!


 字符串型

   (一) 文本型 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类型时需指定长度,否则默认为一位长度

PS: 下面是不指定长度的示例代码以及演示效果。

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

在这里插入图片描述

PS: 下面是指定长度的示例代码以及演示效果。

DATA: gv_c_1  TYPE c  VALUE 12345 LENGTH 5."指定长度,长度位数与默认值位数一致
DATA: gv_c_2  TYPE c  VALUE 123456 LENGTH 8."指定长度,长度位数大于默认值位数
DATA: gv_c_3  TYPE c  VALUE 123456 LENGTH 4."指定长度,长度位数小于默认值位数
WRITE: / gv_c_1, / gv_c_2, / gv_c_3.

在这里插入图片描述

  • 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类型时需指定长度,否则默认为一位长度

PS: 下面是不指定长度的示例代码以及演示效果。

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

在这里插入图片描述

PS: 下面是指定长度的示例代码以及演示效果。

   (三) 日期型 D

  • 1) 用于显示日期类型(关于sy-datumsy-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种固定长度的基本预定义数据类型,罗列如下:

固定长类型默认长度有效长度默认值解释说明
I440整型
F880浮点型
P81~160压缩数类型(将两个十进制数字压缩到一个字节)
C11~65535‘…’文本型
D88‘00000000’日期型(YYYYMMDD)
N11~65535‘0…0’数字字符串类型(0~9之间的字符组成的数字字符串)
T66‘000000’时间类型(格式:HHMMSS)
x11~65535X’0…0’十六进制字段

 不定长类型

  ABAP中提供了STRING不定长类型

不定长类型默认长度有效长度默认值解释说明
STRING0ANYSPACE字符串类型

文末福利 | 好书推荐

在这里插入图片描述

  本期给大家推荐的书籍是袁龙老师编著的《Node.js 从基础到项目实战》,“锦匠特效” Web前端工具网站作者、51CTO人气讲师力作!

  本书以理论结合实践的形式,讲解了Node.js基础、框架、进阶知识和项目实践。本书为视频教学版,每-章节都有相对应的视频讲解,通过视频讲解可快速切入主题,提高学习效率。

  全书分为4大部分,共13章,分别是Node.js基础入门Node.js框架Node.js 进阶以及企业项目实践。本书旨在帮助读者轻松、透彻地掌握Node.js技术,领悟到Node.js的开发精髓,快速提升至Node.js专业开发水平,真正迈入全栈工程师的行列。

在这里插入图片描述

本期福利:送书三本,参与链接见文末!

  618,清华社 IT BOOK 多得图书活动开始啦!

  活动时间为2023年6月7日至6月18日,清华社为您精选多款高分好书,涵盖了 C++、Java、Python、前端、后端、数据库、算法与机器学习等多个IT开发领域,适合不同层次的读者。

  全场5折,扫码领券更有优惠哦!快来京东点击链接 IT BOOK 多得查看详情吧!

在这里插入图片描述

参与福利

  • 抽奖方式:评论区随机爬取评论抽取3位小伙伴免费送出!
  • 参与方式:关注博主、点赞、收藏、评论区优质评论【评论不被折叠!】或者回复【人生苦短,开发用Node!】即可(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!
  • 活动截止时间:2023-06-14 18:00:00
  • 京东自营店购买链接:《Node.js 从基础到项目实战》
名单公布时间:2023-06-14 19:00:00

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/27598.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文读懂 Mysql MVCC

💕💕 推荐:体系化学习Java(Java面试专题) 文章目录 1、什么是 MVCC2、什么是当前读、快照读3、MVCC 具体解决什么问题4、MVCC 的实现原理4.1、4个隐式字段4.2、undo 日志4.3、Read View 5、使用 MVCC 时,需…

【分布式系统与一致性协议】

分布式系统与一致性协议 CAP原理APCPCA总结BASE理论 一致性拜占庭将军问题 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 分布式系统的设计目标一般包含如下: 可用性:可用性是分…

JavaSE-04【方法】

文章目录 JavaSE-04【方法】第一章 方法1.1 方法定义的格式详解1.2 方法定义的三要素1.3 方法调用的流程图解1.4 方法定义的有无参数1.5 方法定义的有无返回值 第二章 方法调用方式以及注意事项2.1 方法调用的注意事项2.2 调用方法的三种形式 JavaSE-04【方法】 第一章 方法 …

【华为OD机试真题2023B卷 JAVAJS】评论转换输出

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 评论转换输出 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 在一个博客网站上,每篇博客都有评论。每一条评论都是一个非空英文字母字符串。 评论具有树状结构,除了根评论外,每个评论都有一个父评论。 当评论保…

再看const成员函数

文章目录 再看函数重载const成员函数保安(const)能保护所有人(类成员)吗?mutable修饰类成员 const/非const成员函数的复用 关于函数重载实际上我理解不是很深入,直接导致const成员函数这块出大问题&#xf…

chatgpt赋能python:Python如何升序输出?从入门到实践!

Python如何升序输出?从入门到实践! 作为一门高级编程语言,Python是目前应用广泛且最为流行的一门语言之一。它逐渐成为开发者的首选语言,因为它易学易用,可读性强,支持多种编程范式,提供了强大…

【MySQL 数据库】9、存储过程

目录 一、存储过程是什么二、存储过程的基本语法三、MySQL 中的变量(1) 系统变量(2) 用户自定义变量(3) 局部变量 四、if 判断五、参数传递和返回值六、case 语句七、while 循环八、repeat 循环九、loop 循环十、游标十一、条件处理程序 一、存储过程是什么 🌱 存储…

Java反射与注解

文章目录 一、 注解1.简介2. 元注解3. 自定义注解 二、 反射1. 简介2. 理解Class类并获取Class实例3. 类的加载与初始化4. 类加载器ClassLoader5. 获取运行时类的完整结构6. 动态创建对象执行方法7. 反射操作泛型8. 反射操作注解 一、 注解 1.简介 Annotation是JDK5.0开始引入…

第二章 搭建TS环境

搭建 TypeScript 的开发环境。一个舒适、便捷且顺手的开发环境,不仅能大大提高学习效率,也会对我们日常的开发工作有很大帮助。 这一节我们就来介绍 VS Code 下的 TypeScript 环境搭建:插件以及配置项。对于 TS 文件的执行,我们会…

《横向联邦学习中 PCA差分隐私数据发布算法》论文算法原理笔记

论文地址:https://www.arocmag.com/article/01-2022-01-041.html 论文摘要 为了让不同组织在保护本地敏感数据和降维后发布数据隐私的前提下,联合使用 PCA进行降维和数据发布,提出横向联邦 PCA差分隐私数据发布算法。引入随机种子联合协商方…

linuxOPS基础_linux软件包安装

软件包概述 上图是windows下的软件包 Linux下也有很多可以安装的软件,而这些软件的安装包可细分为两种,分别是源码包和二进制包。 Linux下软件的安装方式 ① RPM软件包安装 > 软件名称.rpm ② YUM包管理工具 > yum install 软件名称 -y ③ 源码…

基于QGIS的长株潭城市群边界范围融合实战

背景 在面向区域的研究过程中,比如一些研究区域,如果是具体的行政区划,比如具体的某省或者某市或者县,可以直接从国家官方的地理数据中直接下载就可以。但如果并没有直接的空间数据那怎么办呢?比如之前遇到的一个场景&…

【郭东白架构课 模块二:创造价值】31 |节点六: 如何组织阶段性的价值交付?

你好,我是郭东白。上节课我们讲了为什么要做阶段性的价值交付,以及进入阶段性价值交付环节的准备工作。有了这些学习基础,这节课我们就可以进行阶段性价值交付了。 在交付的过程中,主要有三部分工作:目标分解、定义交…

数据结构——堆(C语言实现)

文章目录 什么是堆堆的实现堆的结构定义堆的初始化接口堆的销毁接口堆的插入数据接口向上调整建堆接口判断堆是否为空堆的删除数据接口向下调整建堆接口获取堆顶数据获取堆的有效数据个数完整实现代码小结 堆排序堆排序的实现 关于建堆和堆排序时间复杂度的分析向下调整建堆向上…

day52|动态规划13-子序列问题

子序列系列问题 300.最长递增子序列 什么是递增子序列: 元素之间可以不连续,但是需要保证他们所在位置是元素在数组中的原始位置。 dp数组dp[i]表示以nums[i]为结尾的最长递增子序列的长度。递归函数:dp[i] max(dp[j]1,dp[j])初始化条件&…

算法刷题-链表-移除链表元素

链表操作中,可以使用原链表来直接进行删除操作,也可以设置一个虚拟头结点再进行删除操作,接下来看一看哪种方式更方便。 203.移除链表元素 力扣题目链接 题意:删除链表中等于给定值 val 的所有节点。 示例 1: 输入&…

Linux下信号量使用总结

目录 1.Linux下信号量简介 2.POSIX信号量 2.1 无名信号量 2.2 有名信号量 3.System V信号量 1.Linux下信号量简介 信号量是解决进程之间的同步与互斥的IPC机制,互斥与同步关系存在的症结在于临界资源。 临界资源是在同一个时刻只容许有限个(一般只有…

【数据结构与算法】03 队列(顺序队列--循环队列--优先级队列--链队列)

一、概念1.1 队列的基本概念1.2 队列的顺序存储结构1.21 顺序队列(静态队列)1.22 循环队列1.23 优先级队列 1.3 队列的链式存储结构 二、C语言实现2.1 顺序存储2.11 顺序队列2.12 循环队列2.13 优先级队列 2.2 链式存储 一、概念 1.1 队列的基本概念 队…

Linux内核中断和Linux内核定时器

目录 Linux内核中断 Linux内核定时器 Linux内核中断 int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,const char *name, void *dev) 功能:注册中断 参数: irq : 软中断号 gpio的软中断号 软中断号 gpio_to_i…

【PCB专题】案例:绕等长怎么直接以颜色区分看出是否绕好

PCB上对于时序的处理,在板卡上实际我们是通过绕等长的手段。做为一个合格的Layout工程师,等长的处理是不可或缺的技能。 一般来说,在绕等长的时候我们可以使用Delay Tune命令来改变走线的长度,然后通过规则管理器中分析看看哪根线长哪根线短。 但是在实际工作中,很可能绕着…