ABAP笔记:定义指针,动态指针分配:ASSIGN COMPONENT <N> OF STRUCTURE <结构> TO <指针>.

参考大佬文章学习,总结了下没有提到的点:SAP ABAP指针的6种用法。_abap 指针-CSDN博客

定义指针:其实指针这玩意,就是类似你给个地方,把东西临时放进去,然后指针就是这个东西的替身了,写代码的时候更方便,指针可以直接赋值。

  FIELD-SYMBOLS: <F1>,<F2>,<F3>.ASSIGN <结构体> TO <F1>.参照结构体定义指针ASSIGN <变量> TO <F2>.参照变量定义指针

动态指针分配:

 <N> -结构的字段技术名称,或者当前行 ,SY-INDEX这种变量,可以是动态的

 <结构>-结构体,工作区之类的

 <指针>-一般以F开头

粗浅理解为:将<结构>中的某个<N>的值 ,分配给<指针>

哈哈,怎么感觉说了好像没说~还得自己理解。

仔细一点就是把结构中,具体的某一个字段,分配给指针,这个字段可以是动态变化的,也可以是静态的某个字段,这里的<N>代表的是结构中的字段技术名称。听不懂没关系,可以看下面示例代码参悟。

ASSIGN COMPONENT <N> OF STRUCTURE <结构> TO <指针>.

使用场景:

可以用灵活计算财务在一行的账龄金额例如 T100,T200,或者各个期间的金额累计,如DMBTR1,DMBTR2……,结构的T100,,T200可以参考如下代码,动态替代,以下计算累计的方式

    REPORT ztest.DATA:BEGIN OF wa_tab,char1 TYPE i VALUE '1',char2 TYPE i VALUE '2',char3 TYPE i VALUE '3',char4 TYPE i VALUE '4',END OF wa_tab.DATA:comp(6) VALUE 'CHAR05'.FIELD-SYMBOLS: <F1>,<F2>,<F3>.ASSIGN WA_TAB TO <F1>.ASSIGN COMP TO <F2>.DATA :LS_TEST TYPE CHAR10,LS_I TYPE I,LS_SUM TYPE I.DO 4 TIMES.LS_I  = LS_I +  1.LS_TEST  = 'char' && LS_I .ASSIGN COMPONENT LS_TEST OF STRUCTURE <F1> TO <F3>.IF <F3> IS ASSIGNED AND SY-SUBRC = 0.LS_SUM = LS_SUM  + <F3>.WRITE :/ '第' && LS_I && '次累计' , LS_SUM .ENDIF.ENDDO.

注意事项:

1.需要配合sy-subrc 来判断是否分配成功,

而不是 IF <F3> IS ASSINGED,这个只是判断有没有分配,不能判断有没有成功分配到值

如图结果第五次为999

    REPORT ztest.DATA:BEGIN OF wa_tab,char1 TYPE i VALUE '01',char2 TYPE i VALUE '02',char3 TYPE i VALUE '03',char4 TYPE i VALUE '04',END OF wa_tab.DATA:comp(6) VALUE 'CHAR05'.FIELD-SYMBOLS: <F1>,<F2>,<F3>.ASSIGN WA_TAB TO <F1>.ASSIGN COMP TO <F2>.DATA :LS_TEST TYPE CHAR10,LS_I TYPE I.DO 5 TIMES.LS_I  = LS_I +  1.LS_TEST  = 'char' && LS_I .ASSIGN COMPONENT LS_TEST OF STRUCTURE <F1> TO <F3>.IF sy-subrc = 0.WRITE:/ <F3>.ELSE.<F3> = 999.WRITE:/ <F3>.ENDIF.CLEAR <F3>.ENDDO.

