1. 激活ODATA服务
参考前文,激活物料主数据ODATA API
激活完成后查看odata entity A_Product的结构,可以发现entity是基于CDS的
转到SE11也可以查询到该视图A_Product
2. 新建CDS Extend视图
Eclipse新建CDS
选择Extend view
结构如下
@AbapCatalog.sqlViewAppendName: '<CDS 视图名>'
@EndUserText.label: 'Material basic data extend field'
extend view <Odata视图名> with ZA_Product_ext1
<关联其他表的条件>
{
<关联其他表的字段>
}
对于简单场景,如在entity A_Product的查询结果中新增自定义表ZMMT001的字段,示例如下
@AbapCatalog.sqlViewAppendName: 'ZCDS_DEMO001'
@EndUserText.label: 'Material basic data extend field'
extend view A_Product with ZA_Product_ext
association [1..1] to zmmt001 on $projection.product = zmmt001.matnr
{
zmmt001.zwlmc,
zmmt001.zywpm
}
一旦激活完成,转到CDS A_Product的视图可以发现该视图已经被刚刚创建的extend view拓展过了
转到odata的entity中查看,关联字段也已经新增了
3. 测试
postman测试,新增的关联字段已经成功返回
和前文在Fiori上做custom fields的方式对比
该方法可以关联返回标准表以外的字段,但无法针对创建/修改逻辑新增字段,如果要做创建/修改只能另找增强处理
前文方法只能返回标准表字段(因为本质上就是对标准表做增强),但创建/修改都可以直接支持,无需额外开发
4. 参考资料
Enhancing standard APIs on S/4HANA
https://www.absoft.co.uk/enhancing-sap-apis-s4hana/