【问题标题】:Remove "Claim" Button from Fiori inbox从 Fiori 收件箱中删除“索赔”按钮
【发布时间】:2021-01-15 00:08:09
【问题描述】:

我想从 SAP Fiori 收件箱的页脚中删除或至少禁用“声明”按钮。 我已经找到this question,但它只描述了删除批准/拒绝按钮,这些按钮在oOptions 中有自己的属性。

可能索赔按钮位于buttonList数组中,但是这样设置没有效果:

sap.ui.define([
  "sap/m/MessageToast",
  "sap/m/Dialog",
  "sap/base/Log",
  "sap/ui/model/Filter",
  "sap/ui/model/FilterOperator",
  "sap/ui/model/Sorter",
  "sap/ui/core/mvc/Controller"
], function (MessageToast, Dialog, Log, Filter, FilterOperator, Sorter, Controller) {
  "use strict";

  return Controller.extend("something.controller.App", {
    onInit: function () {
      this._headerFooterOptions = {
        buttonList: []
      };
      this.setHeaderFooterOptions(this._headerFooterOptions);
      // ...
    }
  });
});

另一种可能的方法是通过this.setBtnEnabled(sid, false); 禁用该按钮,但由于我不知道索赔按钮的sID,因此无法检查。

非常感谢您对这个问题的帮助!

编辑:我无法访问后端,如果有人遇到相同问题但可以访问后端,请参阅@MrNajzs answer。

【问题讨论】:

    标签: sapui5 sap-fiori


    【解决方案1】:

    网关/后端解决方案:

    有一个选项可以通过网关/后端类隐藏 Forward、Release、Claim 等按钮。 IMO 您应该采用这种方法,而不是扩展 MyInbox UI5 应用程序。

    1. 根据类/IWPGW/CL_TGW_FACADE_BWF_V2 在您的网关中创建一个子类。

    2. 重新定义方法MAP_TASK_ADDITIONAL_FLAGS。例如,如果任务 id = XXX,则不显示 Forward、Claim、...

      CALL METHOD SUPER->MAP_TASK_ADDITIONAL_FLAGS
        CHANGING
          IS_TASK = is_task
          .
      
      if is_task-TASK_DEF_ID CS 'XXX'. "your workitem task id
        clear: is_task-TASK_SUPPORTS-FORWARD,
               is_task-TASK_SUPPORTS-CLAIM,
               is_task-TASK_SUPPORTS-TASKOBJECT,
               is_task-TASK_SUPPORTS-RESUBMIT.
      ENDIF.
      
    3. 在您的网关系统中的 spro 中打开提供程序实现(德语非常抱歉)

    4. 将您的 zclass 替换为标准类 /IWPGW/CL_TGW_FACADE_BWF_V2

    5. 瞧


    前端解决方案:

    如果您无法访问后端,请通过 WEBIDE 扩展 MyInbox。 在您的情况下,您可以扩展整个控制器(S3.controller.js)或实现 UI 控制器挂钩(S3.controller.js->extHookChangeFooterButtons)。有关 SAP 标准应用程序的可扩展性,请始终查看 SAP Fiori Apps Reference Library

    示例(S3.controller.js - UI Controller Hook 实现):

        extHookChangeFooterButtons: function (oButtonList) {
            var sTaskDefinitionId = this.getView().getBindingContext().getProperty("TaskDefinitionID");
            switch (sTaskDefinitionId) { //Define your condition
            case "XXX":
                oButtonList.aButtonList = []; // No Buttons
                break;
            case "XYZ":
                oButtonList.aButtonList.splice(1,1) //No Claim Button
                break;
            default:
                break;
            }
        }
    

    【讨论】:

    • 感谢您的帮助,但我应该提到我无法访问后端。很遗憾,这对我来说是没有选择的。
    • 添加前端解决方案
    猜你喜欢
    • 2021-10-10
    • 2015-09-13
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    相关资源
    最近更新 更多