ABAP include structure 的一个具体用法
在客户系统中使用 append structure 增强 SAP 结构或 SAP 表,这种行为并不构成修改(modification)。这一点在 SAP 官网 得到确认。
为客户系统中的 SAP 对象创建的附加结构,位于客户命名空间(或特殊开发项目合作伙伴的命名空间)中,因此不会被升级覆盖。
SAP 建议客户的增强开发,也使用来自客户名称空间的名称创建这种类型的追加结构的组件,以避免命名冲突。升级后,关联的附加结构将再次附加到 SAP 修改的表中。
结构的组件可以通过在 ABAP 字典中包含其他结构的组件来定义,包括数据库表或视图。 这些被包含的结构被称为include结构(或简称includes)。 从技术角度看,include结构被include的结构引用了被include的结构,每当这个结构发生变化时,都会相应地修改。 包含结构本身可以包含包含结构,最大嵌套深度为九个包含。
下图的 CRMT_ORDERADM_H_EXT 就是一个 include structure:
这个 include structure 里又包含了两层嵌套的 include structure,如下图黄色区域所示:
- CRMT_ORDER_EDIT_INFO
-
INCL_EEW_ORDERADM_H
当一个 include structure 被包含到一个已有结构时,并没有创建子结构,这意味着 include structure 里的组件字段被插入,就好像它们是在这个位置单独指定的一样,并且它们像直接定义的组件一样被处理。 可以根据需要组合常规组件和包含结构。
当一个结构作为包含结构被包含时,它可以被分配一个组名和一个三字符后缀。
-
在 ABAP 程序中,组的名称是引用结构声明的数据对象的附加寻址选项。 所包含结构的所有组件都可以使用此名称一起寻址,或者可以使用名称后的结构组件选择器 (-) 寻址单个组件。
-
在组件名称后附加一个后缀以重命名每个组件并避免组件之间的命名冲突。 包含在带有后缀的结构中的包含结构的组件的原始名称不能超过 27 个字符。
ABAP 系统里的 demo structure DEMO_WEEK
, 演示了组名和三字符后缀的一个例子:
在这个结构里,它重复包含了五次 include structure DEMO_DAY
.
在 DEMO_DAY
里,包含两个字段 work 和 free,但是这两个字段通过 DEMO_DAY
这个 include structure 被包含到 DEMO_WEEK
之后,通过三字符后缀,
就产生了独一无二的命名:WORK<三字符后缀>
,比如 WORK_MO
, WORK_TU
等等。