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 を使用していることは言及する価値があります。