AMDP选择查询正在获取错误的记录



在AMDP过程中执行以下选择查询时,我得到了错误的结果。伙伴使用一个地址编号重复两次,该地址编号与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;

如果有人能帮忙就太好了。

我很确定这是由CDS视图zcdsbpaddr引起的,而不是由您描述的SELECT或AMDP引起的。

检查该视图的数据预览(ABAP开发工具中的F8(,以验证它是否生成了所需的记录。

在这种观点中,你所描述的听起来像是一个被误导的JOIN。要获得更多见解,请提供该视图的代码或描述其图形组成的图表。

不管是否FUZZY,SELECT查询只会选择该视图提供的一小部分记录。我看不出它怎么会对重复负责。

我通过以下更改解决了这个问题:

  1. CDS客户端相关添加@ClientHandling.type: #CLIENT_DEPENDENT注释
  2. 通过添加AMDP OPTIONS READ-ONLY CDS SESSION CLIENT current修改了AMDP方法签名
  3. 在查询WHERE条件中传递了SESSION_CONTEXT('CLIENT')

相关内容

  • 没有找到相关文章

最新更新