2

VDM (YY1_SALESDOCUMENT_CDS) を生成するために使用@sap/cloud-sdk-generator 1.6.1し、edmx2csn を使用して CSN に変換し、.CDS ファイルで使用して OData サービス (CustomSales という名前) として公開します。

目標は、元の YY1_SALESDOCUMENT_CDS を追加のフィールド「foobar」で拡張することであり、期待どおりに機能します。ただし、これには欠点があります。CustomSales には、YY1_SALESDOCUMENT_CDS にある「sap:label」などのメタデータの sap:* 属性が含まれていません。

私の 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 サービスのメタデータ:

<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 サービスを生成し、そのメタデータ属性もコピーする方法はありますか?

Cloud SDK for JS を使用して元のバックエンド サービスを呼び出すカスタム ロジックへのハンドラーとして JS/TS を使用していることは言及する価値があります。

4

0 に答える 0