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 指針常用语法的更多相关文章

  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. spring源码分析之spring jmx

    JMX架构定义: https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/overview/architecture.html Archi ...

  2. expdp/impdp 参数说明,中英对照

    任意可以使用expdp/impdp的环境,都可以通过help=y看到帮助文档. 1.expdp参数说明 2.impdp参数说明 3.expdp参数说明(中文) 4.impdp参数说明(中文) 1.ex ...

  3. Azure Automation (2) 定期删除存储账号中的文件

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China. 本文是对笔者之前的文档Azure Backup (1) 将SQL ...

  4. 【JDK源码分析】String的存储区与不可变性

    // ... literals are interned by the compiler // and thus refer to the same object String s1 = " ...

  5. TCP/IP详解学习笔记(13)-TCP坚持定时器,TCP保活定时器

    TCP一共有四个主要的定时器,前面已经讲到了一个--超时定时器--是TCP里面最复杂的一个,另外的三个是: 坚持定时器 保活定时器 2MSL定时器 其中坚持定时器用于防止通告窗口为0以后双方互相等待死 ...

  6. 总结Unity IOC容器通过配置实现类型映射的几种基本使用方法

    网上关于Unity IOC容器使用的方法已很多,但未能做一个总结,故我这里总结一下,方便大家选择. 首先讲一下通过代码来进行类型映射,很简单,代码如下: unityContainer = new Un ...

  7. Add和AddRange的区别

    Add和AddRange区别 Add和AddRange Add:将指定的对象添加到……中 AddRange:向……末尾,添加数组 - 在群体操作时,使用AddRange取代Add 用AddRange可 ...

  8. 无刷新提交表单(非Ajax实现)

    HTML代码: <iframe id="fra" name="frm" style="display: none;"></ ...

  9. 【FTP】C# System.Net.FtpClient库连接ftp服务器(下载文件)

    如果自己单枪匹马写一个连接ftp服务器代码那是相当恐怖的(socket通信),有一个评价较高的dll库可以供我们使用. 那就是System.Net.FtpClient,链接地址:https://net ...

  10. JavaScript中的parseInt的进制问题

    昨天帮原来同学写个js,碰见个问题,parseInt('08')的结果竟然是0后来突然想过来,是八进制的原因parseInt 方法 返回由字符串转换得到的整数.parseInt(numString, ...