如何获得关联的所有元素?

问题描述 投票:1回答:1

我创建了如下的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的列表。

sap associations abap cds
1个回答
0
投票
这与CDS关联的整个思想相矛盾,因为they were created按需加入并减少了对数据库的冗余调用。获取所有字段会否定整个“惰性连接”的概念。

但是,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).

这将为每个联接关联创建具有专用结构的深度结构类型,如下所示:

enter image description here

如果您对任务的这种结构不满意,则应静态声明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.

© www.soinside.com 2019 - 2024. All rights reserved.