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. Java多线程系列--“JUC集合”07之 ArrayBlockingQueue

    概要 本章对Java.util.concurrent包中的ArrayBlockingQueue类进行详细的介绍.内容包括:ArrayBlockingQueue介绍ArrayBlockingQueue原 ...

  2. 在office2010怎么样删除图片背景

    在网络上找到一张图片,当你只想要某些部分,但不想要图片的背景的时候,应该怎么办呢,当然你可以借助专业的图片处理工具,如:PS,然后对于大多数没有接触过此软件的同学来说要将背景去掉,实属不易,有没有简单 ...

  3. 结合 CSS3 & Canvas 模拟人行走的效果

    HTML5 和 CSS3 技术给 Web 带来了新的利器,点燃了 Web 开发人员的激情.所谓只有想不到,没有做不到,的确如此.下面给大家分享一个结合 CSS3 & Canvas 模拟人行走的 ...

  4. asp.net App_Code文件夹相关操作

    最近用到了App_Code文件夹,想要实现动态编译文件的方式,即替换文件夹中的类文件从而达到实时修改代码的效果,类似web.config,网上查到的资料基本都是把文件夹中的类文件修改属性为" ...

  5. 为什么是梯度下降?SGD

    在机器学习算法中,为了优化损失函数loss function ,我们往往采用梯度下降算法来进行优化.举个例子: 线性SVM的得分函数和损失函数分别为:                         ...

  6. 我如何调优SQL Server查询

    我是个懒人,我只想干尽可能少的活.当我干活的时候我不想太多.是,你没看错,这看起来很糟糕,作为一个DBA这很不合格.但在今天的文章里,我想给你展示下,当你想对特定查询创建索引设计时,你如何把你的工作和 ...

  7. JavaScript可否多线程? 深入理解JavaScript定时机制

    JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不少人都深有同感, 例如 setTimeout( ...

  8. ASP.NET MVC PartialView用法

    子页面AreaSelect.cshtml页面的Controller代码: public ActionResult AreaSelect() { return PartialView(); } 父页面前 ...

  9. Visual Studio 2015正式企业(Enterprise)版

    “7月20日 23:30 Visual Studio 2015正式版正式发布,作为微软新一代开发利器,在全地球乃至全宇宙乃至全太阳系中最强大 且没有之一的IDE(上述描述来自微博用户评论)跨平台支持成 ...

  10. iOS阶段学习第17天笔记(NSFileManager-NSFileHandle-文件操作)

    iOS学习(OC语言)知识点整理 一.单例模式 1)单例是一种编程思想,一个设计模式,与语言无关在采用了单例对象的应用程序中,需要单例类自行提供实例化单例对象, 不管实例化单例对象多少次,只有一个对象 ...