ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ABAP 內表的一些知识点【学习笔记】

ABAP 內表的一些知识点【学习笔记】

原创 Linux操作系统 作者:leniz 时间:2008-10-10 21:35:34 0 删除 编辑

使用ABAP的人,不可能逃過內表,使用內表的人不可能逃過內表定義,使用內表定義的人,可能很多人不了解定義的幾種內表的區別,當然我也包括在內,所以趁此機會,學習一下。
         一般情況下都是定義為標準內表,那么有問題嗎?

1)內表的幾種形式
      1.1 Standard Table(標準表),系統為該表的每一行數據生成一個邏輯索引。填充標準表時,可以將數據附加在所有行的最后,也可以插入到制定的位置,程序對內表行的尋址操作可以通過關鍵字或索引來進行(如果key值一致,返回的應該是順序第一次查到符合值的位置,存于SY-TABIX)。 在對表進行插入,刪除等操作時,各數據行在內存中的位置不變,系統僅重新排列各數據行的索引值。
      1.2 Sorted Table (排序表),具有一个逻辑索引,不同之处是排序表总是按照其表关键字升序排序后再进行存储,其访问方式与标准表相同。
      1.3 Hashed Table (哈希表),没有索引,只能通过关键字来访问。所以数据的访问与数据行的多少无关。

2)内表的定义语法
      TYPES|DATA itab {TYPE|LIKE} tabkind
                           OF {linetype |  lineobj}
                             [WITH key]
                           [INITIAL SIZE n].

     在没特别声明时默认为 标准表。
    2.1 表关键字 内表关键字在访问内表以及排序时非常之关键,定义时通过With key来定义,这也是一个可选项,即如果没有显式声明,那么内表中的非数值型栏位都为Key。 还有Unique的问题,即唯一性关键字声明,标准表不能使用此关键字,排序表可以用UNIQUE 或NON-UNIQUE,哈希表不能使用NON-UNIQUE,只能使用唯一表关键字。
    2.2 内表可初始大小,考虑内存的准备时间,所以对程序效率会有影响,(影响大小暂不明确),使用过程中如果不够,会自动增加;开始分配的过大,也是会浪费内存的,如果初始为0或不指定大小,系统会默认使用8K空间,所以如果确认表比较小的话,最好制定大小。
     2.3 occurs 是比较旧的定义方式,大家要朝前看。

3.我觉得最重要的也是最不好把握的就是:
    具体到程序中应该使用什么类型的表,则取决与其预计需要容纳的数据行数和访问频率。 对于小于100行的内表,且很少使用关键字操作,则使用标准表没有任何效率问题;数据量比较巨大的,且不存在重复行的,只需要使用关键字访问的内表则应定义为哈希表;排序表适用于运行期内必须以某种排序方式出现的内表。      

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

上一篇: 进公司一周年
下一篇: 片段
请登录后发表评论 登录
全部评论

注册时间:2008-05-31

  • 博文量
    448
  • 访问量
    1193703