在SAP Web IDE附带的SAP示例"Approve Purchase Order“应用程序中,如何将"Supplier”实体(子实体)的字段绑定到与"PurchaseOrder“(父)实体的字段相同的"Simple Form”UI容器控件中。在此示例中,有3个单独的模拟数据文件,分别对应于"Purchase Order“、"Purchase Order Items”和"Supplier“。采购订单与供应商的关联关系在metadata.xml中定义为1:1。
a) PurchaseOrder (仅适用于相关部分)
<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 --> 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'}},但结果一直是一个空格。
请显示"Email“的正确绑定语法。
发布于 2016-04-25 18:47:13
您的metadata.xml代码段不包含指向供应商的NavigationProperty。因此,您的协会不被认可...你必须先修复你的metadata.xml。在此之后,您可以轻松执行以下操作:
<Text id="supplierEmail" binding="{Supplier}" text="{Email}"/>这假设您的导航属性在您的PurchaseOrder实体中命名为您的供应商“NavigationProperty”。在这种情况下,我还建议您在绑定中使用$expand=Supplier,以便在相同的请求(针对PurchaseOrder的请求)中获取供应商数据,即如下所示:
items="{
path: '/PurchaseOrderItems',
parameters: {
'expand': 'Supplier'
}
}"在此之后,您可以简单地使用此属性而不使用绑定属性,因为您已经“扩展”了:
<Text id="supplierEmail" text="{Supplier/Email}"/>https://stackoverflow.com/questions/36833290
复制相似问题