ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ABAP 指針常用语法

ABAP 指針常用语法

原创 Linux操作系统 作者:hzq2010 时间:2011-05-05 22:49:57 0 删除 编辑

1、定義指針:
指針的定義主要有以下語句

定義任意類型的指針,但是不具備欄位結構(僅僅是一個地址)

  FIELD-SYMBOLS TYPE ANY.

參考數據庫表定義(這種指針是含有欄位結構的,參考內表同理)

  FIELD-SYMBOLS TYPE sflight.
  FIELD-SYMBOLS LIKE sflight.

  FIELD-SYMBOLS LIKE LINE OF sflight.

動態定義具有欄位結構的指針類型
   DATA: tabname TYPE tabname VALUE 'SFLIGHT' ,

 

   dref TYPE REF TO data.
    FIELD-SYMBOLS: TYPE ANY TABLE.

 

    CREATE DATA dref TYPE TABLE OF (tabname).
    ASSIGN dref->* TO .


2、指針的分配(常用句法)
分配某個變量給指針
   
ASSIGN var TO

分配结构中的某个字段的地址给指针
  ASSIGN COMPONENT pos OF STRUCTURE struc TO .

分配整個內表行給指針(指針必須定義為有欄位結構的類型)
  READ TABLE itab INDEX/WITH KEY ASSIGNING .


  LOOP AT itab
  ASSIGNING  .
   ENDLOOP.


分配类的方法或接口给指针
  ASSIGN dref->* TO .

直接在SQL語句中分配
   
SELECT *

   FROM (tabname) UP TO 20 ROWS
   INTO TABLE .

主要应用在以下几个方面:

  1 给一个数据对象分配一个别名,把结构内多层指向的变成一个短长度的

        例->f 代替  rec1->rec2-r>ec3-......->f

   2 在运行时为一个变长度的字符串设置长度和偏移

   3 在确定运行时设置一个指向数据对象的指针

   4 在运行时动态的采取和变更字段的指针

   5 可以访问结构体的组件指向内表行,不用一个单独的工作区去处理内表

  assign f to ,把字段f放到了领域中,这个领域在运行时指向字段f的内容,

  这意味着f的内容的所有改变在.

与其他语言不同:

  1  在passcal语言用P^ ,在c中用*p,abap没有像这样的特征

  2  在passcal和c语言中定义一个指针指向另一个指针,使让这个指针指向了两一个指针的对象

      而abap中让这个领域指向两一个领域,是这个领域指向了另一个领域的值。

例:

   FIELD-SYMBOLS:  ,  .

      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 .

        DO 16 TIMES.
          POS  = SY-INDEX + 1.
          ASSIGN COMPONENT  POS OF STRUCTURE  TO .
          HSL = HSL + .
        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  TO .
          STR_ALV-HSLVT = .
          STR_ALV-HSLMT =  + STR_ALV-HSL_S - STR_ALV-HSL_H.
        ENDIF.
        COLLECT STR_ALV INTO IT_ALV.
        CLEAR STR_ALV.
        HSL = 0.
      ENDLOOP.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23495244/viewspace-694561/,如需转载,请注明出处,否则将追究法律责任。

上一篇: SapScript Form 语法
请登录后发表评论 登录
全部评论

注册时间:2010-03-11

  • 博文量
    196
  • 访问量
    168053