SAP 数据字典
数据字典对象
在 ABAP 程序里使用的所有对象(表、视图、结构体、类型等)统称为 ABAP 数据字典。ABAP 数据字典是ABAP 工作台最重要的工具之一,用于创建和管理元数据。
数据字典(ABAP Data Dictionary,DDIC)存储用户定义类型(数据元素、结构和表类型)的数据定义。此外,我们还可以创建和维护表、视图和索引等数据库对象。
特点:
- 在 DDIC 的帮助下,我们可以创建和维护用户定义的类型,如数据元素、结构、表类型等。
- DDIC 是中央存储区,它允许用户维护与特定数据库相关的存储对象,并包含 SAP 系统中使用的所有数据的集中描述,没有任何冗余。DDIC 内的数据是集成的、一致的和安全的
- 作为 SQL 的一个视图,ABAP 字典处理 SQL 的 DDL(Data Definition Language,数据定义语言)部分,其中包含命令,如
CREATE
表、DROP
表、ALTER
表、创建索引等。 - 它定义了对象(表和视图)的逻辑结构,并说明这些对象如何映射到给定的 RDBMS。
- 数据访问:DDIC 提供了一种集中且一致的方式来访问和管理数据库中的数据,从而简化了 SAP 应用程序的开发和维护过程。
- 用户界面: DDIC 提供了一个图形用户界面(
SE11
),用于管理和维护 DDIC 中的数据库对象的定义。这个界面为创建、更改和维护 SAP 中的数据库对象提供了一种方便的、用户友好的方式。 - DDIC 与 SAP 系统的开发和运行时环境完全集成。考虑下图:
数据字段三级结构
ABAP 数据字典分为三个级别:
- 域级别:域级别定义各个字段的数据类型和属性。这包括数据类型(例如数字、字母数字或日期/时间)、字段大小以及适用的任何约束或验证规则。
- 数据元素级别:数据元素级别提供了对域的更高级别的抽象。数据元素组合一个或多个域来定义字段的特定语义,例如“物料编号”、“客户名称”或“销售订单日期”。
- 表级:表级是 ABAP 数据字典中最高的抽象级别。表定义了数据元素和域之间的结构和关系,允许创建可用于在 SAP 系统中存储和检索数据的复杂数据模型。
每个级别在定义和管理 SAP 系统中的数据方面都发挥着重要作用,这三个级别共同提供灵活且强大的数据建模框架,可用于支持广泛的业务需求。
ABAP 数据字典类型
数据库对象
- 表:它以行和列的形式存储数据。存储系统中生成的数据实际物理内存,是数据库的主干
- 视图:视图是由一个或多个表的数据组合而成的结构。它是一个虚拟表,不存在于任何物理位置。因此没有实际存储的数据,只是结合表中的数据,主要用于查询符合条件的数据
- 索引:它可以更快地访问表中的行。
类型定义
ABAP 数据字典支持用户自定义类型(数据元素、结构体、表类型)。在日常的程序中使用的类型可以由 TYPES
进行定义,但是如果想在所有的 ABAP 程序中使用就需要在 ABAP 数据字典中定义。数据字典中定义的数据属于中央集中式管理,因此修改个别类型对象会影响所有程序。
在更改系统类型的时候千万要注意,激活一个会带动许多程序和结构,牵一发而动全身,一般不能更改系统类型。
- 数据元素(基本类型与参照类型):它包含技术属性,如数据类型、长度和语义信息,如简短的描述。
- 结构体:结构体类型,由拥有类型的组件构成
- 表类型:用于定义内表的技能属性,表类型描述了 ABAP 编程中内部表的结构和功能属性。其中存在特殊结构的 Range 表类型。
域
它包含数据类型和长度,域的可接受值等技术属性。它被分配给数据元素。表中的域通过数据元素定义,而数据元素通过 Domain 来定义,这种方法被称为“两级域结构”(Two-Level Domain Concept)。
如果是具有相同属性的数据元素,则一个域可以对应多个数据元素。
域可以独立地存在于 ABAP 字典中,多个数据元素可以赋给同一个域,与数据元素相似,系统也提供了预定义的域供用户使用。在域中,可以指定域的输出属性,例如输出长度,是否允许大小写等。
视图、表、结构体数据元素和域的关系如下图:
锁对象
它们用于同步一个或多个用户对相同数据的访问。多个用户可能并发访问同一数据,这样就会用到 SAP 锁机制。锁对象要定义锁定的表、锁的模式。SAP 提供了多种类型的锁对象:
- 读取锁
- 写入锁
- 乐观锁
- …
此外,如果将锁对象有效化,则加锁和解锁两个函数会自动生成。在程序需要的时候,可以调用这两个函数。
CALL FUNCTION 'ENQUEUE_EZABAPGIT'
EXPORTING
mode_zabapgit = iv_mode
type = iv_type
value = iv_value
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
搜索帮助
此选项允许我们为用户创建帮助文档,以便用户可以知道应在输入字段值中填写哪些值。可以使用 F4 访问它这些是分配给屏幕字段以提供输入帮助的对象。
搜索帮助是 SAP 用于寻找有用数据的工具,定义了一个表和需要搜索显示的字段,多用于 DYNPRO 和选择画面。
建表规则
自定义表时,在表的描述信息中要描述清楚表包含的内容
数据库表一般定义为集团独立的,即第一个字段必须为
MANDT
,且是参考数据元素MANDT
,代表客户端
可配置数据库表必须定义为集团独立的
若创建的数据库表为配置表,数据量少,修改少,经常访问,可在技术设置中对表进行缓存,从而增加访问速度
若为应用表,不允许在技术设置中对表进行缓存
表中的字段必须使用数据元素
表中的字段名必须易懂且有一定的含义,如:
CHAR1
作为字段名是不符合规则的要求可维护的表必须生成维护视图,并且为每一个维护视图创建对应的一个函数组。好处:避免在后期维护时互相影响、造成出错,也有利于性能提高
如果需要的话,可维护外键和值范围
创建数据元素/域的基本规则
- 当自定义表中使用到 SAP 中的字段时,使用字段对应的数据元素/域
- 当自定义表中的字段名时,使用更有意义的名称(如:用
ZZCOMPANY
代替ZCHAR4
) - 如果自定义的字段参考一个表或一定值的数据集时,创建一个自定义的域来实现
- 不要修改 SAP 存在的数据元素/域
- 当新建一个结构时,尽可能的使用存在的数据元素/域。如果数据元素/域不存在,再创建对应的符合命名规范的数据元素/域
- 新建数据元素时,必须维护好数据元素的文本描述,如为多语言系统,需同时进行翻译
添加客户化字段到 SAP 表中
当往 SAP 表中添加客户化字段时,必须使用附加结构 APPEND STRUCTURES
:
索引维护
- 创建、修改、删除索引将会增加数据库的负荷,所以,只有在需要时才进行索引的维护。尽可能的使用已存在的索引
- 不建议修改系统原有的索引,而是自行创建索引
- 创建索引会提高查询性能,但也会降低更新性能,所以为了提高查询性能可创建索引
- 如果创建索引的表的条目数预计较多,需要进行更新性能测试
- 在新定义索引前,需要与项目主技术负责人进行确认
- 主键必须定义为唯一的
- 索引只包含需要的字段
- 创建索引或使用索引时,请注意字段的顺序,匹配的字段顺序可取得更好效果
- 在进行索引传输时,注意时间点的选择,一般在系统空闲期进行传输,如中午或下午下班后
- 点赞
- 收藏
- 关注作者
评论(0)