是否重命名通过引用的CDS视图生成的OData服务的实体?
我在SAP NETWEAVER 7.5 SP 19(2020年9月)系统上实现了一些关联的CD视图 我在SEGW事务中使用了“按数据源引用”功能,从CDS视图自动创建ODATA类型和关联,并将它们添加到现有的SEGW ODATA项目中 然后我在SAPUI5应用程序中使用ODATA服务 以下是我使用的指南之一: CD视图 CD视图的名称类似于/ID/view\u NAME\u CD 关联将重命名为,并在名称前加下划线。然后名称为\u association\u name。下划线似乎是SAP使导航属性可读的惯例 结果 在SEGW项目中,向导使用名称创建一个实体类型:xidxview\u name\u cdsType 每个斜杠都将替换为x,并在末尾添加类型 导航属性的名称为至\u association\u name 该关联的名称类似于assoc\u 0D6ADC4B279EADE543738376111F7216 目标 我想更改实体类型、关联和导航属性的名称,因为我想在sapui5应用程序中使用一些可读的名称 澄清2020/11/30:SEGW交易本身中的名称也应更改,以使SEGW和SAPUI5中的名称相同,因为未来几个月,其他开发者不会认为我更改了MPC_EXT类中的名称。至少我不会想到这一点。:-) CDS视图中的注释是否可以这样做?还是其他方式 示例是否重命名通过引用的CDS视图生成的OData服务的实体?,odata,sapui5,cds,sap-gateway,Odata,Sapui5,Cds,Sap Gateway,我在SAP NETWEAVER 7.5 SP 19(2020年9月)系统上实现了一些关联的CD视图 我在SEGW事务中使用了“按数据源引用”功能,从CDS视图自动创建ODATA类型和关联,并将它们添加到现有的SEGW ODATA项目中 然后我在SAPUI5应用程序中使用ODATA服务 以下是我使用的指南之一: CD视图 CD视图的名称类似于/ID/view\u NAME\u CD 关联将重命名为,并在名称前加下划线。然后名称为\u association\u name。下划线似乎是SAP使导航属
@AbapCatalog.sqlViewName: 'ZTEST'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'A test'
define view /ABC/SYSTEM_RESULT_CDS as
select from system as system
association [1..*] to /abc/s_mon_result as _monitoring_results on _monitoring_results.system_id = $projection.system_id
{
key system.system_id,
system.name,
_monitoring_results
}
group by system.system_id
实体类型:XABCX系统\u结果\u cdsType
这是骆驼式和蛇式的混合。不太可读
导航属性:查看监视结果
可以,但我想有机会重新命名它
协会:协会0D6ADC4B279EADE543738376111F7216
不可读。只有单击它,您才能看到关联所属的两个实体。您必须重新定义
定义MPC_EXT
类的方法,即服务生成后的运行时工件:
super->define( ).
DATA: lo_entity_type TYPE REF TO /iwbep/if_mgw_odata_entity_typ,
lo_entity_set TYPE REF TO /iwbep/if_mgw_odata_entity_set,
lo_property TYPE REF TO /iwbep/if_mgw_odata_property.
" for entity type
lo_entity_type = model->get_entity_type( 'C_Cfd_UsageType' ).
lo_entity_type->set_name( iv_name = 'CFDUsage' ).
" for association
lo_entity_type = model->get_association( 'C_CFD_Assoc' ).
lo_entity_set->set_name( iv_name = 'CFDAssociation' ).
" for entity set
lo_entity_set = model->get_entity_set( 'C_Cfd_Usage' ).
lo_entity_set->set_name( iv_name = 'CFD' ).
之后,新名称将反映在服务$metadata中:
好的,这是一种可能性。SEGW事务中的名称不会更改,或者?在“model->get_association('C_CFD_Assoc)”
行中,您忘记了一些字符”代码>我仍然更喜欢注释。你知道怎么做吗?SEGW事务中的名称不会改变,或者?
不,不在SEGW中,但对于UI5你忘记了一些字符)应该没问题。
的确,我知道。更正,thxI在第一篇文章中对我的目标进行了澄清,但感谢您的回答。很高兴知道,也许其他开发者也需要它。