工作区、全局结构、内部表有什么区别?

SMK*_*SMK 3 abap

我是新来的ABAP,如果任何人都可以告诉我一个网站,我可以参考学习ABAP的深度和更好地理解它,我有这个困惑global structuresinternal tables以及work areas,有人请清楚地在每个差异解释他们的需要。提前致谢。

Dir*_*eek 5

内部表有点像其他语言中的列表,例如像 c# 中的 List<T>。它们只存在于内存中,并且只存在于定义它们的程序中。我从未遇到过“全局结构”这样的术语,但结构与其他语言中的结构几乎相同。在 abap 中,它们可用于定义表的行结构。将其转换为 c#,您最终会得到一个带有一些属性(您的行结构)的类 X 和一个 List<X>,即您的内部表。

工作区本质上是已定义结构的单行。例如,工作区用于在循环内部表时保存单行的内容。例如:

data:
  it_vbak type standard table of vbak,
  wa_vbak type vbak.

select * from vbak into corresponding fields of table it_vbak.

loop at it_vbak into wa_vbak.

....

endloop.
Run Code Online (Sandbox Code Playgroud)

这定义了一个内部表 it_vbak 和一个工作区 wa_vbak。两者都是使用 DDIC 表 VBAK 的结构定义的,它是 SAP ERP 表之一,包含销售订单抬头数据。该示例将一些数据(在这种情况下:全部,不是一个好主意)选择到内部表中,然后遍历内部表中的条目。在每个循环开始时,当前行的内容被转移到工作区。例如,您可以操作循环内的内容,然后使用 abap 命令修改将修改移回表中:

modify it_vbak from wa_vbak.
Run Code Online (Sandbox Code Playgroud)

您可以在程序内(使用 TYPES 关键字)和 SAP ERP 数据字典 (DDIC) 中定义结构。DDIC 对所有程序都是全局可用的,它包含表、结构、视图、表定义、数据元素和域的定义(以及一堆在这里不太相关的东西)。

作为 abap 的一般参考,请查看SAP 帮助门户