Odata Fiori元素-自定义$batch查询

Odata Fiori元素-自定义$batch查询,odata,sapui5,sap-fiori,Odata,Sapui5,Sap Fiori,我有使用Fiori元素的Fiori应用程序,我想调整UI5在$batch调用中为odata生成的odata查询 我已经为列表报告打开了livemode,同时使用smartfilter进行选择/筛选,并使用ValueList注释列出值。但问题是,当我在选择字段(比如销售对象)中键入筛选值时,$batch调用会触发下面的OData查询 ../invoice_list.xsodata/vlsoldto?sap-client=100&$skip=0&$top=10&$filter

我有使用Fiori元素的Fiori应用程序,我想调整UI5在
$batch
调用中为odata生成的odata查询

我已经为列表报告打开了livemode,同时使用smartfilter进行选择/筛选,并使用ValueList注释
列出值。但问题是,当我在选择字段(比如销售对象)中键入筛选值时,
$batch
调用会触发下面的OData查询

../invoice_list.xsodata/vlsoldto?sap-client=100&$skip=0&$top=10&$filter=startswith(SOLDTO___T,%27TEST%27)
我想调整odata调用,使用“substringof”而不是“startswith”。。下面是这样的

../invoice_list.xsodata/vlsoldto?sap-client=100&$skip=0&$top=10&$filter=substringof(%27TEST%27,CRM_SOLDTO___T)
我不知道在哪里可以进行定制。我知道如何进行Fiori元素扩展,但是如果它是一个扩展,那么寻找一些信息,然后是哪种类型的扩展,哪种事件,或者任何其他方法,如果不是扩展。我不知道从哪里开始


非常感谢您的帮助。

您可以在SmartFilterBar中添加自己的字段,然后创建自己的自定义筛选器:

编辑:如果要使用现有字段,只需在事件上使用
sap.ui.model.FilterOperator.Contains
推送一个新筛选器即可

步骤1:在manifest.json文件中注册扩展名

"extends": {
   "extensions": {
      ... 
      "sap.ui.controllerExtensions": { 
         ...
         "sap.suite.ui.generic.template.ListReport.view.Details": { 
            ... 
            "controllerName": "com.acme.app.controller.ListReportExtension",
            ...
         }
      } 
      ...
步骤2:实现控制器方法:

sap.ui.controller("com.acme.app.controller.ListReportExtension", {
        onBeforeRebindTableExtension: function(oEvent) {
        var oBindingParams = oEvent.getParameter("bindingParams");
        oBindingParams.parameters = oBindingParams.parameters || {};

        var oSmartTable = oEvent.getSource();
        var oSmartFilterBar = this.byId(oSmartTable.getSmartFilterId());
        var vCategory;
        if (oSmartFilterBar instanceof sap.ui.comp.smartfilterbar.SmartFilterBar) {
            //Custom price filter
            var oCustomControl = oSmartFilterBar.getControlByKey("CustomPriceFilter");
            if (oCustomControl instanceof sap.m.ComboBox) {
                vCategory = oCustomControl.getSelectedKey();
                switch (vCategory) {
                    case "0":
                        oBindingParams.filters.push(new sap.ui.model.Filter("Price", "LE", "100"));
                        break;
                    case "1":
                        oBindingParams.filters.push(new sap.ui.model.Filter("Price", "GT", "100"));
                        break;
                    default:
                        break;
                }
            }
        }
    }
});

我想邹是在谈论组合框吧?请参阅此处的“过滤选项列表”:我的是多输入。但是当我像下面那样添加setFilterFunction时,它不会将过滤器更改为contains(而不是startsWith)**********************************************************************************************************************************************omMultiInput.setFilterFunction(函数(sTerm,oItem){//不区分大小写的“string contains”过滤器返回oItem.getText().match);