如何在sap.m.table上处理json和odata服务

2020-08-22 06:10发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

如何一次处理json和odata处理。 在sap.m.table中,我们只能与一个实体集和字段进行绑定。

我有一个包含10列的表,我可以进行json绑定或一一添加行。 在Col 1具有输入字段的情况下,我必须在此基础上输入一些值,以读取odata服务,并应像下一行等一样逐行填充行。

在sap ui5中可以实现这种情况吗?

 <表模式=" SingleSelectMaster"项目=" {keyTransPort>/TestSet}">
  .. 

  
            
           
           
           
           
           
           
           
           
 


 onInit:function(){
 that._data = {
     EntitySet:[{
      sn:1
      col1:",
      col2:",
      col3:",
      col4:",
      col5:",
      col6:",
      col7:",
      col8:",
      col9:"
     },{
      sn:2
      col1:",
      col2:",
      col3:",
      col4:",
      col5:",
      col6:",
      col7:",
      col8:",
      col9:"
     },{
      sn:3,
      col1:",
      col2:",
      col3:",
      col4:",
      col5:",
      col6:",
      col7:",
      col8:",
      col9:"
     }]
    };
    that.jModel = new sap.ui.model.json.JSONModel();
    that.jModel.setData(this._data);
   //that.jModel = new sap.ui.model.json.JSONModel();
   //that.jModel.setData(that._data);
    that.getView()。setModel(that.jModel," keyTransPort");
 }
 控制器代码:

 readTRNumber:function(){
//console.log("请输入TR号。");
  var that = this;
   //var col1 = that.getView()。byId(" __ text2")。getValue();
    var url ="/img/sap/opu/odata/sap/ZS50_TRANS_REQ_APPR_SRV/";
    var allfilters = [
     新的sap.ui.model.Filter({
      路径:" para",
      运算子:sap.ui.model.FilterOperator.EQ,
      值1:" X"
     }),
     新的sap.ui.model.Filter({
      路径:" seqno",
      运算子:sap.ui.model.FilterOperator.EQ,
      值1:" 1"
     }),
     新的sap.ui.model.Filter({
      路径:" para2",
      运算子:sap.ui.model.FilterOperator.EQ,
      值1:" fgh4567"
     })
    ];
    var oModel = new sap.ui.model.odata.v2.ODataModel(url);
    sap.ui.getCore()。setModel(oModel);
    var oModelTRDetails = new sap.ui.model.json.JSONModel();
    oModel.metadataLoaded()。then(function(oSuccess){
     oModel.read("/img/EntitySet",{
      过滤器:所有过滤器,
      成功:函数(oData,oResponse){
       lv_BusyDialog.close();
       var data = oData;
       oModelTRDetails.setData(data);
       that.getView()。setModel(oModelTRDetails," keyTransPort");
      },
      错误:函数(oError){
      //alert(" error");
      }
     });
    },函数(oError){
    });
 }
 

