ABAP 引用变量(TYPE REF TO )和字段符号(FIELD-SYMBOLS)全集

本文主要是记录了一些关于ABAP 引用变量(TYPE REF TO )和字段符号(FIELD-SYMBOLS)的相关内容,有些参考来自多个博客,以及官方文档

文章目录

  • FIELD-SYMBOLS字段符号
    • 官方文档
      • Declaring Field Symbols
        • Typing Field Symbols
  • 引用变量
    • 文章1
      • 引用变量介绍
      • 测试程序1
      • 字段符号
    • 文章2
      • 一、定义
      • 二、初始化
      • 三、使用
    • 文章3
      • 获取数据对象引用Getting References to Data Objects
      • 测试程序2
      • 示例3
      • 测试程序3

FIELD-SYMBOLS字段符号

官方文档

https://help.sap.com/saphelp_autoid2007/helpdata/en/fc/eb387a358411d1829f0000e829fbfe/content.htm?no_cache=true

在这里插入图片描述

Declaring Field Symbols

在这里插入图片描述

Typing Field Symbols

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

引用变量

文章1

参考文章: http://www.baidusap.com/abap/report/2478

引用变量介绍

在这里插入图片描述

TYPES <t_dref> TYPE REF TO DATA.

在这里插入图片描述

DATA <dref> TYPE REF TO DATA.

在这里插入图片描述
在这里插入图片描述

测试程序1

&---------------------------------------------------------------------*
*& Report Z_TEST_ASSIGN
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_test_assign.
TYPES:BEGIN OF t_struct,col1 TYPE i,col2 TYPE i,END OF t_struct.
DATA:dref1 TYPE REF TO data,dref2 TYPE REF TO data,dref3 TYPE REF TO data.
FIELD-SYMBOLS:<fs1> TYPE t_struct,<fs2> TYPE i,<fs3> TYPE t_struct,<fs4> TYPE t_struct,<fs5> TYPE t_struct,<fs6> TYPE t_struct.
CREATE DATA dref1 TYPE t_struct.
WRITE '<1> 引用变量给字段符号<FS1>赋值输出'.
SKIP.
IF dref1 IS BOUND.ASSIGN dref1->* TO <fs1>.<fs1>-col1 = 1.<fs1>-col2 = 2 .WRITE:<fs1>-col1,<fs1>-col2.SKIP.WRITE '<2> 引用变量给字段符号<FS3>赋值输出'.SKIP.ASSIGN dref1->* TO <fs3>.WRITE:<fs3>-col1,<fs3>-col2.SKIP.WRITE '   引用变量给字段符号赋值结束后,没有释放地址!'.SKIP.WRITE '<3> 引用变量之间是地址赋值,仍然可以输出值'.dref2 =  dref1.ASSIGN dref2->* TO <fs4>.SKIP.WRITE:<fs4>-col1,<fs4>-col2.SKIP.WRITE '<4> 改变字段符号中字段值,把地址赋给引用变量DREF1后,'.SKIP.WRITE '    引用变量DREF1通过字段符号<FS5>可以看到数据改变.'.<fs4>-col1 = 8.<fs4>-col2 = 9.GET REFERENCE OF <fs4> INTO dref1.ASSIGN dref1->* TO <fs5>.SKIP.WRITE:<fs5>-col1,<fs5>-col2.SKIP.WRITE '<5> 引用变量进行强制类型装换,若不加CASTING会输出short down.'.ASSIGN dref2->* TO <fs2> CASTING.WRITE / <fs2>.SKIP.WRITE '<6> 解除字段符号,释放内存以及数据.'.UNASSIGN <fs2>.
*    WRITE / <FS2>.SKIP.WRITE '当输出WRITE / <FS2>时会出现short down'.SKIP.WRITE '<7> 解除引用变量,释放内存以及数据.'.CLEAR dref2.ASSIGN dref2->* TO <fs6>.SKIP.WRITE '当输出WRITE /<FS6>-COL1,<FS6>-COL2.时会出现short down'.
ENDIF.

字段符号

在这里插入图片描述

ASSIGN ... TO <fs>:将某个内存区域分配给字段符号,这样字段符号就代表了该内存区域,即该内存区域别名REPORT Z_TEST_ASSIGN2.
TYPES: BEGIN OF t_date,year(4) TYPE  n,month(2) TYPE n,day(2) TYPE n,
END OF t_date.FIELD-SYMBOLS <fs> TYPE t_date."将<fs>定义成了具体限定类型
ASSIGN sy-datum TO <fs>.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文章2

参考链接: https://www.jianshu.com/p/35d008176167

一、定义

在这里插入图片描述

二、初始化

在这里插入图片描述

三、使用

在这里插入图片描述

DATA: dref1 TYPE REF TO sflight.
CREATE DATA dref1.
dref1->carrid = 'DDDD'.

在这里插入图片描述

文章3

参考链接: https://www.cnblogs.com/jiangzhengjun/p/4293361.html

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

获取数据对象引用Getting References to Data Objects

在这里插入图片描述

