ABAP 字典

ABAP 字典

📊 数据库语言分类

SQL的两个组成部分

分类 功能 示例命令
DML (数据操作语言) 查询和更新数据 SELECT, INSERT, UPDATE, DELETE
DDL (数据定义语言) 定义数据库结构 CREATE TABLE, CREATE INDEX, DROP TABLE, ALTER TABLE

ABAP与字典的关系

  • ABAP程序:处理SQL的DML部分
  • ABAP字典:处理SQL的DDL部分

🗃️ ABAP字典概念

字典定义

ABAP字典是驻留在SAP数据库中的元数据(即关于数据的数据)以及由数据库维护的元数据。

字典功能



graph TB
    A[ABAP字典] --> B[创建和管理数据定义]
    A --> C[创建表结构]
    A --> D[创建数据元素]
    A --> E[创建域]
    A --> F[创建视图]
    A --> G[定义类型]

🔧 字典中的基本类型

三种基本类型

类型 描述 用途
数据元素 定义数据类型、长度和小数位数 描述基本数据类型
结构 可以具有任何类型的组件 复合数据类型
表类型 描述内部表的结构 内部表定义

全局区域概念

字典被称为全局区域,因为:

  • 字典中的对象对所有ABAP程序都是全局的
  • ABAP程序中的数据可以通过引用这些Dictionary全局对象来声明
  • 避免了数据定义的重复

🎯 字典的主要任务

实现的功能

  1. 强制数据完整性

    • 确保数据的一致性和有效性
    • 实施业务规则和约束
  2. 管理数据定义

    • 避免数据定义的冗余
    • 统一数据标准
  3. 紧密集成

    • 与ABAP开发工作台紧密集成
    • 提供统一的开发环境

🏗️ 数据结构示例

客户数据结构示例



graph TD
    A[客户结构] --> B[名称]
    A --> C[地址]
    A --> D[电话]
    
    B --> B1[名字]
    B --> B2[姓氏]
    
    C --> C1[街道]
    C --> C2[城市]
    C --> C3[邮编]
    
    D --> D1[电话号码1]
    D --> D2[电话号码2]
    D --> D3[电话号码3]

类型说明

组件 类型 说明
名称 结构 包含名字和姓氏
地址 结构 包含街道、城市、邮编
电话 表类型 客户可以有多个电话号码

🔍 字典支持的编辑工具

搜索工具

  • 搜索帮助:帮助用户输入有效数据
  • 输入帮助:提供数据选择功能

锁定工具

  • 锁定对象:保护数据完整性
  • 锁机制:防止并发访问冲突

📝 对象激活机制

自动创建过程

当对象被激活时:

  1. 字典对象在底层数据库中自动创建
  2. 生成相应的数据库结构
  3. 创建索引和约束

开发工作台集成



graph LR
    A[ABAP开发工作台] --> B[ABAP字典]
    B --> C[数据定义]
    B --> D[数据库对象]
    B --> E[编辑工具]

💡 字典使用场景

1. 功能模块接口

1
2
3
4
* 功能模块接口参数类型定义
TYPES: customer_type TYPE scustom,
address_type TYPE scustom-address,
phone_table TYPE TABLE OF scustom-phones.

2. 数据库表定义

1
2
* 使用字典类型定义数据库表
TABLES: scustom.

3. 数据类型声明

1
2
3
* 引用字典中的数据元素
DATA: customer_name TYPE scustom-name,
city TYPE scustom-address-city.