我@sap/cloud-sdk-generator 1.6.1
用于生成 VDM (YY1_SALESDOCUMENT_CDS),使用 edmx2csn 将其转换为 CSN,然后在 .CDS 文件中使用它以公开为 OData 服务(名为 CustomSales)。
目标是使用额外的字段 'foobar' 来增强原始 YY1_SALESDOCUMENT_CDS,该字段按预期工作。但它有一个缺点:CustomSales 不包含元数据的 sap:* 属性,如 YY1_SALESDOCUMENT_CDS 所具有的“sap:label”。
我的 custom-sales.CDS 服务文件:
using YY1_SALESDOCUMENT_CDS as sales from '../src/external/csn/YY1_SalesDocument.json';
service CustomSales {
@cds.persistence.skip
entity SalesDocument as projection on sales.YY1_SalesDocumentType {
*
} excluding {to_Item}
extend entity sales.YY1_SalesDocumentType with {
foobar: String(25) ;
toItem : Association to many SalesDocumentItem
on toItem.SalesDocument = SalesDocument ;
}
}
YY1_SALESDOCUMENT_CDS 服务的元数据:
<EntityType Name="YY1_SalesDocumentType" sap:label="Sales Document" sap:content-version="1">
<Key>
<PropertyRef Name="SalesDocument"/>
</Key>
<Property Name="SalesDocument" Type="Edm.String" Nullable="false" MaxLength="10" sap:display-format="UpperCase" sap:required-in-filter="false" sap:label="Sales Document"/>
<NavigationProperty Name="to_Item"/>
</EntityType>
CustomSales Service 的元数据:
<EntityType Name="SalesDocument">
<Key>
<PropertyRef Name="SalesDocument"/>
</Key>
<Property Name="SalesDocument" Type="Edm.String" MaxLength="10" Nullable="false"/>
<Property Name="foobar" Type="Edm.String" MaxLength="25"/>
<NavigationProperty Name="toItem" Type="Collection(CustomSales.SalesDocumentItem)"/>
</EntityType>
我希望 YY1_SALESDOCUMENT_CDS 服务中的所有属性都可以通过 CustomSales 复制,但事实并非如此。
有没有办法从现有服务生成 OData 服务并复制它的元数据属性?
值得一提的是,我使用 JS/TS 作为自定义逻辑的处理程序,使用 Cloud SDK for JS 调用原始后端服务。