2

@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 调用原始后端服务。

4

0 回答 0