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