您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页ABAP中内表的定义方法 分类SAP2006.9.22

ABAP中内表的定义方法 分类SAP2006.9.22

来源:华佗小知识


ABAP中内表的定义方法

分类:SAP 2006.9.22 10:14 作者:ericbu | 评论:1 | 阅读:4387

老师在上课的时候是这样定义的:

DATA: BEGIN OF itab_personel OCCURS 10,

name(20) TYPE c,

age TYPE i,

END OF itab_personel.

但今天看到《SAP程序设计》一书中有如下描述:

实际上这段语句也声明了一个标准内表,并分配初始内存大小为10行,OCCURS是ABAP3.0之前声明内表的关键字选项,不建议读者使用

TYPES: BEGIN OF itab occurs n,

...

f1...,

...

1

END OF itab.

相当于:

DATA itab TYPE STANDARD TABLE OF itab

WITH NON-UNIQUE DEFAULT KEY

INITIAL SIZE n

WITH HEADER LINE.

类似的还有语句:

TYPES TAB TYPE|LIKE linetype OCCURS n.

DATA ITAB TYPE|LIKE linetype OCCURS n [WITH HEADER LINE].

相当于:

TYPE|DATA itab TYPE|LIKE STANDARD TABLE OF linetype

WITH NON-UNIQUE DEFAULT KEY

INITIAL SIZE n

[WITH HEADER LINE].

2

上述几种形式均只适用于创建标准表,因为在旧的SAP版本中,标准表是唯一的内表类型

而在新版本的SAP中已经支持多种内表,如下图所示

ABAP中有下列三种内表类型 1.)标准表,表类型关键字为STANDARD TABLE,系统为该表的每一行数据生成一个逻辑索引。填充标准表时,可以将数据附加在现有行之后,也可以插入到指定的位置,程序对内表行的寻址可以通过关键字或者索引进行。在对表进行插入、删除等操作时,各数据行在内存中的位置不变,系统仅重新排列各数据行的索引值。

2.)排序表,表类型关键字为SORTED TABLE,也具有一个逻辑索引,不同之处是排序表总是按其表关键字升序排序后再进行存储,其访问方式于标准表相同。

3.)哈希表,表类型关键字为HASHED TABLE,没有索引,只能通过关键字来访问。系统使用哈希算法管理表中的数据,因而其寻址一个数据行的时间与表的行数无关。

注意点: 3

1.)扁平结构内表的默认(标准)表关键字是非数字和非内表的组件字段;

2.)选项NON-UNIQUE|UNIQUE(非特有|特有)决定了内表中具有相同关键字的数据行是否可以重复出现,其中,标准表不能用UNIQUE关键字,且无需特别指定NON-UNIQUE关键字,排序表可以用NON-UNIQUE或者UNIQUE关键字;哈希表不能用NON-UNIQUE关键字,且必须指定UNIQUE关键字(不难理解,因为哈希表仅通过关键字的hash值进行寻址)

3.)使用INITIAL SIZE n为内表分配初始内存大小时,尽量给n指定一个合适的值,如果初始n值小于所需,系统会根据需要自动要求增加内存大小,这个过程需要占用一定的时间(消耗系统资源),如果n值过大,实际数据的行数少于定义,则会造成内存分配的浪费。所以应该尽量使n值接近实际需要。如果n值为0或者不指定的话,程序会为内表对象分配8KB大小的内存。所以,如果内表比较小,不要把该值设为0,以避免内存浪费!

内表定义示例

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,

4

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.

看了《SAP程序设计》这本书才知道老师当时给我们讲的内容实在是用点过时,而且也比较肤浅,新的排序表和Hash表都没有给我们讲到,看来还是得靠自己啊!

参考文献:《SAP程序设计》 黄佳 机械工业出版社

5

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务