在AMDP过程中执行以下Select查询时,我得到了错误的结果。伙伴使用一个地址号码重复两次,该地址号码与WHERE条件中传递的值完全无关。
SELECT score( ) AS score,
partner,
rltyp,
addrnumber,
name,
postalcode,
street,
street4,
country
FROM zcdsbpaddr
WHERE
CONTAINS ( zcdsbpaddr.name, :im_name1, FUZZY(0.8, 'similarCalculationMode=compare, textSearch=compare, bestMatchingTokenWeight=0.3' ) ) AND
CONTAINS ( zcdsbpaddr.postalcode, :im_post_code1, FUZZY(0.8) ) AND
CONTAINS ( ( zcdsbpaddr.street, zcdsbpaddr.street4 ), :im_street, FUZZY(0.7) ) AND
( :im_country = '' OR zcdsbpaddr.country = :im_country )
ORDER BY score( ) DESC;如果有人能帮上忙那就太好了。
发布于 2021-01-15 18:23:36
我很确定这是由你的CDS视图zcdsbpaddr引起的,而不是你所描述的SELECT或AMDP。
检查该视图的数据预览- ABAP Development Tools中的F8 -以验证它是否生成了预期的记录。
在这个视图中,您所描述的听起来像是一个被误导的联接。要了解更多信息,请提供该视图的代码或描述其图形组成的图表。
不管是否模糊,您的SELECT查询除了选择该视图提供的一小部分记录外,什么也不做。我看不出它怎么能对重复的数据负责。
发布于 2021-01-16 16:31:56
我通过以下更改解决了这个问题:
通过在查询WHERE annotation.
@ClientHandling.type: #CLIENT_DEPENDENT SESSION_CONTEXT('CLIENT')
中添加AMDP OPTIONS READ-ONLY CDS SESSION CLIENT current.
SESSION_CONTEXT('CLIENT')来添加AMDP方法签名,以依赖于CDS客户端https://stackoverflow.com/questions/65732024
复制相似问题