本文阅读目录
- ABAP Cloud 演进史概述
- 如何免费申请 SAP BTP ABAP 编程环境并登录
- 尝试在 ABAP Cloud 上使用 ALV
笔者之前通过多篇文章,给大家详细介绍过 ABAP 从上世纪诞生之初,到如今跃入云端这漫长几十年的演进历史:
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)和生命周期稳定的可扩展性。
在传统 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 即可触发配置向导。
将生成的 ABAP Key 下载到本地。
打开事先安装好的 ABAP Development Tool,新建一个 ABAP Cloud Project:
Project 的类型选择 SAP BTP ABAP Environment,然后将刚刚从 SAP BTP 里下载到本地的 ABAP Key 文件导入,即可完成登录。
尝试在 ABAP Cloud 上使用 ALV
由于是 Trial 试用环境,因此所有试用账号创建的 ABAP 资源,默认都存储在下图 ZLOCAL 这个开发包里,类似 ABAP On-Premise 环境里的 $TMP 开发包。
我们可以在 ZLOCAL 开发包里,创建一个专属自己的开发包,比如下图的 Y00JERRY.
新的 ABAP 开发包创建好之后,在这个开发包里创建一个新的 ABAP 类,实现 IF_OO_ADT_CLASSRUN 接口。
这个接口允许我们在 ABAP Development Tool 里实现类似传统的 ABAP On-Premise 环境里,和 WRITE 语句同样的输出效果,即打印字符串到 ADT 的输出控制台。
使用该接口 main 方法里提供的引用变量 out 的 write 方法,输出 Hello World 字符串到 ABAP Development Tool 控制台,效果如下图所示:
现在我们试着把文章一行代码将 SAP CDS view 数据以 ALV 的方式输出提到的代码,粘贴到 ABAP Development Tool 里,发现通不过语法检查,遇到错误提示:
The use of Class CL_SALV_GRID_TABLE_IODA is not permitted.
这个错误是意料之中的,因为 SAP 官方文档提到,只有已发布的(Released)开发对象才能在自定义代码中使用和访问。
为了确保 SAP 标准代码,自开发应用程序以及 ABAP 环境中构建的扩展解决方案的生命周期独立性,只允许使用 SAP 已发布的组件,可重用服务以及 ABAP 语言专门为云优化的功能特性。所有这些处于 Released 状态的组件和重用服务,形成了 ABAP 环境的公开和升级稳定的接口。
任何其他处于非 Released 状态的对象和服务,都禁止在 SAP BTP ABAP 编程环境中使用。
这也印证了下面这张图里,位于左侧 Classic ABAP 里的 ALV,到右侧 ABAP Cloud 中就不见了。
传统 ALV 提供的数据展示功能,到了 ABAP Cloud 世界里,需要用 SAP Fiori Elements 提供的 List Report 来替代。
笔者是一位全栈开发人员。除了精通 ABAP 编程之外,也精通 SAP UI5 和 Fiori Elements.
我曾经花了很多精力,写了一套 Fiori Elements 开发教程,目前已经完成的部分如下:
也欢迎大家加入我的知识星球,一起交流 SAP 业务和技术。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。