SAP ABAP 数据字典(SE11)

什么是数据字典?
数据字典是信息管理系统中数据的中心信息源,其主要功能是支持数据定义(或“元数据”)的创建和管理。
In SAP这个中央存储库称为 ABAP 字典,它使用事务 SE11 进行维护。ABAP 程序使用的每个表、字段、视图和锁都在这里描述一次,然后在所有地方重复使用,因此在各个程序中永远不需要重复定义。
上图显示的是 SE11 的初始屏幕,其中每个字典对象类型在显示或更改之前都需要先被选中。在查看这些对象类型之前,了解其原因很有帮助。 SAP 将此元数据保存在使用它的程序之外。
为什么ABAP字典很重要
ABAP 字典的存在是因为 SAP 它将数据描述与处理数据的程序分离。例如,采购单号这样的字段只描述一次,所有需要用到该字段的报表、屏幕和功能模块都引用这唯一的描述。
这个核心定义带来了四个实际好处。首先,它保证了一致性,因为对域的任何更改都会立即影响到所有通过数据元素引用它的字段。其次,它消除了冗余,因为开发人员会重用现有定义,而不是创建新定义。 Integrity 由于值范围、检查表和外键均由数据字典而非应用程序代码进行验证,因此数据受到保护。此外,数据字典与数据库无关,因此在 SE11 中定义的表会自动在底层数据库中创建,并具有正确的本地类型。
字典在运行时也处于激活状态。屏幕直接从字典中读取字段标签、帮助文本和值范围,这就是为什么无需任何额外代码即可显示 F1 帮助或 F4 值列表的原因。理解以下三个层次有助于理解这种重用是如何实现的。
ABAP 词典 3 级
ABAP 字典中的对象位于三个级别,以支持其可重用性。这些级别是:
- 域名
- 数据元素
- 表格和结构
每个层级都建立在前一个层级的基础上:域提供技术属性,数据元素赋予这些属性业务意义,而表或结构则将数据元素分组到一条记录中。让我们详细了解一下——
域名
- 描述表字段的技术特征
- 指定描述字段允许的数据值的值范围
- 当域发生更改时,引用同一域的字段(通过分配给它们的数据元素)也会更改
- 确保一致性
例如,采购单据编号 (EBELN)
上面的域屏幕仅定义了数据类型和长度。该值的业务含义由下一层级的数据元素提供。
数据元素
- 描述字段在技术环境中所起的作用
- 具有相同语义的字段可以引用相同的数据元素
- 包含字段信息
例如,采购单据编号 (EBELN)
数据元素屏幕包含用户在屏幕上看到的字段标签和文档。然后,数据元素被组合成表格。
表
- 表示数据实际所在的数据库表。
- 可以在 ABAP 字典中独立于数据库定义表。
- 表的字段定义与其(与数据库无关) SAP ABAP 数据类型 和长度。
结构
- 是与数据库表不对应的记录声明。
- 就像用户定义的数据类型一样。
- 像表一样定义,然后可以从 ABAP 程序中进行寻址。
- 结构仅在程序运行期间包含数据。
下表对这三个级别进行了概览比较。
| 水平 | 它的定义 | 存储数据? | 典型示例 |
|---|---|---|---|
| 域名 | 技术属性:数据类型、长度、值范围 | 没有 | EBELN(字符 10) |
| 数据元素 | 语义含义:字段标签、文档、F1 帮助 | 没有 | EBELN — 采购单据编号 |
| 表 | 数据库中创建的字段记录 | 是的,一直如此。 | EKKO — 采购凭证抬头 |
| 结构 | 仅在程序内部使用的字段记录 | 是的,仅在运行时。 | 工作区域 内表 |
ABAP 字典的聚合对象
聚合意味着由几个组件组成。在 ABAP 词典中,聚合对象是来自几个不同的透明表的对象。
- 观看数
- 寻找帮助(求助
- 锁定对象
让我们详细研究一下
观看数
- 浏览次数 SAP – ABAP 用于汇总分布在多个表中的数据。
- 视图的数据实际上并没有物理存储。视图的数据来自一个或多个其他表
- 它是根据特定应用的需求量身定制的
寻找帮助(求助
- 搜索帮助是帮助您在系统中搜索数据记录的工具
- 高效且用户友好的搜索可为不知道记录关键字的用户提供帮助
锁定对象
- 两个用户同时访问同一条数据记录 SAP 系统通过锁机制同步。
- 通过调用某些功能模块来设置和释放锁。这些功能模块是根据 ABAP/4 词典中所谓的锁对象的定义自动生成的
功能模块 :入队_ – 锁定表出队_ – 释放锁
⚠️警告: 使用 ENQUEUE 设置且从未使用 DEQUEUE 释放的锁将一直保持活动状态,直到用户会话结束。务必始终调用 DEQUEUE 模块,包括在程序的错误处理路径中。
了解了对象类型之后,下一节将通过在 SE11 中创建透明表来应用它们。
如何在SE11中创建透明表
透明表是最常见的字典对象,因为它与数据库中的物理表一一对应。以下步骤将从头开始创建一个透明表。
- 打开 SE11: 输入事务代码SE11,选择 数据库表 选择单选按钮,在客户命名空间中输入名称(以 Z 或 Y 开头),然后选择 创建.
- 请输入简短描述和配送方式: 点击 Attributes 在该选项卡中,添加简短文本并设置配送类别,即可了解配送方式。 SAP 数据在客户端复制或升级期间的行为方式。交付类别 A 用于应用程序数据,交付类别 C 用于自定义数据。
- 设置维护属性: 选择 允许展示/维护 因此,之后可以使用 SE55 或 SM30 生成维护视图。
- 定义字段: 点击 字段 在选项卡中,添加 MANDT 作为第一个键字段,数据元素为 MANDT,然后添加业务键字段。每个字段都由一个数据元素定义,而该数据元素又指向一个域,因此前面描述的三个层级被重用,而不是重新定义。
- 维护技术设置: 点击 技术设置 (事务代码 SE13)并设置数据类,例如主数据使用 APPL0,以及预期大小类别。这些值决定了表空间和数据库中的初始大小。
- 启用: 媒体中心 前往激活激活操作会在数据库中生成物理表,并使定义可在 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 | 表维护 |








