SAP Fiori Elements 针对 OData V2 和 V4 的 Extension API

发布时间 2023-12-02 19:37:45作者: JerryWang_汪子熙

sap.suite.ui.generic.template.ListReport.extensionAPI.ExtensionAPI 属于 SAP Fiori Elements 的早期版本,它基于 SAPUI5 框架构建,主要是针对 ABAP 环境下的 OData V2 服务。

sap.fe.templates.ListReport.ExtensionAPI 是新的 Fiori elements for OData v4 的一部分,它是基于 SAP Fiori 的最新技术标准设计,适用于 OData V4 服务。

现在,让我们更深入地讨论这两个 API 的区别和应用。

  1. sap.suite.ui.generic.template.ListReport.extensionAPI.ExtensionAPI

这个 API 提供了一系列的方法和属性来扩展和定制 List Report 的行为和外观。例如,您可以使用此 API 获取或设置 List Report 控件的某些属性,比如过滤器、排序和分组设置等。

此外,通过扩展 API,您也可以插入自定义的 UI 元素,比如在工具栏中添加按钮,或者在表格的每一行中添加自定义的行为。

例如,下面的代码片段演示了如何使用扩展 API 在工具栏中添加一个自定义按钮:

sap.ui.define([
   `sap/suite/ui/generic/template/ListReport/extensionapi/ExtensionAPI`
], function(ExtensionAPI) {
   return {
      onInit: function(oEvent) {
         var oExtensionAPI = this.extensionAPI;
         var oToolbar = oExtensionAPI.getControls()[0];
         var oButton = new sap.m.Button({
            text: `My Button`,
            press: function() {
               // add your custom action
            }
         });
         oToolbar.addContent(oButton);
      }
   };
});

在这个例子中,我们首先获取了 List Report 的扩展 API,然后获取了工具栏控件,并在其中添加了一个新的按钮。当用户点击这个按钮时,将会执行我们定义的自定义动作。

  1. sap.fe.templates.ListReport.ExtensionAPI

这个新的 API 设计用于扩展和定制基于 OData V4 服务的 List Report。它提供了一组不同的方法和属性,使开发人员能够定制 List Report 的功能和行为。这个 API 更适合于需要使用最新 Fiori 设计规范和技术的应用程序。

ListReport 模板中,使用 ExtensionAPI 可以实现一些与模板相关的自定义。例如,在 ListReport 页面上注册一个事件处理程序,以在数据加载完成时执行自定义逻辑。

     const extensionAPI = this.getView().getController().getOwnerComponent().getExtensibility().getExtensionAPI();
     extensionAPI.registerDataLoaded(function () {
       // Custom logic when data is loaded
     });