BTP上的ABAP开发(6)内表-1

一、定义

内表(internal table)是一种列表类型的变量,虽然称之为表,但并不是存储在服务器中的物理表。顾名思义,内表一般可以包含一列或者多列,用来填充多行形同类型的数据。
内表有三种,分别是标准表,排序表和哈希表。

1.标准表(Standard table)

标准表中的数据没有被排序,默认情况下,系统会将新数据直接追加在末尾。当需要查询数据时,系统会遍历整个表,如果标准表的数据量很大,查询效率较低。标准表不需要指明唯一的key,因此可以添加重复的数据。标准表是开发中最常用的内表。

2.排序表(Sorted table)

排序表需要指定key即数据一个或几个字段组成的唯一(排序)值,当向排序表插入输入时,系统会根据排序自动在指定插入位置。因为数据是经过排序的,在遍历的时候效率会比标准表高。排序表在定义时可以指定key值是否可以重复,可以重复的情况下意味着可以出现重复数据。

3.哈希表(Hashed table)

对于存在哈希表中的数据,经过哈希算法的处理,使系统可以以较高效率对大量数据进行遍历。与排序表相同,哈希表也需要指明key,不同的是,哈希表不允许key值相同的数据。实际开发中,哈希表使用较少。

二、声明

内表的声明和变量类似,都是以data关键字开头,table of表明是内表型变量,以及相关选项。

1.标准表

标准表的简洁式声明,只给出了必要的选项,基于类型st_connection声明内表。

data connections type table of st_connection.

将默认选项都给出的声明方式,指明了内表的类型,默认key值,支持重复数据。

data connections type standard table of st_connection with non-unique default key.

2.排序表

基于st_connection类型声明排序表,airport_from_idairport_to_id是排序字段,non-unique支持重复数据。

data connections type sorted table of st_connection with non-unique key airport_from_id airport_to_id.

3.哈希表

carrier_idconnection_id作为key,不支持重复数据。

data connections type hashed table of st_connection with unique key carrier_id connection_id.

定义内表之前,通常会定义一个内表的类型,在类型中指出内表的访问方式和key。当需要定义多给相同类型的内表时,data语句显得更干净,可读性更高。

TYPES: BEGIN OF st_connection,
         carrier_id      TYPE /dmo/carrier_id,
         connection_id   TYPE /dmo/connection_id,
         airport_from_id TYPE /dmo/airport_from_id,
         airport_to_id   TYPE /dmo/airport_to_id,
       END OF st_connection.
       
TYPES tt_conn TYPE SORTED TABLE OF st_connection
              WITH UNIQUE KEY carrier_id
                              connection_id.
DATA tbl_conns TYPE tt_conn.

如代码,先定义结构类型st_connection,然后根据结构类型定义内表类型tt_conn,最后根据内表类型定义内表tbl_conns

*内表在绝大多数情况下都是局部变量,如非必要,不要进行全局定义。


总结

打完收工。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值