从 Salesforce 官网可以了解到 Salesforce 的 force.com 平台里数据库表的设计:https://developer.salesforce….
Every logical database object that Force.com exposes is internally managed using metadata. Objects, (tables in traditional relational database parlance), fields, stored procedures, and database triggers are all abstract constructs that exist merely as metadata in Force.com’s Universal Data Dictionary (UDD).
每个 force.com 暴露出来的逻辑数据库对象在内部都被 metadata 元数据管理。数据库表,表的字段,存储过程和数据库触发器,在 force.com 里只不过都是抽象的实体,以元数据的方式存在于 force.com 的 UDD 数据字段中。
而 SAP Netweaver 也有类似 salesforce force.com 的 UDD 概念,在 Netweaver ABAP 里成为 ABAP Data Dictionary – DDIC,事务码 SE11 打开。
SAP 的数据库表有 design time 和 runtime 运行时的概念。也支持在 ABAP 程序运行时动态生成新的数据库表,以及运行时根据数据库表对应的实例,反方向得到其 design time 信息的方法,类似其他编程语言比如 Java 中的反射,不过在 ABAP 里我们不习惯这样叫,而是称之为 ABAP Run Time Type Identification, 简称 RTTI。
以上图显示的数据库表 TADIR 为例,其字段的元数据都存储在另一张表 DD03L 里。
通过查询条件 TABNAME = TADIR, 即可从数据库表 DD03L 里找到 TADIR 所有字段的元数据,包括字段名,字段的 ABAP data element 名称,内部数据类型和字段长度等等。
当然大多数时候我们如果需要获取这些元数据,不需要通过查表的方式,ABAP DDIC 给我们提供了丰富的 API,这些函数的命名有规律:DD*GET:
而一张表的运行时信息,通过菜单 Utilities->Runtime Object->Display 查看:
不过这些信息一般来说和 ABAP 应用开发人员关系不大,所以很少留意。
要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”: