2016-04-25 3 views
1

SAP Web IDEに付属のSAP Sample "Approve Purchase Order"アプリケーションでは、 "PurchaseOrder"フィールドと同じ "Simple Form" UIコンテナコントロール内の "Supplier"エンティティ(子)のフィールドをバインドする方法"(親)エンティティ。このサンプルでは、​​3つの別々の模擬データファイルがあり、それぞれが「購買発注」、「購買発注明細」および「サプライヤ」用です。購買発注とサプライヤの関係は、関連付けを使用してmetadata.xmlに定義された1:1です。SAPUI5 - SAP Frioriの親エンティティのフィールドと同じパネル内の子エンティティの項目をバインドする方法サンプル "Approve PO" app?

A)発注書(関連する部分のみ)

<EntityType Name="PurchaseOrder" sap:content-version="1" sap:is-thing-type="true"> 
    <Key> 
     <PropertyRef Name="POId"/> 
    </Key> 
    <Property MaxLength="10" Name="POId" Nullable="false" Type="Edm.String" sap:creatable="false" sap:filterable="false" 
     sap:label="Purchase Order ID" sap:updatable="false"/> 
    <Property MaxLength="10" Name="OrderedById" Nullable="false" Type="Edm.String" sap:creatable="false" sap:filterable="false" 
    <Property MaxLength="10" Name="SupplierId" Nullable="false" Type="Edm.String" sap:creatable="false" sap:filterable="false" sap:label="ID" 
     sap:sortable="false" sap:updatable="false"/> 

B)サプライヤー(関連部分のみ)

<EntityType Name="Supplier" sap:content-version="1" sap:is-thing-type="true"> 
    <Key> 
     <PropertyRef Name="Id"/> 
    </Key> 
    <Property MaxLength="10" Name="Id" Nullable="false" Type="Edm.String" sap:creatable="false" sap:filterable="false" sap:label="ID" 
     sap:sortable="false" sap:updatable="false"/> 
    <Property MaxLength="255" Name="Email" Nullable="false" Type="Edm.String" sap:creatable="false" sap:filterable="false" sap:label="E-Mail" 
     sap:semantics="email" sap:sortable="false" sap:updatable="false"/> 

C)協会

<Association Name="PurchaseOrderSupplier" sap:content-version="1" sap:label="Association: Supplier --&gt; Purchase Order"> 
    <End Multiplicity="1" Role="FromRole_PurchaseOrderSupplier" Type="EPM_REF_APPS_PO_APV_SRV.Supplier"/> 
    <End Multiplicity="*" Role="ToRole_PurchaseOrderSupplier" Type="EPM_REF_APPS_PO_APV_SRV.PurchaseOrder"/> 
    <ReferentialConstraint> 
     <Principal Role="FromRole_PurchaseOrderSupplier"> 
      <PropertyRef Name="Id"/> 
     </Principal> 
     <Dependent Role="ToRole_PurchaseOrderSupplier"> 
      <PropertyRef Name="SupplierId"/> 
     </Dependent> 
    </ReferentialConstraint> 
</Association> 

図の部分( PurchaseOrderDetails.view.xml)を以下に示します。電子メールを除くすべてのフィールドは、親PurchaseOrderエンティティからのものです。

<form:SimpleForm class="sapUiForceWidthAuto sapUiResponsiveMargin" columnsL="1" columnsM="1" emptySpanL="5" emptySpanM="5" id="poHeaderForm" 
    labelSpanL="3" labelSpanM="3" layout="ResponsiveGridLayout" maxContainerCols="2" minWidth="1024" title="{i18n>xtit.formTitle}"> 
    <Label id="poIdFormLabel" text="{/#PurchaseOrder/POId/@sap:label}"/> 
    <Text id="poIdForm" text="{POId}"/> 
    <Label id="addressFormLabel" text="{/#PurchaseOrder/DeliveryAddress/@sap:label}"/> 
    <Text id="addressForm" text="{DeliveryAddress}"/> 
    <Label id="supplierEmailLabel" text="{/#Supplier/Email/@sap:label}"/> 
    <Text id="supplierEmail" text="{/PurchaseOrder/Id/Email}"/> 
</form:SimpleForm> 

私はサプライヤーエンティティすなわちから、フィールド、電子メールをバインドするために、多くの順列を試してみました:A){/Id/Email}、B){path: 'Supplier' , parameters: {Select 'Email'}}が、結果は空白となっています。

「電子メール」の正しいバインディング構文を示してください。

答えて

2

metadata.xmlスニペットには、サプライヤへのNavigationPropertyが含まれていません。したがって、アソシエーションは認識されません。まずmetadata.xmlを修正する必要があります。この後、あなたは簡単に次の操作を行うことができます。

<Text id="supplierEmail" binding="{Supplier}" text="{Email}"/> 

これはあなたのあなたのナビゲーションプロパティは、あなたの発注書エンティティの内側にあなたのNavigationProperty「サプライヤー」と命名されていることを前提としています。あなたは、単に使用することができ、この後

items="{ 
    path: '/PurchaseOrderItems', 
    parameters: { 
     'expand': 'Supplier' 
    } 
}" 

:その場合、私はまた、あなたがすなわち、同じ要求(発注書に1つずつ)、このようなものでサプライヤーデータを取得するために、結合で$expand=Supplierを使用することをお勧めこれは、 '拡張'されているためにバインディング属性がありません。

<Text id="supplierEmail" text="{Supplier/Email}"/> 
+0

こんにちはナビ、お返事ありがとうございます。 1)私はスペースのために完全なメタデータを表示しませんでした。しかし、PurchaseOrder Entityにはすでに次のNavigationPropertyがあります。私は$ =サプライヤーを展開する含める必要がありますラベル= "サプライヤー"/2):

+0

こんにちはナビ、私はちょうどPurchaseOrderItems.view.xmlの電子メールフィールドで次のバインディング構文を試してみました! >> binding = {Supplier} text = {Email}。私が数日間苦労している問題であなたの助けをありがとうございます。 –

+0

私はこの例を更新しました。最終的にあなたの質問に答えますか? – Nabi

関連する問題