CDS View, Problem mit Case expression

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
2 Beiträge • Seite 1 von 1
2 Beiträge Seite 1 von 1

CDS View, Problem mit Case expression

Beitrag von RaCDigger (ForumUser / 42 / 4 / 7 ) »
Hallo zusammen,

ich habe mal wieder ein Problem mit einem CDS View bei dem ich gleich für eine Spalte eine Berechnung durchführen möchte.
-> Zwecks übersichtlichkeit der komplette View

Code: Alles auswählen.

define view Zcds_Rs_Fauf with parameters lv_datum : erdat,
                                         lv_timestamp : CMIG_TIMESTAMP,
                                         lv_zaehl : char1,
                                         lv_sttxt : co_sttxt,
                                         lv_gltrp : co_gltrp
                                         
    as select from afko as afko

    inner join aufk as aufk 
        on aufk.aufnr = afko.aufnr

    inner join afpo as afpo
        on afpo.aufnr = afko.aufnr

    inner join marc as marc
        on marc.matnr = afpo.matnr
        and marc.werks = afpo.dwerk

    left outer join mbew as mbew
        on  mbew.matnr = afpo.matnr
        and mbew.bwkey = afpo.dwerk

    left outer join Zcds_Rs_Jest as jest
        on jest.objnr = aufk.objnr


{

    afko.mandt,
    afko.aufnr,
    afpo.posnr,
    cast (:lv_datum as datum) as datum ,
    cast (:lv_timestamp as cmig_timestamp) as timestamp,
    cast (:lv_zaehl as char01) as zaehl, 
    aufk.aenam,
    aufk.aedat,
    afko.gltrp,
    afpo.ltrmi,
    afko.gstrp,
    afko.gstri,
    afko.dispo,
    afko.fevor,
    afpo.meins,
    afpo.matnr,
    afpo.psmng,
    case 
        when mbew.peinh > 0
            then  afpo.psmng * mbew.stprs / mbew.peinh
            
    end as pswert, 
    afpo.wemng,
    (cast(afpo.psmng as zrsmeng) - cast(afpo.wemng as zrsmeng)) as zrsmeng,
    cast (afpo.wewrt as zrswert) as zrswert,                 
    afpo.uebto,
    afpo.untto,
    afpo.lgort,
    cast(:lv_sttxt as co_sttxt) as sttxt,
    afpo.elikz,
    aufk.loekz,
    afpo.xloek,
    afpo.dwerk,
    afpo.dauat,
    afpo.wewrt,
    aufk.waers,
    afko.ftrms,
    afko.gltrs,
    afko.gstrs,
    afko.ftrmi,
    case 
        when jest.stat = 'I0012'
            then 'X'
        when jest.stat = 'I0045'
            then 'X'
        when jest.stat = 'I0046'
            then 'X'
        else ''
    end as jest
}

    where afko.gltrp < :lv_gltrp 
      and aufk.loekz = ' '
      and aufk.idat2 = '00000000'
      and afpo.elikz = ' '
      and afpo.xloek = ' '
Es geht um den ersten CASE
case
when mbew.peinh > 0
then afpo.psmng * mbew.stprs / mbew.peinh

end as pswert,


Damit bekomme ich den Fehler
-> Division x/y ist nur für Float Zahlen erlaubt
Okay die Felder haben alle unterschiedliche Datenelemente, aber sind alle Zahlenartig.

Ich habe es dann mit Cast versucht.
case
when mbew.peinh > 0
then afpo.psmng * mbew.stprs / cast (mbew.peinh as stprs)

end as pswert,

Damit bekomme ich dann folgenden Fehler
-> CAST auf Datenelement STPRS, Typ CURR: Typ, Länge von Source, Ziel müssen gleich sein

Das Problem ist mir bewußt, er hat wohl ein Problem mit dem Peinh das ein Dec5,2 ist, aber wie kann ich das lösen ?
Wenn ich es auslagere und in ABAP berechnen lasse gibt es keine Probleme, aber dafür noch mal ein Loop über die Tabelle wollte ich einfach vermeiden.

Viele Dank für jede Hilfe
Gruß
Sven

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten



Seite 1 von 1

Vergleichbare Themen

1
Antw.
1017
Views
Regular Expression ?
von HStev » 12.04.2005 08:47 • Verfasst in ABAP® Core
5
Antw.
1708
Views
Logical expression IN
von hbahnen » 03.05.2006 00:39 • Verfasst in ABAP® Core
12
Antw.
4567
Views
Regulär Expression Stringsuche inkl. Sonderzeichen
von VB2012 » 24.09.2012 14:45 • Verfasst in ABAP® für Anfänger
2
Antw.
1087
Views
CDS VIEW: Mehrere Tabellen aus einer CDS View updaten
von Abapanfänger » 03.07.2019 10:46 • Verfasst in ABAP® für Anfänger
3
Antw.
9174
Views
Switch Case
von Spookykid » 07.04.2011 17:07 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.