on 2024 Sep 10 2:09 PM - last edited a month ago
Dear community members,
I need to create a CDS view entity with a calculated filed as CURR / QUAN to get the per unit amount.
For Example: CDS VIEW ENTITY on BSEG which should have ( DMBTR(type CURR) / MENGE(type QUAN) ) AS UNIT_PRICE
Sounds like a very simple requirement but I am facing multiple issue with this.
To start with, I get below error message:
"Data type CURR is not supported at this position, see long text"
then I tried with casting CURR field as DEC(23.2), but then I got below error :
"Element <XXXXX> : missing CALC-reference annotation Semantics.quantity.unitOfMeasure"
it was surprising to see that it prompted to user UOM reference, instead of Currency reference, but nevertheless, I tried with the UoM reference, but then again a different error :
"<XXXXX>: Reference Field MEINS has a wrong data type"
then I tried to CAST the MEINS as abap.char(3) to use it as reference for calculated field, but then a different error this time, and this is really annoying this it didn't allow casting a text value into CHAR.
I also tried to google this error message and found some conversion function but then I get different errors:
1. Using function : GET_NUMERIC_VALUE
"Element DMBTR has an invalid reference field"
2. using function : CURR_TO_DECFLOAT_AMOUNT
"Element DMBTR has an invalid reference field"
I tried few more ways but none of them is working for me and I really wonder how can this be so challanging to achieve AMOUNT / QUANTITY in CDS VIEW ENTITY, which is a very basic arithmetic operation.
Same arithmetic calculation works perfectly well in ABAP code (as we have done that for decades), so now I am thinking to use Virtual elememt in CDS, but I want to achieve with the CDS approach first, without making use of ABAP layer.
Any tips to solve this ?
regards,
Bharat Bajaj
Hello @bharatbajaj ,
if you want to use View entity seems like the only solution is to have a calculated column for each computation.
Alternatively, if its allowed then use define view instead of view entity.
Define view would not require semantic.amount.currency code annotation
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Bheemesh,
Thanks for the suggestion. I tried this, but this gives amount in FLTP, with large number of decimals.
I needed the amount in 2 decimals, so I used the abap.dec(23,2) in the cast expression, instead of abap.fltp
that worked well and you can see that in my other comment which I marked as solution.
User | Count |
---|---|
71 | |
11 | |
11 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.