浏览体系结构

学习目标

  • 创建数据库表。

  • 为 OData UI 服务生成开发对象。

创建数据模型

示例数据模型

此示例中的数据模型非常简单 - 有一个包含转机详细信息的单个数据库表 - 航空公司、航班号、出发机场和目的地的详细信息。

注意

图中未包括附加字段,运行时需要这些字段来管理并发控制。稍后,我们将查看这些内容。

创建数据库表

首先,让我们了解如何创建数据库表。

视频:本节含 SAP 官方视频(视频 ID 1_co02vqg8),需在 learning.sap.com 在线观看。

定义基本表属性

现在,我们将了解如何定义基本表属性。

视频:本节含 SAP 官方视频(视频 ID 1_no9qo42i),需在 learning.sap.com 在线观看。

添加表定义

以下视频介绍了如何添加表定义。

视频:本节含 SAP 官方视频(视频 ID 1_o1cwu3xf),需在 learning.sap.com 在线观看。

如果不使用内置 ABAP 字典类型指定表列的类型,请改用数据元素。数据元素是定义单个字段(如 UUID 或航空公司代码)类型的 ABAP 字典对象。数据元素不仅包含技术类型描述,还包含语义信息,例如字段标签。如果使用数据元素定义表列的类型,则系统可以在生成的用户界面上自动使用字段标签。

数据元素 图中的数据元素描述航空公司字段。它是长度为 3 的字符字段;系统将在生成的 UI 上自动使用字段标签。

要创建新的数据元素,请选择 文件新建其他 ,然后在过滤器文本字段中输入数据元素。输入包名称和数据元素名称,然后选择 下一步 。选择传输请求,然后选择完成

然后,必须为数据元素指定数据类型。这应该是一个域 - 示例重用现有域 /DMO/CITY。请注意,两个数据元素使用相同的域。这意味着,如果随后有人更改域的长度,则更改将应用于使用该域的所有数据元素。

最后,输入短、中和长字段标签,以及用于列标题的标签。稍后,当您生成 Fiori 元素应用时,系统将自动使用这些文本。

定义的每个表都必须有一个主键。这是表描述开头的一系列字段,用于唯一标识表中的每个条目。

表中的第一个字段(以及键值定义中的第一个字段)必须是客户端字段,并且必须具有数据类型 abap.clnt。此外,我们的示例使用唯一键值的 UUID 很方便。如果使用数据元素 sysuuid_x16 指定此字段的类型,则可以让运行时在您创建新记录时自动分配 UUID。

出于可跟踪性原因,建议存储一些包含数据的管理信息,例如,为创建和最后更改创建或更改数据和时戳的用户。您创建的数据库表应包含图中显示的字段。

注意

对于稍后要使用的生成器,这些字段为必填字段。要使该生成器正常工作,还必须使用此处列出的数据类型定义字段。

特别是 fieldslocal_last_changed_atlast_changed_at 不仅是管理字段。在 ABAP RESTful 应用程序编程模型中,它们还用于并发控制。

由于 RESTful 应用程序是无状态的,因此无法单独通过独占锁确保数据一致性。ABAP RESTful 应用程序编程模型混合使用独占锁和 ETag 以避免数据不一致。ETag 是在更新数据集时更改其值的字段。通过比较 ETag 字段的值,框架可以确保数据集自上次读取以来尚未更改。上次更改的时戳使完美 ETag 字段。

在 ADT 中激活数据库表时,系统会在数据库中创建相应的物理表。完成此操作后,您将能够自动生成应用所需的附加对象。

如何创建数据元素

演示观看演示(SAP 官方交互式练习)

如何创建数据库表

演示观看演示(SAP 官方交互式练习)

复制数据库表

在本单元练习中,您将创建 OData UI 服务。此 UI 服务将构成应用程序的基础,允许您更改航班价格。首先,为所需开发对象创建专用包。然后复制数据库表并使用数据填充该表。

模板:

  • /LRN/S4D400_APT(数据库表)

  • /LRN/CL_S4D400_APT_COPY(全局类)

解决方案:

  • /LRN/S4D400AFLGT(数据库表)

  • /LRN/CL_S4D400_APS_COPY(全局类)

任务 1: 创建子包

在您自己的包 ZS4D400_## 下创建新的子包(其中 ## 代表组编号)。

子包应具有以下属性: 属性值名称**ZS4D400_##_RAP,其中 ## 代表组编号描述OData UI 服务的对象添加到收藏包已选中超级包ZS4D400_##** ,其中 ## 代表组编号

