ABAP开发基础知识

ABAP开发基础知识

1.         内表的定义.... 1

2.         内表的赋值.... 1

3.    内表数据管理.... 1

3.1.内表的清空... 1

3.2.INSERT(向内表插入数据)... 1

3.3.MODIFY(直接修改内表数据). 2

3.4.COLLECT(内表数据分类汇总)... 2

3.5.SORT(内表数据排序).. 2

3.6.READ(读取) 2

3.7.LOOP....ENDLOOP(循环读取内表数据).. 2

3.8.AT...ENDAT(设置内表循环触发条件).. 2

3.9.AT..DELETE(删除内表数据).. 2

4.0.DESCRIBE(获取内表的具体属性).. 2


1.内表的定义

    通过关键字DATA对内表进行创建,内一的定义可以直接参考结构体或者其它内表及透明表,也可以直接定义字段,其中关键字如下:

    UNIQUE|NON-UNIQUE:指定关键字,只能应用于排序表或者哈希表。

    INITIAL SIZE n:指定初始化内表大小。

    WITH HEADERLINE:定义内表是否有表头。

   具体定义有以下几种方式:

    DATA <内表名> TYPE <结构类型> WITH[UNIQUE|NON-UNIQUE] [INITIAL SIZE n] [WITH HEADER LINE]

   DATA <内表名> LIKE TABLE OF <内表或者透明表> WITH[UNIQUE|NON-UNIQUE] [INITIAL SIZE n] [WITH HEADER LINE]

   DATA BEGIN OF itab OCCURS n,

      ......

   END OF itab [VALID BETWEEN f1 AND f2]

2.内表的赋值

   上面曾介绍过,内表分为有无HEADER LINE两种。对于有HEADER LINE的内表,可以通过填充HEADER LINE数据后或通过外部的Work Area向内表存储空间中追加数据,相关语法如下:

APPEND(<work area> into) <ITAB>.

  3.内表数据管理

3.1.内表的清空

      CLEAR <ITAB>:仅清空HEADER LINE,对内表数据存储空间不影响。

      REFRESH <ITAB>:清空内表数据存储空间,对HEADER LINE不影响。

      REFRESH <itab> FROM TABLE<dbtab>:清空内表存储空间,填充从数据库表所获数据。

      FREE <ITAB>:清空内表数据存储空间,对HEADER LINE不影响。

3.2.INSERT(向内表插入数据)

可以按内表的具体字段向表中插入一行或者多行数据,具体语法如下:

       INSERT [wa INTO|INITIAL LINE INTO] itab [INDEX idx].

      INSERT [wa INTO|INITIAL LINE INTO] TABLE itab.

      INSERT LINES OF itab1 [FROM idx] [TO idx2] INTO itab2 [INDEX idx3].

3.3.MODIFY(直接修改内表数据)

按内表位置或者具体内表字段值相等条件修改内表数据。

      MODIFY itab [FROM wa] [INDEX idx][TRANSPORTING f1...fn] WHERE cond.

3.4.COLLECT(内表数据分类汇总)

将内表中相同的字段合并,若有类型为I的字段,则将其值加总。

       COLLECT [wa INTO] itab.

      3.5.SORT(内表数据排序)

对内表进行排序,可以指定具体的排序字段、排序方式(升/降),语法如下:

       SORT itab [BY f2 f2...fn] [ASCENDING/DESCENDING]

  3.6.READ(读取)

依据具体行数或字段值等条件读取某一内表的数据。

  READ TABLE itab FROM wa.

  READ TABLE itab WITH [TABLE] KEYk1=v1...kn=vn [BINARY SEARCH].

 READ TABLE itab INDEX i.

       使用READ操作的表必须的HEADER LINE作为查找出的数据存储窗口,BINARY SEARCH 可以提高内表数据查找的速度,但是使用前必须先对内表进行排序。

      3.7.LOOP....ENDLOOP(循环读取内表数据)

 循环读取内表数据,在循环中使用系统变量SY-TABIX可获取当前所执行的行数。

LOOP AT ITAB FROM n1 TO n2.:读取内表具体行数间数据。

LOOP AT ITAB WHERE logexp.:按具体字段条件读取内表。

      3.8.AT...ENDAT(设置内表循环触发条件)

该语法为事件控制函数,应用于LOOP循环语句中,用于获取内表的数据变化事件。

ATNEW f.:当某个字段数据与上一行数据值不同时触发该事件。

     AT END OF f.:当内表中某个字段当前行值与下一行值不同时触发该事件。

     AT FIRST.:当执行内表第一行时触发该事件。

ATLAST.:当执行内表最后一行时触发该事件。

    3.9.AT..DELETE(删除内表数据)

    DELETE TABLE itab WITH TABLE KEYk1=v1...kn=vn.:按具体值删除。

DELETETABLE itab [FROM wa].:参照其它内表值删除。

DELETEitab INDEX idx.:删除具体行数据。

DELETEitab FROM idx1 TO idx2.:删除具体行数范围间数据。

DELETEADJACENT DUPLICATES FROM itab.:删除重复数据,执行此条件前必须先排序。

     4.0.DESCRIBE(获取内表的具体属性)

   DESCRIBE TABLE itab LINES n:获取内表当前总行数,n为整型。

DESCRIBE TABLE itab OCCURS n:获取内表初始化行数,n为整形。

DESCRIBE TABLE itab KIND K.:获取内表类型:T:Standard,S:SORTED,H:HASHED。

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值