内表与工作区的区别:
内表和工作区也都是存放数据的,区别是内表像DB里面的数据表一样,有字段有行数,可以有很多行数据。
但是工作区就只有一条数据,我们叫它表头数据,很多情况下是出现在循环当中,用来对比输出的。
内表可以包含两行和两行以上的纪录,工作区只能有一行记录。
工作区:程序对于内表行的操作不能直接进行,必须通过一种接口来传输,这个接口就是工作区。比如某程序需要从关系数据库中提取数据到内表各行中,必须先将数据读入工作区,然后再把工作区中的数据赋给内表的行。工作区必须具有和内表行一致或者可相互转换的数据结构。因此在定义内表对象的同时,需要定义一个与该内表行结构相同的工作区对象供程序使用,将数据写入内表时,必须首先给工作区赋值,然后在工作区添加或者插入内表。
表头行:ABAP为程序员提供可一种简单的方法:在创建内表对象的同时可以隐式的定义一个同名工作区,这个同名的工作区就叫表头行或标题行(Header Line)也称内表工作区。
DATA itab......WITH HEADER LINE......
创建了带表头的内表之后,可以认为程序中存在两个数据对象,一个是内表,另一个是与内表行类型相同的结构体。但对于带表头行的内表,则可以忽略这一指定,系统隐式使用表头行作为工作区,不等于没有用到工作区。不带表头行的内表没有隐式工作区,所以要访问没有表头行的内表,必须在相应的ABAP语句中显式指定工作区。这在给内表操作带来方便的同时也明显增加了混淆,对于既可以操作内表、又可以操作工作区的语句来说,有时不能单独从语法上判断操作对象,需要进行逻辑分析。如果一个语句中,该名称同时可能代表内表或者同名表工作区,则需要在内表名称之后加“[ ]”指明当前操作的是内表对象。
因此不提倡总使用带有表头行的内表,而应该总是声明结构相同的其他数据对象作为显示工作区进行内表行操作。
结构:使用 types 类型定义的
如 TYPES: BEGIN OF MAN,
NAME(2) TYPE C,
WIGHT(2) TYPE C,
HIGTH TYPE P DECIMALS 2,
END OF MAN.
工作区
如果用 DATA 则表示工作区.
DATA: BEGIN OF MAN,
NAME(2) TYPE C,
WIGHT(2) TYPE C,
HIGTH TYPE P DECIMALS 2,
END OF MAN.
DATA: MAN2 TYPE MAN.
DATA: MAN2 LIKE MAN.
内表
使用data定义的.
如 MAN1 LIKE TABLE OF MAN.
结构只是做作为数据类型的参照.不进行数据操作.
工作区只能拥有一条数据
内表作为有类似表结构类型的变量.
数据的展示通过把数据库的结果记录插入到内表,由内表循环到工作区进行展示
1.内表和工作区都是变量,而构造是一种类型,是变量定义的时候参照用的。
2.构造是一种数据的描述,不是真实存在的变量,但是它定义了参照它定义的数据的样子。
3.内表是一种二维的数据变量(多条),工作区是一维的(单条),工作区可以被看作内表中的一条(一行)数据。