SELECT 进入结构化 object 与 ABAP CDS 关联
SELECT into structured object with ABAP CDS associations
我有一个具有多个关联的 CDS 视图:
define view ZORDER as select from ZORDERHDR as orderHdr
association [0..1] to ZORDER_LOCATION as _location on _location.orderID = orderHdr.orderID
association [0..*] to ZORDER_ITEM as _items on _items.orderID = orderHdr.orderID
association [0..*] to ZORDER_PARTNER as _partners on _partners.orderID = orderHdr.orderID
现在,我想 select 从单个订单的视图中得到类似这样的结果:
TYPES: BEGIN OF t_order,
header TYPE zorderhdr,
location TYPE zorder_location,
items TYPE zorder_items, "This is a table type
END OF t_order.
有没有SELECT语句可以像上面那样把所有的顺序读入嵌套结构?
编辑:我添加了第二个 0..* 关联以确保建议的解决方案不会建议 select 一切,然后将 header 和位置减少到它们的结构中。我看到的问题是,对于复杂的 CDS 视图,我似乎需要处理所有与自定义代码的关联,就像我在普通 OpenSQL 中所做的那样,然后我就失去了 CDS 视图模型设计的好处(当不从网关使用时)我 select 数据太多了。
很遗憾,没有。
我认为您可以在 select 子句中使用 _items~*
来处理 _items
的所有字段,但这就像一个普通的普通 JOIN。
(旁注:如果支持,您的概念将很好地映射到 ABAP meshes)
不可能这样 SELECT。如果右键单击 CDS 视图,然后单击“Show SQL CREATE Statement”,您应该将其视为常规数据库 SQL 视图。
如果您公开关联中的字段,则它是 JOIN
。你用SE11打开@AbapCatalog.sqlViewName: 'YOURSQLVIEW'
,它是一个平面结构。
使用 ASSOCIATION
而不是 JOIN
的 CDS 视图建模的好处之一是,如果将 CDS 作为数据源包含到 Gateway 项目中,就会生成导航。那么您可以使用 URL 导航,例如 zorderhdr/to_item 来获取所有项目,或者像 zorderhdr/to_item(item_key)
来获取一项。
还有一件事,对于事务性 CDS 视图,您可以 generate a BOPF object 通过使用 ASSOCIATION
对节点层次结构建模。
我有一个具有多个关联的 CDS 视图:
define view ZORDER as select from ZORDERHDR as orderHdr
association [0..1] to ZORDER_LOCATION as _location on _location.orderID = orderHdr.orderID
association [0..*] to ZORDER_ITEM as _items on _items.orderID = orderHdr.orderID
association [0..*] to ZORDER_PARTNER as _partners on _partners.orderID = orderHdr.orderID
现在,我想 select 从单个订单的视图中得到类似这样的结果:
TYPES: BEGIN OF t_order,
header TYPE zorderhdr,
location TYPE zorder_location,
items TYPE zorder_items, "This is a table type
END OF t_order.
有没有SELECT语句可以像上面那样把所有的顺序读入嵌套结构?
编辑:我添加了第二个 0..* 关联以确保建议的解决方案不会建议 select 一切,然后将 header 和位置减少到它们的结构中。我看到的问题是,对于复杂的 CDS 视图,我似乎需要处理所有与自定义代码的关联,就像我在普通 OpenSQL 中所做的那样,然后我就失去了 CDS 视图模型设计的好处(当不从网关使用时)我 select 数据太多了。
很遗憾,没有。
我认为您可以在 select 子句中使用 _items~*
来处理 _items
的所有字段,但这就像一个普通的普通 JOIN。
(旁注:如果支持,您的概念将很好地映射到 ABAP meshes)
不可能这样 SELECT。如果右键单击 CDS 视图,然后单击“Show SQL CREATE Statement”,您应该将其视为常规数据库 SQL 视图。
如果您公开关联中的字段,则它是 JOIN
。你用SE11打开@AbapCatalog.sqlViewName: 'YOURSQLVIEW'
,它是一个平面结构。
使用 ASSOCIATION
而不是 JOIN
的 CDS 视图建模的好处之一是,如果将 CDS 作为数据源包含到 Gateway 项目中,就会生成导航。那么您可以使用 URL 导航,例如 zorderhdr/to_item 来获取所有项目,或者像 zorderhdr/to_item(item_key)
来获取一项。
还有一件事,对于事务性 CDS 视图,您可以 generate a BOPF object 通过使用 ASSOCIATION
对节点层次结构建模。