本文阅读目录
- ABAP Cloud 演进史概述
- 如何免费申请 SAP BTP ABAP 编程环境并登录
- 尝试在 ABAP Cloud 上使用 ALV
笔者之前通过多篇文章,给大家详细介绍过 ABAP 从上世纪诞生之初,到如今跃入云端这漫长几十年的演进历史:
![](https://img.haomeiwen.com/i2085791/1a7a6b8d4905e712.png)
ABAP Cloud 演进史概述
所谓 ABAP Cloud,涵盖了标准 ABAP 语言范围的一个子集,只能访问受限的 API,用于构建 SAP BTP ABAP 环境以及 SAP S/4HANA Cloud ABAP 环境上的云解决方案。
ABAP Cloud 无法通过 SAP GUI 访问,只能使用基于 Eclipse 的 ABAP Development Tool(ADT)进行开发。
ABAP Cloud 的主要构成部分:
-
ABAP Core Data Services(CDS)用于数据模型构建和分析。
-
ABAP RESTful Application Programming Model (RAP)作为构建应用程序和服务的事务型编程模型(Transactional Programming Model)。
-
为云环境优化过的 ABAP 编程语言的子集,用于编写业务逻辑。
-
强制性的公共 SAP API 和 Extension Points 白名单,支持自动化的云端运维(Automated Cloud Operations)和生命周期稳定的可扩展性。
![](https://img.haomeiwen.com/i2085791/755770b2546bfa44.png)
在传统 ABAP On-Premise 编程环境里,SAP ALV 是一个在项目中使用非常普遍的数据展现工具。
即便引入 CDS View 的概念之后,SAP 仍然专门为 ALV 开发了一个工具类,让 CDS View 的数据,仅仅通过一行 ABAP 代码,就能轻松用 ALV 输出了。
这个类就是 cl_salv_gui_table_ida,其中 IDA 全称是 Integrated Data Access,意思是这个工具类可以做到同时支持传统透明表和 CDS View 的 ALV 输出。
更多关于该类的详细介绍,请参考笔者这篇文章:一行代码将 SAP CDS view 数据以 ALV 的方式输出。
很多 ABAP 从业者都关心一个问题:到了 ABAP Cloud 环境里,还能使用 ALV 吗?
动手试一试就知道了。
如何免费申请 SAP BTP ABAP 编程环境并登录
笔者早在 2019 年的文章,就介绍了如何在当时还被称为 SAP Cloud Platform 的平台上,申请免费 ABAP 编程环境的详细步骤:
ABAP 开发者上云的时候到了 - 现在大家可以免费使用 SAP 云平台 ABAP 环境的试用版了
5 年后的今天,申请步骤变得更加简洁高效。
我们登录 SAP BTP 控制台,在 Boosters 里找到 ABAP 相关的配置,点击 Start 即可触发配置向导。
![](https://img.haomeiwen.com/i2085791/9d3366cf6758050b.png)
![](https://img.haomeiwen.com/i2085791/ef5bf96084d2cf45.png)
![](https://img.haomeiwen.com/i2085791/eb228fff6ab9503b.png)
将生成的 ABAP Key 下载到本地。
![](https://img.haomeiwen.com/i2085791/cb25cf0dd837d8e2.png)
打开事先安装好的 ABAP Development Tool,新建一个 ABAP Cloud Project:
![](https://img.haomeiwen.com/i2085791/6ff9daa66a2aae3c.png)
Project 的类型选择 SAP BTP ABAP Environment,然后将刚刚从 SAP BTP 里下载到本地的 ABAP Key 文件导入,即可完成登录。
![](https://img.haomeiwen.com/i2085791/54db1eccaede6dad.png)
尝试在 ABAP Cloud 上使用 ALV
由于是 Trial 试用环境,因此所有试用账号创建的 ABAP 资源,默认都存储在下图 ZLOCAL 这个开发包里,类似 ABAP On-Premise 环境里的 $TMP 开发包。
我们可以在 ZLOCAL 开发包里,创建一个专属自己的开发包,比如下图的 Y00JERRY.
![](https://img.haomeiwen.com/i2085791/7491431c3f1ada64.png)
新的 ABAP 开发包创建好之后,在这个开发包里创建一个新的 ABAP 类,实现 IF_OO_ADT_CLASSRUN 接口。
这个接口允许我们在 ABAP Development Tool 里实现类似传统的 ABAP On-Premise 环境里,和 WRITE 语句同样的输出效果,即打印字符串到 ADT 的输出控制台。
![](https://img.haomeiwen.com/i2085791/c4ae972689022e21.png)
使用该接口 main 方法里提供的引用变量 out 的 write 方法,输出 Hello World 字符串到 ABAP Development Tool 控制台,效果如下图所示:
![](https://img.haomeiwen.com/i2085791/e722e045a14b52c0.png)
现在我们试着把文章一行代码将 SAP CDS view 数据以 ALV 的方式输出提到的代码,粘贴到 ABAP Development Tool 里,发现通不过语法检查,遇到错误提示:
The use of Class CL_SALV_GRID_TABLE_IODA is not permitted.
![](https://img.haomeiwen.com/i2085791/e1d212a65fc537ec.png)
这个错误是意料之中的,因为 SAP 官方文档提到,只有已发布的(Released)开发对象才能在自定义代码中使用和访问。
为了确保 SAP 标准代码,自开发应用程序以及 ABAP 环境中构建的扩展解决方案的生命周期独立性,只允许使用 SAP 已发布的组件,可重用服务以及 ABAP 语言专门为云优化的功能特性。所有这些处于 Released 状态的组件和重用服务,形成了 ABAP 环境的公开和升级稳定的接口。
任何其他处于非 Released 状态的对象和服务,都禁止在 SAP BTP ABAP 编程环境中使用。
这也印证了下面这张图里,位于左侧 Classic ABAP 里的 ALV,到右侧 ABAP Cloud 中就不见了。
![](https://img.haomeiwen.com/i2085791/fec4e9ed3180ad13.png)
传统 ALV 提供的数据展示功能,到了 ABAP Cloud 世界里,需要用 SAP Fiori Elements 提供的 List Report 来替代。
笔者是一位全栈开发人员。除了精通 ABAP 编程之外,也精通 SAP UI5 和 Fiori Elements.
我曾经花了很多精力,写了一套 Fiori Elements 开发教程,目前已经完成的部分如下:
![](https://img.haomeiwen.com/i2085791/06e12049b166682d.png)
也欢迎大家加入我的知识星球,一起交流 SAP 业务和技术。
网友评论