SAP ABAP 域

17 Mar 2025 | 6 分钟阅读

什么是 ABAP 数据字典中的域?

域是 ABAP 数据字典的基本对象之一,用于定义字段的技术属性,**例如字段的数据类型、长度和值范围**。它被分配给数据元素,并且可以在字段中重复使用。

域是 ABAP 中定义数据的最小单位。所有这些域都存储在 **DDO1L**(标准 ABAP 表)中,它们的描述存储在 **DDO1T 表**中。

表的字段和使用域的结构会自动分配在该域中定义的值范围。

可以使用字段的数据元素来解释域和字段之间的关系。如果我们在任何域中进行更改,那么与该特定域相关的字段的属性也会发生更改。单个域可以被字段的多个数据元素使用。考虑下图

SAP ABAP Domain

正如我们在上图中看到的,表 1 和表 2 的数据元素 1 以及表 3 的数据元素 2 都使用了相同的域。

我们可以借助域在 SAP 系统中执行以下任务

  • 描述域的固定值
  • 域的转换例程
  • 域创建
  • 修改现有域
  • 删除域

描述域的固定值

我们可以为数据类型和长度分配一些固定值给域。这些固定值有助于为屏幕上的字段提供一些输入检查。

固定值也可以用作字段的输入帮助 (F4) 的来源。可以通过定义单个值或字段的下限和上限来创建这些值。

域的转换例程

我们在 SAP 系统中输入的数据不会以原始格式存储在 SAP 数据库中,而是需要转换为与 SAP 数据库兼容的格式。例如,FTIME 屏幕的登录时间以 HHH:MM 格式存储数据。因此,当用户输入一个时间时,比如 2:45,该值将以整数值(例如 165 分钟)存储在 SAP 数据库中。但是,当我们从系统中检索数据时,它只会以原始格式显示数据。从一种格式转换为另一种格式的任务由域创建时分配给域的转换例程执行。

在 ABAP 中创建域

以下是在 ABAP 数据字典中创建 ABAP 域的步骤

  • 步骤 1:按照 ABAP 数据字典的菜单路径或在命令字段中输入 SE11 事务代码。这将打开 ABAP 数据字典的初始屏幕。考虑下图
    SAP ABAP Domain
  • 步骤 2:从给定的选项中,单击域前面的单选按钮并输入域的名称。按照命名约定,名称必须以字母 z 开头。考虑下图
    SAP ABAP Domain
  • 步骤 3:单击创建按钮后,将打开一个新窗口,我们需要填写所有我们想要用于进一步操作的字段。
    SAP ABAP Domain

在给定的字典维护屏幕中,我们输入了简短描述,这是域的一般描述。

  • 步骤 4:现在,我们需要填写我们想要为数据元素定义的 **格式** 详细信息,例如 **数据类型、字符数、小数位数** 等,以及 **输出特征**,例如 **输出长度** 和 **例程**。这里的输出长度是我们要作为输出显示在用户端的字符长度。考虑下图
    SAP ABAP Domain
    在这里,我们输入了 CHAR 数据类型,但是我们可以根据需要从下拉表中选择任何其他数据。**字符数** 可以是任何长度。填写详细信息后,当我们单击输入时,输出长度将自动填写,这将与字符数相同。
  • 步骤 6:
    现在单击另一个选项卡 **值范围**。考虑下图
    SAP ABAP Domain
    我们可以使用此选项卡维护值范围。在这里,我们可以定义或修复我们想要在域级别应用为最终用户限制的任何输入。但现在,我们将把它留空,因为我们不想要任何限制。
  • 步骤 7:现在,所有重要数据都已填写,因此我们可以保存它。为此,单击菜单栏上给出的 **保存** 按钮。这将打开一个新的弹出窗口,**如下图所示:**
    SAP ABAP Domain

如果我们要将其放入一个包中,我们可以输入我们已经创建的包名称,否则将其保存为 **本地对象**。我们将它保存为本地对象,这将成功地将我们的域保存在 SAP 系统中。

注意:当我们保存任何对象作为本地对象时,该对象不能在多个 SAP 服务器之间共享。

  • 步骤 8:我们可以通过单击 **CTRL+F2** 来检查它,如果出现任何问题,它将显示错误,否则将显示“**未发现不一致**”。之后,我们需要通过单击激活按钮或 **CTRL+F3** 来 **激活** 它。它将显示域信息,考虑下图
    SAP ABAP Domain

注意:在 SAP 系统中创建任何对象之后,我们必须激活它;否则,我们将无法在任何程序或表中进一步使用它。

因此,我们的域已成功创建,我们可以在任何程序或表中使用它。在后面的主题中,我们将学习如何在表中 使用自定义域。

修改现有域

创建域后,我们还可以通过更改域的技术属性(例如数据类型、字符数、小数位数等)来修改它。当我们在任何现有域中进行更改时,这些更改也会反映在包含与该域相关的任何字段的所有数据库表中。

以下是修改现有域的步骤

  • 步骤 1:使用 SE11 事务代码打开 ABAP 数据字典初始屏幕。在域对象前面输入已存在的域,然后单击屏幕底部的“更改”按钮。考虑下图
    SAP ABAP Domain
  • 步骤 2: 现在,将打开现有域。单击您想要修改的详细信息并保存域。考虑下图
    SAP ABAP Domain
    在这里,我们将字符长度从 30 个字符更改为 20 个字符。
  • 步骤 3:检查是否存在任何错误或不一致。要检查错误,请输入 CTRL+F2。考虑下图
    SAP ABAP Domain
  • 步骤 4:现在,通过单击“**激活**”选项或按 **CTRL+F3** 来激活域。一旦它被激活,我们就可以在程序和数据库表中使用它。考虑下图
    SAP ABAP Domain

注意:这些更改将反映在包含与此特定域相关的任何字段的所有数据库表中。

在 DDIC 中删除域

我们还可以从 SAP 系统中删除现有域。以下是删除系统中域的步骤

  • 使用 SE11 事务代码打开 ABAP 数据字典初始屏幕。在域单选按钮前面输入已存在的域。
  • 输入您要删除的域名,然后单击屏幕上的 **删除** 图标。
  • 将出现一个弹出窗口,它将为您提供三个选项。考虑下图
    SAP ABAP Domain
  • 单击“是”,该域将从系统中删除。

下一个主题ABAP 数据库表