说明 SAP Fiori 开发
学习目标
说明 ABAP 编程模型。
使用 ABAP Development Tools。
说明 SAP Fiori elements。
ABAP 编程模型
SAP Fiori 应用程序开发的三个阶段是数据建模、服务构建和 UI 开发。
观看视频,了解 SAP Fiori 开发的关键步骤。
视频:本节含 SAP 官方视频(视频 ID
1_arkkoxq0),需在 learning.sap.com 在线观看。

自 SAP NetWeaver 7.0 起,可以使用 SAP Gateway 构建 OData 服务,通过现有的 ABAP 框架(功能模块、RFC、BAPI、SPI……)访问任意业务数据。这既可以通过服务开发实现,也可以通过使用 SAP Gateway Service Builder 进行服务生成来实现。
在 UI 部分,SAPUI5 应用作为 Business Server Pages(BSP)部署在 FES 中,并在 SAP Fiori launchpad (FLP) 中运行。

自 SAP NetWeaver 7.40 起,可以使用 CDS 视图作为数据源。SAP Gateway 使用 Service Adaptation Definition Language(SADL)访问 CDS 视图。在那里,一切都已定义好以从应用表中读取数据,因此开发人员无需编写任何额外的(ABAP)代码。
执行更改的请求可以通过在数据提供者扩展(DPC_EXT)类中对创建、更新和删除方法进行基于代码的实现来实现。此外,自 7.50 起,在 SAP Gateway Service Builder 中作为数据源引用的 CDS 视图可以与基于代码的实现相结合。

自 SAP NetWeaver 7.51 SP01 起,支持首个托管运行时,它利用 Business Objects Processing Framework(BOPF)。业务对象(ABAP 类)基于 CDS 视图中的相应注解生成。它们通过基于代码的实现来调用执行业务数据更改请求的现有 API。此模型称为 ABAP Programming Model for SAP Fiori(基于 CDS 的 BOPF)。
自 ABAP Platform 7.54 起,提供了增强的托管运行时,它利用 CDS 行为。因此,基于 CDS 的 BOPF 的业务对象被行为定义(ABAP 接口)和行为实现(ABAP 类)所取代。此模型称为 ABAP RESTful Application Programming Model(RAP)。
基于代码的实现仍可用于调用现有的自定义代码,或在 CDS 视图不适合解决业务场景时使用。
注意
有关此主题的更多信息,请参阅:
Acquiring Core ABAP Skills(学习旅程)https://learning.sap.com/learning-journeys/acquiring-core-abap-skills- Introduction to Application Programming on SAP S/4HANA(课堂培训)https://training.sap.com/course/s4dev
面向本地部署的 ABAP Development Tools

ABAP Development Tools (ADT) 是 Eclipse 的一组插件集合,支持超越纯 ABAP 的开发项目。Eclipse 是一个最初为 Java 构思的开发环境,它提供了一个框架,供应商(包括 SAP)可以为其提供插件,以支持任意给定语言的开发。
由于不同语言和平台有不同的要求,开发人员需要在同一个 Eclipse 窗口中使用不同的工具集。这样一组工具称为透视图(perspective),它组合了适合某一用途的视图和功能。有些视图显示源代码、结构大纲、属性、错误等。每个透视图都可以定制,可以创建新的透视图,也可以将现有透视图重置为上次保存的状态。
开发对象或源代码按项目组织。每个项目定义了(开发)任务的框架。构成该任务的文件保存在本地文件夹中。

要安装 ADT 插件,请按以下步骤操作:
从 https://www.eclipse.org/downloads/packages 获取 Eclipse 安装包(例如 Eclipse IDE for Java Developers )。
在 Eclipse 中,选择 Help → Install New Software... 。
选择 Enter 以显示可用的功能。
选择 ABAP Development Tools 并选择 Next 。
在下一个向导页面中,您将看到待安装功能的概览。选择 Next 。
确认许可协议并选择 Finish 以开始安装。
ABAP 项目
ABAP 项目与 Eclipse 中的任何其他项目一样,是一个包含构成开发任务的文件的文件夹。对于 ABAP 而言,这些是到 ABAP 系统的连接信息。ABAP 是一种服务器语言,因此所有源代码都保存在 ABAP 平台的 ABAP 仓库中。
观看视频,了解如何在 ABAP 开发工具中创建 ABAP 项目。
视频:本节含 SAP 官方视频(视频 ID
1_74wxos56),需在 learning.sap.com 在线观看。
开发人员需要合适的用户权限才能通过 ADT 在 ABAP 系统中工作。角色和权限对象的列表可在以下指南中找到:
为使 ABAP 开发人员能够在彼此之间共享 HTTP 链接,请激活 /sap/bc/adt ICF 服务。链接的接收者随后可以在其默认 Web 浏览器中呈现目标开发对象。
要使文档对连接到 低于 7.55 的 AS ABAP 的 ABAP 开发人员可用,请激活以下 ICF 服务:
/sap/bc/abap/docu
/sap/bc/abap/toolsdocu
/sap/public/bc/abap/docu
/sap/public/bc/abap/toolsdocu

