为什么我们在SAP/ABAP中使用表类型?我们可以声明为表的类型,如下所示。
DATA it_doc TYPE TABLE OF table_name.
如果我想存储表的特定属性,我可以使用结构类型。
TYPES: BEGIN OF st_student,
sid TYPE i,
sname TYPE c LENGTH 8,
END OF st_student.
DATA student TYPE st_student.
表类型和结构之间是否有任何性能差异?
如果我理解正确,您正在谈论数据字典中的表类型。由于您可以使用语句TYPE TABLE OF <structure>
因此在此基础上创建表类型似乎不直观。但是,如果要将整个表作为参数传递给函数模块或类方法,则需要此表类型。
例如,不能编写以下内容:
methods PASS_TABLE
returning
value(rt_table) TYPE TABLE OF <structure> .
在这种情况下,您必须使用字典表类型:
methods PASS_TABLE
returning
value(rt_table) TYPE dict_table_type .
不,表和结构实际上非常不同,因此您对性能的担忧有点没有必要。正如我在评论中所说,表格是元素列表。
例
您想要存储有关学校班级的信息。您的应用程序应该能够存储一个学生的姓名、出生日期、性别等数据。要将这些字段组合在一起,可以使用结构:
TYPES:
BEGIN OF student,
name TYPE string,
birth TYPE d,
gender TYPE char1,
END OF student.
现在,您可以声明一个类型为 student
的变量并分配如下数据:
DATA stud1 TYPE student.
stud1-name = 'Joe'.
...
您现在想要将学生放在教室里。为此,您需要一个内部表。
TYPES classroom TYPE STANDARD TABLE OF student WITH EMPTY KEY.
" ignore STANDARD and WITH EMPTY KEY for now
DATA e3fi TYPE classroom.
" fill table here
DATA joe TYPE student.
" init joe
APPEND joe TO e3fi.
DATA susan TYPE student.
" init susan
APPEND susan TO e3fi
之后,您的课堂e3fi
包含两名学生susan
和joe
。这些学生中的每一个都有个人姓名、出生日期等。