使用依赖筛选丰富值帮助
学习目标
设置字段之间的筛选依赖关系。
值帮助与依赖筛选
你可以使用注解 @Common.ValueList 定义在值帮助对话框中显示哪些字段。这适用于筛选字段以及 编辑 和 创建 模式下带有值帮助的字段。例如,对象页面中表格的字段、分区或子分区中的字段。
考虑以下示例代码:
annotate my.Booking {
to_Carrier @Common.ValueList: {
CollectionPath : 'Airline',
Label : '',
Parameters : [
{$Type: 'Common.ValueListParameterInOut', LocalDataProperty: to_Carrier_AirlineID, ValueListProperty: 'AirlineID'},
{$Type: 'Common.ValueListParameterDisplayOnly', ValueListProperty: 'Name'},
{$Type: 'Common.ValueListParameterDisplayOnly', ValueListProperty: 'CurrencyCode_code'}
]
};
}
在示例代码中,对于实体 Booking,实体 Airline 的值帮助具有值 CollectionPath: 'Airline'。实体 Airline 的第一个参数将主实体属性 to_Carrier_AirlineID 映射到值帮助实体属性 AirlineID。另外两个参数 Name 和 CurrencyCode_code 是实体 Airline 的一部分,类型为 Common.ValueListParameterDisplayOnly。它们仅用于在值帮助对话框中显示。@Common.ValueList 注解的 Parameters 中类型为 DisplayOnly 的属性会显示在值帮助对话框中。