在 ABAP 项目中展开 System Library 可以直接访问 ABAP 仓库的所有开发对象。特别是在访问 SAP S/4HANA 系统时,这可能相当令人不知所措。因此,开发人员可以在 ABAP 项目中定义收藏的包和对象。
Open ABAP Development Object 按钮提供基于名称的开发对象简单搜索。通过从列表中选择一个开发对象,它将在合适的编辑器以及相关视图(如 Outline 或 Problems)中打开。
还有更多视图可提供有关 ABAP 开发的附加信息。其中一个重要的视图是 Transport Organizer 视图,用于打开已分配的传输请求或创建新的传输请求。
开发范式转变

SAP HANA 不仅仅是一个数据库。SAP HANA 可以在数据层面执行计算,速度远快于以往任何技术,包括 ABAP 程序。在 SAP Business Suite 中,数据被带到代码处:从数据库读取数据并在 ABAP 中处理。使用 SAP HANA 时,更高效的做法是将代码带到数据处,即把计算从 ABAP Platform 下推到 SAP HANA 中,只返回结果。

将计算移至数据库以利用其特性对 SAP HANA 来说并非新事物。以前在许多数据库中都可以使用存储过程进行计算。然而,它们在 ABAP 中很少被使用。它们只在其开发所在的数据库中运行,且不可传输。使用 SAP S/4HANA 时,ABAP 仓库扩展了两个新的数据库对象:ABAP Core Data Services(CDS)视图和 ABAP Managed Database Procedures(AMDP)。ABAP CDS 视图作为 SAP HANA 视图部署在 SAP HANA Database(HDB)中,而 AMDP 则作为存储过程部署。这相当于将 ABAP 仓库中的透明表部署为任意 DB 中的数据库表。

CDS 视图是面向以数据库为中心的应用程序的下一代数据定义和访问方式。CDS 视图提供了跨平台的统一抽象层——类似于 OData 对 UI 的抽象。对于 SAP S/4HANA,使用的是 ABAP CDS 视图。使用 CDS 视图可为不同的编程模型提供最大的透明度。ABAP CDS 视图像所有其他 ABAP 制品一样提供一致的生命周期管理和可扩展性,并使用更正与传输系统进行传输。
一方面,ABAP CDS 视图是与任意 DB 兼容的经典数据库视图。另一方面,它们包含诸如注解之类的附属元素,这些注解只能由 SAP HANA 数据库解释。尽管 CDS 视图存储在 ABAP 仓库中,但它们只能通过 SAP GUI 中的事务 SE80 查看。CDS 视图使用 Eclipse 中的 ABAP Development Tools (ADT) 开发。

与 CDS 视图一样,AMDP 使用 ADT 开发,并且只能通过 SAP GUI 中的事务 SE80 查看。AMDP 是包含 SQLScript 作为编程语言的全局类方法。SAP HANA 数据库的 SQL 扩展集允许开发人员将数据密集型逻辑下推到数据库中,这称为 SQLScript。从概念上讲,SQLScript 与 SQL 标准中定义的存储过程相关,但 SQLScript 旨在提供卓越的优化可能性。SQLScript 用于 CDS 视图不够充分的场景,例如复杂的选择或计算。
AMDP 可以通过方法名后面的语法 BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT 来识别。包含 AMDP 的类实现标记接口 IF_AMDP_MARKER_HDB。
注意
有关此主题的更多信息,请参阅:
Data Modelling in ABAP Dictionary and ABAP CDS(课堂培训)https://training.sap.com/course/s4d430- Building Data Models with the ABAP Dictionary and ABAP Core Data(在线课程)https://learning.sap.com/courses/building-data-models-with-the-abap-dictionary-and-abap-core-data-services
测试 ABAP CDS 视图
业务示例
您想在 ABAP Development Tools(Eclipse)中检查并测试 DDL SQL 和 ABAP CDS 视图。
注意
本练习需要 SAP Learning 系统。登录信息由您的系统设置指南提供。
任务 1:在 Eclipse 中登录 SAP S/4HANA 系统
练习:Start Exercise(SAP 官方交互式练习)
步骤
启动 Eclipse 并创建一个连接到您的 SAP S/4HANA(S4H)系统的 ABAP 项目。
在 Windows 开始菜单中,选择 Eclipse IDE。
关闭 Welcome 屏幕。
选择右上角的 Open Perspective。
选择 ABAP 并选择 Open。
选择 New→ABAP Project。
在 Connection Settings 弹出窗口的 System ID 字段中,输入您 S4H 的 SID。
选中 Activate Secure Network Communication (SNC) 复选框。
选择 Next >。
在 Client 字段中,输入您 S4H 的客户端。
在 User 字段中,输入您的用户。
选择 Finish。
任务 2:检查和测试 ABAP CDS 视图
练习:Start Exercise(SAP 官方交互式练习)
步骤
在 Eclipse 中检查并测试您 S4H 上的 CDS 视图
UX100_C_Product。在 Eclipse 中,选择 Navigate→Open ABAP Development Object...。
在 Search 字段中,输入
ux100_c_product。选择 UX100_C_Product (Data Definition) 并选择 OK。
检查该 CDS 视图。
选择 Run→Run As→ABAP Application。
结果
显示产品列表。
SAP Fiori Elements

