一、内表是什么
用处:当程序中处理有固定结构的数据时候,就需要使用内表,特别是内表是在程序中存储数据库表的载体。
内表:Internal memory table 内存中的表,是外设(屏幕、磁盘,打印机等)和数据库表数据交换的中介。
注意: 在ABAP语言中不提供二维数组,内表相当于二维数组, 它是一个表示内存的二维数据结构(m行*n列)。与传统二维数组的区别,二维数组的m*n 在编译期就已经确定多少个房间了,而内表的行数量是可以动态拓展的.
二、内表的属性
内表和其他ABAP数据结构一样,包括数据类型(data types)和数据对象(data objects)。内表类型是内表在程序或者字典库(ABAP dictionary)的抽象描述,可以用内表类型来创建一个具体的内表对象。
ABAP中有两种数据类型:内表和结构体(structure)。一个内表的数据类型包括:行类型(line type)、主键(key)、表类型(table type)。
(一)、Line type 内表行类型
1. 确定行类型 就是确定行中的 字段 和 字段类型
2. 用结构体 或 透明表 可以作为内表的 行类型
3. 内表可以当成数组.
4. 采用只有一个字段的结构体 或 一个不可再分的类型作为行类型,此内表就相当于一个数组
(二)、Key definition.键定义(和主键很像)
1. Table key 表键
2. Table key:unique(唯一) / non-unique(不唯一,区别数据库,可以有重复记录)
3. Components :构成键的字段,顺序敏感 , 顺序不同 table key也就不一样
(三)、Data access type 数据访问类型
1. Index access根据行号访问
2. Key access 根据table key访问
三、内表的三种类型
1. Standard table
适合通过index访问表的每条记录情形。访问时间和表的记录数目大小成线性关系。
访问: index access(推荐) , key access
Table key: non-unique
2. Sorted table
适合当你输入记录时就根据主键排序的情形。
天生就有排序的功能,插入数据后就会按照 table key排序
访问: index access , key access(推荐)
Table key: unique / non-unique
3. Hashed table
适合于通过主键来访问操作表的记录的情形。无论表记录的多少,访问时间是常量。当你想要创建一个类似数据库表的内表时,就使用Hashed table。数据量相当大时考虑用这种内表。
访问: only key access
Table key :unique.
四、内表的操作
(一)、创建内表
DATA: BEGIN OF TY_OUTLIST,
USER LIKE AGR_USERS-UNAME, "用户名
NAME LIKE ADRP-NAME2, "用户姓名
DEPART LIKE ADCP-DEPARTMENT, "部门
ROLENAME LIKE AGR_USERS-AGR_NAME, "用户角色
ROLETEXT LIKE AGR_TEXTS-TEXT, "角色描述
END OF TY_OUTLIST.
DATA: T_OUTLIST LIKE STANDARD TABLE OF TY_OUTLIST WITH HEADER LINE.