2.如果下一次没有分配成功,指针的值仍为上一次分配的值,第五次执行结果等于第四次,并不是第五次没有分配成功,指针就会清空

    REPORT ztest.DATA:BEGIN OF wa_tab,char1 TYPE i VALUE '1',char2 TYPE i VALUE '2',char3 TYPE i VALUE '3',char4 TYPE i VALUE '4',END OF wa_tab.DATA:comp(6) VALUE 'CHAR05'.FIELD-SYMBOLS: <F1>,<F2>,<F3>.ASSIGN WA_TAB TO <F1>.ASSIGN COMP TO <F2>.DATA :LS_TEST TYPE CHAR10,LS_I TYPE I,LS_SUM TYPE I.DO 5 TIMES.LS_I  = LS_I +  1.LS_TEST  = 'char' && LS_I .ASSIGN COMPONENT LS_TEST OF STRUCTURE <F1> TO <F3>.IF  <F3> <> ''.WRITE:/ <F3>.ENDIF.ENDDO.

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

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

相关文章

2024.3.21 训练记录(21)

文章目录 CF 449B Jzzhu and CitiesCF 1945E Binary SearchCF 1945F Kirill and MushroomsCF 1945G Cook and PorridgeCF 1349B Orac and Medians CF 449B Jzzhu and Cities 题目链接 首先跑dijkstra&#xff0c;记录下每个点最短路的入度&#xff0c;然后遍历每一条铁路&…

iPhone语音备忘录误删?掌握这几个技巧轻松恢复【详】

语音备忘录是一款强大的应用程序&#xff0c;它允许用户使用语音输入功能来快速记录想法、提醒、待办事项等。无论是在行进间、工作中还是日常生活中&#xff0c;语音备忘录都是一个非常实用的工具&#xff0c;可以帮助您随时随地记录重要信息&#xff0c;而无需打字或者手动输…

2.windows ubuntu子系统配置

打开UBuntu后&#xff0c; > wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh #下载conda软件。 > bash Miniconda3-latest-Linux-x86_64.sh #下载完conda后执行这步 > source ~/.bashrc > conda-h #出现一下…

redis-黑马点评-商户查询缓存

缓存&#xff1a;cache public Result queryById(Long id) {//根据id在redis中查询数据String s redisTemplate.opsForValue().get(CACHE_SHOP_KEY id);//判断是否存在if (!StrUtil.isBlank(s)) {//将字符串转为bean//存在&#xff0c;直接返回Shop shop JSONUtil.toBean(s, …

laravel(源码笔记)服务绑定和解析(依赖注入-反射,控制反转)

依赖注入&#xff1a;解决对象之间的互相依赖关系&#xff0c;通过反射实现。控制反转&#xff1a;让外部来定义具体行为 反射&#xff08;基本使用&#xff09; reflectionClass getConstructor()getParameters()getConstants()getProperties()getMethods()newInstanceArgs(…

专家解读!IMAP的要点助您在旅途中保持邮件无忧!

你是否经常因会议而出差&#xff0c;需要在各种设备上灵活地访问你的电子邮件&#xff1f;如果是的话&#xff0c;你可能会想了解你的电子邮件系统是如何通过使用互联网消息访问协议&#xff08;IMAP&#xff09;来工作的&#xff0c;这样当你不在办公桌前时&#xff0c;你可以…

_.debounce防抖函数 在vue中使用this问题,应该传匿名函数而不是箭头函数

简单理解&#xff1a;_.debounce内部做了apply操作&#xff0c;箭头函数由于没有this,无法绑定this,导致最终this是undefined, 而匿名函数&#xff0c;成功通过applay绑定了this,所以this指向了vue组件实例。 methods: {// 防抖动dSave1: _.debounce(() > {console.log(thi…

用汇编进行字符串匹配

用汇编进行字符串匹配 2、试编写一程序&#xff0c;要求比较两个字符串 STRING1 和 STRING2 所含字符是否完全相同&#xff0c;若相同则显示 MATCH&#xff0c;若不相同则显示 NO MATCH。 .model small .dataSTRING1 db hello world!,0STRING2 db hello china!,0matchString d…

你知道弧幕影院如何制作吗?其应用领域竟如此广泛!

“沉浸式”作为如今备受热议的内容展示形式&#xff0c;其有着多种可实现的途径&#xff0c;其中弧幕影院作为一项有着独特视觉效果、沉浸式观影体验的技术类型&#xff0c;便是大多数影院、主题公园等娱乐场景的必备设计展项&#xff0c;这种弧幕影院通常使用大型的半圆形屏幕…

React-创建虚拟Dom四种方法

