对象依赖关系 (★★)

对象依赖关系 (★★)

#abap #abap-dictionary

概览表

Concept (概念) Key Point (要点)
Runtime Object ABAP 程序使用的内部格式
Where-Used List 查找对象引用关系
Activation 修改后必须激活才能生效

依赖关系类型

Dictionary 中的对象之间存在复杂的依赖关系:

1
2
3
4
5
6
7
8
9
10
11
12
Domain
└── Data Element
├── Structure
│ └── Table
│ ├── View
│ ├── Index
│ ├── Lock Object
│ └── Search Help
└── Table Type

外键 → Check Table
搜索帮助 → Selection Method (Table/View)

运行时对象 (Runtime Object)

  • Dictionary 中的定义被编译为运行时对象
  • 存储在系统表中(如 DD02L for tables, DD03L for fields)
  • ABAP 程序和 Screen Painter 访问的是运行时对象
  • 修改后必须激活才能更新运行时对象
⚠️不一致问题
如果运行时对象与 Dictionary 定义不一致,ABAP 程序可能出错。
激活时系统自动检查并更新运行时对象。

Where-Used List (使用处清单)

Function (功能) Access (访问)
查找域的使用 SE11 → Domain → Where-Used
查找数据元素的使用 SE11 → Data Element → Where-Used
查找表的使用 SE11 → Table → Where-Used

用途:

  • 评估修改影响范围
  • 确定哪些程序/表会受变更影响
  • 计划重构或迁移

激活过程

1
2
3
4
修改对象 → 保存( inactive version )
→ 激活 → 检查依赖 → 更新 runtime object → 更新数据库(如需要)
↓ 失败
→ 激活日志 (Activation Log)
  • 可通过 Utilities → Activation Log 查看激活结果
  • 失败的激活会给出具体错误信息
  • 依赖的对象可能需要一起重新激活