ABAP语言的动态编程(3) - data reference 对象

如果数据对象的类型在运行时才知道,就需要用到 data reference 对象。

Data references can point to any data objects or to their parts (components, rows of internal tables, or sections specified by offsets and lengths)

也就是说 data reference 对象其实就是指针,储存的是引用对象的地址。和 field symbol 不同的是,data reference 对象不能直接进行赋值,需要通过 ->* 符号 (被称作解引用操作符 , dereferencing operator)。

我们先看一个例子,这个例子没有什么实际意义,主要作用就是演示语法:

data lr_num type ref to i.
create data lr_num.
lr_num->* = 2.write: / lr_num->*.

比较有用的用法就是通过创建一个参照 data 的数据对象,然后在程序中确定数据类型。

data dref type ref to data. 

在 ABAP 中,data 表示泛型的数据类型 (generic data type)。因为参照 data ,没有确定的数据类型,所以在程序中需要确定数据类型,有两种方法。第一种方法如下:

data dref type ref to data.
field-symbols <line> type any.create data dref type mara.
assign dref->* to <line>.select * from mara into table @data(it_mara) up to 10 rows.
loop at it_mara assigning <line>.assign component 'MATNR' of structure <line> to field-symbol(<fld>).write: / <fld>.
endloop.

声明一个参照到 data 的 data reference object 之后,在 create data 语句之中通过 type 限定符将 dref 的数据类型设置为 mara 表类型。

第二种方法,通过 handle 限定符,支持根据 RTTS 类型来确定 data reference 的类型

