内表的定义

首先用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  ->参照变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值