步骤

  1. 在您自己的包 ZS4D400_## (其中 ## 代表组编号)下创建子包。

  2. 在项目浏览器中,右键单击 ABAP 包 ZS4D400_## ,然后选择新建ABAP 包

  3. 输入包名称 ZS4D400_##_RAP ,其中 ## 代表组编号。

  4. 输入描述 OData UI 服务的对象

  5. 选中添加到收藏包复选框。

  6. 确保父包字段包含现有包的名称。

  7. 选择下一步

  8. 确保软件组件设置为 ZSTUDENTS

  9. 选择下一步

  10. 确认传输请求并选择完成

任务 2: 复制数据库表

在新包中,创建数据库表 /LRN/S4D400_APT 的副本。将新的数据库表命名为 Z##FLIGHT,其中 ## 代表组编号。

步骤

  1. 将数据库表 /LRN/S4D400_APT 复制到您自己的包 ZS4D400_##_RAP,其中 ## 代表组编号。

  2. 打开数据库表 /LRN/S4D400_APT 的定义。

  3. 将项目浏览器视图与编辑器链接。

  4. 在项目浏览器视图中,右键单击数据库表 /LRN/S4D400_APT 以打开上下文菜单。

  5. 从上下文菜单中,选择复制....

  6. 在包字段中输入的名称 ZS4D400_##_RAP。在名称字段中,输入 Z##FLIGHT,其中 ## 代表组编号。

  7. 选择下一步

  8. 确认传输请求并选择完成

  9. 激活数据库表定义。

  10. Ctrl + F3 激活开发对象。

任务 3: 填充数据库表

ZS4D400_## 包中,创建全局类 /LRN/CL_S4D400_APT_COPY 的副本(建议名称:ZCL_##_COPY)。在此副本中,将常量 table_name 的值更改为您自己的数据库表的名称。然后将类作为控制台应用执行。这将用数据填充数据库表。

步骤

  1. 将类 /LRN/CL_S4D400_APT_COPY 复制到您自己的包 ZS4D400_## 中的类。

  2. 打开全局类 /LRN/CL_S4D400_APT_COPY 的源代码。

  3. 如有必要,将项目浏览器视图与编辑器链接。

  4. 在项目浏览器视图中,右键单击类 /LRN/CL_S4D400_APT_COPY 以打开上下文菜单。

  5. 从上下文菜单中,选择复制....

  6. 字段中输入 ZS4D400_## 。在名称字段中,输入 ZCL_##_COPY,其中 ## 代表组编号。

  7. 选择下一步

  8. 确认传输请求并选择完成

  9. 在副本中,调整方法 IF_OO_ADT_CLASSRUN~MAIN 的源代码。将常量 table_name 的值更改为自己的数据库表的名称。

  10. 确保常量的值等于数据库表的名称。

  11. 激活类并将其作为控制台应用执行。

  12. Ctrl + F3 激活类。

  13. F9 键运行类。

  14. 检查控制台视图。上次输出应读取:<...> 已填充数据。如果输出读取 *<...> 不是正确类型的表。*请确保存在具有该名称的数据库表、处于活动状态并且是模板表的准确副本。

对象生成器

生成附加对象

我们刚刚定义了用于保存数据的数据库表,但我们要创建的应用需要的对象不仅仅是此表。我们可以使用 ADT 中的向导生成这些对象。

生成的对象包含提供具有创建、读取、更新和删除功能的工作应用所需的所有信息。稍后,我们还将调整和扩展其中一些对象,以更改用户界面的外观并实施一些检查和计算。

观看此视频,了解如何生成附加对象。

视频:本节含 SAP 官方视频(视频 ID 1_5hbnucbe),需在 learning.sap.com 在线观看。

如何生成附加对象

演示观看演示(SAP 官方交互式练习)

OData UI 服务预览

发布和预览服务

使用数据库表和对象生成器,您可以生成获取有效的 Fiori 元素应用所需的所有对象。唯一的手动步骤是发布服务。

必须先发布服务,然后才能测试应用。为此,请打开服务绑定并选择发布。完成此操作后,您创建的实体(在本例中为连接)将显示在实体列表中。标记该应用,然后选择预览以测试应用。

测试应用

选择预览后,将打开一个浏览器窗口,您可以创建新的转机。但是,该应用不实施除类型检查以外的任何检查(例如,航班号字段中仅允许数字)。

生成和预览 OData UI 服务

在本练习中,您将为 OData UI 服务生成资源库对象,并将该服务预览为 SAP Fiori 应用。

模板:

