内表
什么是内表
内表是一个数据对象
,
在运行时内表可保存多个相同结构的数据行数是动态的
,
系统可实时增加内表的大小。
•
内表的属性
�C
几种数据表的访问
:
分为索引访问
,
键访问
�C
三种表的类型
:
标准表
,
排序表
,
哈希表
•
内表的定义
TYPES|DATA itab {TYPE|LIKE} tabkind OF {linetype|lineobj}
[WITH key]
[INITIAL SIZE n] .
�C
tabkind
内表种类
�C
linetype
行类型
�C
key
表关键字
�C
n
初始内存大小
�C
内表类型(
一)
�C
标准表
STANDARD TABLE
具有逻辑索引
寻址操作通过关键字或者索引
�C
排序表
SORTED TABLE
具有逻辑索引
寻址操作通过关键字或者索引
按表关键字升序后存储
�C
哈希表
HASHED TABLE
没有逻辑索引
寻址操作只通过关键字
•
行类型
基本类型
结构体
内表
•
表关键字
�C
行结构为结构体
WITH [UNIQUE|NON-UNIQUE] KEY comp1 … compn
�C
行结构为基本类型
WITH [UNIQUE|NON-UNIQUE] KEY TABLE LINE
�C
不指定关键字
WITH [UNIQUE|NON-UNIQUE] DEFAULT KEY
•
初始内存大小
INITIAL SIZE n
创建一个内表
TYPES: BEGIN OF address,
street(20) TYPE C,
city(20) TYPE C,
END OF address.
DATA: BEGIN OF company,
name(20) TYPE C,
address TYPE address,
END OF company.
DATA itab_company LIKE HASHED TABLE OF company
WITH UNIQUE KEY name.
l
内表操作(
一)
l
操作内表行
插入行
INSERT
语句
插入单行
INSERT line INTO itab INDEX idx .
插入多行
INSERT LINES OF itab1 [FROM n1] [TO n2]
INTO [TABLE] itab2 [INDEX idx].
�C
附加行
APPEND
语句
附加单行
APPEND line TO itab .
附加多行
APPEND LINES OF itab1[FROM n1] [TO n2] TO itab .
�C
读取行
READ
语句
利用索引读取
READ itab INTO wa INDEX idx .
利用关键字读取
READ TABLE itab FROM key INTO wa .
修改行
MODIFY
语句
根据索引修改
MODIFY itab [FROM wa] [index idx]
[TRANSPORTING f1 f2 …] .
根据关键字修改
MODIFY TABLE itab FROM wa
[TRANSPORTING f1 f2 …] .
修改多行
MODIFY itab FROM wa TRANSPORTING f1 f2 …
WHERE cond .
删除行
DELETE
语句
通过索引删除
DELETE itab INDEX idx .
通过关键字删除
DELETE TABLE itab FROM wa .
DELETE TABLE itab WITH TABLE KEY k1=f1 … ki=fi.
删除多行
DELETE itab [FROM n1] [TO n2] [WHERE<condition>]
�C
循环处理结果集合
LOOP
语句
Loop
语句一条条的读出的数据行
,
写入
INTO
字指定的结构中
,
结构内容可用于输出或写回内表
.
LOOP AT itab [INTO wa] [FROM n1] [TO n2]
[WHERE<condition>].
<statement block>
ENDLOOP
l
表工作区
•
创建表工作区
:
�C
Tables t_name.
DATA: begin of t_name,
F1 type c ,
Endt_name.
表工作区就是其他语言的结构
,
象自定义的一个类型一样
,
但一旦创建一个内表之后
,
工作区就成了外界跟内表的交流口
,
每条记录的进入和取出都得通过它
,
并且清除它们的时候分开来清除
.