The statement CREATE DATAuses the addition HANDLEto create a data object whose data type is described by an  RTTS  type description object. For handle, a reference variable of the static type of class CL_ABAP_DATADESCRor its subclasses that points to a type description object must be specified.
data dref type ref to data.
field-symbols <line> type any.parameters tab_name type tabname. " table namedata(struct_descr) = cl_abap_structdescr=>describe_by_name( tab_name ).
data(table_descr) = cl_abap_tabledescr=>create( p_line_type = cast #( struct_descr ) ).data table_dref type ref to data.
create data table_dref type handle table_descr.field-symbols <table> type any table.
assign table_dref->* to <table>.select * from (tab_name) up to 10 rows into corresponding fields of table <table>.cl_demo_output=>display( <table> ).

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel的行高、列宽单位不统一?还是LaTeX靠谱

想要生成田字格、米字格、带拼音标准&#xff0c;方便小学生书法和练字。Word&#xff0c;Excel之类所见即所得是最容易相当的方式。但它们处理带田字格之类背景时&#xff0c;如果没有专用模板、奇奇怪怪的插件&#xff0c;使用起来会碰到各种问题。比如&#xff0c;Word里面用…

Stepdown SLOPE for Controlled Feature Selection

文章&#xff1a;《Stepdown SLOPE for Controlled Feature Selection》 如何保证错选率可控地特征选择&#xff1f;&#xff1f;&#xff1f;&#xff1f; 研究背景 现有SLOPE方法主要关注FDR&#xff08;错误发现率&#xff09;控制&#xff0c;但在实际应用中需更严格地控…

mysql空间占用

1、查询数据库占用空间 可以通过查询 information_schema 系统数据库中的 SCHEMATA 表和 TABLES 表来获取数据库占用的空间大小。 SELECT table_schema AS 数据库名称,SUM(data_length index_length) / 1024 / 1024 AS 占用空间(MB) FROM information_schema.TABLES GROUP BY…

量子关联特性的多维度探索:五量子比特星型系统与两量子比特系统的对比分析

模拟一个五量子比特系统&#xff0c;其中四个量子比特&#xff08;编号为1, 2, 3, 4&#xff09;分别与第五个量子比特&#xff08;编号为5&#xff09;耦合&#xff0c;形成一个星型结构。分析量子比特1和2的纠缠熵随时间的变化。 系统的哈密顿量H描述了量子比特间的相互作用…

嵌入式学习笔记-卡尔曼滤波,PID,MicroPython

文章目录 卡尔曼滤波卡尔曼滤波的核心思想卡尔曼滤波的数学模型1. 状态转移模型&#xff08;预测系统状态&#xff09;2. 观测模型&#xff08;预测测量值&#xff09; 卡尔曼滤波的五个关键步骤1. 预测状态2. 预测误差协方差3. 计算卡尔曼增益4. 更新状态5. 更新误差协方差 卡…

计算机网络学习————(五)TCP/IP学习

前文学习&#xff1a; 一、二、三、四 学习来源网站 &#xff1a; 极客时间 TCP协议 发展历史 ARPA-NCP协议————可扩展性差、且对应的一般为单对单 解决问题&#xff1a; 在IP协议之上&#xff0c;解决网络通讯可依赖问题 点对点&#xff0c;面向连接 双向传递 字节流&am…

智能笔记,智慧管理:Obsidian 与 DeepSeek 携手引领 AI 知识新时代

清华大学出品《DeepSeek&#xff1a;从入门到精通》分享 清华大学出品《DeepSeek&#xff1a;从入门到精通》分享 清华大学出品《DeepSeek&#xff1a;从入门到精通》分享 AI 助力下的知识管理革新&#xff1a;构建你的智能 Obsidian 系统 在数字时代&#xff0c;如何高效地整…

VSCode 移除EmmyLua插件的红色波浪线提示

VSCode 中安装插件EmmyLua&#xff0c;然后打开lua文件的时候&#xff0c;如果lua代码引用了C#脚本的变量&#xff0c;经常出现 “undefined global variable: UnityEngineEmmyLua(undefined-global)” 的红色波浪线提示&#xff0c;这个提示看着比较烦人&#xff0c;我们可以通…

优得运维推出光伏电站运维精进班,助力新能源行业人才培养

随着全球新能源产业的快速发展&#xff0c;光伏电站的运维需求日益增长。为了满足行业对高素质运维人才的需求&#xff0c;优得运维——联盛新能源集团的核心成员&#xff0c;正式推出光伏电站运维精进班。该课程旨在通过系统化的培训&#xff0c;帮助学员夯实电工基础、提升应…

anything文本分割优化

1、文本分割优化&#xff0c;建议 200 和40&#xff0c;把文档切得更碎一些方便检索命中。 2、RAG接口进一步优化 /*** RAG知识库接口** param prompt* return*/GetMapping(value "/rag/chat", produces MediaType.TEXT_EVENT_STREAM_VALUE)public Flux<ChatCom…

全志A133 android10 mipi屏幕调试

一&#xff0c;确认屏幕信息 屏幕调试首先要查看屏幕规格书&#xff0c;主要看里面的屏供电电压vdd&#xff0c;背光供电电压&#xff0c;timing参数部分。 举个例子&#xff1a; 屏供电电压 可以看出供电电压为3.3V&#xff0c;过大则会烧屏&#xff1b;背光供电电压 屏幕…

(下:补充——五个模型的理论基础)深度学习——图像分类篇章

目录 1.1 卷积神经网络基础 3.1 AlexNet网络结构详解与花分类数据集下载 4.1 VGG网络详解及感受野的计算 5.1 GoogLeNet网络详解 6.1 ResNet网络结构&#xff0c;BN以及迁移学习详解 总结&#xff08;可以直接看总结&#xff09; 1.1 卷积神经网络基础 视频讲解&#xf…

批量给 Word 添加文字和图片水印

在 Word 中添加水印是非常常见的一个需求&#xff0c;当我们需要将 Word 文档发送给第三方&#xff0c;或者需要将 Word 文档打印出来的时候&#xff0c;给 Word 文档加上水印是一个很重要的操作&#xff0c;可以声明版权&#xff0c;也可以起到广告标识作用。如果少量 Word 文…

数据挖掘工程师的技术图谱和学习路径

数据挖掘工程师的技术图谱和学习路径: 1.基础知识 数据挖掘工程师是负责从大量数据中发现潜在模式、趋势和规律的专业人士。以下是数据挖掘工程师需要掌握的基础知识: 数据库知识:熟悉关系数据库和非关系数据库的基本概念和操作,掌握SQL语言。 统计学基础:了解统计学的基…

JavaSE-4方法 递归 数组

一、方法 public static 返回值类型 方法名{ 方法体&#xff1b; } 1&#xff09;修饰符&#xff1a;public static 2&#xff09;形参返回值类型和实参返回值类型一致 3&#xff09;方法名字&#xff1a;小驼峰 4&#xff09;参数列表&#xff1a;如果方法没有参数就不写…

快瞳通用文档解析技术是怎样赋能下游各类大语言模型任务?

、为什么不直接用大模型去解析文档&#xff1f; 在文档、票据结构化识别这个赛道上&#xff0c;大语言模型存在天然的局限性&#xff1a; 1.结构化数据生成效率低 大模型在处理表格、公式等结构化内容时&#xff0c;需消耗大量计算资源&#xff0c;生成速度慢且成本高昂。例如…

Microk8s Ingress实现七层负载均衡

Microk8s Ingress是什么 Ingress是k8s的一种资源对象&#xff0c;用于管理外部对集群内服务的访问, 它通过提供一个统一的入口点&#xff0c;将外部流量路由到集群内部的不同服务。 Microk8s Ingress用于解决什么问题 k8s集群中服务默认只能在集群内访问。 如果需要从外部访…

C语言(19)----------->函数(2)

本文介绍了C语言的return语句及其它在C语言函数中的作用&#xff0c;以及介绍了二维数组和一维数组传参时的一些注意事项和使用数组传参时的方法。 若没有学习过C语言的一维数组和二维数组&#xff0c;建议参考如下文章&#xff1a; C语言&#xff08;15&#xff09;--------…

数据结构——单调栈

一.单调栈简介 1.1单调栈定义与特性 本质&#xff1a;单调栈是一种特殊的栈结构&#xff0c;其内部元素始终保持单调递增或单调递减的顺序。核心规则&#xff1a;当新元素入栈时&#xff0c;会通过弹出破坏单调性的栈顶元素来维持有序性。单调方向&#xff1a; 单调递增栈&…

知微传感3D相机上位机DkamViewer使用:设置相机的静态IP

写在前面 本人从事机器视觉细分的3D相机行业。编写此系列文章主要目的有&#xff1a; 1、便利他人应用相机&#xff0c;本系列文章包含公司所出售相机的SDK的使用例程及详细注释&#xff1b;2、促进行业发展及交流。 知微传感Dkam系列3D相机可以应用于定位分拣、焊接焊缝提取、…