点击此处---> 群内免费提供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
我假设WHERE子句删除了这些默认记录,您可以使用
您还可以在mara.matnr = mseg.matnr和mseg.budat_mkpf> = $ parameters.p_date
问候 ,
Raymond
好点。 开启条件确实取决于平台。
如果我没看错,您的比较字段mseg〜budat_mkpf的类型为date。 因此,您的比较检查可能会针对日期的HANA特定空值而工作,并且" is null"不适合。
请参阅此处的详细信息:
https://help.sap.com/saphelp_hanaplatform/ helpdata/en/20/a1569875191014b507cf392724b7eb/content.htm
空日期('000-00-00')是SAP HANA中的特殊值。 即使空日期看起来像NULL或未知值,它的行为也不像一个,也不像一个。
关于安德烈亚斯
没问题!
运行存在示例。 如果它按照描述的那样运行,我想这可能是您的数据/期望不正确。 否则,...
@Horst不幸的是,我使用的是ABAP 7.4。 您的示例无法激活。 不过,我对左外部联接的期望并不正确。 我在MARA中有特定的材料,但是在MSEG中没有该材料的记录(已通过SE16N检查)。 据我所知,左外部联接仍应返回结果。
@Raymond扩展为IS NULL不会影响结果。 但是,扩展左外部联接似乎有效。 但是,为什么我却躲不开。
无论如何,谢谢您的回复!
致谢
Guus
您好,Horst,我确实在7.4上找到了该示例,并且按预期工作。
但是我仍在尝试弄清楚为什么我原来的LEFT OUTER没有给我想要的结果:确实,我想要MSEG部分为NULL值。 而且我仍然不明白为什么扩展ON会给我想要的结果而不是WHERE版本。
我已经检查了两个表中的数据,它应该可以正常工作。 但是很显然,我对左外层的工作方式缺乏了解。
第一个选择失败,第二个成功。 但为什么? 也许有人可以对此有所了解,以便我理解。 总是比简单地认为理所当然更好。
问候
Guus
一周热门 更多>