在 ADT 或事务码SE11中打开 SAP 系统自带的DEMO_WEEK,会看到一个很有意思的结构设计。它并没有把星期一、星期二、星期三、星期四、星期五各自的字段重新定义一遍,而是反复使用同一个DEMO_DAY。SAP 官方正是利用这一组 Demo 对象解释 DDIC Include Structure 的工作方式。DEMO_WEEK五次包含DEMO_DAY,每一次都使用不同的 group name 和 suffix,从而让同一组字段可以在一个更大的结构中重复出现。
这个设计表面上很像面向对象语言里的继承,也很像一个结构里面嵌套另一个结构,但真正理解以后会发现,这三个概念其实差得很远。
Include Structure 最需要抓住的一件事,是「字段被展开」。
假设 DDIC 中存在一个结构DEMO_DAY,里面有WORK和FREE两个 component。当这个结构被 Include 到DEMO_WEEK中时,ABAP Dictionary 并不会在DEMO_WEEK里面创建一个普通意义上的嵌套对象。
从最终结构布局看,更接近这样的效果。
WORK_MO FREE_MO WORK_TU FREE_TU WORK_WE FREE_WE WORK_TH FREE_TH WORK_FR FREE_FR也