SAP Fiori elements 是一种元数据驱动的 SAPUI5 应用程序开发方式,它区分以下楼层平面图:
列表报表
允许用户查看并处理以列表(表格)格式组织的项(对象)。
对象页面
提供查看、编辑和创建(业务)对象的功能。
概览页面
以卡片形式可视化大量数据,针对不同内容类型采用不同格式。
分析列表页面
使用数据可视化和商业智能识别数据集中的相关区域或重要的单个实例。
工作清单
显示用户必须处理的一组项。

SAP Fiori elements 的元数据主要来源是 Core Data Services(CDS)中的元数据扩展。虽然您可以直接在数据定义中添加 UI 注解,但建议将 UI 的定义与数据模型定义分开。
提供业务数据的 SAP Gateway 服务的元数据,提供了符合 OData 标准的 UI 定义部分。除此之外,SAP Gateway framework 的 /IWFND/CATALOGSERVICE 提供了所有其他不允许作为 OData 服务元数据一部分的部分。
在 SAPUI5 开发环境中,您可以通过在 annotation.xml 中添加注解,或通过映射页面配置文件来丰富 UI 定义。这些 JSON 文件更详细地描述了 UI 的某些部分。

此示例展示了与对象页面相结合的列表报表的定义。顶部为两个 SAP Fiori elements 设置了一些通用标题信息。然后创建了一个对象页面 facet,为数据定义一个框架。ProductUUID 对用户隐藏。Product 是定义为列表报表行项目的语义键。最后,Price 被设置为对象页面中的标识符。

无需使用任何 SAPUI5 开发环境,即可通过 ABAP Development Tools (ADT) 中的服务绑定提供列表报表的预览。此预览直接运行在 ADT 所连接的 ABAP 系统上,但不执行任何部署。仅考虑数据定义和元数据扩展中的 UI 注解,即 ABAP 层面可用的元数据。

作为 SAP Business Application Studio 一部分并可在 Visual Studio Code 中使用的 SAP Fiori tools,是在 UI 层面开发 SAP Fiori elements 制品的推荐工具。SAP Fiori tools 的 Guided Development 提供了许多指南,用于为应用程序添加更多功能。一个指南提供步骤文档、预期结果的屏幕截图、代码片段,并且通常还提供一个向导,用于直接在工作区的应用程序中应用该功能。
注意
有关此主题的更多信息,请参阅:
Creating an SAP Fiori Elements App Based on an OData V4 RAP Service(在线课程)https://learning.sap.com/courses/getting-started-with-creating-an-sap-fiori-elements-app-based-on-an-odata-v4-rap-service
测试 SAP Fiori Elements 列表报表
业务示例
您想检查 SAP Fiori elements 列表报表的源代码,并在 SAP Fiori launchpad 中测试它。
注意
本练习需要 SAP Learning 系统。登录信息由您的系统设置指南提供。
任务 1:检查列表报表的源代码
练习:Start Exercise(SAP 官方交互式练习)
步骤
在连接到您的 SAP S/4HANA(S4H)系统的 Eclipse 中,检查 UX100_C_PRODUCT 数据定义的元数据扩展中的 UI 定义。
在连接到您 S4H 的 Eclipse 中,打开 UX100_C_PRODUCT 数据定义。
在 Outline 中,右键单击 UX100_C_PRODUCT。
选择 Get Where-used List。
在 Search 视图中,双击 UX100_M_PRODUCT (Metadata Extension)。
检查元数据扩展中的
@UI标记。检查 UX100_UI_PRODUCT_LIST 服务定义所公开数据的源名称。检查 UX100_UI_PRODUCT_LIST 服务绑定的列表报表预览所提供的数据。
在 Search 视图中,双击 UX100_UI_PRODUCT_LIST (Service Definition)。
检查所公开的数据源名称。
在 Outline 中,右键单击 UX100_UI_PRODUCT_LIST。
选择 Get Where-used List。
在 Search 视图中,双击 UX100_UI_PRODUCT_LIST (Service Binding)。
在 Entity Set and Association 列表中,选择 Product。
选择 Preview...。
在 Select a certificate 弹出窗口中,选择您的证书并选择 OK。
在列表报表中,选择 Go。
检查产品列表。
任务 2:在 SAP Fiori Launchpad 中测试列表报表
练习:Start Exercise(SAP 官方交互式练习)
步骤
在您 S4H 的 SAP Fiori launchpad 中,测试 UX100 - SAP Fiori Elements 目录中的 Display Products 应用。
在您 S4H 的 SAP Fiori launchpad 中,选择左上角的 Home。
在 Navigation Menu 中,从目录列表中选择 UX100 - SAP Fiori Elements。
选择 Display Products。
选择 Go。
按您的意愿操作该应用。