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

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

时间: 2024-10-27 19:38:03

ABAP 指針常用语法的相关文章

sql 常用语法汇总

Sql常用语法 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份数据的

derby常用语法

derby常用语法 以user表为例: 1.创建表 create table user (id int primary key,account varchar(5),name varchar(5),password varchar(16),role_id int(2)); 2.查看所有表 show tables: 3.删除表 drop table user; 4.查看表结构 describe user; 5.增删改查 insert into user values(1, 'admin', 'zz

iptables常用语法与案例

常用命令语法: [[email protected] ~]# iptables [-t tables] [-L] [-nv] 选项与参数: -t :后面接 table ,例如 nat 或 filter ,若省略此项目,则使用默认的 filter -L :列出目前的 table 的规则 -n :不进行 IP 与 HOSTNAME 的反查,显示讯息的速度会快很多! -v :列出更多的信息,包括通过该规则的封包总位数.相关的网络接口等 范例:列出 filter table 三条链的规则 [[email

SQL常用语法大全

一.基础1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始 备份BACKUP DATABASE pubs TO testBack 4.说明:创建新表create

Emmet常用语法

Emmet常用语法1.输入!和html:5(不能大写),按下TAB 键,快速生成一个 HTML5 的标准文档初始结构. html:xt 生成 HTML4 过渡型 html:4s 生成 HTML4 严格型2.生成带有 id .class 的 HTML 标签 (1)Emmet 的语法有点类似 CSS 的语法,生成 id 为 aaa 的 div 标签,我们只需要编写下面指令:#aaaEmmet 默认的标签为 div ,如果我们不给出标签名称的话,默认就生成 div 标签. (2)如果编写一个 clas

php正则表达式入门-常用语法格式

原文地址:http://www.jbxue.com/article/24467.html 分享下php正则表达式中的一些常用语法格式,用于匹配字母.数字等,个人感觉还不错. 语法格式:位于定界符"/"之间.较为常用的元字符包括: “+”, “*”,以及 “?”.其中, “+”元字符规定其前导字符必须在目标对象中连续出现一次或多次, “*”元字符规定其前导字符必须在目标对象中出现零次或连续多次, 而“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次. /jim{2,6}/<

SQLServer2005 常用语法大全

SQL分类: DDL-数据定义语言(CREATE,ALTER,DROP,DECLARE) DML-数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL-数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建备份数据的 device U

Oracle常用语法

1,case用法 SELECT CASE WHEN T.FLAG='0' THEN T.USERID WHEN T.FLAG='1' THEN T.ORGID ELSE NULL END AS '标识' FROM XTXMXX T 2,decode用法 --如果FLAG等于1,则转为USERID,如果为0,则转为ORGID,其他的为2 SELECT DECODE(T.FLAG,1,T.USERID,0,T.ORGID,2) FROM XTXMXX T ; 3,创建sequence -- Crea

T-SQL和MySQL的一些常用语法的区别

本文将主要列出MySQL与SqlServer的SQL语句的一些常用语法的不同之处,且以常用的存储过程的相关内容为主. 1. 标识符限定符 SqlServer [] MySql `` 2. 字符串相加 SqlServer 直接用 + MySql concat() 3. isnull() SqlServer isnull() MySql ifnull() 注意:MySql也有isnull()函数,但意义不一样 4. getdate() SqlServer getdate() MySql now()