在帖子ABAP内表分类标准之一 中介绍了内表从类型上来分,可以分为三种;今天介绍ABAP内表从另外一个判断标准上进行分类比较,分类的标准是:是否带有表头,可以把内表分为两大类,带表头内表/不带表头内表。
一,不带表头内表
内表和工作区命名严格区分,只在结构上保持一致,命名不能重复。不带表头在使用起来时非常清晰,工作区与内表不会混淆。定义使用ABAP内表分类标准之一中的定义就是不带表头的内表。
二,带表头的内表
先看定义:1,DATA GT_TAB TYPE STARDAND TABLE OF MARA WITH HEADER LINE.
2,DATA:BEGIN OF GT_TAB1 OCCURS 0,
MATNR TYPE MARA-MATNR,
END OF GT_TAB1.
上面定义的除了定义出内表外,还同时定义了工作区。从表面上看内表为GT_TAB,其实有个和内表同名同结构的工作区GT_TAB也被定义了;为了以示区分通常将GT_TAB[]当作内表名,GT_TAB当作工作区。如果后面对内表的操作可以严格按照这个命名规则,带表头的内表和不带表头的内表在操作上是没有分别的。不过事实上如果使用了代表头的内表,都会使用简写;如:APPEND GT_TAB TO GT_TAB[] --->APPEND GT_TAB.
在第二种定义方法中,OCCURS 0 其实没有实际意义,其中的0是对内表空间进行预大小设定,所以一般都是指定为0.