我刚开始学习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_tab。ty_tab不是表类型,而是本地定义的平面结构类型。类型定义之后的数据声明定义了一个名为x_Tab、类型为ty_Tab的局部变量。然后,第三个数据声明使用"like"关键字来创建一个表,该表的行"类似"结构x_Tab。
示例2再次以类型的定义开始。但是,数据定义不是首先声明一个结构,而是定义一个类型为ty_tab的标准表。
正如hennes在评论中提到的,示例3实际上并没有定义一个表。它基于SAP数据字典中定义的结构或表定义本地结构,在本例中为透明表"sflight"。如果您想创建一个基于DDIC表sflight的内部标准表,您必须将语句更改为:
data t_sflight type standard table of sflight.
这三种变体都是有效的。变量1和2使用不同的方法创建相同的(与"相同字段,相同属性"中的相同)内部表。没有最好的方法,每种变体都可以在适合的地方使用。如果您需要一个看起来像DDIC中已经存在的表的表,请使用#3#乍一看,1和#2似乎是多余的,但有时您可能会收到一个结构作为参数,并且现在想要一个具有该结构的内部表,因此您可以在#1中使用"like"关键字。
有关详细信息,请查看SAP帮助页面。