路人乙

心有多大,舞台就有多大。

统计

留言簿(1)

个人blog

技术网站

阅读排行榜

评论排行榜

[摘]内表达定义和使用(二)

2. 内表定义的ABAP Code

通过ABAP Code定义内表有三种方式,
With an implicitly defined (bound) type
With an explicitly defined local type
With an explicitly defined global type

内表定义的文法如下图所示:

Internal table defination syntax

文法中的STANDARD/ SORTED/HASHED TALBE指定了该内表示什么类型,内表定义时所引用的行类型(data_type, data_object, global_itab_type, local_itab_type, itab_data_object等)可以是本地或全局定义的类型或表,也可以是一个Data object。 WITH key_def用于指定内表的key列定义,UNIQUE或NON-UNIQUE指定了该内表的key列性质。需要注意的是,如果不适用WITH key_def addition定义key列,可以通过DEFAULT KEY指定默认字段为key列,对于Standard tables,默认的key列是由所有CHAR-LIKE字段组成的(C,N,D,T,X,STIRNG,XSTRING)。

table kind和key definition有多种组合,简要列出来如下: standrad table(only non-unique), sorted table(unique or non-unique), hashed table(only unique)。

standard table最常用,可以用以下简化方式定义:
DATA: itab_name TYPE TABLE OF line_type. ABAP运行时将此行代码编译为以下代码:
DATA: itab_name TYPE [STANDARD] TABLE OF line_type [WITH NON-UNIQUE DEFAULT KEY].

一个完整的定义如下:

Internal table definition full code

如上图所示代码为通过参考一个本地定义的LINE TYPE的STANDARD TABLE.如果将TYPE STANDARD TABLE替换为TYPE SORTED TABLE 或TYPE HASHED TABLE将定义两个结构完全一样的另外两种类型的内表。需要注意的是,对于SORTED TABLE,数据存储的顺序不同。定义内表的时候并一定需要通过INITIAL SIZE指定初始内存大小,在程序执行过程中,如果内表的大小不足,系统会自动扩展内表所占内存空间,而且没有最大限制。

Generic table kind是指没有使用TABLE TYPE明确定义是哪种内表,通常用于子程序参数定义。

posted on 2008-12-22 13:48 上帝也犯困 阅读(273) 评论(0)  编辑  收藏 所属分类: ABAP学习


只有注册用户登录后才能发表评论。


网站导航: