ABAP 351 - 动态编程

2023-10-27

作为面对对象的编程语言,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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ABAP 351 - 动态编程 的相关文章

  • 软件测试|Python中如何提取列表中索引为奇数的元素

    简介 在Python中 我们经常需要从列表中提取特定位置的元素 如果我们想要提取列表中索引为奇数的元素 可以使用一些简单的方法来实现这一目标 本文将介绍如何在Python中提取列表中索引为奇数的元素 并提供示例代码来帮助大家更好地理解这个过
  • 基于java的物资管理系统设计与实现

    基于java的物资管理系统设计与实现 I 引言 A 研究背景和动机 基于Java的物资管理系统设计与实现的研究背景和动机在于提高物资管理系统的效率和质量 使得物资管理系统更加便捷 快速 准确 从而提高物资管理的水平 该系统的设计和实现主要围
  • 让CHAT介绍下V2ray

    CHAT回复 V2Ray是一个网络工具 主要用于科学上网和保护用户的网络安全 它的名字源自Vmess Ray 光线 通过使用新的网络协议 为用户提供稳定且灵活的代理服务 下面是一些V2Ray的主要特性 1 多协议支持 V2Ray 提供了大量
  • 用CHAT分析高校体育智慧教学体系构建与探索研究现状

    CHAT回复 现阶段 高校体育智慧教学体系的构建与探索研究还处于初级阶段 但全球数字化转型大潮的推动下 一些较为前沿的研究和实践已经开始出现 1 教学平台的建设 很多高校已经开始尝试使用在线教育平台进行体育教学 把传统的面对面授课模式转变为
  • 基于java的物流信息网系统设计与实现

    基于java的物流信息网系统设计与实现 I 引言 A 研究背景和动机 基于Java的物流信息网系统设计与实现的研究背景和动机 随着互联网的普及和电子商务的快速发展 物流信息网系统已成为现代物流管理的重要组成部分 物流信息网系统能够实现物流信
  • 【计算机毕业设计】电影院订票信息管理系统

    当今社会已经步入了科学技术进步和经济社会快速发展的新时期 国际信息和学术交流也不断加强 计算机技术对经济社会发展和人民生活改善的影响也日益突出 人类的生存和思考方式也产生了变化 传统电影院订票采取了人工的管理方法 但这种管理方法存在着许多弊
  • 【计算机毕业设计】二手图书交易系统

    随着世界经济信息化 全球化的到来和互联网的飞速发展 推动了各行业的改革 若想达到安全 快捷的目的 就需要拥有信息化的组织和管理模式 建立一套合理 动态的 交互友好的 高效的二手图书交易系统 当前的信息管理存在工作效率低 工作繁杂等问题 基于
  • qt.qpa.plugin: Could not find the Qt platform plugin “windows“ in ““

    系统环境 Win10家庭中文版 Qt 5 12 9 链接了一些64位的第三方库 程序编译完运行后出现 qt qpa plugin Could not find the Qt platform plugin windows in 弹窗如下 网
  • 2024诸多大厂春招提前启动!Android的程序员还在等什么

    春招 提前批 已开 xdm别打瞌睡了 格力 顺丰 酷狗 沃尔玛中国 理想 科大讯飞等开启春招 开始收简历了 还有hc的企业提前抢人 春招时间短 节奏快 招满即止 就算挂了也绝不能不投 对企业来说 秋招和春招都是储备人才的黄金时期 春招中 除
  • 计算机Java项目|springboot校园台球厅人员与设备管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 计算机Java项目|学生成绩管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 计算机Java项目|电影购票系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 详解Java信号量-Semaphore

    第1章 引言 大家好 我是小黑 今天 咱们一起来深入探讨一下Semaphore 在Java中 正确地管理并发是一件既挑战又有趣的事情 当谈到并发控制 大家可能首先想到的是synchronized关键字或者是ReentrantLock 但其实
  • 基于节点电价的电网对电动汽车接纳能力评估模型研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 2024年华为OD机试真题-靠谱的车-Python-OD统一考试(C卷)

    题目描述 程序员小明打了一辆出租车去上班 出于职业敏感 他注意到这辆出租车的计费表有点问题 总是偏大 出租车司机解释说他不喜欢数字4 所以改装了计费表 任何数字位置遇到数字4就直接跳过 其余功能都正常 比如 1 23再多一块钱就变为25 2
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 学Python,一个月从小白到大神?看你怎么学!

    Python是一门超强大而且超受欢迎的编程语言 它被用在各种领域 比如网站开发 数据分析 人工智能和机器学习 学会Python会给你创造很多职业机会 所以绝对是值得一试的 但你有没有过这样的梦想 一个月时间 从Python小白变成Pytho
  • 计算机Java项目|有机蔬菜商城

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 【js学习之路】遍历数组api之 `filter `和 `map`的区别

    一 前言 数组是我们在项目中经常使用的数据类型 今天我们主要简述作用于遍历数组的api filter 和 map 的区别 二 filter和map的共同点 首先 我们主要阐述一下 filter 和 map 的共同点 api的参数都是回调函数
  • Java开发中不要使用受检异常

    简介 Java是唯一 主流 实现了受检异常概念的编程语言 一开始 受检异常就是争议的焦点 在当时被视为一种创新概念 Java于1996年推出 如今却被视不良实践 本文要讨论Java中非受检异常和受检异常的动机以及它们优缺点 与大多数关注这个

