cancel
Showing results for 
Search instead for 
Did you mean: 

CDS VIEW ENTITY - CURR / QUAN calculated field gives activation error

bharatbajaj
Active Participant
0 Kudos
643

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"

bharatbajaj_1-1725970019610.png

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"

bharatbajaj_6-1725972406979.png

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"

bharatbajaj_7-1725972546520.png

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.

bharatbajaj_8-1725972773634.png

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"

bharatbajaj_2-1725970332483.png

2. using function : CURR_TO_DECFLOAT_AMOUNT 

"Element DMBTR has an invalid reference field"

bharatbajaj_3-1725970793825.png

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

 

View Entire Topic
bheemeshRao
Explorer
0 Kudos

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

 

bseg.png

bharatbajaj
Active Participant
0 Kudos

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.