Fiori UI上my contact加了Dr. 后搜索不出数据的奇怪问题

举报
汪子熙 发表于 2022/02/21 20:33:08 2022/02/21
【摘要】 在My task UI上维护了Account后,再点Contact F4 value help:我们发现在GM6上,只要在search field里加了”Dr”, 就搜索不出来contact,如下图。但是换成诸如“Florianna Adler”就可以。昨晚我们纠结了好久,想知道为什么会有这种奇怪的behavior。上午经过debug找到了原因:起初我们怀疑加了Dr之后的search没出来结...

在My task UI上维护了Account后,再点Contact F4 value help:

我们发现在GM6上,只要在search field里加了”Dr”, 就搜索不出来contact,如下图。但是换成诸如“Florianna Adler”就可以。

昨晚我们纠结了好久,想知道为什么会有这种奇怪的behavior。

上午经过debug找到了原因:

起初我们怀疑加了Dr之后的search没出来结果,是因为DB 没query到数据。今早经过验证,发现不是。Contact 的open sql是下列这个方法里动态生成的:

主要就是这4张表做inner join:

然后在下列这个方法里动态执行OPEN SQL,命中40条数据。

命中40条的原因就是OPEN SQL的where条件是扫描account的mc_name1和contact的mc_name1, mc_name2这三个字段。

因此,像下图中第一行和第三行这种数据也命中了,只因为它们的三个column中有一个column的value包含”DR”:

DB search做完后,对结果集做filter.
逐一遍历结果集的40条entry,对每个entry,执行三轮扫描,扫描条件定义在lt_search_f­里, 每个entry只有通过所有三轮扫描,才会最后返回给UI。


扫描的具体逻辑:检查某个entry的这三个红色的field里是否包含每轮扫描指定的key word。如果不包含,将该行entry从结果集中删除,再处理下一个。


因此,加了Dr后搜不出来结果的原因:

Contact F4 search仍然将Dr作为一个free text传入后台,在后台从DB取回来数据做filter之后,如果结果集的三个column里没有包含DR这个字符串的话,就会从结果集里过滤掉。只有name1 & name2里面形如Andrew,Dragon的contact才有机会呗search出来。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。