如何从ui5屏幕将输入值传递给odata的实体集

时间:2018-09-28 06:57:09

标签: javascript sapui5

我试图将值从fiori屏幕传递到oData,并想读取entityset方法。但是,当我在odata中检查调试器时,it_key_tab的记录为零。

    onNext: function(oEvent) {
            var oViewModel = {};
            oViewModel.MBLNR = this.getView().byId("idMd").getValue();
            oViewModel.MJAHR = this.getView().byId("idFy").getValue();
            if (oViewModel.MBLNR === "") {
                var msg = ("Please Enter the material Doc No.");
                MessageToast.show(msg);
            } else
            if (oViewModel.MJAHR === "") {
                msg = ("Please Enter the fiscal year");
                MessageToast.show(msg);
            } else {
                var oModel = this.getView().getModel();
                var oFilter = new Filter("MBLNR", FilterOperator.EQ, oViewModel.MBLNR);
                //var oFilter1 = new Filter("MJAHR", FilterOperator.EQ, oViewModel.MJAHR);
                var aFilters = new Filter({
                    filters: [oFilter]
                });

                oModel.read("/MaterialDocReservationSet", null, {
                    filters: [aFilters],
                    //this.getView().getModel().read("/UserInputSet", oViewModel, {
                    success: function(OData, response) {},
                    error: function(OData, response) {
                        //MessageToast.show("Error");
                    }

                });
            }

2 个答案:

答案 0 :(得分:1)

在读取的oData中,删除null参数。过滤器也应该是:过滤器:[oFilter]。 Filters属性可以接受包含过滤器对象的数组,在您的代码中您具有嵌套的数组和过滤器。

答案 1 :(得分:0)

在您的前端代码中,您正在呼叫oModel.read("/MaterialDocReservationSet", null, {...})。根据{{​​3}},您应该调用read(sPath, {...})(没有第二个参数null)。

在后端网关OData GET_ENTITYSET方法中,您应该使用io_tech_request_context的过滤器方法访问过滤器。 it_key_tabGET_ENTITY(对应的OData URI,例如MaterialDocReservationSet(1))中的密钥有关。