ABAP 351 - 动态编程

news2025/7/13 19:34:45

作为面对对象的编程语言,ABAP也是支持动态编程的。ABAP351作为一门独立的课程介绍了类反射机制如何实现的过程。

一、Field Symbols

Field Symbols(字段符号)在ABAP编程中经常使用,实际上它具备以下几点特性:

  1. 字段符号只是字段的一个别名,可以动态地指代字段本身。

  1. 可以在程序运行中定义。

  1. 无法复制。

  1. 字段符号和指针并不完全是一个概念。

DATA:text(20) TYPE c VALUE 'Hello world'.
FIELD-SYMBOLS:<fs> TYPE any.
ASSIGN text TO <fs>.
WRITE:/ <fs>.

二、Casting Filed Symbols

TYPES: my_type(9) TYPE C.
DATA:SmallField(5) TYPE C,
     LargeField(10) TYPE C VALUE '1234567890',
     TypeName(7) TYPE C VALUE 'MY_TYPE',
     SomeType TYPE REF TO cl_abap_typedescr.
FIELD-SYMBOLS:<fs> TYPE any,
              <fs> TYPE my_type.
ASSIGN LargeField TO <fs> CASTING.
ASSIGN LargeField TO <fa> CASTING TYPE MY_TYPE.

ASSIGN LargeField TO <fa> CASTING TYPE N.

ASSIGN LargeField TO <fa> CASTING TYPE (TypeName).
SomeType = cl_abap_typedescr=>describe_by_name( 'MY_TYPE' )
ASSIGN LargeField TO <fa> CASTING TYPE HANDLE SomeType.

ASSIGN LargeField TO <fa> CASTING LIKE SmallField.

ASSIGN LargeField TO <fa> CASTING LIKE <fa>.

三 、数据参考

  1. 变量定义

  • CREATE DATA dref TYPE | LIKE

  • GET REFERNCE OF DataObject INTO dref

  1. 访问数据参考对象

类型已定义

x = dref->* " 访问结构中全部的数据对象

y = dref->comp " 访问某一个组件

类型未定义

ASSIGN dref->* TO <f>. " 访问所有的数据对象

ASSIGN COMPONENT 'comp' OF STRUCTURE <f> TO <fc>. " 访问组件如果对象是一个结构体

三、动态创建数据对象

几种动态创建数据对象的方法

CREATE DATA DREF TYPE TYPE | (TYPENAME).
CREATE DATA DREF TYPE TABLE OF TYPE | (TYPENAME).
CREATE DATA DREF TYPE REF TO TYPE | (TYPENAME)>.
CREATE DATA DREF TYPE HANDLE TYPEOBJ.
CREATE DATA DREF LIKE FILED.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个http请求的全过程是怎样的?

一、前言 当我们在浏览器栏输入&#xff1a;http//:www.baidu.com 的时候&#xff0c;具体发生了什么呢&#xff1f;这个请求是怎么到达服务器及返回结果的呢 http请求过程图示 二、概述 浏览器进行DNS域名解析&#xff08;就是域名到IP地址的转换过程&#xff09;&#xff0…

字节10年架构师职业发展经历,助你做好职业规划

一直以来程序员这一职业都给人高薪资的印象&#xff0c;近年来随着互联网行业的快速发展&#xff0c;程序员更是人满为患&#xff0c;然而很多人关注的却是程序员的薪资&#xff0c;而非职业本身。 一批批程序员进入工作岗位&#xff0c;但是很多人并没有对自己的职业生涯有清…

2023环翠区编程挑战赛小学组题解

T1. 乘车费用 题目描述 星期天上午小红乘出租车去本市的奶奶家。出租车计价方案为&#xff1a;333公里以内&#xff08;包括333公里&#xff09;起步价是131313元&#xff0c;超过333公里之后按2.32.32.3元/公里计价&#xff0c;整个乘车途中另加111元钱的燃油费。 已知&…

一篇文章带你搞懂spring6的概念、spring入门与容器IoC详解(尚硅谷笔记)

文章目录1、概述1.1、Spring是什么&#xff1f;1.2、Spring 的狭义和广义1.3、Spring Framework特点1.4、Spring模块组成1.5、Spring6特点1.5.1、版本要求2、入门2.1、环境要求2.2、构建模块2.3、程序开发2.3.1、引入依赖2.3.2、创建java类2.3.3、创建配置文件2.3.4、创建测试类…

YOLOv8模型调试记录

前言 新年伊始&#xff0c;ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本&#xff0c;目前支持图像分类、物体检测和实例分割任务&#xff0c;在还没有开源时就收到了用户的广泛关注。 值得一提的是&#xff0c;在博主的印象中&#xff0c;YOLO系…

【蓝桥OJ】门牌制作、七段码、成绩统计、分数

文章目录门牌制作七段码成绩统计分数总结门牌制作 小蓝要为一条街的住户制作门牌号。这条街一共有 2020位住户&#xff0c;门牌号从 1 到 2020 编号。小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符&#xff0c;最后根据需要将字符粘贴到门牌上&#xff0c;例如门牌 1017 …

OpenHarmony ArkTS 框架下如何自定义权限

