繁体   English   中英

在哪里使用表类型和结构?

[英]Where to use table types and where structures?

为什么我们在 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.

表类型和结构之间有性能差异吗?

不,表和结构实际上非常不同,因此您对性能的担忧有点不必要。 正如我在评论中所述,表格是元素列表。

示例

您想存储有关学校班级的信息。 您的应用程序应该能够存储一名学生的姓名、生日、性别等数据。 要将这些字段组合在一起,可以使用一种结构:

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包含两个学生susanjoe 这些学生中的每一个都有个人姓名、生日等。

如果我理解正确的话,你说的是数据字典中的表类型。 由于您可以使用语句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 .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM