0

当我在 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;

如果有人可以提供帮助,那就太好了。

4

2 回答 2

0

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

检查该视图的数据预览 - ABAP 开发工具中的 F8 - 以验证它是否生成了您期望的记录。

在该视图中,您所描述的听起来像是被误导的 JOIN 。如需更多见解,还请提供该视图的代码或描述其图形组成的图表。

无论是否模糊,您的 SELECT 查询只会选择该视图提供的一小部分记录。我看不出它如何对重复负责。

于 2021-01-15T10:23:36.173 回答
0

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

  1. CDS Client Dependent 添加@ClientHandling.type: #CLIENT_DEPENDENT注释。
  2. 通过添加修改 AMDP 方法签名AMDP OPTIONS READ-ONLY CDS SESSION CLIENT current
  3. 传入SESSION_CONTEXT('CLIENT')查询 WHERE 条件
于 2021-01-16T08:31:56.097 回答