CDS表功能-SELECT TOP 1

2020-09-23 20:08发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好大师, 我需要在CDS视图...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好大师,

我需要在CDS视图中加入,对于左表中的每个记录,我只需要从右表中首先找到行。 当我在这里的论坛中搜索时,我发现我需要使用CDS表函数并在我的方法中实现SQL脚本。 但是,它不能按计划工作。

这是一个简单的例子:

想象一下,我有EKKO(采购订单标题)表。 对于每个采购凭证(EKKO-EBELN),我想从EKPO中找到第一个发现的物料(采购凭证项目-EKPO-MATNR)。

1)我创建了表函数:

2)我创建了AMDP类实现:

3)我在CDS视图中使用表格功能:

4)结果如下:

我想要的结果是每个文档的第一个matnr。

任何帮助将不胜感激。

谢谢。

卢卡斯

tf.jpg (62.3 kB)
付费偷看设置
发送
6条回答
空代码
1楼-- · 2020-09-23 20:57

您可以在ABAP中进行简单选择来尝试它(因此不需要CDS)

选择...最多1行

 并且不要忘记按主键命令
CJones
2楼-- · 2020-09-23 20:58

嗨,Guus,

对不起,它对我没有帮助。 我需要使用CDS。

此致

Lukas

SAP小菜
3楼-- · 2020-09-23 21:00

Hi Lukas

您需要为每个EBELN选择" TOP 1"

 RETURN SELECT ebeln,
                   max(matnr)作为ekpo GROUP BY ebeln的matnr;
 

致谢

Domi

lukcy2020
4楼-- · 2020-09-23 20:55

我在这里发布了另一个答案。 无法直接回复截图。

Lukas

bbpeas
5楼-- · 2020-09-23 20:37

嗨Dominik,不幸的是X和SPACE不能正常工作。

看看:

1)EKPO表如下:

2)我将选择顶部1更改为选择max(matnr)

3)结果如下:

4)但是当我需要其他材料时,它将无法工作:

我也尝试了不同的关联,但是似乎都没有。

Lukas

黑丝骑士
6楼-- · 2020-09-23 20:57

因此,在尝试了许多不同的方法之后,我发现了以下内容:

1)我尝试了TABLE FUNCTION中的SELECT TOP 1,但是当条件不受限制时,似乎在联接条件内它将所有来自左表的记录并确实与右表联接在一起-这意味着 左表中的所有记录中,右表中只有一个记录。

2)我尝试选择max(matnr)。 它仅在您要在何处限制条件时起作用。

3)我尝试将相关子查询与该子查询中选择的前1个Matnr相关联。 HANA不喜欢带有TOP或GROUP BY子句的关联子查询。

4)我尝试了诸如RANK()或ROW或FIRST()之类的窗口函数。 当您想在SELECT语句中进行限制时,没有任何效果。

5)在tabe函数中遍历数据会大大降低性能。

我决定在ABAP层中进行所有必要的数据调整。 如果有人会发现在CDS或餐桌功能中的操作方法,请随时添加您的评论。

卢卡斯

一周热门 更多>