1.声明div const Son1<div>我言秋日胜春招</div> 2.声明函数 function Son() {return <div>自古逢秋多寂寥</div>;} 3.createElement方法 说明&#xff1a;React.createElement: 这是 React 提供的用于创建元素的函数。它接受三个参数&#xff1a…

python 爬取杭州小区挂牌均价

下载chrome驱动 通过chrome浏览器的 设置-帮助-关于Google Chrome 查看你所使用的Chrome版本 驱动可以从这两个地方找: 【推荐】https://storage.googleapis.com/chrome-for-testing-publichttp://npm.taobao.org/mirrors/chromedriver import zipfile import os import r…

leetcode 232.用栈实现队列 JAVA

题目 思路 使用两个栈&#xff08;输入栈和输出栈&#xff09;来模拟一个队列。 队列的push操作实现&#xff1a;直接将元素push到输入栈中。 队列的pop操作实现&#xff1a;队列是先入先出&#xff0c;将输入栈的元素全部pop到输出栈中&#xff0c;然后再由输出栈pop&#…

PMP备考时间、出成绩时间有多久?从在威班培训到拿证我用了60天

尽管PMI官方没有对PMP考试通过分数进行具体规定&#xff0c;能否通过也是看成绩页显示的是“PASS”&#xff08;通过&#xff09;还是“FAIL”&#xff08;未通过&#xff09;&#xff0c;没有成绩的数值体现&#xff0c;但有每个领域的等级可以进行查看&#xff0c;比如下图。…

并网型风光储微电网日前优化调度(MATLAB实现)

考虑了光伏发电、风力发电、电池储能和负荷需求等因素&#xff0c;与主网相连不考虑向主网售电情况。 % 微电网日前优化调度示例代码% 定义时间步长&#xff08;例如&#xff0c;每小时&#xff09; time_steps 24;% 生成模拟数据&#xff1a;光伏发电量&#xff0c;风力发电…

Windows系统服务器宝塔面板打开提示Internal Server Error错误

1、cmd运行bt命令 2、尝试输入16修复程序 3、如果不行&#xff0c;输入17升级程序

STL —— string(1)

目录 1. 模板 1.1 泛型编程 1.2 函数模板 1.2.1 函数模板概念 1.2.2 函数模板格式 1.2.3 函数模板的原理 1.2.4 显式实例化 1.2.5 模板参数的匹配原则 1.3 类模板 1.3.1 类模板定义格式 1.3.2 类模板的实例化 2. STL —— string类 2.1 STL 简介 2.2 标准库中的s…

微服务篇-C 深入理解第一代微服务(SpringCloud)_IV 深入理解Hystrix断路器

原创作者&#xff1a;田超凡&#xff08;程序员田宝宝&#xff09; 版权所有&#xff0c;引用请注明原作者&#xff0c;严禁复制转载 Part 1 理论部分 1 什么是微服务系统中的高可用&#xff1f; 在复杂的大型微服务系统中&#xff0c;高可用相关的技术方案非常重要&#x…

怎样隐藏查询和分组?

发布查询时&#xff0c;遇到信息量较大需要提前制作好&#xff0c;但不用马上发布的查询&#xff0c;该怎样隐藏查询和分组&#xff1f; &#x1f4cc;使用教程 01“开始”和“暂停”查询 如果想要隐藏查询&#xff0c;可以通过点击绿色开始按钮来暂停查询&#xff0c;暂停后的…

C++多态实现原理深度解析

C多态实现原理深度解析 目录 C多态实现原理深度解析 一、引言&#xff1a;多态性的基本概念与重要性 二、虚函数表&#xff08;VTable&#xff09;与虚函数指针&#xff08;VPtr&#xff09; 三、动态绑定与静态绑定 四、纯虚函数与抽象基类 五、继承与多态的关系 六、多…

【软考高项】十五、信息系统工程之系统集成

1、集成基础 定义&#xff1a;通过硬件平台、网络通信平台、数据库平台、工具平台、应用软件平台将各类资源有机、高效地集成到一起&#xff0c;形成一个完整的工作台面 基本原则包括:开放性、结构化、先进性和主流化 2、网络集成 包括&#xff1a;传输子系统、交换子系统、…