ABAP 指針常用语法
1 、定义指針 :
指針的定義主 要有以下語句
定義任意類型的指針,但是不具備欄位結構(僅僅是一個地址)
FIELD-SYMBOLS <carrid> TYPE ANY.
參考數據庫表定義(這種指針是含有欄位結構的,參考內表同理)
FIELD-SYMBOLS <sflight> TYPE sflight.
FIELD-SYMBOLS <sflight> LIKE sflight.
FIELD-SYMBOLS <sflight> LIKE LINE OF sflight.
動態定義具有欄位結構的指針類型
DATA: tabname TYPE tabname VALUE 'SFLIGHT' ,
dref TYPE REF TO data.
FIELD-SYMBOLS: <itab> TYPE ANY TABLE.
CREATE DATA dref TYPE TABLE OF (tabname).
ASSIGN dref->* TO <itab>.
2 、指 針的分配(常用句法)
分 配某個變量給指針
ASSIGN var TO <field-symbols>
分配结构中的某个字段的地址给指针
ASSIGN COMPONENT pos OF STRUCTURE struc TO <field-symbols>.
分配整個內表行給指針(指針必須定義為有欄位結構的類型)
READ TABLE itab INDEX/WITH KEY ASSIGNING <field-symbols>.
LOOP AT itab
ASSIGNING <field-symbols>.
ENDLOOP.
分配类的方法或接口给指针
ASSIGN dref->* TO <field-symbols>.
直 接在SQL語句中分配
SELECT *
FROM (tabname) UP TO 20 ROWS
INTO TABLE <itab>.
主要应用在以下几个方面:
1 给一个数据对象分配一个别名,把结构内多层指向的变成一个短长度的
例<fs>->f 代替 rec1->rec2-r>ec3-......->f
2 在运行时为一个变长度的字符串设置长度和偏移
3 在确定运行时设置一个指向数据对象的指针
4 在运行时动态的采取和变更字段的指针
5 可以访问结构体的组件指向内表行,不用一个单独的工作区去处理内表
assign f to <fs>,把字段f放到了<fs>领域中,这个领域<fs>在运行时指向字段f的内容,
这意味着f的内容的所有改变在<fs中可见.声明这个领域用:fileled-symbols:<fs>.
与其他语言不同:
1 在passcal语言用P^ ,在c中用*p,abap没有像这样的特征
2 在passcal和c语言中定义一个指针指向另一个指针,使让这个指针指向了两一个指针的对象
而abap中让这个领域指向两一个领域,是这个领域指向了另一个领域的值。
例:
FIELD -SYMBOLS: <HSL> , <HSL2> .
LOOP AT IT_TABLE INTO STR_CLASS.
STR_ALV-RACCT = STR_CLASS-RACCT.
STR_ALV-TXT20_SKAT = STR_CLASS-TXT20.
ASSIGN STR_CLASS-HSL TO <HSL>.
DO 16 TIMES .
POS = SY-INDEX + 1 .
ASSIGN COMPONENT POS OF STRUCTURE <HSL> TO <HSL2>.
HSL = HSL + <HSL2>.
ENDDO .
IF STR_CLASS-DRCRK = 'S' .
STR_ALV-HSL_S = HSL.
ELSE .
STR_ALV-HSL_H = HSL.
ENDIF .
IF STR_CLASS-XBILK = 'X' .
ASSIGN COMPONENT 1 OF STRUCTURE <HSL> TO <HSL2>.
STR_ALV-HSLVT = <HSL2>.
STR_ALV-HSLMT = <HSL2> + STR_ALV-HSL_S - STR_ALV-HSL_H.
ENDIF .
COLLECT STR_ALV INTO IT_ALV.
CLEAR STR_ALV.
HSL = 0 .
ENDLOOP .
ABAP 指針常用语法的更多相关文章
- Sql常用语法以及名词解释
Sql常用语法以及名词解释 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) D ...
- sql 常用语法汇总
Sql常用语法 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控 ...
- Vue常用语法及命令
1,Vue常用语法 vue常用语法之变量的定义 // 1,变量相关 // 变量的提升 var username = "雪雪"; var username ; console.log ...
- ABAP 7.4 新语法-内嵌生命和内表操作(转)
转自:https://www.cnblogs.com/mingdashu/p/6744637.html ABAP 7.4 新语法-内嵌生命和内表操作 1.内嵌声明 2.内表操作 3.opensql ...
- iptables常用语法与案例
常用命令语法: [root@www ~]# iptables [-t tables] [-L] [-nv] 选项与参数: -t :后面接 table ,例如 nat 或 filter ,若省略此项目, ...
- derby常用语法
derby常用语法 以user表为例: 1.创建表 create table user (id int primary key,account varchar(5),name varchar(5),p ...
- Markdown通用的常用语法说明
前言 Markdown 是一种轻量级的 标记语言,语法简洁明了.学习容易,还具有其他很多优点,目前被越来越多的人用来写作使用. Markdown具有一系列衍生版本,用于扩展Markdown的功能(如表 ...
- Markdown简介以及常用语法
Markdown简介以及常用语法 最近发现用markdown记录东西很方便,感觉和emacs的org mode很类似,但是windows下使用emacs不是很方便.特此记录一下markdown常用的语 ...
- Markdown常用语法
什么是Markdown Markdown 是一种方便记忆.书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档. 通过Markdown简单的语法,就可以使普通文本内容具有 ...
随机推荐
- Linux - 日志文件
Linux日志文件绝大多数存放在/var/log目录,其中一些日志文件由应用程序创建,其他的则通过syslog来创建. Linux系统日志文件通过syslog守护程序在syslog套接字/dev/lo ...
- Anliven - 乱炖
001 --- Ping Yourself! 由TCP/IP协议栈而想到的: 你的"协议分层"是如何的?有谁或者什么事务所对应着?谁先谁后,什么重要? 你的"协议栈&qu ...
- 初探JavaScript(四)——作用域链和声明提前
前言:最近恰逢毕业季,千千万万的学生党开始步入社会,告别象牙塔似的学校生活.往往在人生的各个拐点的时候,情感丰富,感触颇深,各种对过去的美好的总结,对未来的展望.与此同时,也让诸多的老“园”工看完这些 ...
- 精品资源:40个实用的 PSD 贴纸模板《下篇》
贴纸经常被网页设计师用于为标注网站中的不同元素,以此吸引访客的注意.此外,使用贴纸也使网站更具吸引力.虽然设计者可以使用 Photoshop 制作贴纸,但他们也可以利用从互联网上下载现成的模板.这些模 ...
- BitCoinJ之Hello World示例程序
简介 比特币(BitCoin)是一种基于区块链(BlockChain)技术的数字化货币. 本文介绍了使用基于Java语言的BitCoinJ API实现一个简单的收取和支付比特币的示例程序. 开发环境 ...
- mysql的timeout
mysql的timeout 很多时候我们连接mysql会在timeout这里跌倒,这里明确下mysql的timeout: 下面是获取timeout的变量: mysql> show global ...
- 学习ASP.NET Web API框架揭秘之“HTTP方法重写”
最近在看老A的<ASP.NET Web API 框架揭秘>,这本书对于本人现阶段来说还是比较合适的(对于调用已经较为熟悉,用其开发过项目,但未深入理解过很多内容为何可以这样“调用”).看到 ...
- 会员管理系统的设计和开发(2)-- RDLC报表的设计及动态加载
在上篇<会员管理系统的设计和开发(1)>介绍了关于会员系统的一些总体设计思路和要点,经过一段时间开发,软件终于完成并发布.在这期间,碰到了不少技术难点,并积累了不少开发心得和经验,本篇继续 ...
- C# winform Listbox添加和删除items
两个listbox添加和删除items #region 添加/移除 //添加 private void btnAdd_Click(object sender, EventArgs e) { ) { r ...
- 别误用IsDigit与IsNumber函数(转)
1.起因 最近发现程序中有一段控制TextBox数字输入的代码,相信大家都不会太陌生,如下: void int_KeyPress(object sender, KeyPressEventArgs e) ...