在何处使用表类型以及SAP / ABAP中的结构?

时间:2017-10-26 06:42:00

标签: sap abap

为什么我们在SAP / ABAP中使用表类型?我们可以声明为表格类型,如下所示。

SELECT * 
FROM dbo.FinancialStatementIds
WHERE $PARTITION.financialStatementPartition(periodenddate) = '2013-01-01T00:00:00.000'

如果我想存储表的特定属性,我可以使用结构类型。

DATA it_doc TYPE TABLE OF table_name.

表类型和结构之间是否存在性能差异?

2 个答案:

答案 0 :(得分:4)

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

实施例

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

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。每个学生都有个人姓名,出生日期等。

答案 1 :(得分:3)

如果我理解正确,那么您在谈论数据字典中的表类型。由于您可以使用语句TYPE TABLE OF <structure>,因此在其上创建表类型似乎不直观。但是,如果要将整个表作为参数传递给Function Module或Class Method,则需要此表类型。

例如,您无法编写以下内容:

 methods PASS_TABLE
    returning
      value(rt_table) TYPE TABLE OF <structure> .

在这种情况下,您必须使用字典表类型:

 methods PASS_TABLE
    returning
      value(rt_table) TYPE  dict_table_type .