可以将一个常量的地址分配给字段符号,但不能修改该常量的值:
DATA: e_i3 TYPE REF TO i .
GET REFERENCE OF 33 INTO e_i3.
field-SYMBOLS: <fs> TYPE i .
ASSIGN e_i3->* to <fs>.
<fs> = 100.

以上代码运行时会报错。
在这里插入图片描述

测试程序2

&---------------------------------------------------------------------*
*& Report Z_TEST_ASSIGN2
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_test_assign2.
TYPES: BEGIN OF t_date,year(4) TYPE  n,month(2) TYPE n,day(2) TYPE n,
END OF t_date.
DATA: l_ref TYPE REF TO d. "定义一个数据引用变量
CREATE DATA l_ref. "创建数据对象,如果定义的时候指定了类型,创建可以不指定
l_ref->* = '20240801'.
FIELD-SYMBOLS <fs1> TYPE t_date."将<fs1>定义成了具体限定类型
ASSIGN l_ref->* TO <fs1> CASTING. "
"ASSIGN sy-datum TO <fs>.
FIELD-SYMBOLS <fs> TYPE t_date."将<fs>定义成了具体限定类型
ASSIGN sy-datum TO <fs> CASTING. "后面没有指定具体类型,所以使用定义时的类型进行隐式转换DATA txt(8) TYPE c VALUE '19980606'.
FIELD-SYMBOLS <fs2>.
ASSIGN txt TO <fs2>.
ASSIGN txt TO <fs2> CASTING TYPE d."由于定义时未指定具体的类型,所以这里需要显示强转DATA: l_ref2 TYPE REF TO data. "通用类型的数据引用变量
FIELD-SYMBOLS <fs3> TYPE data."将<fs3>
ASSIGN l_ref2->* to <fs3>.WRITE:''.

示例3

在这里插入图片描述

测试程序3

*&---------------------------------------------------------------------*
*& Report Z_TEST_ASSIGN3
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_test_assign3.DATA: BEGIN OF struc,a TYPE i,b TYPE c LENGTH 8,END OF struc.DATA: dref TYPE REF TO data,tname TYPE string,str TYPE struc,int TYPE i.FIELD-SYMBOLS: <int> TYPE i,<str> TYPE struc,<f> TYPE any.tname = 'SFLIGHT'.
CREATE DATA dref TYPE (tname).
ASSIGN dref->* TO <f>.
SELECT SINGLE * FROM (tname) INTO <f>.DATA: dref1 TYPE REF TO sflight.
CREATE DATA dref1.
dref1->carrid = 'DDDD'.WRITE:''.

如果后面有其他的相关内容,也会更新,如果解释错误的地方,请各位大佬指正

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

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

相关文章

Linux文件属性和打包压缩详解

1、文件属性体系 1.1 文件系统概述 [rootyunwei /]# ls -lhi 总用量 72K3505 lrwxrwxrwx. 1 root root 7 3月 7 2019 bin -> usr/bin 262152 dr-xr-xr-x. 5 root root 4.0K 12月 19 16:00 boot 399635 drwxr-xr-x 2 root root 4.0K 11月 5 2019 data1026 drw…

electron-vite封装UI级的消息提示

说明 Electron Vite Vue3 Element Plus Electron中写提示有两种方案&#xff1a; 系统级&#xff1a;electron带的dialog相关APIUI级&#xff1a;UI框架内部的提示&#xff0c;如ElMessage、ElMessageBox、ElNotification等 今天来封装一下UI级别的提示 代码 效果图 源…

冷却液温度传感器检测诊断

检测发动机冷却液温度&#xff0c;向ECU输入温度信号&#xff0c;作为燃油喷射和点火正时的修正信号&#xff0c;同时也是其他控制系统的控制信号。 冷却液温度传感器安装位置 冷却液温度传感器&#xff08;俗称水温传感器&#xff09;一般安装在缸体水道上&#xff0c;缸盖水…

知识竞赛答题设备及答题方式有哪些

根据我们多年的知识竞赛承办经验&#xff0c;我来谈谈在知识竞赛中常用的答题设备和答题方式。 一、常用答题设备 1.电脑 如果电脑资源充足&#xff0c;可以用笔记本电脑进行答题&#xff0c;笔记本电脑可以采取有线或无线方式进行连网&#xff0c;可以根据情况选择连网方案&…

