Sapui5 传递Odata对象以创建实体集

Sapui5 传递Odata对象以创建实体集,sapui5,Sapui5,我试图调用Odata服务crequestSet,它将在MDG系统中创建一篇文章 我需要从ui5输入字段传递一些参数,其中一些应该是硬编码的值 我在models文件夹下创建了一个request.json文件: { } 现在,我尝试使用该模型调用service/createrequest。 在sapui5中创建oData模型的'eniTitySet',oData{Success:,Failure:} 对于简单的JSON模型,如: { "store": "", "merchCat":

我试图调用Odata服务crequestSet,它将在MDG系统中创建一篇文章

我需要从ui5输入字段传递一些参数,其中一些应该是硬编码的值

我在models文件夹下创建了一个request.json文件:

{

}

现在,我尝试使用该模型调用service/createrequest。 在sapui5中创建oData模型的'eniTitySet',oData{Success:,Failure:}

对于简单的JSON模型,如:

{
    "store": "",
    "merchCat": "",
}
我可以做:

var oData = {
Store: oLocal.getProperty("/store"),
MerchCat: oLocal.getProperty("/merchCat")

}
然后调用create方法:

oModel.create("/crequestSet", oData, {
                success: this._fnSuccess.bind(this),
                error: this._fnFailed.bind(this)
            })
但是如何传递复杂的json对象:

{

    "CR_MARA": {
        "Matk": "",
        "Mtart": "HAWA",
        "Attyp": "01",
        "Meins": "EA"
    },
    "CR_MAW1": {
        "Wladg": "0001",
        "Wbkla": "3100" 
    },}
到oModel。创建

我尝试将var-oData=JSONModel.Stringyfy转换为字符串,但它不起作用,并且在服务调用时出错

crequest服务的元数据结构:

-<EntityType sap:content-version="1" Name="crequest">


-<Key>

<PropertyRef Name="Matnr"/>

</Key>

<Property Name="ReasonForRequest" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:unicode="false" MaxLength="60" Nullable="false" Type="Edm.String"/>

<Property Name="Matnr" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:unicode="false" MaxLength="40" Nullable="false" Type="Edm.String" sap:label="Material"/>

<Property Name="CrDescription" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:unicode="false" MaxLength="60" Nullable="false" Type="Edm.String"/>

<Property Name="CrequestType" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:unicode="false" MaxLength="8" Nullable="false" Type="Edm.String"/>

<Property Name="CrequestId" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:unicode="false" MaxLength="12" Nullable="false" Type="Edm.String"/>

<Property Name="Matkl" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:unicode="false" MaxLength="9" Nullable="false" Type="Edm.String"/>

<Property Name="RefMatnr" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:unicode="false" MaxLength="40" Nullable="false" Type="Edm.String" sap:label="Material"/>

<Property Name="Reason" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:unicode="false" MaxLength="2" Nullable="false" Type="Edm.String"/>

<Property Name="Message" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:unicode="false" MaxLength="220" Nullable="false" Type="Edm.String" sap:label="Message Text"/>

<NavigationProperty Name="CR_ATTACHMASTER" ToRole="ToRole_CR_ATTACHMASTER" FromRole="FromRole_CR_ATTACHMASTER" Relationship="UGIOD02_RFM_SRV.CR_ATTACHMASTER"/>

<NavigationProperty Name="CR_UOM" ToRole="ToRole_CR_UOM" FromRole="FromRole_CR_UOM" Relationship="UGIOD02_RFM_SRV.CR_UOM"/>

<NavigationProperty Name="CR_MARA" ToRole="ToRole_CR_MARA" FromRole="FromRole_CR_MARA" Relationship="UGIOD02_RFM_SRV.CR_MARA"/>

<NavigationProperty Name="CR_MARC" ToRole="ToRole_CR_MARC" FromRole="FromRole_CR_MARC" Relationship="UGIOD02_RFM_SRV.CR_MARC"/>

<NavigationProperty Name="CR_MAKT" ToRole="ToRole_CR_MAKT" FromRole="FromRole_CR_MAKT" Relationship="UGIOD02_RFM_SRV.CR_MAKT"/>

<NavigationProperty Name="CR_MARD" ToRole="ToRole_CR_MARD" FromRole="FromRole_CR_MARD" Relationship="UGIOD02_RFM_SRV.CR_MARD"/>

<NavigationProperty Name="CR_MARM" ToRole="ToRole_CR_MARM" FromRole="FromRole_CR_MARM" Relationship="UGIOD02_RFM_SRV.CR_MARM"/>

<NavigationProperty Name="CR_MVKE" ToRole="ToRole_CR_MVKE" FromRole="FromRole_CR_MVKE" Relationship="UGIOD02_RFM_SRV.CR_MVKE"/>

<NavigationProperty Name="CR_MAW1" ToRole="ToRole_CR_MAW1" FromRole="FromRole_CR_MAW1" Relationship="UGIOD02_RFM_SRV.CR_MAW1"/>

<NavigationProperty Name="CR_STEU" ToRole="ToRole_CR_STEU" FromRole="FromRole_CR_STEU" Relationship="UGIOD02_RFM_SRV.CR_STEU"/>

<NavigationProperty Name="CR_SAUSPW" ToRole="ToRole_CR_SAUSPW" FromRole="FromRole_CR_SAUSPW" Relationship="UGIOD02_RFM_SRV.CR_SAUSPW"/>

<NavigationProperty Name="CR_SVARKY" ToRole="ToRole_CR_SVARKY" FromRole="FromRole_CR_SVARKY" Relationship="UGIOD02_RFM_SRV.CR_SVARKY"/>

<NavigationProperty Name="CR_PURCHINFO" ToRole="ToRole_CR_PURCHINFO" FromRole="FromRole_CR_PURCHINFO" Relationship="UGIOD02_RFM_SRV.CR_PURCHINFO"/>

<NavigationProperty Name="CR_WLK2" ToRole="ToRole_CR_WLK2" FromRole="FromRole_CR_WLK2" Relationship="UGIOD02_RFM_SRV.CR_WLK2"/>

<NavigationProperty Name="CR_BOM" ToRole="ToRole_CR_BOM" FromRole="FromRole_CR_BOM" Relationship="UGIOD02_RFM_SRV.CR_BOM"/>

<NavigationProperty Name="CR_MBEW" ToRole="ToRole_CR_MBEW" FromRole="FromRole_CR_MBEW" Relationship="UGIOD02_RFM_SRV.CR_MBEW"/>

<NavigationProperty Name="CR_CHARACP" ToRole="ToRole_CR_CHARACP" FromRole="FromRole_CR_CHARACP" Relationship="UGIOD02_RFM_SRV.CR_CHARACP"/>

<NavigationProperty Name="CR_MAMT" ToRole="ToRole_CR_MAMT" FromRole="FromRole_CR_MAMT" Relationship="UGIOD02_RFM_SRV.CR_MAMT"/>

<NavigationProperty Name="CR_CLASSGEN" ToRole="ToRole_cr_classgen" FromRole="FromRole_cr_classgen" Relationship="UGIOD02_RFM_SRV.cr_classgen"/>

<NavigationProperty Name="CR_MESSAGE" ToRole="ToRole_Messages" FromRole="FromRole_Messages" Relationship="UGIOD02_RFM_SRV.Messages"/>

<NavigationProperty Name="CR_CLASSASGN" ToRole="ToRole_Classasgen_As" FromRole="FromRole_Classasgen_As" Relationship="UGIOD02_RFM_SRV.Classasgen_As"/>

<NavigationProperty Name="CR_VALUATION" ToRole="ToRole_Valuation_As" FromRole="FromRole_Valuation_As" Relationship="UGIOD02_RFM_SRV.Valuation_As"/>

<NavigationProperty Name="CR_SEASON" ToRole="ToRole_Season_det" FromRole="FromRole_Season_det" Relationship="UGIOD02_RFM_SRV.Season_det"/>

</EntityType>

我假设您使用v2的oData模型在使用oModel.createEntry或oModel.create时负责结构。您可以将整个对象放入第二个properties参数中。我创建了一个northwind示例项目来创建一个工作示例

接受三个参数,即API引用中的第二个参数,即需要传递的深层对象

var oData = {
   ReasonForRequest: "X",
   Matnr: "Y",
   RefMatnr: "Z",
   CR_MARA: {
    Matk: "",
    Mtart: "HAWA",
    Attyp: "01",
    Meins: "EA"
   },
  CR_MAW1: [
    {
    Wladg: "0001",
    Wbkla: "3100" 
    }
   ]

}
oModel.create("/EntitySet", oData, { } );
请注意一些重要概念:

CR_MARA和CR_MAW1是元数据中的导航属性。 因为您只提供了部分服务元数据,所以它不是 可能知道每个实体的属性是什么。这个 元数据中的关联在元数据中不可用 包含有关基数的信息。 那么如果克鲁·马拉 基数1..1它应该是oData内部的深层对象 CR_MAW1的基数为1..*它应该是一个对象数组 在奥达塔里面。
此外,使用特定于操作的名称命名EntitySet(如CreateEntitySet或DeleteEntitySet)在语义上是错误的,通常会在同一实体中实现许多操作,如同时查询、读取和创建

这实际上取决于oData模型中实体的结构。也请共享您的$metadata。您好,我已附加了需要调用的crquest服务元数据,并以相同格式将值传递给create方法。请添加整个元数据,并且不仅一个entityCreateEntry不允许使用深层结构,因此在给定JSON结构的情况下无法使用。您好,感谢您的帮助,我能够用嵌套的json结构解决这个问题,并且可以触发文章创建服务。
var oData = {
   ReasonForRequest: "X",
   Matnr: "Y",
   RefMatnr: "Z",
   CR_MARA: {
    Matk: "",
    Mtart: "HAWA",
    Attyp: "01",
    Meins: "EA"
   },
  CR_MAW1: [
    {
    Wladg: "0001",
    Wbkla: "3100" 
    }
   ]

}
oModel.create("/EntitySet", oData, { } );