Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Abap 在何处使用表类型以及在何处使用结构?_Abap - Fatal编程技术网

Abap 在何处使用表类型以及在何处使用结构?

Abap 在何处使用表类型以及在何处使用结构?,abap,Abap,为什么我们在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. 表类型和结构之间是否存在性能差异?不

为什么我们在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
包含两名学生
susan
joe
。每个学生都有自己的名字、出生日期等等。

如果我没听错的话,你说的是数据字典中的表类型。由于您可以使用语句
TYPE TABLE OF
,因此在上面创建一个表类型似乎不太直观。但是,如果要将整个表作为参数传递给函数模块或类方法,则需要此表类型

例如,您不能编写以下内容:

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

表或多或少类似于元素列表。在您的示例中,一个结构代表一个学生。一张桌子可以用来存放多个学生。我想,我不明白这个问题。您能详细阐述一下您的想法吗?@lausek如果我希望内部表与表完全相同,我们可以使用声明为表的类型。如果我想要具有特定列的内部表,我们可以使用表类型或结构类型。所以我的问题是,如果我们有结构,表类型的用途是什么。据我所知,TT和结构是一样的。我认为结构在性能上比TT快。
 methods PASS_TABLE
    returning
      value(rt_table) TYPE  dict_table_type .