分析业务对象
学习目标
分析业务对象。
业务对象
在 ABAP RESTful 应用程序编程模型中,业务对象定义特定实体,例如旅行社。其定义由两部分组成:一个或多个用于定义对象结构的 CDS 视图,即包含的字段,以及描述可对业务对象执行哪些操作的行为定义。

行为定义指定允许创建、更新、删除的标准操作。还可以包含验证、确定和操作的定义。创建或更新记录时,验证会检查数据是否正确。确定根据触发条件修改业务对象实例。操作是用于提供定制的特定于业务逻辑的行为的非标准操作。批准订购单或取消航班是您将作为操作实施的活动。
行为实施由一个或多个 ABAP 类组成。此处实施验证、确定和操作。在标准操作方面,模型区分两个实施场景:在非托管实施场景中,创建、更新和删除在行为实施中实施。在管理的实施场景中,运行时会对其进行处理。
业务对象通常用于为 Fiori 元素应用或 Web API 提供事务逻辑。但是,还可以使用实体操作语言 (EML) 从 ABAP 编码中对其进行访问。这是一组 ABAP 语句,允许您使用业务对象创建、读取、更新和删除数据。
注意
EML 还可以从业务对象的行为实施中访问应用程序数据。

在本单元中,您将创建一个使用业务对象修改旅行社数据的类。视图实体包含关键字段 AgencyID 和包含旅行社相关信息的各种其他字段。
行为定义和实施

业务对象的行为有两个部分:行为定义和行为实施。行为定义包含有关业务对象可执行操作的信息,而行为实施包含系统执行的实际编码。
行为实施是 ABAP 类。在 语句 managed implementation in class <class> unique 的行为定义中声明该类。行为实施的实际编码包含在指定全局类中的局部类中。

行为定义是业务对象的重要组件。它描述了允许哪些标准操作,例如创建、更新、删除。它还定义了在创建或更改数据时执行的检查(验证)。
此处的示例是旅行社的行为定义。在定义开始时,您可以看到我们刚刚查看的 CDS 视图的名称,并为其定义了别名。这一点很重要,因为它是用于使用 EML 寻址实体的别名。
行为定义还将 CDS 实体链接到存储数据的数据库表。在这种情况下,业务对象使用两个表:一个用于活动数据,一个用于草稿(不完整且尚未检查的数据)。还有与锁定数据、权限检查和并发控制相关的信息。我们不会深入查看此信息 - 您只需知道运行时可以处理这些问题。您还可以根据数据库表的定义生成 CDS 实体和行为定义,在这种情况下,将自动处理锁定、权限检查和并发控制。

行为实施的全局类(也称为行为池)只是空类定义,具有特殊附加项 FOR BEHAVIOR OF,后跟行为定义的名称。行为定义的实际实施是全局类定义中的局部类。通过单击局部类型标签访问类。
行为实施包含特定于业务对象的代码,例如,验证、确定和操作的实施。是否还包含标准操作(创建、更新、删除和锁定)的代码取决于行为定义的详细信息。业务对象的行为实施不包含标准操作的代码。这是因为业务对象使用被管理实施类型,其中运行时处理标准操作。

验证是在更改数据时运行时执行的检查。在此,创建新记录时始终执行验证(触发器 create;)如果更改现有记录,则仅当更改名称字段时才执行验证(触发器 field Name;)。
验证在行为定义中定义。对于每个验证,在行为实施中都有一个相应的方法。
如何分析业务对象
演示:观看演示(SAP 官方交互式练习)
业务对象预测和业务对象接口

在 ABAP RESTful 应用程序编程模型中,有两种重要的方法可以使用业务对象:
通过 业务服务 ,例如 SAP Fiori 应用程序的 OData UI 服务。
使用 实体操作语言 (EML) 从 ABAP 代码内部。
尽管技术上可行,但不应直接使用业务对象。相反,使用者应按如下方式访问业务对象预测(BO 预测)和业务对象接口(BO 接口):
业务对象映射
业务服务应始终定义业务对象的服务特定映射。BO 映射指定通过此服务可用的业务对象数据和操作的子集。业务对象映射还可以包含服务特定数据和行为的定义和实施。
注意
业务对象映射直接基于业务对象或基于业务对象接口。
业务对象接口
业务对象接口提供对业务对象数据和操作的稳定访问。业务对象接口通常发布用于其他软件组件。如果给定业务对象存在业务对象接口,则应始终使用使用 EML 的 ABAP 代码访问业务对象接口。

与业务对象一样,业务对象映射由两部分组成:一个或多个 CDS 视图实体(在数据定义中定义)和行为定义。业务对象接口也是如此。它们还包含一个或多个 CDS 视图和行为定义。
确定投影和接口的最简单方法是查看它们的行为定义:投影的行为定义以关键字 projection 开头,接口的行为定义以关键字 interface 开头。
业务对象预测的 CDS 视图以及业务对象接口的 CDS 视图始终是 CDS 映射视图。这意味着其定义包含附加项 as projection on,其中普通 CDS 视图的定义使用 as select from。在新版本中,在视图实体名称后使用附加项 provider contract 指定投影视图的用例,如下所示:
provider contract transactional_interface 用于业务对象接口
provider contract transactional_query 用于业务对象预测
提示
对于 SAP 开发,以下命名规则适用:
C_<…> 用于业务对象预测 业务对象接口的
I_<…>
R_<…> 用于业务对象定义
分析业务对象
在本练习中,您将分析业务对象接口 /DMO/I_AgencyTP 以了解其结构及其提供的数据操作操作。
任务 1: 分析接口行为
分析业务对象接口 /DMO/I_AGENCYTP 的行为定义。
步骤
在编辑器中打开行为定义
/DMO/I_AGENCYTP。分析源代码。打开 ABAP 语言帮助以查找更多信息。
任务 2: 分析数据结构
分析定义业务对象接口数据结构的 CDS 视图实体。导航到其数据源,直到到达不是映射的 CDS 视图实体。
步骤
导航到 CDS 视图实体
/DMO/I_AgencyTP并分析源代码。转到语句
define behavior for /DMO/I_AgencyTP。按住
Ctrl键并左键单击/DMO/I_AgencyTP。或者,将光标置于/DMO/I_AgencyTP上,然后按F3。导航到 CDS 视图实体
/DMO/I_AgencyTP的数据源并分析源代码。转到代码段
as projection on /DMO/R_AgencyTP。按住
Ctrl键并左键单击/DMO/R_AgencyTP。或者,将光标置于/DMO/R_AgencyTP上,然后按F3。
任务 3: 分析业务对象行为
分析位于业务对象接口 /DMO/I_AGENCYTP 下的业务对象 /DMO/R_AGENCYTP 的行为定义。
步骤
在编辑器中打开行为定义
/DMO/R_AGENCYTP。分析源代码。打开 ABAP 语言帮助以查找更多信息。
任务 4: 分析行为实施
分析业务对象 /DMO/R_AGENCYTP 的行为实施。
步骤
导航到包含业务对象
/DMO/R_AGENCYTP的行为实施的 ABAP 类/DMO/BP_R_AGENCYTP。转到语句
managed implementation in class /dmo/bp_r_agencytp unique;。按住
Ctrl键并左键单击/dmo/bp_r_agencytp。或者,将光标置于/dmo/bp_r_agencytp上,然后按F3。转到局部类
lhc_agency并分析定义。转到局部类型标签。或者,在 大纲 视图中展开根节点 /DMO/BP_R_AGENCYTP ,然后选择 LHC_AGENCY 。