01-13-2018 7:11 PM
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
01-13-2018 11:13 PM
01-14-2018 11:58 AM
zero_coder 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 ..."
01-15-2018 9:02 AM
01-15-2018 9:33 AM
01-15-2018 9:53 AM
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
01-15-2018 10:06 AM
01-15-2018 12:19 PM
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
01-14-2018 11:50 AM
Please don't post your reply via "Submit your Answer", which is reserved to people giving a possible answer to your initial question. Moreover, people are not notified of your reply.
Instead, use "Comment on this answer". If too late as is the case here, you may convert your Answer into a Comment via Actions -> "Convert to Comment".
01-14-2018 12:50 PM
But I could rewrite the CDS to:
@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%'
That would mean, give all entity an kunnr starts with a. My problem is, how to substitute it with p_payer input parameter?
Thanks