内表的定义

来源:互联网 发布:探险电影知乎 编辑:程序博客网 时间:2024/05/17 16:15

首先用TYPES关键字定义一个与内表相同的结构体

如下:

 

TYPES: BEGIN OF lt_line,
                  num TYPE i,
                  sqr TYPE i,
             END OF lt_line.

 

然后用DATA关键字定义内表和工作区

DATA: lt_itab TYPE STANDARD TABLE OF lt_line WITH HEADER LINE,   "定义一个有表头行内表
           it_itab TYPE STANDARD TABLE OF lt_line,                                      "定义一个无表头行内表
           wa_line TYPE lt_line.                                                                          "定义一个工作区

 

注意:或许你看到过这样的代码 如下

DATA:  BEGIN OF lt_line OCCURS 10,
                  num TYPE i,
                  sqr TYPE i,
             END OF lt_line.

实际上这段代码也声明了一个标准内表,并分配了内存大小为10行,OCCURS是ABAP3.0之前声明内表的关键字选项,现在不建议使用。

关键字WITH HEADER LINE也是定义带表头内表的另一种方法。

创建了带表头行的内表之后,可以认为程序中存在两个数据对象,一个是内表,一个是与内表行类型相同的结构体。在所有操作内表的ABAP

语句中,均需要指定工作区。但对于带表头行内表,可以忽略这一指定,系统隐式使用表头行作为工作区,不等于没有用到工作区。不带表头

行的内表没有隐式的工作区,所以要访问没有表头行的内表,必须在相应的ABAP语句中显示指定工作区。

在给内表操作带来方便的同时也增加了混淆,对于既可以操作内表又可以操作工作区的语句来说,有时不能简单的从语法上判断操作对象,需

要进行逻辑分析。如果一个语句中,该名称同时可能代表内表或同名工作区,则需要在内表名称之后加“[ ]”指明当前操作的是内表对象。

 

上面的定义内表的语句,相当于

DATA  lt_line  TYPE STANDARD TABLE OF lt_line 

                                     WITH NON-UNIQUE DEFAULT KEY

                                     INITIAL SIZE 10

                                     WITH HEADER LINE.

类似的还有语句:

TYPES itab TYPE | LIKE linetype occurs n.     -> itab是无表头行内表结构体

DATA   itab TYPE | LIKE linetype occurs n [WITH HEADER LINE].    ->DATA定义内表,如果没有关键字WITH HEADER LINE的话,虽然有occurs关键字,仍然是无表头行内表。

相当于:

TYPES | DATA itab TYPE|LIKE STANDARD TABLE OF linetype

                                                       WITH NON-UNIQUE DEFAULT KEY

                                                       INITIAL SIZE n

                                                       [WITH HEADER LINE].

 

DATA   itab TYPE | LIKE linetype occurs n. ->定义无表头行内表

然而下面语句定义的则是有表头行内表。

DATA: BEGIN OF itab OCCURS 10,         ->定义有表头行内表
                  num TYPE i,
                  sqr TYPE i,
             END OF itab.

 

关于DATA和TYPES关键字定义变量和结构体的时候所使用的关键字TYPE | LIKE

TYPE | LIKE 就是参照的意思,TYPE ->参照结构体

                                                  LIKE  ->参照变量