深入理解 /IWBEP/IF_MGW_ODATA_CMPLX_TYPE 的 GET_PROPERTY,SAP Gateway 如何从 Complex Type 中精准取回属性对象
维护经典 SAP Gateway 服务时,经常会碰到这样一种代码形态。MPC或MPC_EXT已经拥有一个Complex Type,代码并不准备重新创建其中的属性,而是希望把某个现有属性找出来,再修改它的元数据。这个动作看上去只是一次简单的对象查找,真正落到 SAP Gateway 的元数据对象模型里,却牵涉到Complex Type、Property、ABAP 字段名、OData 属性名、original name、外部名称以及$metadata之间的一整条关系。/IWBEP/IF_MGW_ODATA_CMPLX_TYPE-GET_PROPERTY正好处在这条关系链的中间。SAP 官方对/IWBEP/IF_MGW_ODATA_CMPLX_TYPE的定位非常明确,这个接口代表一个 ODataComplex Type对象。接口中既有CREATE_PROPERTY,也有GET_PROPERTY,前者负责向复杂类型加入属性,后者负责从已经存在的复杂类型中取得属性。官方对GET_PROPERTY的说明很短,只有两个核心信息,IV_PROPERTY_NAME表示复杂类型中的属性名称,RO_PROPERTY返回对应的属性实例。看起来只有两句话,实际开发里真正关键的是「取得属性实例」这几个字。GET_