一种在 ABAP 端扩展 SAP Fiori 应用的方法介绍

发布时间 2023-11-19 20:08:50作者: JerryWang_汪子熙

有朋友在我的知识星球提问:

HCMFAB_COMMON 这个lib已经被很多app消费了,我想对HAMFAB_COMMON做一点扩展,希望原先消费它的app能使用最新的功能。

有个群友给出了解答.

StackOverflow 的帖子:

Can some one please advise on the issue I am facing. I am trying to extend a Standard HCM Fiori App - My Communication Data. The requirement is to add some validations to the input filed in one of the view when save button is pressed.

这个网友想扩展 SAP HCM 领域标准的 Fiori 应用 - My Communication Data.

扩展需求是在 save 按钮按下时,给某些 input 字段增加 validation 逻辑。

Unfortunately I am unable to find the respective controller to add the validation, the view is using a HCM commons controller "hcm.fab.lib.common.controller.PersInfoWrapperController" and can some one please advise where to add the custom code in this case and even the save button is also in the “sap.ushell.ui.footerbar” ? Thank you in advance.

save 按钮位于 sap.ushell.ui.footerbar 区域,控制器实现是 comman 的 hcm.fab.lib.common.controller.PersInfoWrapperController

项目文件夹:

扩展的具体方法:

In order to get your customer-specific screen loaded, you need to create a customer-specific implementation of Enhancement Spot “HCMFAB_PERSINFO” in the backend – Country version would be “99”.

This implementation can inherit from class “CL_IM_HCMFAB_PERSINFO_CONFIG99”.

Method “IF_EX_HCMFAB_PERSINFO_CONFIG~GET_SCREEN_VERSIONS” needs to be redefined, to return your customer-specific screen for App ID “if_hcmfab_constants=>gc_application_id-mycommunication ('MYCOMMUNICATION')”:

上图 Gruntfile.js 的作用:

gruntfile.js 是一个用于配置或定义 Grunt 任务的文件,它是一个有效的 JavaScript 或 JSON 文件。Grunt 是一个 JavaScript 任务运行器,可以自动化您的工作流程。例如,它可以用于:文件的连接、文件压缩、代码检查、单元测试等。使用 Grunt 可以大幅提升工作效率,使你更加专注于程序开发,而不是被一些重复、琐碎的任务所困扰。

在 SAP UI5 项目中,gruntfile.js 的主要用途包括,但不限于,以下几点:

  1. 项目构建:Grunt 可以用于编译、压缩和合并项目文件,使其更适合生产环境。例如,您可以使用 Grunt 将多个 JavaScript 文件合并成一个文件,然后压缩它以减少文件的大小和加载时间。

  2. 代码检查:Grunt 提供了许多插件,如 jshinteslint 等,可以用于检查 JavaScript 代码的质量和风格。

  3. 文件监视:Grunt 的 watch 任务可以监视文件的变化,并在文件改动时自动执行任务。例如,当您保存 JavaScript 文件时,Grunt 可以自动运行 jshint 任务来检查代码的质量。

  4. 单元测试:Grunt 可以集成各种测试框架,如 JasmineMochaQUnit 等,以运行单元测试。

gruntfile.js 中,我们定义了各种任务和它们的配置。以下是一个简单的 gruntfile.js 文件的例子:

module.exports = function(grunt) {
  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
      },
      build: {
        src: 'src/<%= pkg.name %>.js',
        dest: 'build/<%= pkg.name %>.min.js'
      }
    }
  });

  // Load the plugin that provides the "uglify" task.
  grunt.loadNpmTasks('grunt-contrib-uglify');

  // Default task(s).
  grunt.registerTask('default', ['uglify']);
};

在这个例子中,我们定义了一个 uglify 任务,该任务是通过 grunt-contrib-uglify 插件提供的,用于压缩 JavaScript 文件。我们还定义了一个 default 任务,当我们在命令行中输入 grunt 并回车时,这个 default 任务会被执行。

总的来说,gruntfile.js 在 SAP UI5 项目中发挥了重要的作用,它帮助我们自动化执行各种任务,从而提升我们的工作效率。