您现在的位置是:首页 > 正文

几种数据载体的比较

2024-04-01 03:08:43阅读 2
【博主SAP/ABAP交流群53144545
数据常用的表达形式有很多,比如:
变量,结构,内表,对象,数组& 集合(ABAP 里没有)。

变量就是单一值,不多说了。

在介绍结构和内表之前需要先定义类型。
类型:
TYPES:
BEGIN OF ty_ppl,
ID type xx,
name type xx,
age type xx,
END OF ty_ppl.

结构:
gs_ppl TYPE ty_ppl.

内表:
gt_ppl TYPE STANDARD TABLE OF ty_ppl.

然后是类,对象和数组& 集合。
类:
CLASS cl_ppl.
DATA:
ID type xx,
name type xx,
age type xx,
ENDCLASSS.

对象:
obj_ppl TYPE REF TO cl_ppl.
CREATE OBJECT obj_ppl.

数组& 集合:
ABAP 里只有内表,没有数组和集合。在Java 等一些其他语言里只有数组没有内表,以Java 为例,如果类是cl_ppl 的话,那么集合就是ArrayList<cl_ppl> ,和内表类似,这个集合内每一个元素都是类cl_ppl 的一个对象。

对象可以分为两部分,一部分是数据,一部分是程序,我们现在只考虑数据部分,来跟结构做个比较。
从业务层面讲,结构和对象,内表和数组,是没有什么区别的,都是存数据的载体。
而从技术角度是有很大区别的,比如内存里数据存放格式不一样;使用上结构和内表是值传递的,对象和数组是引用传递的;对象可以设置数据的私密性;ABAP 里可以根据结构直接增改删数据库等等,这里不详细展开。

再介绍下JSON 对象,它把变量名和变量值都包括在对象里,它主要是用来作网络传输用途的。比如以上面ppl 为例子:
{“ID”: “001”, “name”:”Mary”, “age”:”20”} 就是一个JSON 对象,业务含义上它等同于一个对象或者结构。同理,JSON 数组业务含义上也是等同与一个数组或者内表的。

如今 ABAP 的一大难点是传统和 面向对象 的混合使用 ,比如结构里有对象,对象里有结构,更复杂的还会有和内表混合使用嵌套了 N 层的复杂结构或者对象。所以有必须理解清楚几种数据载体之类的关系。

复杂结构或者对象适合本地程序编写,因为用一个变量名或者对象名就可以把所有需要的数据都包含进去。但是复杂结构不利于数据库存取和网络传输。数据库存取不方便这很好理解,数据库只能存表格型的数据,复杂结构必须拆分成若干个表格型的内表或者结构才能存入数据库。而网络传输只能传字符串,要传复杂结构必须先把本身转化成字符串,传输到网络另一头后再把字符串还原成结构。所以老版本的RFC只支持扁平结构

网站文章

  • htons函数详解

    Part 1: htons函数具体解释 在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序。 在Intel机器下,执行以下程序 int main() ...{ printf(&quot;%d /n&quot;,htons(16)); return 0; } 得到的结果是4096,初一看感觉很怪。

    2024-04-01 03:08:35
  • 04.sqlite3学习——DDL(数据定义:创建和删除表)

    04.sqlite3学习——DDL(数据定义:创建和删除表)

    数据定义(DDL):用于用户定义、删除和修改数据模式。但在sqlite3中不存在用户这一概念,所以sqlite的DDL包括创建表、修改表和删除表

    2024-04-01 03:08:27
  • seaborn库学习----分布图displot、histplot、kdeplot、ecdfplot

    seaborn库学习----分布图displot、histplot、kdeplot、ecdfplot

    提供的api 说明 displot Figure-level interface for drawing distribution plots onto a FacetGrid. 图形级界面,用于在F...

    2024-04-01 03:07:46
  • 降级移除宝塔官网账号绑定限制的方法

    降级移除宝塔官网账号绑定限制的方法。

    2024-04-01 03:07:39
  • 计算机的安全知识有哪些少的,青少年网络安全知识有哪些

    计算机的安全知识有哪些少的,青少年网络安全知识有哪些

    随着互联网的普及,青少年网络犯罪也日渐增多,而青少年网络安全意识的淡薄,为广大思想政治教育工作者敲响了警钟。那么你对青少年网络安全了解多少呢?青少年网络安全知识有哪些?佰佰安全网看看吧。青少年网络安全...

    2024-04-01 03:07:32
  • vue多功能学习笔记

    vue多功能学习笔记

    一、过滤器的使用①:下面是使用,| 是后面是传参数给他的方法这里注册方法

    2024-04-01 03:06:48
  • kubeadml 安装 k8s

    kubeadml 安装 k8s

    4、部署 Kubernetes Node,将节点加入Kubernetes集群中。5、部署 Dashboard Web 页面,可视化查看Kubernetes资源。1、在所有节点上安装Docker和kubeadm。6、部署 Harbor 私有仓库,存放镜像资源。2、部署Kubernetes Master。3、部署容器网络插件。

    2024-04-01 03:06:40
  • 【数据结构】 平衡二叉数(AVL树)

    【数据结构】 平衡二叉数(AVL树)

    案例给你一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST), 并分析问题所在.问题分析:左子树全部为空,从形式上看,更像一个单链表. 插入速度没有影响 查询速度明显降低(因为需要依次比较), 不能发挥BST的优势,因为每次还需要比较左子树,其查询速度比单链表还慢 1)解决方案:平衡二叉树(AVL) 定义平衡二叉树也叫平衡二叉搜索树(Self-bala...

    2024-04-01 03:06:33
  • Linux基础命令---comm

    comm      逐行比较两个已经排序过的文件。结果以3列显示:第1列显示只在file1出现的内容,第2列显示只在file2出现的内容,第3列显示同时出现的内容。      此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 1、语法      comm [OPTION]... FILE1 FILE2  2...

    2024-04-01 03:05:52
  • 《数据库系统概论》 第十章 数据库恢复技术 热门推荐

    《数据库系统概论》 第十章 数据库恢复技术 热门推荐

    事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元。事务处理(transaction processing)技术主要包括数据库恢复技术和并发控制技术。 10.1 事务的基本概念 事务:是用户定义的一个数据库操作序列,是一个不可分割的工作单位(原子性) 一般的,一个程序中被包含多个事务。如果用户没有显式的定义事务,则DBMS自动划分事务。 事务一般以BEGIN TRANSACTION...

    2024-04-01 03:05:45