1

我在 SAP NETWEAVER 7.5 SP 19 (09/2020) 系统上实现了一些带有关联的 CDS 视图。

我在 SEGW 事务中使用数据源引用功能自动从 CDS 视图创建 ODATA 类型和关联,并将它们添加到现有的 SEGW ODATA 项目中。

然后我在 SAPUI5 应用程序中使用该 ODATA 服务。

这是我使用的指南之一:https ://www.saplearners.com/create-odata-service-abap-cds-views-segw/

CDS 视图

CDS 视图的名称类似于/ID/VIEW_NAME_CDS

关联用as重命名,并在名称前加上下划线。然后名称为_assication_name。下划线似乎是 SAP 使导航属性可读的约定。

结果

在 SEGW 项目中,向导会创建一个实体类型,其名称为:x id x view_name_cds类型 每个斜线都将替换为x并在末尾添加类型

导航属性名为to_assication_name

该关联的名称类似于assoc_0D6ADC4B279EADE543738376111F7216

目标

我想更改实体类型、关联和导航属性的名称,因为我想要 sapui5 应用程序中的一些可读名称

澄清 2020/11/30:SEGW 事务本身中的名称也应更改,以便它们在 SEGW 和 SAPUI5 中相同,因为在未来几个月内,另一个开发人员不会认为我更改了 MPC_EXT 类中的名称。至少我不会这么想。:-)

CDS 视图中的注释可以做到这一点吗?还是有什么其他方式?

例子

@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

实体类型:xabcxsystem_result_cdsType

这是骆驼案风格和蛇纹案的混合体。不太可读。

导航属性:to_monitoring_results

没关系,但我想有机会重命名它。

关联:assoc_0D6ADC4B279EADE543738376111F7216

不可读。只有当您单击它时,您才会看到关联所属的 2 个实体。

4

1 回答 1

1

您必须重新定义类的DEFINE方法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 中:

在此处输入图像描述

于 2020-11-30T11:57:57.210 回答