创建结构的"数据"和"类型"之间有什么区别?

Mer*_*rve 4 sap abap types data-structures

我是ABAP的新手,我正在尝试学习结构数据类型.我找到了第一个创建结构的2个例子;

TYPES : BEGIN OF employee_information,
            name TYPE c LENGTH 20,
            surname TYPE c LENGTH 20,
            tel_no TYPE n LENGTH 12,
          END OF employee_information.
Run Code Online (Sandbox Code Playgroud)

另一个是;

DATA : BEGIN OF employee_information,
            name TYPE c LENGTH 20,
            surname TYPE c LENGTH 20,
            tel_no TYPE n LENGTH 12,
          END OF employee_information.
Run Code Online (Sandbox Code Playgroud)

我读了这个链接:http://help.sap.com/saphelp_nw70/helpdata/en/fc/eb2ff3358411d1829f0000e829fbfe/content.htm, 用于理解类型和数据之间的区别,但它不足以理解为什么我们使用这些不同的术语用于创建结构数据类型?

Mtu*_*Mtu 7

首先,创建TYPE是较新的推荐使用方法.

当你创建一个DATA时,让我们说一个内部表;

DATA: BEGIN OF employee_information OCCURS 0,             "itab with header line
            name TYPE c LENGTH 20,
            surname TYPE c LENGTH 20,
            tel_no TYPE n LENGTH 12,
      END OF employee_information.
Run Code Online (Sandbox Code Playgroud)

您可以在内部表中添加标题行.但这是旧方法.

当您使用TYPE声明内部表时,您可以同时使用其标题及其内容;

  TYPES: BEGIN OF t_employee_information,
            name TYPE c LENGTH 20,
            surname TYPE c LENGTH 20,
            tel_no TYPE n LENGTH 12,
  END OF t_employee_information.

  DATA: employee_information TYPE STANDARD TABLE OF t_employee_information INITIAL SIZE 0,      "itab
        employee_information TYPE t_employee_information.                    "work area (header line)
Run Code Online (Sandbox Code Playgroud)

例如:您可以使用此TYPE来创建任意数量的内部表,例如:

  DATA: employee_information_1 TYPE TABLE OF t_employee_information, "itab1
        employee_information_1 TYPE t_employee_information.          "work area1 (header line)
  DATA: employee_information_2 TYPE TABLE OF t_employee_information, "itab2
        employee_information_2 TYPE t_employee_information.          "work area2 (header line)
  DATA: employee_information_3 TYPE TABLE OF t_employee_information, "itab3
        employee_information_3 TYPE t_employee_information.          "work area3 (header line)
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案,但应该指出的是,隐式工作区域不仅是旧方法,而且在ABAP对象中是非法的,SAP特别建议不要在其他地方使用它们. (6认同)