应用 SAP Fiori Elements 提供的通用操作
学习目标
影响 Delete 和 Create 操作的可见性和启用状态。
通用操作
什么是操作?
操作会触发与后端的交互(调用 OData 服务),或者发起对外部另一个应用的导航。你可以看到操作以按钮的形式显示在应用上。
操作在应用中的位置
SAP Fiori 设计准则定义了操作作为按钮可以放置在 UI 上的哪些位置。根据这些准则,操作必须放置在其所作用信息的附近。一个示例是将操作放置在列表报表中表格或图表的工具栏上。另一个示例是将全局操作放置在对象页的标题区域。
有关操作的更多信息,请参阅 Actions。
有关操作放置位置的更多信息,请参阅 Action Placement。
通用操作
SAP Fiori elements 提供通用操作,例如:
触发到相关应用的外部导航。
创建一个新条目。
删除单个条目或多个条目。
编辑现有条目。
在列表报表中,Create 和 Delete 操作位于表工具栏中。

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

Delete 按钮是表上的操作,仅在用户选择某个条目时才启用。
Delete 和 Create 按钮的可见性
你可以使用 @UI.DeleteHidden 注释控制 Delete 按钮的可见性。其值可以是布尔值(true 或 false),也可以是指向实体布尔属性的路径。如果该属性的值为 true,则 Delete 按钮被隐藏;如果为 false,则可见。
annotate TravelService.Travel with @UI : {
DeleteHidden : true
}
同样,你可以使用 @UI.CreateHidden 注释控制 Create 按钮的可见性。其值可以是布尔值(true 或 false),也可以是指向实体布尔属性的路径。如果该属性的值为 true,则 Create 按钮被隐藏;如果为 false,则可见。
annotate TravelService.Travel with @UI : {
CreateHidden : true
}
禁用 Delete 按钮
除了隐藏 Delete 按钮,你还可以选择使用 @Capabilities.DeleteRestrictions 注释在应用中禁用它。你可以将其 Deletable 属性设置为 true 或 false。如果此属性的值为 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 应用中的条目具有各种状态,例如 Open、Accepted 和 Canceled。
你可以看到,对于状态 Open,insertDeleteRestriction 的值为 true,而对于状态 Accepted 和 Canceled,该值为 false。这意味着对于状态为 Accepted 和 Canceled 的旅行,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 操作显示在列表报表的表工具栏中。你将禁用旅行状态为 Accepted 和 Canceled 的旅行的删除操作。
前提条件
首先,你必须再次启用筛选栏,因为它在之前单元 Configuring the List Report Filter Bar 的练习 Hide the Filter Bar in the List Report(课程:Hiding the Filter Bar)中被隐藏了。或者,你可以签出分支:solution/add-semantic-fields-to-filterbar。
观看步骤并执行模拟
本练习包含一个模拟,它会引导你完成下面描述的所有步骤。你可以跟随该模拟,并使用你自己的试用账户执行这些步骤。
Exercise:Start Exercise(SAP 官方交互式练习)
步骤
打开 SAP Business Application Studio。
在 Explorer 视图中,选择 Projects→schema.cds。实体
TravelStatus为所有三种旅行状态 Open、Accepted 和 Canceled 提供了定义。该实体还有一个名为insertDeleteRestriction的属性,其值为Boolean。打开
TravelStatus.csv文件。你可以看到insertDeleteRestriction对于Open状态的值为1,对于Accepted和Canceled状态的值为0。选择
schema.cds文件。向其中添加以下注释:
annotate Travel with @(
Capabilities.DeleteRestrictions : {
$Type : 'Capabilities.DeleteRestrictionsType',
Deletable: TravelStatus.insertDeleteRestriction
}
);
请注意,Deletable 属性绑定到 TravelStatus 实体的 insertDeleteRestriction 属性的值。
5. 在 Manage Travels 应用程序中查看 Delete 操作。
打开 Manage Travels 应用程序。
选择任意旅行状态为 Accepted 和 Canceled 的旅行。
结果
其中 Delete 操作对于具有以下旅行状态的旅行被禁用: Accepted 和 Canceled 。 3. 选择旅行状态为 Open 的旅行。
结果
其中 Delete 操作对于具有以下旅行状态的旅行被启用: Open 。
结果
Delete 和 Create 等通用操作由 SAP Fiori elements 提供。作为应用开发者,你可以选择控制它们的可见性。你还可以针对对象(实体)的某些实例隐藏或禁用这些操作。
注意
你可以在 GitHub 上找到此解决方案的文件。
解决方案分支是 solution/make-delete-action-unavailable-for-accepted-travels 。
你可以在 GitHub 上查看与上一个分支相比的代码更改。