我创建了如下的CDS视图:
define view YGAC_I_REQUEST_ROLE
with parameters
pm_req_id : grfn_guid,
@Consumption.defaultValue: 'ROL'
pm_item_type : grac_prov_item_type,
@Consumption.defaultValue: 'AP'
pm_approval : grac_approval_status
as select from YGAC_I_REQ_PROVISION_ITEM as provitem
association [1..1] to YGAC_I_ROLE as _Role on _Role.RoleId = provitem.ProvisionItemId
association [1..*] to YGAC_I_ROLE_RS as _Relation on _Relation.RoleId1 = provitem.ProvisionItemId
{
key ReqId,
key ReqIdItem,
Connector,
ProvisionItemId,
ActionType,
ValidFrom,
ValidTo,
_Role.RoleId,
_Role.RoleName,
_Role.RoleType,
_Role,
_Relation
}
where
ReqId = $parameters.pm_req_id
and ProvisionItemType = $parameters.pm_item_type
and ApprovalStatus = $parameters.pm_approval
然后我在ABAP中消费了:
SELECT
FROM ygac_i_request_role( pm_req_id = @lv_test,
pm_item_type = @lv_item_type,
pm_approval = @lv_approval
)
FIELDS reqid,
connector,
provisionitemid
INTO TABLE @DATA(lt_result).
如何根据以上选择获取_Relation
的列表。
但是,FROM子句中还有另一种语法,该语法由path expressions启用,该语法允许完全和单独元素查询下划线关联。这是怎么
SELECT * FROM ygac_i_request_role( pm_req_id = @lv_test ) \_Role AS role INTO TABLE @DATA(lt_result).
这将
_Role
关联的所有字段提取到内部表中。
注:请记住,不可能同时获取当前视图的所有已发布关联,每个查询只能获取一个路径。可能的解决方法是使用JOIN
这将为每个联接关联创建具有专用结构的深度结构类型,如下所示:
SELECT * FROM ygac_i_request_role AS main JOIN ygac_i_request_role \_Role AS role ON main~ProvisionItemId = role~RoleId JOIN ygac_i_request_role \_Relation AS relation ON main~ProvisionItemId = relation~RoleId1 INTO TABLE @DATA(lt_table).
如果您对任务的这种结构不满意,则应静态声明lt_table
以平放所有字段
TYPES BEGIN OF ty_table. INCLUDE TYPE ygac_i_request_role. INCLUDE TYPE ygac_i_role. INCLUDE TYPE ygac_i_role_rs. TYPES END OF ty_table.