(6.5 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

如何一次处理json和odata处理。 在sap.m.table中,我们只能与一个实体集和字段进行绑定。

我有一个包含10列的表,我可以进行json绑定或一一添加行。 在Col 1具有输入字段的情况下,我必须在此基础上输入一些值,以读取odata服务,并应像下一行等一样逐行填充行。

在sap ui5中可以实现这种情况吗?

 <表模式=" SingleSelectMaster"项目=" {keyTransPort>/TestSet}">
  .. 

  
            
           
           
           
           
           
           
           
           
 


 onInit:function(){
 that._data = {
     EntitySet:[{
      sn:1
      col1:",
      col2:",
      col3:",
      col4:",
      col5:",
      col6:",
      col7:",
      col8:",
      col9:"
     },{
      sn:2
      col1:",
      col2:",
      col3:",
      col4:",
      col5:",
      col6:",
      col7:",
      col8:",
      col9:"
     },{
      sn:3,
      col1:",
      col2:",
      col3:",
      col4:",
      col5:",
      col6:",
      col7:",
      col8:",
      col9:"
     }]
    };
    that.jModel = new sap.ui.model.json.JSONModel();
    that.jModel.setData(this._data);
   //that.jModel = new sap.ui.model.json.JSONModel();
   //that.jModel.setData(that._data);
    that.getView()。setModel(that.jModel," keyTransPort");
 }
 控制器代码:

 readTRNumber:function(){
//console.log("请输入TR号。");
  var that = this;
   //var col1 = that.getView()。byId(" __ text2")。getValue();
    var url ="/img/sap/opu/odata/sap/ZS50_TRANS_REQ_APPR_SRV/";
    var allfilters = [
     新的sap.ui.model.Filter({
      路径:" para",
      运算子:sap.ui.model.FilterOperator.EQ,
      值1:" X"
     }),
     新的sap.ui.model.Filter({
      路径:" seqno",
      运算子:sap.ui.model.FilterOperator.EQ,
      值1:" 1"
     }),
     新的sap.ui.model.Filter({
      路径:" para2",
      运算子:sap.ui.model.FilterOperator.EQ,
      值1:" fgh4567"
     })
    ];
    var oModel = new sap.ui.model.odata.v2.ODataModel(url);
    sap.ui.getCore()。setModel(oModel);
    var oModelTRDetails = new sap.ui.model.json.JSONModel();
    oModel.metadataLoaded()。then(function(oSuccess){
     oModel.read("/img/EntitySet",{
      过滤器:所有过滤器,
      成功:函数(oData,oResponse){
       lv_BusyDialog.close();
       var data = oData;
       oModelTRDetails.setData(data);
       that.getView()。setModel(oModelTRDetails," keyTransPort");
      },
      错误:函数(oError){
      //alert(" error");
      }
     });
    },函数(oError){
    });
 }
 

(6.5 kB)
付费偷看设置
发送
6条回答
SC_Yao
1楼-- · 2020-08-22 07:01

在这种情况下,您可能需要编写具有关联的odata服务。

输入作为标题,展开的项目作为要显示的项目。

odata调用类似于

在此模型中,我的模型将同时包含EKKO和相关的EKPO -

以同样的方式思考模型

 var lv_oDataUrl ="/img/sap/opu/odata/sap/ZOD_EKKO_SRV/";
 varentitySet_url = lv_oDataUrl +" EKKOSet?$ expand = EKPOSet";
 var lv_OModel = new sap.ui.model.odata.ODataModel(lv_oDataUrl,true," usrid"," pwd");
 
My梦
2楼-- · 2020-08-22 07:03

..........

梦想连接
3楼-- · 2020-08-22 06:58

嗨,

如果要在修改行数据后更新表:

 function readTRNumber(oControllerEvent){
    //获取当前编辑行的绑定上下文:
     var oContext = oControllerEvent.getSource()。getBindingContext();
    //可选,您可以获取当前编辑行的JSON数据:
     var oData = oContext.getModel()。getProperty(oContext.getPath());
    //根据来自ODataModel的数据修改/创建oData
    //....
    //将数据设置为当前行:
     oContext.getModel()。setProperty(oContext.getPath(),data);
     oContext.getModel()。refresh();
 } 
何必丶何苦呢
4楼-- · 2020-08-22 06:46

如果必须在表中就位编辑值,我将TwoWay将ODataModel EntitySet绑定到表,然后在用户编辑所需的列值并按Save之后,我将调用< rel =" nofollow" hraf=" https://sapui5.netweaver.ondemand.com/#/api/sap.ui.model.odata.v2.ODataModel%23methods/submitChanges"> ODataModel.submitChanges 将收集的模型更改发送到后端。

宇峰Kouji
5楼-- · 2020-08-22 06:45

感谢Peter的回复。

让我在这里解释我的问题。

1)我已将json模型预定义数据与表绑定。 它正在发生。

2)我必须在此基础上读取一个值,我必须设置行值,但是在这里限制了如何绑定两个不同的完整集,即使我已经像oData服务一样使json相同,也将删除所有记录。 SAP UI5表中如何处理这种情况。 如果有任何方法可以实现该oData调用之后的JSON,请分享。 我现在只能采取一种方法,从表单中获取输入并进行一个接一个的设置,这样JSON模型的概念就不会出现了。

compass1988
6楼-- · 2020-08-22 06:54

感谢您的答复。/p>

实际上,这是在发布请求时完成的。 现在,我想根据用户的输入创建表行,类似地,新行将一一添加到表中。 这些行可以用作项目,如果我输入错误,请纠正我。

一周热门 更多>