从 Fiori 收件箱中删除 "Claim" 按钮

Remove "Claim" Button from Fiori inbox

我想删除或至少禁用 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,所以我无法检查它。

非常感谢能帮助解决这个问题!

编辑:我无法访问后端,以防万一有人遇到同样的问题但可以访问后端,请参阅

Gateway/Backend解决方案:

有一个选项可以隐藏转发发布声明等按钮gateway/backend class。在我看来,您应该采用这种方法,而不是通过扩展 MyInbox UI5 应用程序。

  1. 根据 class /IWPGW/CL_TGW_FACADE_BWF_V2.

    在您的网关中创建子class
  2. 重新定义方法MAP_TASK_ADDITIONAL_FLAGS。例如,如果任务 id = XXX,则不显示 ForwardClaim、...

    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 中的提供程序实现(德语为 sry)

  4. 用标准 class 替换你的 zclass /IWPGW/CL_TGW_FACADE_BWF_V2

  5. 瞧瞧


前端解决方案:

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

示例(S3.controller.js - UI 控制器挂钩实现):

    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;
        }
    }