SAP ABAP 创建内部表

DATA 语句用于声明内部表。必须告诉程序表的开始和结束位置。因此,请使用 BEGIN OF 语句,然后声明表名。在此之后,使用 OCCURS 加法,后跟一个数字,此处为 0。发生告诉 SAP 正在创建内部表,0 表示最初不包含任何记录。然后,当它充满数据时,它将展开。

语法如下:

  1. DATA: BEGIN OF <internal_tab> Occurs 0,

让我们在新行上创建字段。例如,创建 'name',其声明类似于 ZCUSTOMERS1-name。创建另一个名为 'dob' 的字段,如 ZCUSTOMERS1-dob。在内部表中为字段名指定与在其他地方创建的其他字段相同的名称是有很有用的。

最后,用 END OF <internal_tab>. 声明内部表的结尾如下代码所示:

  1. DATA: BEGIN OF itab01 Occurs 0,
  2. name LIKE ZCUSTOMERS1-name,
  3. dob LIKE ZCUSTOMERS1-dob,
  4. END OF itab01.

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

可以使用或不使用标题行创建内部表。要创建具有标题行的内部表,请在内部表的定义中,在 OCCURS 子句之前使用 BEGIN OF 子句,或在 OCCURS 子句之后使用 with header line 子句。要创建没有标题行的内部表,请使用不带 BEGIN OF 子句的 OCCURS 子句。

您还可以使用 TYPES 语句将内部表创建为本地数据类型(仅在当前程序的上下文中使用的数据类型)。此语句使用 TYPELIKE 子句引用现有表。

将内部表创建为本地数据类型的语法为:

  1. TYPES <internal_tab> TYPE|LIKE <internal_tab_type> OF
  2. <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 - 在初始界面中,输入程序名称,选择 Source 单选按钮,然后单击 Create 创建按钮创建新程序。

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

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

  1. REPORT ZINTERNAL_DEMO.
  2. TYPES: BEGIN OF CustomerLine,
  3. Cust_ID TYPE C,
  4. Cust_Name(20) TYPE C,
  5. END OF CustomerLine.
  6. TYPES mytable TYPE SORTED TABLE OF CustomerLine
  7. WITH UNIQUE KEY Cust_ID.
  8. WRITE:/'The mytable is an Internal Table'.

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

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

结果如下:

  1. The mytable is an Internal Table.

分类导航