如何在 SAP BTP 上创建 Module 之间具有依赖关系的 SAP MTA 应用

发布时间 2023-04-08 23:28:34作者: JerryWang_汪子熙

@

相关阅读

写作背景

本人的知识星球有个朋友提问:

我的 sapui5 项目是一个 MTA 工程,MTA 工程中包含了一个前端的 sap ui5 的 freestyle 工程和一个后端的Spring Java工程。画面输入的数据,首先传递给后端的SpringJava工程,然后经由SpringJava工程再传递给S/4Hana的odata。请问我该怎么创建这个工程,和做哪些配置能实现这样的数据传递。

实现思路

(1) 通过 Java Spring 实现一个 Restful API
(2) SAP UI5 Module 通过 AJAX 调用 Restful API,将界面上维护的数据传递给 Java 层
(3) Java 层再调用 S/4HANA 的 OData API,将数据写到 S/4HANA 系统中

关于步骤 (3),笔者很多文章都做过介绍,这些文章罗列在本文尾部。本文余下部分重点讲解 (1) 和 (2).

当在 MTA 中组合 Java 和 SAP UI5 时,您需要确保 Java RESTful API 与 SAP UI5 之间的通信是可行的。下面是一些步骤来实现 Java RESTful API 和 SAP UI5 之间的通信:

步骤1:编写 Java RESTful API

在 Java 模块中,可以使用 Spring 框架编写 RESTful API。可以使用 Spring Boot 来快速创建 RESTful API。在 Java 模块中,需要编写代码来响应 HTTP 请求,并返回 JSON 数据。

例如,以下是一个简单的示例代码,可以在 Spring Boot 中创建 RESTful API:

@RestController
public class MyRestController {
 
    @RequestMapping("/api/data")
    public String getData() {
        return "{\"data\":\"Hello World!\"}";
    }
}

步骤2:在 SAP UI5 中消费 Java RESTful API

在 SAP UI5 模块中,可以使用 AJAX 技术从 Java RESTful API 中获取数据。可以使用 jQuery AJAX 或 SAP UI5 自己的 AJAX 库。

例如,以下是一个使用 jQuery AJAX 从 Java RESTful API 中获取数据的示例代码:

$.ajax({
    url: "/api/data",
    type: "GET",
    success: function(data) {
        console.log(data);
    },
    error: function(xhr, status, error) {
        console.error(error);
    }
});

在上面的代码中,我们使用 jQuery 的 $.ajax() 方法从 "/api/data" URL 中获取数据,并在成功时将数据打印到控制台上。

详细步骤可以参考笔者这篇教程:

步骤3:运行 MTA 应用程序

在 MTA.yaml 文件中,需要定义应用程序的拓扑结构和每个模块的属性和依赖关系。例如:

ID: my-mta
_schema-version: '3.1'
version: 1.0.0
modules:
  - name: my-java-module
    type: java
    path: java-module
    requires:
      - name: my-db-module
  - name: my-ui5-module
    type: html5
    path: ui5-module
    parameters:
      disk-quota: 256M
      memory: 512M
    requires:
      - name: my-java-module
resources:
  - name: my-db-module
    type: hdb
    path: db-module

在上面的 MTA.yaml 文件中,我们定义了两个模块,一个是名为 my-java-module 的 Java 模块,另一个是名为 my-ui5-module 的 SAP UI5 模块。SAP UI5 模块需要 my-java-module 作为依赖项,这样运行时 SAP UI5 模块就能消费同一个 MTA 应用里 Java module 的服务了。

步骤4:部署和运行 MTA 应用程序

在 SAP BTP 上,可以使用 Cloud Foundry CLI 来部署和运行 MTA 应用程序。例如,以下命令可以用于部署 MTA 应用程序:

cf deploy mta_archive_file -f mta_development.yaml

其中,"mta_archive_file" 是 MTA 应用程序的归档。