有个朋友向我咨询关于 SAP 产品增强字段扩展(Field Extensibility) 的问题:
Jerry,你好。看过你写的SAP产品增强Field Extensibility文章,对扩展字段在物理数据库的结构还不是很清楚,创建一个扩展字段后,物理数据库中是在SAP标品的表中加列,还是有一个关联表?或者说这是不是有多种可选的策略?
想问一下这一块细节。
这位朋友应该看的是笔者这篇文章:SAP产品的Field Extensibility。
本文就通过一个实际的例子,讲解如何手动给 SAP ABAP 数据库表,通过增强的方式,增添新的字段。
所谓增强(enhancement),是一种升级安全的扩展方式,这种方式不会对 SAP 标准产品发布的数据库表造成直接修改,这意味着客户可以在自己的系统上,通过这种增强方式给 SAP 标准数据库表增添新的字段。其后如果 SAP 数据库表发生了版本更新,比如增添了新的标准字段,或者对已有字段进行重命名,客户增强的这些字段都不会受到影响。
客户增强字段存储在一个客户创建的名叫 append structure 的 ABAP DDIC 结构上,这个结构是独立于 SAP 标准数据库表,存储在客户自己的命名空间下的开发包里。
下图是 SAP CRM 产品主数据的明细页面,其中产品的描述信息,存放在数据库表 COMM_PRSHTEXT
里。
COMM_PRSHTEXT 的主键为 PRODUCT_GUID 和 LANGU,这暗示我们一个产品可以分别基于不同的语言,分别维护多条描述信息。
SHORT_TEXT 字段存放产品描述大小写相关
的内容,这些描述信息字符,在对应语言里如果能转换成大写,则全部转换成大写形式,然后存放到另一个字段 SHTEXT_LARGE
里。
这两列的内容的一些例子,如下图所示:
本文我们介绍如何在这张数据库表里通过增强的方式,添加一个额外的自定义字段。假设我们添加的新字段数据类型为整数类型,用来存储一个产品描述信息的字符个数(通过 ABAP 标准函数 strlen 获得)。
最后添加的扩展字段效果如下图所示:
具体的步骤如下。