错误的结果从HANA DB上的CDS离开外部联接

2020-09-29 17:28发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)系统: SAP ERP 6....

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

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


系统:

SAP ERP 6.0/EHP7 for SAP ERP 6.0

SAP NETWEAVER 7.4

HANA DB版本1.00.122.05.1481577062

软件组件版本支持软件包的补丁程序级别

SAP内核7.45 64位UNICODE SP310 000310

目前,我正面临一个特殊的问题。 我在 service.sap.com 上进行搜索,发现了类似的问题,但都与非HANA- 数据库。

问题。

我已经建立了一个CDS,并在MARA和MSEG之间建立了连接。 联接是LEFT OUTER JOIN。

但是,结果似乎是一个INNER JOIN:左表MARA具有条目,而右表MSEG没有条目。 结果是CDS没有返回记录。

定义视图Zcds_Artikel_Omzet
 带有参数p_date:abap.dats

 作为精选的不同mara.matnr,mara.mtart,mara.mstae,mara.mstde,mara.lvorm,mara.attyp,mara.satnr,
     case mseg.bwart当'251'然后''else'X'以verwerken结尾时

 来自mara as mara
                   
 左外连接mseg作为mara.matnr = mseg.matnr上的mseg
 mseg.mblnr = mkpf.mblnr上的左外部连接mkpf和
                         mseg.mjahr = mkpf.mjahr

 其中mkpf.bldat> = $ parameters.p_date
 

对于某些材料(没有MSEG记录),无论是否添加DISTINCT,都不会返回结果。 我至少希望MARA提供的细节像通常的左外连接会提供的那样。

我什至尝试替换

其中mkpf.bldat> = $ parameters.p_date 

其中mseg.budat_mkpf> = $ parameters.p_date 

但是结果保持不变:找不到记录。

在要返回的字段列表中包含BSEG字段也导致找到0条记录。

我已经在纯ABAP中重建了选择,但是即使在这里也没有记录返回。

还有其他人遇到过同样的问题吗? 如果是这样,您是如何解决的?

此致

Guus

 
7条回答
Cikesha
2020-09-29 18:26

您好,Horst,我确实在7.4上找到了该示例,并且按预期工作。

但是我仍在尝试弄清楚为什么我原来的LEFT OUTER没有给我想要的结果:确实,我想要MSEG部分为NULL值。 而且我仍然不明白为什么扩展ON会给我想要的结果而不是WHERE版本。

我已经检查了两个表中的数据,它应该可以正常工作。 但是很显然,我对左外层的工作方式缺乏了解。

参数:pa_matnr类型为matnr,
               pa_Date类型sydatum默认sy-datum。


   选择mara〜matnr,mseg〜mblnr到表@data(lt_mseg)
     来自mara作为mara左外部加入mseg作为mara〜matnr上的mseg = mseg〜matnr
       其中mara〜matnr eq @pa_matnr和
             mseg〜budat_mkpf ge @pa_date。

   选择mara〜matnr,mseg〜mblnr到表@data(lt_mseg2)
     来自mara作为mara左外部加入mseg作为mara〜matnr = mseg〜matnr上的mseg
                                                       mseg〜budat_mkpf> = @pa_date
       其中mara〜matnr eq @pa_matnr。
 

第一个选择失败,第二个成功。 但为什么? 也许有人可以对此有所了解,以便我理解。 总是比简单地认为理所当然更好。

问候

Guus

一周热门 更多>