SAP ABAP 数据字典(SE11)

⚡ 智能摘要

SAP ABAP 数据字典 (SE11) 集中管理所有使用的元数据定义。 SAP 应用程序。本页解释了三个可重用级别——域、数据元素和表——以及聚合对象,例如视图、搜索帮助和锁定对象。

  • 📚 核心定义: ABAP 字典是元数据的中央存储库,描述了每个字段、表和视图的定义方式以及它们在整个系统中的重用方式。 SAP 系统。
  • 🧱 三个可重复使用的级别: 域包含技术属性,数据元素添加语义含义,表格或结构将这些元素组合成记录。
  • 🔗 聚合对象: 视图将多个表中的数据合并在一起,搜索功能可辅助输入,锁定对象可在同时访问期间保护记录。
  • 🔒 锁定机制: ENQUEUE 和 DEQUEUE 函数模块由锁对象生成,并且在处理后必须始终释放锁。
  • 🛠️ 创建工作流程: 事务 SE11 通过定义字段、交付类别、技术设置,然后激活对象来创建透明表。
  • 🧭 重要交易: SE11、SE13、SE14、SE16 和 SM30 涵盖定义、技术设置、数据库实用程序、数据显示和维护。

SAP ABAP 数据字典 SE11

什么是数据字典?

数据字典是信息管理系统中数据的中心信息源,其主要功能是支持数据定义(或“元数据”)的创建和管理。

In SAP这个中央存储库称为 ABAP 字典,它使用事务 SE11 进行维护。ABAP 程序使用的每个表、字段、视图和锁都在这里描述一次,然后在所有地方重复使用,因此在各个程序中永远不需要重复定义。

ABAP 数据字典

上图显示的是 SE11 的初始屏幕,其中每个字典对象类型在显示或更改之前都需要先被选中。在查看这些对象类型之前,了解其原因很有帮助。 SAP 将此元数据保存在使用它的程序之外。

为什么ABAP字典很重要

ABAP 字典的存在是因为 SAP 它将数据描述与处理数据的程序分离。例如,采购单号这样的字段只描述一次,所有需要用到该字段的报表、屏幕和功能模块都引用这唯一的描述。

这个核心定义带来了四个实际好处。首先,它保证了一致性,因为对域的任何更改都会立即影响到所有通过数据元素引用它的字段。其次,它消除了冗余,因为开发人员会重用现有定义,而不是创建新定义。 Integrity 由于值范围、检查表和外键均由数据字典而非应用程序代码进行验证,因此数据受到保护。此外,数据字典与数据库无关,因此在 SE11 中定义的表会自动在底层数据库中创建,并具有正确的本地类型。

字典在运行时也处于激活状态。屏幕直接从字典中读取字段标签、帮助文本和值范围,这就是为什么无需任何额外代码即可显示 F1 帮助或 F4 值列表的原因。理解以下三个层次有助于理解这种重用是如何实现的。

ABAP 词典 3 级

ABAP 字典中的对象位于三个级别,以支持其可重用性。这些级别是:

  1. 域名
  2. 数据元素
  3. 表格和结构

每个层级都建立在前一个层级的基础上:域提供技术属性,数据元素赋予这些属性业务意义,而表或结构则将数据元素分组到一条记录中。让我们详细了解一下——

域名

  • 描述表字段的技术特征
  • 指定描述字段允许的数据值的值范围
  • 当域发生更改时,引用同一域的字段(通过分配给它们的数据元素)也会更改
  • 确保一致性

例如,采购单据编号 (EBELN)

词典:显示域

上面的域屏幕仅定义了数据类型和长度。该值的业务含义由下一层级的数据元素提供。

数据元素

  • 描述字段在技术环境中所起的作用
  • 具有相同语义的字段可以引用相同的数据元素
  • 包含字段信息

例如,采购单据编号 (EBELN)

词典:显示数据元素

数据元素屏幕包含用户在屏幕上看到的字段标签和文档。然后,数据元素被组合成表格。

  • 表示数据实际所在的数据库表。
  • 可以在 ABAP 字典中独立于数据库定义表。
  • 表的字段定义与其(与数据库无关) SAP ABAP 数据类型 和长度。

词典:显示表格

结构

  • 是与数据库表不对应的记录声明。
  • 就像用户定义的数据类型一样。
  • 像表一样定义,然后可以从 ABAP 程序中进行寻址。
  • 结构仅在程序运行期间包含数据。

词典:显示结构

下表对这三个级别进行了概览比较。

水平 它的定义 存储数据? 典型示例
域名 技术属性:数据类型、长度、值范围 没有 EBELN(字符 10)
数据元素 语义含义:字段标签、文档、F1 帮助 没有 EBELN — 采购单据编号
数据库中创建的字段记录 是的,一直如此。 EKKO — 采购凭证抬头
结构 仅在程序内部使用的字段记录 是的,仅在运行时。 工作区域 内表

ABAP 字典的聚合对象