解决方案:

  • 包 /LRN/S4D400_EXERCISE_RAP 中生成的开发对象。

注意

请注意,所用生成器的实施可能会发生变化。因此,练习中生成的开发对象可能与解决方案中的开发对象不同。

前提条件

您已完成上一练习。您已创建数据库表 Z##FLIGHT(## 是您的组编号),并且数据库表包含数据。

任务 1: 使用生成器

使用生成器 ABAP RESTful 应用程序编程模型OData UI 服务在子包 ZS4D400_##_RAP 中生成所需的开发对象。为此,在向导中指定以下值 &R:

字段

常规参考对象

Z##FLIGHT

常规项目名称

<空>

常规部件前缀

<空>

常规部件后缀

<空>

业务对象数据模型CDS 实体名称

ZR_##航班

业务对象数据模型CDS 实体别名

航班

业务对象行为行为实施类

ZBP_R_##FLIGHT

业务对象行为草稿表名称

Z##FLIGHT_D

服务映射服务映射实体CDS 实体名称

ZC_##航班

服务预测服务预测行为行为实施类

ZBP_C_##FLIGHT

业务服务服务定义服务定义名称

ZUI_##FLIGHT_O4

业务服务服务绑定服务绑定名称

ZUI_##FLIGHT_O4

业务服务服务绑定绑定类型

OData V4 - UI

步骤

  1. 启动数据库表 Z##FLIGHT 的对象生成器(其中 ## 是您的组编号)。

  2. 在项目浏览器中,展开以下路径:收藏包ZS4D400_##ZS4D400_##_RAP字典数据库表(其中 ## 是您的组编号)。或者,打开数据库表 Z##FLIGHT 的定义,如有必要,将项目浏览器视图与编辑器链接。

  3. 在项目浏览器视图中,右键单击数据库表 Z##FLIGHT 以打开上下文菜单。

  4. 从上下文菜单中,选择生成 ABAP 资源库对象....

  5. 在对话框中,选择生成器。

  6. 在对话框的左侧,选择 ABAP RESTful 应用程序编程模型OData UI 服务

  7. 选择下一步导航至下一步。

  8. 确保在子包 ZS4D400_##_RAP 中创建开发对象。

  9. 当窗口在顶部读取输入包时,请确保字段包含 ZS4D400_##_RAP

  10. 选择下一步导航至下一步。

  11. 使用 表中的数据配置生成器。

警告

在输入所有数据之前,请勿选择下一步。

  1. 逐个选择对话框左侧的项目,然后填写右侧窗格中的相应字段。上表中列出了所需的值 &R。

  2. 输入所有数据后,选择下一步

  3. 检查将要生成的资源库对象并生成对象。

注意

请耐心等待。生成对象需要一些时间。生成流程结束时,将出现一个对话框,询问您是否要在编辑器中打开生成的服务绑定。单击打开确认此对话框。

  1. 检查显示的资源库对象列表。

  2. 确定已正确输入所有名称时,选择下一步

  3. 确认传输请求并选择完成

  4. 选择打开确认生成流程结束时的对话窗口。

  5. 在项目浏览器中分析生成器输出。

  6. 在项目浏览器中,将光标置于子包 ZS4D400_##_RAP 上,然后按 F5 重新加载包的内容。

  7. 展开包的所有子节点以查看已生成开发对象的名称。

任务 2: 预览应用

发布 OData UI 服务并将结果预览为 SAP Fiori 应用。

步骤

  1. 发布本地服务端点。

注意

发布服务可能需要一些时间。

  1. 如果尚未创建,请打开生成的 ZUI_##FLIGHT_O4 服务绑定。

  2. 如果服务绑定处于非活动状态,请按 Ctrl + F3 将其激活。

  3. 要发布服务,请选择编辑器中心的 发布

  4. 将 OData UI 服务预览为 SAP Fiori 应用。

  5. 在右侧的服务版本详细信息部分中,选择航班,然后选择预览....

结果

随即打开一个浏览器窗口,其中包含 SAP Fiori 应用程序。如果出现提示,请使用 ABAP 系统用户登录到应用程序。 3. 显示航班列表。

  1. 选择执行以显示存储在数据库表 Z##FLIGHT 中的航班列表。

  2. 对于其中一个航班,导航到详细信息视图。

  3. 选择其中一个列表条目以导航到包含该航班详细信息的对象页面。

  4. 对于此航班,切换到更改模式。

  5. 选择编辑

  6. 航班价格字段中输入一些文本,例如

  7. 航班价格输入负值。