我试图在cds视图中联接3个表,但是在测试时出现此错误:
2018-10-15 14:43:20 843-查询执行失败 引发了异常
我找不到导致错误的原因的信息,希望您能为我提供帮助。
(缩短表并替换名称)
我的代码:
@AbapCatalog.sqlViewName: '*******'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: '************'
define view **********
as select from table 1 as pos
left outer join table2 as subcat
on pos.bukrs = subcat.bukrs and
pos.depid = subcat.depid and
pos.subca = subcat.subca
left outer join table3 as ekg
on pos.ekgrp = ekg.eknam{
key pos.xxx,
key pos.yyy,
key pos.zzz,
pos....,
.
.
.
subcat.ddd,
ekg.jjj,
}
where
subcat.spras = $session.system_language
表格:
表1具有键xxx
,yyy
和zzz
,并具有字段aaa
,bbb
,ccc
和{{1 }}
表2具有键hhh
,aaa
,bbb
和ccc
和字段spras
表3具有键ddd
和字段hhh
所有字段都需要显示->左外部联接
jjj
,aaa
,bbb
和ccc
一直没有填充
2条日食给我:
更新1:
我尝试使用不带联接的hhh
,就像大括号内带有$session.system_language
的表的另一列一样,并且显示了相同的错误,如上所示,任何人都知道session变量是否是有问题吗?
更新2:
如果我将其保留,更新1的CD可以正常工作,那么会话变量就是问题...
答案 0 :(得分:0)
我更喜欢显示代码块并将其实际放入其部分
@AbapCatalog.sqlViewName: 'ZTESTCDS'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Test CDS View'
define view ZTESTCDSVIEW
as
select
from vbrk as h
left outer join vbrp as i
on h.vbeln = i.vbeln
left outer join tvfkt as d
on h.fkart = d.fkart
{
key h.vbeln,
key i.posnr,
h.fkart,
d.vtext
}
where
d.spras = $session.system_language;
但是您的CDS代码似乎没有语法错误
我认为视图KEY定义可能会导致问题。 实际上,复合KEY列可以与SELECT语句的JOIN重复
能否请您先尝试删除KEY定义?
您可能会添加更多列作为KEY,但最好确保原因是KEY