随机推荐

  • 命名Java变量

    Java变量的命名规则 在面向对象编程中 对于包 类 方法和常量的命名都是有规则的 例如 英文大小写的区分 1 包的命名 包的命名都是由小写字母组成 为了保障每个Java包命名的唯一性 应在自己定义的包的名称前加上唯一的前缀 例如 edu
  • java solr功能代码

    package com wlsq search center util import org apache solr client solrj SolrQuery import org apache solr client solrj im
  • 《数据结构》02-线性结构3 Reversing Linked List

    题目 Given a constant K and a singly linked list L you are supposed to reverse the links of every K elements on L For exam
  • dns备用服务器信息,dns服务器地址(dns首选和备用填多少)

    dns服务器地址 DNS是计算机域名体系 DomainNameSystem或DomainNameService 的缩写 它是由解析器以及域名服务器组成的 域名服务器是指保存有该网络中所有主机的域名和对应IP地址 并具有将域名转换为IP地址功
  • CocosCreator Java传参数到JS

    最近正在接GooglePlay内购 在传参数回CocosCreator的环境的时候 没有调用到JS的方法 其中错误的写法是 app runOnGLThread new Runnable Override public void run Co
  • IPv6基础介绍

    IPv4理论上仅仅能够提供的地址数量是43亿 但是由于地址分配机制等原因 实际可使用的数量还远远达不到43亿 因特网的迅猛发展令人始料未及 同时也带来了地址短缺的问题 针对这一问题 曾先后出现过几种解决方案 比如CIDR和NAT 但是CID
  • npm ERR! Log files were not written due to an error writing to the directory: D:\Program Files (x86)

    配置前端环境报错 之前配置过vue环境 现在再次使用时报错 解决 第一步 删除C Users 用户 下的 npmrc文件 我的是已经删除过了 第二步 在dos命令下输入 npm cache clean force 第三步 然后再输入命令 n
  • QT中QString字符串的大小写转换函数

    str toLower 转换为小写 str toUpper 转换为大写
  • 图解 JavaScript——代码实现(六种异步方案, 重点是 Promise、Async、发布 / 订阅原理实现,真香)

    图解 JavaScript 代码实现 六种异步方案 重点是 Promise Async 发布 订阅原理实现 真香 本节主要阐述六种异步方案 回调函数 事件监听 发布 订阅 Promise Generator和Async 其中重点是发布 订阅
  • 编写Spring MVC控制器的14个技巧

    通常 在Spring MVC中 我们编写一个控制器类来处理来自客户端的请求 然后 控制器调用业务类来处理与业务相关的任务 然后将客户端重定向到逻辑视图名称 该名称由Spring的调度程序Servlet解析 以呈现结果或输出 这样就完成了典型
  • Python: 向下取整规则解释带有负号的除取整(//)和除取余(%)

    1 Python 中的 结果向下取整 例如 print 7 3 2 3333333 向下取整为 2 print 7 3 2 333333 向下取整为 3 print 7 3 2 333333 向下取整为 3 print 3 7 0 42 向
  • linux sed命令详解

    简介 sed 是一种在线编辑器 它一次处理一行内容 处理时 把当前处理的行存储在临时缓冲区中 称为 模式空间 pattern space 接着用sed命令处理缓冲区中的内容 处理完成后 把缓冲区的内容送往屏幕 接着处理下一行 这样不断重复
  • wireshark的usb抓包分析 1 - 抓取数据

    wireshark的版本为Version 3 2 4 v3 2 4 0 g893b5a5e1e3e 操作系统为Win10 64bit 安装过程要注意的是 有一步需要选择安装USBpcap 不装这个没法抓USB包 安装完成后需要重启电脑 1
  • MCU-串口通信协议

    MCU 串口通信协议 一 介绍 串行通信就像单车道 所有数据得一个一个通行 并行就像多车道 一次可以通行多辆车 MCU常用到的串口通信模块主要有两种 UART和USART UART 全称是Universal Asynchronous Rec
  • JetBrains软件使用经验(转载)

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY NC SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net I love you dandan article details 997124
  • [python爬虫] Selenium切换窗口句柄及调用Chrome浏览器

    因为我的博客是根据我每个阶段自己做的事情而写的 所以前言可能有点跑题 但它更有利于让我回忆这个阶段自己的所作所为 这篇文章主要介绍Selenium爬虫获取当前窗口句柄 切换窗口句柄以及调用Chrome浏览器几个知识点 其中获取当前句柄的方法
  • 三元操作符

    通常N元操作符指的是该操作符有N个操作数 如赋值操作符 它是一个二元操作符 所以它有两个操作数 左右各一个 又如减号 是一个二元操作符 但是当它作为负号 使用的时候 便是一个一元操作符 它表示负数 所以只有一个操作数 那么 三元操作符理应有
  • python--unicodedata用法

    python unicodedata用法 需要掌握的 1 将Unicode字符 chr 转换为等效的数值 以浮点形式返回 print unicodedata numeric 四 4 0 2 将unicode字符 chr 转换为其等效的数字值
  • 【C语言初学必看】猜数字游戏背后的知识

    目录 前言 1 先看主体部分 大体逻辑的部分 a 为什么用do while循环 b switch语句 c 关于scanf 中的 d s 和 printf 的关系 d menu 和game 函数为什么没有返回值 e 为什么 intput 在w
  • ABAP 351 - 动态编程

    作为面对对象的编程语言 ABAP也是支持动态编程的 ABAP351作为一门独立的课程介绍了类反射机制如何实现的过程 一 Field Symbols Field Symbols 字段符号 在ABAP编程中经常使用 实际上它具备以下几点特性 字