论坛首页 综合技术论坛

个人浅见之内表的应用

浏览 1663 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-06-19  
1.内表种类:
    .标准表,表类型为关键字STANDARD TABLE,系统为该表的每一行生成一个逻辑索引。填充标准表时,可以讲数据附加在现有行之后,也可以插入到指定的位置,程序对内表行的寻址操作可以通过索引或者关键字,另外,在对表进行插入,删除等操作时,个数据行在内存中的位置不变,系统仅重新排列个数据行的索引值。
    .排序表,表类型关键字为SORTED TABLE,也具有一个逻辑索引,不同之处在于排序表总是按其关键字生序排列以后再存储,其访问方式与标准表相同。
    .哈希表,表类型关键字为HASHED TABLE,没有索引,只能通过关键字来访问,系统用哈希算法管理表中的数据,因而其寻址一个数据行的时间与表的大小无关。
2.表关键字
    .如果内表行是结构体,则可以指定结构体中的某几个字段作为内表关键字,该字段不能是内表或者引用类型,但可以是嵌套体。
    .如果内表的整个行都是由基本类型字段组成,则可以把内表整行指定为关键字。
    .如果不指定任何关键字,则可以使用默认的标准关键字,该选项为默认选项。
    扁平结构内表的默认表关键字是非数字和非内表的组件字段,举例来说,一个内表有字段姓名(c类型),年龄(n类型)和工资(f类型),则默认的关键字为姓名和年龄。如果内表的整个行都是单个基本类型组成,则默认关键字为整个行,如果内表字段含有内表类型字段,则没有默认关键字。
3.UNIQUE/NON-UNIQUE
    选项UNIQUE|NON-UNIQUE决定内表是否允许存在相同关键字的记录,即如果指明为UNIQUE KEY,则通过表关键字能够唯一确定内表的行记录,在程序中不能插入具有相同关键字的多行记录;
    1.标准表只能指定为NON-UNIQUE,可以不指定,不指定默认就是NON-UNIQUE。
     2.排序表可以为UNIQUE,也可以为NON-UNIQUE.
    3.哈希表只能是UNIQUE,其必须指定UNIQUE关键字,如果允许相同的关键字记录,则hash值就相同,所以只能是UNIQUE,不允许重复的关键字存在。

REPORT  ZTCXHTEST_INTERNAL_TABLE.
TYPES: BEGIN OF address,
          street(20) TYPE c,
          city(20) TYPE c,
        END OF address.
       
DATA: BEGIN OF company,
        name(20)  TYPE c,
        addresses TYPE address,
      END OF company.
DATA: itab_company LIKE HASHED TABLE
                                OF company
                                WITH UNIQUE KEY name.

DATA: itab_company_sorted LIKE SORTED TABLE
                                OF company
                                WITH UNIQUE KEY name.
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics