如何创建CDS,通过输入参数实现KNA1表KUNNR的LIKE前缀过滤
实现动态LIKE过滤的CDS视图方案
完全可以通过CDS输入参数实现动态的LIKE过滤,下面给你两种实用的实现方式,按需选择即可:
方式一:参数仅传入前缀,自动拼接通配符
这种方式适合用户只需输入前缀(比如"A"),视图自动补充%来匹配所有以此开头的客户编号,非常贴合你提到的"指定前缀筛选"需求。
@EndUserText.label: '带动态前缀过滤的客户视图' define view ZCDS_CUSTOMER_PREFIX as select from kna1 { key kna1.kunnr as CustomerNumber, kna1.name1 as CustomerName, kna1.land1 as Country } with parameters p_prefix : abap.char(10) default 'A' where kunnr like concat( :p_prefix, '%' );
关键点说明:
- 用
with parameters定义输入参数p_prefix,指定类型为abap.char(10),还可以设置默认值(比如默认查询A开头的客户)。 - 在WHERE子句里通过
concat( :p_prefix, '%' )将参数与通配符拼接,实现动态匹配所有以输入前缀开头的KUNNR。
方式二:允许参数直接带通配符(更灵活)
如果需要更灵活的匹配规则(比如不仅是前缀,还支持中间包含、后缀匹配),可以让用户直接在参数里输入带通配符的值(比如"A%", "%BERLIN", "%M%"),代码更简洁:
@EndUserText.label: '带动态LIKE过滤的客户视图(灵活匹配)' define view ZCDS_CUSTOMER_FLEX as select from kna1 { key kna1.kunnr as CustomerNumber, kna1.name1 as CustomerName, kna1.land1 as Country } with parameters p_pattern : abap.char(20) default 'A%' where kunnr like :p_pattern;
注意事项:
- 这种方式需要用户了解ABAP通配符的用法(
%代表任意长度字符,_代表单个字符)。 - 输入参数的长度要足够容纳带通配符的完整匹配字符串。
调用验证
激活CDS视图后,在SE16N或其他查询工具中调用时,会弹出输入参数对话框,输入你想要的前缀或匹配模式,就能得到对应的结果。比如输入"B",就会返回所有客户编号以B开头的记录。
内容的提问来源于stack exchange,提问作者softshipper
相关产品推荐
相关产品推荐

