Skip to Content
-2

how can one select data similar to SQL WHERE LIKE from a parameter value

Jan 13 at 07:11 PM

145

avatar image

Hi all

I have the following CDS:

@AbapCatalog.sqlViewName: 'ZAMPAYERINFO'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Read payer information'
define view zam_payer_info
with parameters p_payer: abap.char(10)
as select distinct from knvp 
   join kna1 on
   knvp.kunnr = kna1.kunnr
{
    key knvp.kunnr as Payer,
    kna1.name1 as Name
} where knvp.kunnr like $parameters.p_payer

that the compiler complains:

Comparison value of LIKE condition must be a character-type literalZAM_PAYER_INFO (Data Definition)

As you can see on the CDS code, I am using character-type.

I understand, what LIKE statement do, for example:

@AbapCatalog.sqlViewName: 'ZAMPAYERINFO'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Read payer information'
define view zam_payer_info
  with parameters
    p_payer : abap.char(10)
  as select distinct from knvp
    join                  kna1 on knvp.kunnr = kna1.kunnr
{
  key knvp.kunnr as Payer,
      kna1.name1 as Name
}
where
  knvp.kunnr like 'a%'

Search all kunnr that starts with a. But my problem is, how to combine it with input parameter p_payer, at the end it should be LIKE %p_payer, where p_payer will be replace through the value that I passed.

What can be wrong?

Thanks

10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

1 Answer

Horst Keller
Jan 13 at 11:13 PM
1

Please read the documentation ...

It is as close as F1.

Show 6 Share
10 |10000 characters needed characters left characters exceeded

Anujit Marty I don't know CDS, but I guess this sentence of the documentation applies to your question: "Only character-like literals without domain prefix are allowed for rhs." (refer to the definition of "literals")

Maybe you want to post another question like "how can one select data similar to SQL WHERE LIKE from a parameter value ..."

0

What is domain prefix mean?

0

Oh my, follow the link to literals ...

0

Horst Keller I read the doc several times and could not figure out, what is wrong with the code above.

Is there a way to build character-like literals with P_PAYER. A character literal 'character_literal' is a character string enclosed in quotation marks. How can I build it with P_PAYER character literal?

Thanks

0

Seems that you don't understand the concept of literals.

0

Aha. It has to be like '%a' otherwise it is not possible, it can not derive from a parameter?
How can I create a select for "Give me all customers, that the name starts with a f"?

Thanks

0