让我们来了解其他三种参数类型。
参数类型:
Common.ValueListParameterIn这些参数会影响所注解字段的值帮助的筛选。
annotate my.Booking {
ConnectionID @Common.ValueList: {
CollectionPath : 'Flight',
Label : '',
Parameters : [
{$Type: 'Common.ValueListParameterInOut', LocalDataProperty: to_Carrier_AirlineID, ValueListProperty: 'AirlineID'},
{$Type: 'Common.ValueListParameterInOut', LocalDataProperty: ConnectionID, ValueListProperty: 'ConnectionID'},
{$Type: 'Common.ValueListParameterIn', LocalDataProperty: FlightDate, ValueListProperty: 'FlightDate'},
….
]
}
在前面的示例代码中,对于 Booking 实体,被注解的字段是 ConnectionID。FlightDate 的参数类型为 Common.ValueListParameterIn。这意味着,如果用户已从 Flight Date 字段中选择了航班日期,则该值会用于筛选 Flight Number(ConnectionID)字段的值帮助对话框中显示的值。
参数类型:
Common.ValueListParameterOut
annotate my.Booking {
ConnectionID @Common.ValueList: {
CollectionPath : 'Flight',
Label : '',
Parameters : [
{$Type: 'Common.ValueListParameterInOut', LocalDataProperty: to_Carrier_AirlineID, ValueListProperty: 'AirlineID'},
{$Type: 'Common.ValueListParameterInOut', LocalDataProperty: ConnectionID, ValueListProperty: 'ConnectionID'},
{$Type: 'Common.ValueListParameterOut', LocalDataProperty: FlightDate, ValueListProperty: 'FlightDate'},
….
]
}
在前面的示例代码中,对于 Booking 实体,被注解的字段是 ConnectionID。FlightDate 的参数类型为 Common.ValueListParameterOut。这意味着,如果用户从 ConnectionID 字段的值帮助对话框中选择了一家航空公司,那么 Flight Date 字段会自动填充相应的值。
与参数类型 Common.ValueListParameterIn 相反,该值不会用于筛选 ConnenctionID 字段的值帮助对话框。
参数类型:
Common.ValueListParameterInOut它是In和Out参数特性的组合。
annotate my.Booking {
ConnectionID @Common.ValueList: {
CollectionPath : 'Flight',
Label : '',
Parameters : [
{$Type: 'Common.ValueListParameterInOut', LocalDataProperty: to_Carrier_AirlineID, ValueListProperty: 'AirlineID'},
{$Type: 'Common.ValueListParameterInOut', LocalDataProperty: ConnectionID, ValueListProperty: 'ConnectionID'},
….
]
}
在前面的示例代码中,你可以看到存在依赖筛选。例如,如果你从 Airline 字段中选择航空公司 European Airlines (EA),该值会被设置为 Flight Number(ConnectionID)值帮助对话框的筛选值,并且仅显示所选航空公司的航班。这就是 In 参数的特性。
如果用户从 ConnectionID 字段的值帮助对话框中选择了一个值,那么 Airline 字段会自动填充相应的条目。同样,如果你在 Flight Number 中选择了一个航班号,Airline 字段会自动填充相应的信息。

为字段的值帮助添加依赖筛选
使用场景
在 Manage Travels 应用的 Bookings 表中,你希望为 Flight Number 的值帮助添加依赖筛选。
这意味着在 Bookings 表中,如果你从 Flight Number 字段中选择一个航班号,那么 Flight Date、Flight Price 和 Currency 字段会自动填充相应的值。同样,如果你从 Flight Date 字段中选择航班日期,那么相应的航班(如果有)会自动填充到 Flight Number 字段中。在此,Flight Date 被设置为值帮助对话框中 Flight Number 的筛选条件。
任务流程
在本练习中,你将扩展 Flight Number 值帮助的现有配置。目前其值帮助将 Flight Date、Flight Price 和 Currency 作为仅显示参数。这些字段会显示在值帮助对话框中,但在从 Flight Number 字段中选择航班号之后不会自动填充。要实现依赖筛选,你必须将 FlightDate、Price 和 CurrencyCode_code 的参数类型更改为 Common.ValueListParameterInOut。
前提条件
你已完成单元 配置对象页面的正文 中的练习 向对象页面子分区添加日期字段和多行输入字段(课程:调整输入字段)。或者,你可以检出其解决方案分支:solution/add-date-multiline-text-placeholder。
观看模拟并执行步骤
本练习包含一个模拟,它会引导你完成下面描述的所有步骤。你可以跟随该模拟,并使用你自己的试用账户执行这些步骤。
练习:开始练习(SAP 官方交互式练习)
步骤
在 SAP Business Application Studio 中打开你的 CAP 项目。
打开页面编辑器,转到对象页面上 Bookings 表的 Flight Number 列。
在 资源管理器 视图中选择
travel-processor,然后从上下文菜单中选择 Show Page Map。在 Travel 实体的对象页面上选择 Configure Page。
在 Sections > Bookings > Table > Columns 下选择 Flight Number。
打开对话框,为 Flight Number 配置值帮助属性。
在右侧窗口中,选择 Edit Properties for Value Help。
Define Value Help Properties for Flight Number 对话框打开。在其 Result List 部分中维护以下值。
对于 FlightDate,选择 InOut 作为依赖关系,并选择 FlightDate 作为本地值。
对于 Price,选择 InOut 作为依赖关系,并选择 FlightPrice 作为本地值。
对于 CurrencyCode_code,选择 InOut 作为依赖关系,并选择 CurrencyCode_code 作为本地值。
选择 Apply。
在应用中检查对象页面表格值帮助的依赖筛选行为。
打开 Manage Travels 应用。
选择 编辑。将显示页面的编辑版本。
选择 创建 以创建新的预订条目。
在 Flight Number 字段中,选择输入帮助以打开包含有效值的下拉列表。Select 值帮助对话框随即出现,其中包含航空公司详细信息列表。
选择所需的航空公司。
结果
你可以看到 Flight Date 字段已自动填充所需信息。 6. 选择 Show More Per Row 图标。
结果
你可以看到 Flight Price 和 Currency 字段已自动填充所需信息。
结果
你现在已为对象页面表格中字段的值帮助启用了依赖筛选。同样,你也可以为列表报表筛选栏中字段的值帮助启用依赖筛选。
后续步骤
有关更多信息,请参见
字段帮助
ValueList 注解中的 In / Out 映射