SAP ABAP - 创建内部表



DATA 语句用于声明内部表。程序必须知道表在哪里开始和结束。因此,使用 BEGIN OF 语句,然后声明表名。之后,使用 OCCURS 附加项,后跟一个数字,这里是 0。OCCURS 告诉 SAP 正在创建内部表,而 0 表示它最初不包含任何记录。它会在填充数据时扩展。

以下是语法:

DATA: BEGIN OF <internal_tab> Occurs 0,

让我们在新的一行上创建字段。例如,创建声明为 LIKE ZCUSTOMERS1-name 的 'name'。创建另一个名为 'dob' 的字段,LIKE ZCUSTOMERS1-dob。最初在内部表中为字段命名与在其他地方创建的其他字段使用相同的名称非常有用。最后,使用“END OF <internal_tab>.”声明内部表的结束,如下面的代码所示:

DATA: BEGIN OF itab01 Occurs 0,
   name LIKE ZCUSTOMERS1-name,
   dob LIKE ZCUSTOMERS1-dob, 
END OF itab01.

这里 'itab01' 在 SAP 中创建临时表时通常用作简写。OCCURS 子句用于通过声明表的字段来定义内部表的正文。当使用 OCCURS 子句时,可以指定一个数字常量 'n' 来根据需要确定额外的默认内存。OCCUR 0 子句使用的默认内存大小为 8 KB。现在创建了内部表的结构,可以编写代码来用记录填充它。

可以使用或不使用标题行创建内部表。要创建带有标题行的内部表,请在内部表的定义中,在 OCCURS 子句之前使用 BEGIN OF 子句,或在 OCCURS 子句之后使用 WITH HEADER LINE 子句。要创建没有标题行的内部表,请在不使用 BEGIN OF 子句的情况下使用 OCCURS 子句。

您还可以使用 TYPES 语句创建内部表作为局部数据类型(仅在当前程序上下文中使用的数据类型)。此语句使用 TYPE 或 LIKE 子句来引用现有表。

创建内部表作为局部数据类型的语法为:

TYPES <internal_tab> TYPE|LIKE <internal_tab_type> OF 
   <line_type_itab> WITH <key> INITIAL SIZE <size_number>.

这里 <internal_tab_type> 指定内部表 <internal_tab> 的表类型,<line_type_itab> 指定内部表行的类型。在 TYPES 语句中,可以使用 TYPE 子句将内部表的行类型指定为数据类型,并使用 LIKE 子句将行类型指定为数据对象。指定内部表的键是可选的,如果用户没有指定键,SAP 系统将定义具有任意键的表类型。

INITIAL SIZE <size_number> 通过为其分配初始内存量来创建内部表对象。在前面的语法中,INITIAL SIZE 子句为 size_number 表行保留内存空间。每当声明内部表对象时,表的尺寸不属于表的类型。

注意 - 当第一次填充内部表时,消耗的内存要少得多。

示例

步骤 1 - 通过执行 SE38 事务代码打开 ABAP 编辑器。出现 ABAP 编辑器的初始屏幕。

步骤 2 - 在初始屏幕中,输入程序名称,选择“源代码”单选按钮,然后单击“创建”按钮以创建新程序。

步骤 3 - 在“ABAP:程序属性”对话框中,在“标题”字段中输入程序的简短描述,从“属性”组框中的“类型”下拉菜单中选择“可执行程序”选项。单击“保存”按钮。

步骤 4 - 在 ABAP 编辑器中编写以下代码。

REPORT ZINTERNAL_DEMO. 
TYPES: BEGIN OF CustomerLine, 
Cust_ID TYPE C, 
Cust_Name(20) TYPE C, 
END OF CustomerLine. 
 
TYPES mytable TYPE SORTED TABLE OF CustomerLine  
WITH UNIQUE KEY Cust_ID. 
WRITE:/'The mytable is an Internal Table'. 

步骤 5 - 像往常一样保存、激活并执行程序。

在这个例子中,mytable 是一个内部表,并且在 Cust_ID 字段上定义了一个唯一键。

以上代码产生以下输出:

The mytable is an Internal Table.
广告
© . All rights reserved.