SAP 数据字典

举报
雨绸缪 发表于 2023/07/31 17:04:53 2023/07/31
【摘要】 数据字典对象在 ABAP 程序里使用的所有对象(表、视图、结构体、类型等)统称为 ABAP 数据字典。ABAP 数据字典是ABAP 工作台最重要的工具之一,用于创建和管理元数据。数据字典(ABAP Data Dictionary,DDIC)存储用户定义类型(数据元素、结构和表类型)的数据定义。此外,我们还可以创建和维护表、视图和索引等数据库对象。特点:在 DDIC 的帮助下,我们可以创建和...

数据字典对象

在 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 系统的开发和运行时环境完全集成。考虑下图:

sap-abap-dictionary.png

数据字段三级结构

ABAP 数据字典分为三个级别:

  • 域级别:域级别定义各个字段的数据类型和属性。这包括数据类型(例如数字、字母数字或日期/时间)、字段大小以及适用的任何约束或验证规则。
  • 数据元素级别:数据元素级别提供了对域的更高级别的抽象。数据元素组合一个或多个域来定义字段的特定语义,例如“物料编号”、“客户名称”或“销售订单日期”。
  • 表级:表级是 ABAP 数据字典中最高的抽象级别。表定义了数据元素和域之间的结构和关系,允许创建可用于在 SAP 系统中存储和检索数据的复杂数据模型。

每个级别在定义和管理 SAP 系统中的数据方面都发挥着重要作用,这三个级别共同提供灵活且强大的数据建模框架,可用于支持广泛的业务需求。

ABAP 数据字典类型

数据库对象

  1. 表:它以行和列的形式存储数据。存储系统中生成的数据实际物理内存,是数据库的主干
  2. 视图:视图是由一个或多个表的数据组合而成的结构。它是一个虚拟表,不存在于任何物理位置。因此没有实际存储的数据,只是结合表中的数据,主要用于查询符合条件的数据
  3. 索引:它可以更快地访问表中的行。

image.png

类型定义

ABAP 数据字典支持用户自定义类型(数据元素、结构体、表类型)。在日常的程序中使用的类型可以由 TYPES 进行定义,但是如果想在所有的 ABAP 程序中使用就需要在 ABAP 数据字典中定义。数据字典中定义的数据属于中央集中式管理,因此修改个别类型对象会影响所有程序。

在更改系统类型的时候千万要注意,激活一个会带动许多程序和结构,牵一发而动全身,一般不能更改系统类型。

  • 数据元素(基本类型与参照类型):它包含技术属性,如数据类型、长度和语义信息,如简短的描述。
  • 结构体:结构体类型,由拥有类型的组件构成
  • 表类型:用于定义内表的技能属性,表类型描述了 ABAP 编程中内部表的结构和功能属性。其中存在特殊结构的 Range 表类型。

它包含数据类型和长度,域的可接受值等技术属性。它被分配给数据元素。表中的域通过数据元素定义,而数据元素通过 Domain 来定义,这种方法被称为“两级域结构”(Two-Level Domain Concept)。

如果是具有相同属性的数据元素,则一个域可以对应多个数据元素。

域可以独立地存在于 ABAP 字典中,多个数据元素可以赋给同一个域,与数据元素相似,系统也提供了预定义的域供用户使用。在域中,可以指定域的输出属性,例如输出长度是否允许大小写等。

视图、表、结构体数据元素和域的关系如下图:

image.png

锁对象

它们用于同步一个或多个用户对相同数据的访问。多个用户可能并发访问同一数据,这样就会用到 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 和选择画面。

建表规则

  1. 自定义表时,在表的描述信息中要描述清楚表包含的内容

  2. 数据库表一般定义为集团独立的,即第一个字段必须为 MANDT,且是参考数据元素 MANDT,代表客户端

image.png

  1. 可配置数据库表必须定义为集团独立的

  2. 若创建的数据库表为配置表,数据量少,修改少,经常访问,可在技术设置中对表进行缓存,从而增加访问速度

  3. 若为应用表,不允许在技术设置中对表进行缓存

  4. 表中的字段必须使用数据元素

  5. 表中的字段名必须易懂且有一定的含义,如:CHAR1 作为字段名是不符合规则的

  6. 要求可维护的表必须生成维护视图,并且为每一个维护视图创建对应的一个函数组。好处:避免在后期维护时互相影响、造成出错,也有利于性能提高

  7. 如果需要的话,可维护外键和值范围

创建数据元素/域的基本规则

  1. 当自定义表中使用到 SAP 中的字段时,使用字段对应的数据元素/域
  2. 当自定义表中的字段名时,使用更有意义的名称(如:用 ZZCOMPANY 代替 ZCHAR4
  3. 如果自定义的字段参考一个表或一定值的数据集时,创建一个自定义的域来实现
  4. 不要修改 SAP 存在的数据元素/域
  5. 当新建一个结构时,尽可能的使用存在的数据元素/域。如果数据元素/域不存在,再创建对应的符合命名规范的数据元素/域
  6. 新建数据元素时,必须维护好数据元素的文本描述,如为多语言系统,需同时进行翻译

添加客户化字段到 SAP 表中

当往 SAP 表中添加客户化字段时,必须使用附加结构 APPEND STRUCTURES

image.png

索引维护

  1. 创建、修改、删除索引将会增加数据库的负荷,所以,只有在需要时才进行索引的维护。尽可能的使用已存在的索引
  2. 不建议修改系统原有的索引,而是自行创建索引
  3. 创建索引会提高查询性能,但也会降低更新性能,所以为了提高查询性能可创建索引
  4. 如果创建索引的表的条目数预计较多,需要进行更新性能测试
  5. 在新定义索引前,需要与项目主技术负责人进行确认
  6. 主键必须定义为唯一的
  7. 索引只包含需要的字段
  8. 创建索引或使用索引时,请注意字段的顺序,匹配的字段顺序可取得更好效果
  9. 在进行索引传输时,注意时间点的选择,一般在系统空闲期进行传输,如中午或下午下班后
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。