利用GPT绘制流程图(无需下载任何软件

目录 什么是Flowchart Fun&#xff1f;如何利用GPT绘制流程图&#xff1f;步骤1&#xff1a;确定流程图的目的和内容步骤2&#xff1a;训练GPT编写流程图的文本描述步骤3&#xff1a;转换文本格式为可视化的流程图步骤4&#xff1a;调整和优化 结论小结&#xff1a; 什么是Flow…

Tomcat部署项目get请求中文乱码

问题描述 tomcat部署的项目&#xff0c;get请求到后端后&#xff0c;打印日志发现通过RequestParam()接收的参数值乱码。 问题猜测 编码错误导致的乱码。 流程梳理 浏览器发送请求时会自动对请求链接中自带的参数进行编码。编码时一般都是采用UTF-8的格式进行编码。请求到…

Ubuntu 22.04 某次重启后nvidia-smi 失效

Ubuntu 22.04 某次重启后nvidia-smi 失效 某次重启后失效&#xff0c;遂在网上寻找答案&#xff1a; 方案一&#xff1a;使用dkms进行安装相应模块 具体的可以参考链接 dkms 但是我试了一下并不好用&#xff0c;并且报错如下&#xff1a; Building module:cleaning build a…

token令牌,过滤器,JWT,拦截器

令牌(token)技术 不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了 1.基本流程 用户使用用户名密码来请求服务器 服务器进行验证用户的信息 服务器通过验证发送给用户一个token 客户端存储token&#…

探索大语言模型在DNA 分析到表达预测以及生物信息学应用

概述 论文地址&#xff1a;https://arxiv.org/abs/2401.04155 随着 OpenAI 的 GPT-X 和谷歌的 BERT 等大规模语言模型的出现&#xff0c;自然语言处理领域得到了飞速发展。这些先进的模型将理解和生成人类语言的能力发挥到了极致&#xff0c;彻底改变了日常交流和业务流程。 …

Axure设计之动态条形图教程(中继器)

在Axure RP中&#xff0c;中继器是一个非常强大的工具&#xff0c;它允许我们动态地展示数据&#xff0c;并且可以轻松实现复杂的交互效果。本文将详细介绍如何使用中继器来制作一个动态条形图&#xff0c;并展示其在实际项目中的应用。 一、效果预览 预览地址&#xff1a;http…

存储与传输/大小端字节序的概念、决定因素、给编程带来的困扰

文章目录 概述大小端分歧的类比为什么要关注字节序NET网络字节序什么时候必须转换字节序大小端字节序哪个优秀判断系统字节序类型字节序类型转换大小端内存监视和调试 谁决定了大小端模式CPU架构决定大小端操作系统影响大小端&#xff1f;编译器也影响大小端&#xff1f;可配置…

如何完美备份自己的微博,即使是封号之后

感谢 https://github.com/Chilfish/Weibo-archiver 工具和环境 可以用chrome插件的浏览器&#xff0c; 比如opera安装篡改猴插件安装nodejsvscode 第一步&#xff0c;安装浏览器插件 安装Tampermonkey 然后打开https://raw.githubusercontent.com/Chilfish/Weibo-archiver/m…

MS2232/MS2232T——±20kV ESD 保护、3V-5.5V 供电、真 RS-232 收发器

MS2232/MS2232T 芯片是集成电荷泵、具有 20kV ESD 保护的 RS-232 收发器&#xff0c;包括两路接收器、两路发送器。芯 片满足 TIA/EIA-232 标准&#xff0c;为异步通信控制器和串口连接器 提供通信接口。 芯片采用 3V-5.5V 供电&#xff0c;电荷泵仅用 4 个 0.1-0.47μF 小…

c++ 谷歌的招聘 题解

题目描述 2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘 内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e 中最早出现的 10 位连续数字 能找出这个素数的人,就可以通过访问谷歌的这个网站进入…

Final Cut Pro Mac(fcpx专业视频剪辑软件) 10.8 中文版安装

Final Cut Pro 是苹果公司为专业视频编辑人士量身打造的非线性编辑软件&#xff0c;以其卓越的性能和深度定制的工具集&#xff0c;在影视制作、电视广播、广告创意等多个领域占据了重要地位。凭借其对高分辨率视频的无缝支持和实时剪辑的流畅体验&#xff0c;Final Cut Pro 成…

【Linux】简易日志工具项目

有些鸟儿是不应该被关在笼子里的&#xff0c; 因为他们的羽毛太丰润了。 当他们飞走&#xff0c;你会由衷地庆贺他获得自由。 --- 肖申克的救赎》--- 从零开始构建简易日志系统 1 日志1.1 什么是日志1.2 日志的意义1.3 为什么要构建自己的日志工具 2 构建自己的日志工具2.1…

gin快速入门

gin 项目地址晓智科技晓智科技晓智文档晓智文档文档源码文档源码 快速体验 func HandlerPong(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"message": "pong",}) }func main() {r : gin.Default()r.GET("/ping", HandlerPong)_ r.Run(&qu…

Windows电脑自建我的世界MC服务器并与好友远程联机游戏教程

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

美股收涨,半导体板块领涨;苹果iPhone出货预测上调

市场概况 在昨夜的交易中&#xff0c;美股三大股指全线收涨。道琼斯工业平均指数上涨1.39%&#xff0c;纳斯达克综合指数上涨2.34%&#xff0c;标准普尔500指数上涨1.61%。值得注意的是&#xff0c;英伟达股票涨幅近4%&#xff0c;推动了科技股的整体表现。美国十年期国债收益…

vue3使用i18n实现国际化

安装vue-i18n npm install vue-i18n创建一个ts文件用于存储各种翻译 globalLang.ts的内容如下&#xff1a; export default {"cn": {},"en": {},"de": {},"es": {},"fr": {},"id": {},"it": {},&quo…