搜索帮助增强数据去重

作者:ABAP三叔 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
搜索帮助增强数据去重 - 封面图
搜索帮助增强数据去重 - 封面图

前言

在项目中,经常需要对某个字段创建搜索帮助,然而 由于设计缺陷 等各方面原因

,字段的键值表中,值可能不是唯一的,就这导致创建搜索帮助时,就出现了重复的项 。本文将介绍两种方式来处理这种问题

具体问题

现在有一张品牌&系列主数据对照表,数据如下

搜索帮助增强数据去重 - 封面图
搜索帮助增强数据去重 - 封面图

现在需要做一个品牌的搜索帮助,一般创建方式如下

搜索帮助增强数据去重 - 封面图
搜索帮助增强数据去重 - 封面图

点击测试,结果如下

搜索帮助增强数据去重 - 封面图
搜索帮助增强数据去重 - 封面图

可见有重复值,这种效果显然不是我们想要的,接下来我将介绍如何处理它。

去重方案一

1.写一个CDS视图,将原数据做去重,然后再基于CDS视图做搜索帮助

@AbapCatalog.sqlViewName: 'ZTEST_CDSV_BRAND'@AbapCatalog.compiler.compareFilter: true@AbapCatalog.preserveKey: true@AccessControl.authorizationCheck: #NOT_REQUIRED@EndUserText.label: '测试'define view ZTEST_CDS_BRAND as select distinct from ztmd001b{ zbrand, zbrand_txt}

2\. 基于CDS视图 创建搜索帮助

搜索帮助增强数据去重 - 封面图
搜索帮助增强数据去重 - 封面图

3.点击测试,结果如下,结果正确

搜索帮助增强数据去重 - 封面图
搜索帮助增强数据去重 - 封面图

去重方案二

1.不借助CDS,在"搜索帮助出口"处填入自定义的增强方法,在增强方法中对数据进行去重

搜索帮助增强数据去重 - 封面图
搜索帮助增强数据去重 - 封面图

2.增强方法代码如下

FUNCTION zshlp_exit_brand_val.*"----------------------------------------------------------------------*"*"本地接口:*" TABLES*" SHLP_TAB TYPE SHLP_DESCT*" RECORD_TAB STRUCTURE SEAHLPRES*" CHANGING*" REFERENCE(SHLP) TYPE SHLP_DESCR*" REFERENCE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL*"---------------------------------------------------------------------- IF callcontrol-step <> 'SELECT'. EXIT. ENDIF. SELECT DISTINCT zbrand, zbrand_txt FROM ztmd001b INTO TABLE @DATA(lt_show) . CALL FUNCTION 'F4UT_RESULTS_MAP' TABLES shlp_tab = shlp_tab[] record_tab = record_tab[] source_tab = lt_show CHANGING shlp = shlp callcontrol = callcontrol EXCEPTIONS illegal_structure = 1 OTHERS = 2. IF lt_show[] IS NOT INITIAL. callcontrol-step = 'DISP'. ELSE. callcontrol-step = 'SELECT'. ENDIF. ENDFUNCTION.

3 .点击测试,效果同方案一一致,截图此处略过

补充

搜索帮助创建完成后,可以将搜索帮助添加到数据元素的定义中,这样在数据库表中,选择屏幕或ALV中,含有这个数据元素的字段,都会自动带有搜索帮助功能。

搜索帮助增强数据去重 - 封面图
搜索帮助增强数据去重 - 封面图

总结

两种方式:CDS&搜索帮助增强,朋友们喜欢哪种方式呢?欢迎留下你的观点。

ABAP三叔

关于作者:ABAP三叔

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「搜索帮助增强数据去重.md」整理生成,仅用于内部技术分享与学习交流。