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>.

、指 針的分配(常用句法) 
分 配某個變量給指針 
    
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 指針常用语法的更多相关文章

  1. Sql常用语法以及名词解释

    Sql常用语法以及名词解释 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) D ...

  2. sql 常用语法汇总

    Sql常用语法 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控 ...

  3. Vue常用语法及命令

    1,Vue常用语法 vue常用语法之变量的定义 // 1,变量相关 // 变量的提升 var username = "雪雪"; var username ; console.log ...

  4. ABAP 7.4 新语法-内嵌生命和内表操作(转)

    转自:https://www.cnblogs.com/mingdashu/p/6744637.html ABAP 7.4 新语法-内嵌生命和内表操作   1.内嵌声明 2.内表操作 3.opensql ...

  5. iptables常用语法与案例

    常用命令语法: [root@www ~]# iptables [-t tables] [-L] [-nv] 选项与参数: -t :后面接 table ,例如 nat 或 filter ,若省略此项目, ...

  6. derby常用语法

    derby常用语法 以user表为例: 1.创建表 create table user (id int primary key,account varchar(5),name varchar(5),p ...

  7. Markdown通用的常用语法说明

    前言 Markdown 是一种轻量级的 标记语言,语法简洁明了.学习容易,还具有其他很多优点,目前被越来越多的人用来写作使用. Markdown具有一系列衍生版本,用于扩展Markdown的功能(如表 ...

  8. Markdown简介以及常用语法

    Markdown简介以及常用语法 最近发现用markdown记录东西很方便,感觉和emacs的org mode很类似,但是windows下使用emacs不是很方便.特此记录一下markdown常用的语 ...

  9. Markdown常用语法

    什么是Markdown Markdown 是一种方便记忆.书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档. 通过Markdown简单的语法,就可以使普通文本内容具有 ...

随机推荐

  1. Moon River

    读书笔记系列链接地址http://www.cnblogs.com/shoufengwei/p/5714661.html.        昨晚无意中听到了一首英文歌曲,虽不知其意,但是瞬间就被优美的旋律 ...

  2. Java之HashMap在多线程情况下导致死循环的问题

    PS:不得不说Java编程思想这本书是真心强大.. 学习内容: 1.HashMap<K,V>在多线程的情况下出现的死循环现象   当初学Java的时候只是知道HashMap<K,V& ...

  3. Windows Azure Cloud Service (42) 使用Azure In-Role Cache缓存(1)Co-located Role

    <Windows Azure Platform 系列文章目录> Update 2016-01-12 https://azure.microsoft.com/zh-cn/documentat ...

  4. CentOS7 Nexus安装

    CentOS7 Nexus安装 CentOS7 Nexus安装 Download 从Nexus下载nexus-2.11.2-03-bundle.tar.gz Install 安装 上传RPM文件到/t ...

  5. JAVA 设计模式 迭代器模式

    用途 迭代器模式 (Iterator) 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示. 迭代器模式是一种行为型模式. 结构

  6. jquery删除数组中重复元素

    首先定义如下数组: var arr=[0,2,3,5,6,9,2]; 我们可以看到数组中存在重复元素'2'; 最后通过jquery筛选应该得到[0,2,3,5,6,9]; ok,首先我们再定义一个空数 ...

  7. web前端学习笔记---scrollWidth,clientWidth,offsetWidth的区别

    通过一个demo测试这三个属性的差别. 说明: scrollWidth:对象的实际内容的宽度,不包边线宽度,会随对象中内容超过可视区后而变大. clientWidth:对象内容的可视区的宽度,不包滚动 ...

  8. C# 获取 mp3文件信息

    C# 获取 mp3文件信息[包括:文件大小.歌曲长度.歌手.专辑] 第一种方式:[代码已验证] // http://bbs.csdn.net/topics/390392612   string fil ...

  9. 从C#到Objective-C,循序渐进学习苹果开发(2)--Objective-C和C#的差异

    本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台开发苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验. 在上篇<从C#到 ...

  10. 【要什么自行车】ASP.NET MVC4笔记03:调用编辑器 kindeditor

    参考:http://www.cnblogs.com/guzhongx/p/kindeditor.html 1.下载kindeditor,存放于Content文件夹下 <script src=&q ...