深入理解 SAP Gateway 中的 /IWBEP/IF_MGW_ODATA_CMPLX_TYPE 与 CREATE_CMPLX_TYPE_PROPERTY 在 SAP Gateway 的MPC或MPC_EXT里手工构造 OData Metadata 时,有一类代码很容易被忽略。我们已经创建了一个 Complex Type,也知道可以通过CREATE_PROPERTY给它添加Edm.String、Edm.Decimal、Edm.DateTime之类的普通属性,可一旦 Complex Type 内部还需要再包含一个 Complex Type,普通的CREATE_PROPERTY就不够用了。这时真正需要关注的是/IWBEP/IF_MGW_ODATA_CMPLX_TYPE接口里的CREATE_CMPLX_TYPE_PROPERTY。SAP 官方对/IWBEP/IF_MGW_ODATA_CMPLX_TYPE的定位很直接,它代表一个 OData Complex Type 对象。而CREATE_CMPLX_TYPE_PROPERTY专门用来创建 nested complex type,也就是在一个 Complex Type 内部再挂入另一个 Complex Type。官方文档同时保留了旧方法CREATE_COMPLEX_PROPERTY,但明确将它标记为 obsolete,因此新代码更应该采用CREATE_CMPLX_TYPE_PROPERTY。这段 API 看起来只有几个参数,真正理解以后,会发现它实际上牵涉到