系统有很多权限&#xff0c;比如:多媒体权限 ohos.permission.READ_MEDIA 那么&#xff0c;当我们在做开发板定制hap 时需要我们自定义的特殊权限&#xff0c;该如何做呢&#xff0c;比如要做个ohos.permission.MY_TEST_PERMISSION自定义权限&#xff0c;我的思路就是&#x…

黑马程序员-Linux网络编程-01

目录 课程链接 协议 分层模型 网络传输数据封装流程 以太网帧和ARP请求 IP协议 TCP协议 BS与CS模型对比 套接字 网络字节序 IP地址转换函数 sockaddr地址结构 socket模型创建流程 socket()和bind() listen()和accept()​ 课程链接 03-协议_哔哩哔哩_bilibili 协…

【python学习笔记】:2种用 Python 作为小程序后端的方式

微信的小程序是一个很不错的体验&#xff0c;简单&#xff0c;上手快&#xff0c;这几天也在学习使用小程序&#xff0c;总结了2种用 Python 作为小程序后端的方式&#xff0c;供你参考。 方法一、微信的云托管[1]。 优点&#xff1a;不需要购买服务器&#xff0c;不需要域名…

Go语言环境安装与试运行

下载参考Go语言中文网https://studygolang.com/Go语言中文网下载会快一些&#xff0c;与Go官网是同步的&#xff0c;按对应操作系统下载。Windows下安装这里只展示Windows下的安装场景下载后双击文件&#xff1a;本地环境路径&#xff08;其实建议把环境都放在同一个指定目录下…

数据结构与算法:Map和Set的使用

1.搜索树 1.定义 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值它的左右子…

5年测试在职经验之谈:3年手工测试、2年的自动化测试,从入门到不可自拔...

毕业3年了&#xff0c;学的是环境工程专业&#xff0c;毕业后零基础转行做软件测试。 已近从事测试行业8年了&#xff0c;自己也从事过3年的手工测试&#xff0c;从事期间越来越觉得如果一直在手工测试的道路上前进&#xff0c;并不会有很大的发展&#xff0c;所以通过自己的努…

【机器学习】为什么需要对数值型的特征做归一化(Normalization)?

目录&#xff1a;为什么需要对数值型的特征做归一化&#xff1f;一、概念定义二、标准化、归一化的原因、用途2.1 原因三、数据归一化的影响四、常用的3种归一化方法4.1 归一化公式4.1.1 线性归一化&#xff08;Min-Max Scaling&#xff0c;即我们一般指的归一化&#xff09;4.…

十二、Django表单

表单 在之前的案例中&#xff0c;每次我们需要提交表单数据的时候。我们都需要去手动编辑html表单&#xff0c;根据不同的字段&#xff0c;字段名&#xff0c;进行编码。做了很多重复的部分&#xff0c;所以django提供了一个专门用来处理表单的类&#xff0c;django.forms.For…

23年PMP真的值得考吗?分析+资料分享

我觉得&#xff0c;如过是真的想学习项目管理&#xff0c;或者工作要求考PMP&#xff0c;招聘要求又的确“PMP证书”优先&#xff0c;那考一个是划算的&#xff0c;毕竟在项目管理这一块&#xff0c;PMP是专业和知名度最高的证书了。 它是由美国项目管理协会(PMI)在全球范围内推…

Java 给视频添加背景音乐 | Java工具

目录 前言 Maven依赖 环境依赖 代码 总结 前言 本文提供给视频添加背景音乐的java工具&#xff0c;一如既往的实用主义。 Maven依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.1.1…

Towards Efficient Adversarial Training on Vision Transformers

视觉转换器(ViT)作为卷积神经网络(CNN)的有力替代方案&#xff0c;受到了广泛的关注。最近的研究表明&#xff0c;vit也容易受到cnn等对抗实例的攻击。为了构建健壮的vit&#xff0c;一种直观的方法是应用对抗性训练&#xff0c;因为它已被证明是实现健壮cnn的最有效方法之一。…

笔记本cpu温度多少正常?温度过高的4个常见原因

电脑CPU指的是中央处理器&#xff0c;它与电脑运行速度的快慢存在很大关系。如果电脑的处理器温度过高&#xff0c;就会影响我们电脑的运行速度&#xff0c;甚至出现蓝屏、卡顿的情况。 那么&#xff0c;对于电脑来说&#xff0c;笔记本cpu温度多少正常&#xff1f;有什么原因…

如何高效开发一个OA办公系统?

如何才能高效开发一个OA办公系统&#xff1f;这篇教你使用零代码工具从0-1搭建一个OA办公系统&#xff0c;无需代码基础&#xff0c;只要你懂业务&#xff0c;只需3步即可搭建&#xff01; 先来看看效果—— 系统模板>>https://www.jiandaoyun.com/ 整个系统包含物资管理…

2023年可穿戴智能设备三大应用领域的发展前景

科技化进程的不断推进&#xff0c;让可穿戴智能设备在智能设备市场占比逐渐增多&#xff0c;通过传感器和无线通信等技术的结合&#xff0c;为用户带来良好体验&#xff0c;为智能设备市场发展注入活力。消费类电子产品也朝着移动化、便携化、可穿戴化方向发展&#xff0c;可穿…