Fiori UI上my contact加了Dr. 后搜索不出数据的奇怪问题
在My task UI上維護(hù)了Account后,再點(diǎn)Contact F4 value help:
我們發(fā)現(xiàn)在GM6上,只要在search field里加了”Dr”, 就搜索不出來(lái)contact,如下圖。但是換成諸如“Florianna Adler”就可以。
昨晚我們糾結(jié)了好久,想知道為什么會(huì)有這種奇怪的behavior。
上午經(jīng)過(guò)debug找到了原因:
起初我們懷疑加了Dr之后的search沒(méi)出來(lái)結(jié)果,是因?yàn)镈B 沒(méi)query到數(shù)據(jù)。今早經(jīng)過(guò)驗(yàn)證,發(fā)現(xiàn)不是。Contact 的open sql是下列這個(gè)方法里動(dòng)態(tài)生成的:
主要就是這4張表做inner join:
然后在下列這個(gè)方法里動(dòng)態(tài)執(zhí)行OPEN SQL,命中40條數(shù)據(jù)。
命中40條的原因就是OPEN SQL的where條件是掃描account的mc_name1和contact的mc_name1, mc_name2這三個(gè)字段。
因此,像下圖中第一行和第三行這種數(shù)據(jù)也命中了,只因?yàn)樗鼈兊娜齻€(gè)column中有一個(gè)column的value包含”DR”:
DB search做完后,對(duì)結(jié)果集做filter.
逐一遍歷結(jié)果集的40條entry,對(duì)每個(gè)entry,執(zhí)行三輪掃描,掃描條件定義在lt_search_f-里, 每個(gè)entry只有通過(guò)所有三輪掃描,才會(huì)最后返回給UI。
掃描的具體邏輯:檢查某個(gè)entry的這三個(gè)紅色的field里是否包含每輪掃描指定的key word。如果不包含,將該行entry從結(jié)果集中刪除,再處理下一個(gè)。
因此,加了Dr后搜不出來(lái)結(jié)果的原因:
Contact F4 search仍然將Dr作為一個(gè)free text傳入后臺(tái),在后臺(tái)從DB取回來(lái)數(shù)據(jù)做filter之后,如果結(jié)果集的三個(gè)column里沒(méi)有包含DR這個(gè)字符串的話,就會(huì)從結(jié)果集里過(guò)濾掉。只有name1 & name2里面形如Andrew,Dragon的contact才有機(jī)會(huì)唄search出來(lái)。
要獲取更多Jerry的原創(chuàng)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙":
總結(jié)
以上是生活随笔為你收集整理的Fiori UI上my contact加了Dr. 后搜索不出数据的奇怪问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 蚂蚁森林:网传存在污染地块,与蚂蚁森林公
- 下一篇: SAP Fiori 应用无法根据cont