聚合意味着由几个组件组成。在 ABAP 词典中,聚合对象是来自几个不同的透明表的对象。

  1. 观看数
  2. 寻找帮助(求助
  3. 锁定对象

让我们详细研究一下

观看数

  • 浏览次数 SAP – ABAP 用于汇总分布在多个表中的数据。
  • 视图的数据实际上并没有物理存储。视图的数据来自一个或多个其他表
  • 它是根据特定应用的需求量身定制的

词典:显示视图

寻找帮助(求助

  • 搜索帮助是帮助您在系统中搜索数据记录的工具
  • 高效且用户友好的搜索可为不知道记录关键字的用户提供帮助

词典:显示搜索帮助

锁定对象

  • 两个用户同时访问同一条数据记录 SAP 系统通过锁机制同步​​。
  • 通过调用某些功能模块来设置和释放锁。这些功能模块是根据 ABAP/4 词典中所谓的锁对象的定义自动生成的

功能模块 :入队_ – 锁定表出队_ – 释放锁

词典:显示锁定对象

⚠️警告: 使用 ENQUEUE 设置且从未使用 DEQUEUE 释放的锁将一直保持活动状态,直到用户会话结束。务必始终调用 DEQUEUE 模块,包括在程序的错误处理路径中。

了解了对象类型之后,下一节将通过在 SE11 中创建透明表来应用它们。

如何在SE11中创建透明表

透明表是最常见的字典对象,因为它与数据库中的物理表一一对应。以下步骤将从头开始创建一个透明表。

  1. 打开 SE11: 输入事务代码SE11,选择 数据库表 选择单选按钮,在客户命名空间中输入名称(以 Z 或 Y 开头),然后选择 创建.
  2. 请输入简短描述和配送方式: 点击 Attributes 在该选项卡中,添加简短文本并设置配送类别,即可了解配送方式。 SAP 数据在客户端复制或升级期间的行为方式。交付类别 A 用于应用程序数据,交付类别 C 用于自定义数据。
  3. 设置维护属性: 选择 允许展示/维护 因此,之后可以使用 SE55 或 SM30 生成维护视图。
  4. 定义字段: 点击 字段 在选项卡中,添加 MANDT 作为第一个键字段,数据元素为 MANDT,然后添加业务键字段。每个字段都由一个数据元素定义,而该数据元素又指向一个域,因此前面描述的三个层级被重用,而不是重新定义。
  5. 维护技术设置: 点击 技术设置 (事务代码 SE13)并设置数据类,例如主数据使用 APPL0,以及预期大小类别。这些值决定了表空间和数据库中的初始大小。
  6. 启用: 媒体中心 前往激活激活操作会在数据库中生成物理表,并使定义可在 ABAP 程序中使用。

💡提示: 为每个需要与检查表进行验证的字段创建外键。然后,字典会自动强制执行这种关系,程序内部无需编写任何验证代码。

表激活后,即可通过 ABAP 程序直接访问它。 Open SQL下面的示例将标准字典表 SCARR 读入内部表并列出其内容。

REPORT zdemo_ddic_read.

* Internal table typed directly from the dictionary table SCARR
DATA: lt_scarr TYPE STANDARD TABLE OF scarr,
      ls_scarr TYPE scarr.

SELECT carrid carrname currcode
  FROM scarr
  INTO TABLE lt_scarr.

LOOP AT lt_scarr INTO ls_scarr.
  WRITE: / ls_scarr-carrid, ls_scarr-carrname, ls_scarr-currcode.
ENDLOOP.

由于内部表被定义为 `TYPE STANDARD TABLE OF scarr`,因此每个字段的长度和数据类型都来自数据字典。如果表定义发生更改,程序会在激活后自动应用这些更改,无需任何编辑。

ABAP 字典事务的基本要素 Codes

以下事务涵盖定义、检查和维护字典对象的日常工作。

交易 目的
SE11 数据字典初始屏幕(仅限 SE12 显示)
SE13 ABAP词典:技术设置
SE14 数据库实用程序
SE15 存储库信息系统
SE16 数据浏览器
SE17 通用表格显示
SE55 表格视图维护
SM30 表维护

常见问题

SE11 维护字典对象的定义,例如表的字段和键。SE16 显示和筛选存储在该表中的数据行。一个处理元数据,另一个处理记录。

是的。数据元素可以直接使用预定义的类型,而无需引用域。不过,我们仍然建议使用域,因为它能集中定义值范围,并确保一次更改就能影响到所有使用该域的字段。

透明表与物理数据库表一一对应。池化表与多个小型字典表共享一个数据库表,因此只能使用 Open SQL 读取,而不能使用原生 SQL 读取。

人工智能助手,例如 SAP Joule 和 ABAP 开发工具中的代码助手会在对象激活之前建议字段名称、为新表提出数据元素、解释不熟悉的标准表并标记缺失的外键。

AI可以生成字段列表、数据类型和命名规则,但这些定义仍需由开发人员审核和激活。交付类别、技术设置和外键在传输前也需要人工验证。

总结一下这篇文章: