ABAP中的内部表声明

ABAP中的内部表声明,abap,Abap,我刚开始学习ABAP,我用了一些不同的方法来声明内部表,但我不理解这些方法之间的区别。哪种方法最好 样本1 types: begin of ty_tab, field1, field 2, end of ty_tab. data x_tab type ty_tab. data itab like standard table of x_Tab. 样本2 types: begin of ty_tab, field1, field2, end of ty_tab. type

我刚开始学习ABAP,我用了一些不同的方法来声明内部表,但我不理解这些方法之间的区别。哪种方法最好

样本1

types: begin of ty_tab,
  field1,
  field 2,  
end of ty_tab.

data x_tab type ty_tab.
data itab like standard table of x_Tab.
样本2

types: begin of ty_tab,
  field1,
  field2,
end of ty_tab.

types x_tab type standard table of ty_tab.
data itab type x_tab.
样本3

data t_sflight type sflight.

示例1首先声明了一个类型ty_选项卡,其中包含一些字段。ty_tab不是表类型,它是本地定义的平面结构类型。类型定义后面的数据声明定义了一个名为x_Tab和类型为ty_Tab的局部变量。然后,第三个数据声明使用“like”关键字创建一个表,该表在结构x_选项卡中有“like”行

示例2再次从类型的定义开始。但是,数据定义并没有首先声明一个结构,而是定义了一个ty_tab类型的标准表

正如hennes在评论中提到的,示例3实际上并没有定义表。它基于SAP数据字典中定义的结构或表(在本例中为透明表“sflight”)定义本地结构。如果要基于DDIC table sflight创建内部标准表,则必须将语句更改为:

data t_sflight type standard table of sflight.
这三种变体都有效。变量1和变量2使用不同的方法创建相同(与“相同字段,相同属性”中相同)的内部表。没有最好的方法,每个变体都可以在适合的地方使用。如果需要与DDIC中已存在的表相似的表,请使用#3#1和#2乍一看似乎是多余的,但有时您可能会收到一个结构作为参数,现在需要一个具有该结构的内部表,因此您可以在#1中使用“like”关键字


查看以获取更多信息。

示例3未声明表-t_sflight是一个结构…示例1创建了一个与示例2相同的内部表,但如果两者相同,则有什么不同的方法?这是什么意思?不同的方法是表声明中的“like”和“type”关键字。@DirkTrilsbeek示例3不创建内部表,而是创建结构。没错,第三个示例缺少声明中的表部分。我要修改我的答案。