SAP ABAP – 创建内部表

SAP ABAP – 创建内部表


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

以下是语法 –

DATA: BEGIN OF <internal_tab> Occurs 0,

让我们在新行上创建字段。例如,创建声明为 LIKE ZCUSTOMERS1-name 的“name”。创建另一个名为“dob”的字段,例如 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.

觉得文章有用?

点个广告表达一下你的爱意吧 !😁