应用 SAP Fiori Elements 提供的通用操作

学习目标

  • 影响 Delete 和 Create 操作的可见性和启用状态。

通用操作

什么是操作?

操作会触发与后端的交互(调用 OData 服务),或者发起对外部另一个应用的导航。你可以看到操作以按钮的形式显示在应用上。

操作在应用中的位置

SAP Fiori 设计准则定义了操作作为按钮可以放置在 UI 上的哪些位置。根据这些准则,操作必须放置在其所作用信息的附近。一个示例是将操作放置在列表报表中表格或图表的工具栏上。另一个示例是将全局操作放置在对象页的标题区域。

有关操作的更多信息,请参阅 Actions

有关操作放置位置的更多信息,请参阅 Action Placement

通用操作

SAP Fiori elements 提供通用操作,例如:

  • 触发到相关应用的外部导航。

  • 创建一个新条目。

  • 删除单个条目或多个条目。

  • 编辑现有条目。

在列表报表中,CreateDelete 操作位于表工具栏中。

列表报表的用户界面,突出显示 Create 按钮和处于禁用状态的 Delete 按钮

在对象页上,EditDelete 操作是放置在标题区域的全局操作。

对象页的用户界面,突出显示 Edit 和 Delete 按钮

Delete 按钮是表上的操作,仅在用户选择某个条目时才启用。

DeleteCreate 按钮的可见性

你可以使用 @UI.DeleteHidden 注释控制 Delete 按钮的可见性。其值可以是布尔值(truefalse),也可以是指向实体布尔属性的路径。如果该属性的值为 true,则 Delete 按钮被隐藏;如果为 false,则可见。

annotate TravelService.Travel with @UI : {
  DeleteHidden : true
}

同样,你可以使用 @UI.CreateHidden 注释控制 Create 按钮的可见性。其值可以是布尔值(truefalse),也可以是指向实体布尔属性的路径。如果该属性的值为 true,则 Create 按钮被隐藏;如果为 false,则可见。

annotate TravelService.Travel with @UI : {
  CreateHidden : true
}

禁用 Delete 按钮

除了隐藏 Delete 按钮,你还可以选择使用 @Capabilities.DeleteRestrictions 注释在应用中禁用它。你可以将其 Deletable 属性设置为 truefalse。如果此属性的值为 true,则 Delete 按钮对所有条目启用;如果为 false,则对所有条目禁用。

annotate TravelService.Travel with @(
Capabilities.DeleteRestrictions : {
$Type : 'Capabilities.DeleteRestrictionsType',
Deletable: false
}
);

你还可以通过为 Deletable 属性分配一个指向实体特定布尔属性的路径,来禁用特定条目的删除操作。

annotate TravelService.Travel with @(
Capabilities.DeleteRestrictions : {
$Type : 'Capabilities.DeleteRestrictionsType',
Deletable: TravelStatus.insertDeleteRestriction
}
);

Manage Travels 应用中的条目具有各种状态,例如 OpenAcceptedCanceled

你可以看到,对于状态 OpeninsertDeleteRestriction 的值为 true,而对于状态 AcceptedCanceled,该值为 false。这意味着对于状态为 AcceptedCanceled 的旅行,Delete 操作被禁用。

你可以在 *sap.fe.cap.travel-TravelStatus.csv* 中看到 insertDeleteRestriction 的值。

code;name;criticality;fieldControl;createDeleteHidden;insertDeleteRestriction
O;Open;2;7;0;1
A;Accepted;3;1;1;0
X;Canceled;0;7;1;0

有关启用或禁用 Create 按钮的更多信息,请参阅 Adding Actions to Tables

使 Delete 操作对已接受和已取消的旅行不可用

上下文

在本练习中,你将学习基于某些条件禁用 Delete 操作。

任务流程

Manage Travels 应用中,你可以看到 Delete 操作显示在列表报表的表工具栏中。你将禁用旅行状态为 AcceptedCanceled 的旅行的删除操作。

前提条件

首先,你必须再次启用筛选栏,因为它在之前单元 Configuring the List Report Filter Bar 的练习 Hide the Filter Bar in the List Report(课程:Hiding the Filter Bar)中被隐藏了。或者,你可以签出分支:solution/add-semantic-fields-to-filterbar

观看步骤并执行模拟

本练习包含一个模拟,它会引导你完成下面描述的所有步骤。你可以跟随该模拟,并使用你自己的试用账户执行这些步骤。

ExerciseStart Exercise(SAP 官方交互式练习)

步骤

  1. 打开 SAP Business Application Studio。

  2. Explorer 视图中,选择 Projectsschema.cds。实体 TravelStatus 为所有三种旅行状态 OpenAcceptedCanceled 提供了定义。该实体还有一个名为 insertDeleteRestriction 的属性,其值为 Boolean

  3. 打开 TravelStatus.csv 文件。你可以看到 insertDeleteRestriction 对于 Open 状态的值为 1,对于 AcceptedCanceled 状态的值为 0

  4. 选择 schema.cds 文件。向其中添加以下注释:

annotate Travel with @(
Capabilities.DeleteRestrictions : {
$Type : 'Capabilities.DeleteRestrictionsType',
Deletable: TravelStatus.insertDeleteRestriction
}
);

请注意,Deletable 属性绑定到 TravelStatus 实体的 insertDeleteRestriction 属性的值。 5. 在 Manage Travels 应用程序中查看 Delete 操作。

  1. 打开 Manage Travels 应用程序。

  2. 选择任意旅行状态为 AcceptedCanceled 的旅行。

结果

其中 Delete 操作对于具有以下旅行状态的旅行被禁用: Accepted 和 Canceled 。 3. 选择旅行状态为 Open 的旅行。

结果

其中 Delete 操作对于具有以下旅行状态的旅行被启用: Open 。

结果

DeleteCreate 等通用操作由 SAP Fiori elements 提供。作为应用开发者,你可以选择控制它们的可见性。你还可以针对对象(实体)的某些实例隐藏或禁用这些操作。

注意

  • 你可以在 GitHub 上找到此解决方案的文件。

  • 解决方案分支是 solution/make-delete-action-unavailable-for-accepted-travels 。

  • 你可以在 GitHub 上查看与上一个分支相比的代码更改。