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

时间:2012-06-13 10:29:18

标签: data-structures types sap abap

我是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.

另一个是;

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.

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

3 个答案:

答案 0 :(得分: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.

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

当您使用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)

例如:您可以使用此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)

答案 1 :(得分:2)

TYPES语句创建一种数据类型,它是用于创建数据对象的模板 DATA语句创建一个数据对象,该数据对象是数据类型的实例,占用的内存空间与其类型指定的一样多。

答案 2 :(得分:0)

首先,您发布的此代码肯定是错误的,您将类型设为employee_information并将其结束为personel_bilgileri

问题是第二个声明定义了employee_information变量,其结构为name, surname and tel_no。在第二种情况下,您可以定义类型employee_information。然后,您可以定义此结构化类型的变量,例如DATA: l_str_employee_information TYPE employee_information`。