一个敌人遇到问题:给 ABAP CDS view 增加 OData.publish: true
注解激活之后,冀望主动生成 OData 服务,然而遇到谬误音讯:
Data source is not a transactional CDS view [OData Exposure]
SAP 社区上有人问相似的问题:https://answers.sap.com/questions/78804/cds-view-annotation-….
能够尝试去后盾应用事务码 /IWFND/MAINT_SERVICE
, 对 OData 服务 ZFLIGHT_COM_CDS
手动激活。
如果后盾激活 OData 服务后,回到 ABAP Development Tool 里激活 CDS view,还是遇到 Data source is not a transactional CDS view [OData Exposure]
的谬误音讯,那么参照这个帖子:
https://www.michaelmanagement.com/sap-error-messages/en/sadl_…
Either add the annotation ‘@ObjectModel.transactionalProcessingEnabled:
true’ to the underlying CDS view or remove the annotation
‘@ObjectModel.transactionalProcessingDelegated’ from the consumption
view.
意思是要么给 zspfli_root
这个 underlying CDS view 里增加 @ObjectModel.transactionalProcessingEnabled
注解,要么从 consumption view zflight_com
里移除 @ObjectModel.transactionalProcessingDelegated
.
背景常识
什么是 SAP core data service consumption view?
参考这篇博客,consumption view 是在 composite view 之上创立的,这意味着生产视图不与 DDIC 表 / 视图或根本视图交互。生产视图写在提供事实数据和多维数据集数据的复合视图之上。此视图用于将数据公开给不同的剖析工具(例如 HTML、SAP BusinessObjects、Analysis for Excel、SAP Lumira 等),这有助于创立报告和不同的可视化来出现业务数据。
什么是 SAP core data service composite view?
复合视图是在根本视图之上创立的,这意味着复合视图不间接与数据库进行数据交互,而是通过根本视图的维度后果集进行交互。多个根本视图能够与连贯 / 关联一起应用,以获取数据并对检索到的数据进行计算(例如:应用内置表达式和函数),以应用生产视图在不同的剖析工具中生产。
如果想进行某种事务处理,须要应用 @ObjectModel.transactionalProcessingEnabled
来润饰 CDS view.
如果只有剖析场景或用例,或者只想读取数据,则不须要 ObjectModel 正文,因为在这些状况下不须要 Business Object 或 BOPF 框架。