This is a test message to test the length of the message box.
Login
|
ABAP CDS Konvertierungsroutine
Erstellt von Software-Heroes

CDS - Konvertierungsroutine

1041

In diesem Artikel geht es um die einfache Konvertierung von Währungen und Mengen direkt in Core Data Services.

Werbung


Artikel-Update: Seit Release 7.57 (S/4 HANA 2022) ist DEFINE VIEW als obsolet gekennzeichnet, stattdessen solltest du DEFINE VIEW ENTITY verwenden. Diese können an einigen Stellen zu den Beispielen abweichen. Mehr Informationen zu den neuen Views findest du in diesem Artikel.



Die Konvertierung von Währungen war schon immer ein eigener Punkt für sich und sehr oft wird man bei solchen Fragestellungen nicht vorbei kommen. Bisher hat man die Währungsumrechnung vor allem über Funktionsbausteine implementiert, mittlerweile gibt es eine einfachere Lösung dazu.

 

Währung

Für die Umrechnung der Währung haben wir dir im Artikel für das Datenmodell schon eine Funktion für den Select gezeigt, diese Funktion gibt es auch so ähnlich für den CDS View. Dabei bauen wir auf dem View "ZBS_C_DmoPartnerSum" auf, der die Summe pro Partner berechnet. Da wir das Feld nicht direkt in dem View verwenden können, erstellen wir einen weiteren CDS View und nehmen diesen als Grundlage.

@AbapCatalog.sqlViewName: 'ZBSCDMOPARREPO'
@EndUserText.label: 'Reporting for Partners'
define view ZBS_C_DmoPartnerReporting
  with parameters
    @Environment.systemField: #SYSTEM_DATE
    P_CalculationDate : abap.dats
  as select from ZBS_C_DmoPartnerSum
{
  key PartnerNumber,
      PositionCurrency,
      PriceForPartnerMaterial,
      currency_conversion(
        amount => PriceForPartnerMaterial,
        source_currency => PositionCurrency,
        round => 'X',
        target_currency => cast( 'USD' as abap.cuky( 5 ) ),
        exchange_rate_date => $parameters.P_CalculationDate,
        exchange_rate_type => 'M',
        error_handling => 'SET_TO_NULL'
      ) as PriceInUSD
}

 

Wir nutzen die Summe und rechnen sie in einer neuen Spalte auf unsere Hauswährung um, in diesem Fall USD. Dabei verwenden wir die Funktion "currency_conversion" und versorgen diese mit den nötigen Informationen. Die Pflichtfelder (amount, source_currency, target_currency, exchange_Rate_date) kannst du entsprechend der Dokumentation entnehmen. Die Zielwährung hinterlegen wir fest und das Umrechnungsdatum übergeben wir als Parameter. Wird kein Wert übergeben, wird der aktuelle Tag übernommen. Entsprechend sieht das Ergebnis des Views nun aus:

 

Hinweis: Wir haben in der Funktion auch ein Error-Handling implementiert, wenn es zu einem Konvertierungsfehler kommt oder eine Währungsumrechnung mal nicht möglich ist, dann wird das Ergebnis auf Null gesetzt, so wie oben geschehen.

 

Menge

Die Umrechnung von Mengen funktioniert so ähnlich wie die für Währungen. Dazu definieren wir einen CDS View über der Material Tabelle und implementieren die Funktion "unit_conversion" die drei Pflichtfelder (quantity, source_unit, target_unit) hat.

@AbapCatalog.sqlViewName: 'ZBSCDMOMATCONV'
@EndUserText.label: 'Conversion for units'
define view ZBS_C_DmoMaterialConversion
  as select from ZBS_I_DmoMaterial
{
  key MaterialNumber,
      MaterialName,
      Stock,
      StockUnit,
      unit_conversion(
        quantity => Stock,
        source_unit => StockUnit,
        target_unit => cast( 'ST' as abap.unit( 3 ) ),
        error_handling => 'SET_TO_NULL'
      ) as UnitInPieces
}

 

Auch hier solltest du ein entsprechendes Fehlerhandling verwenden, da nicht jede Umrechnung funktionieren wird. Im Beispiel oben setzen wir die fehlerhaften Werte wieder auf Null.

 

Fazit

In diesem kleinen Aritkel wollten wir dir vor allem zeigen, dass du selbst für eine Umrechnung der Währung kein neues Programm anlegen musst, sondern alles in einem Core Data Service wiederverwendbar aufbereiten kannst.

 

Quelle:
SAP Dokumentation - Konvertierungsfunktionen


Enthaltene Themen:
CDSCore Data ServiceKonvertierungsroutine
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


DDIC der Zukunft (Vergleich)

Kategorie - ABAP

Wie geht es eigentlich mit dem DDIC in Zukunft weiter und können wir schon Heute die neuen Features für uns nutzen? In diesem Teil vergleichen wir die Welt von Heute mit der von Morgen und wo du alle Features findest.

03.07.2026

DDIC der Zukunft (Morgen)

Kategorie - ABAP

Wie geht es eigentlich mit dem DDIC in Zukunft weiter und können wir schon Heute die neuen Features für uns nutzen? In diesem Teil werfen wir ein Blick auf Morgen und wie uns CDS Artefakte bei der Modellierung helfen.

30.06.2026

DDIC der Zukunft (Heute)

Kategorie - ABAP

Wie geht es eigentlich mit dem DDIC in Zukunft weiter und können wir schon Heute die neuen Features für uns nutzen? In diesem Teil schauen wir auf den aktuellen Zustand des Dictionary in ABAP.

26.06.2026

CDS - Typisierte Literale

Kategorie - ABAP

Wie kannst du in einem Core Data Service eigentlich noch typgenauer arbeiten, wenn du ein Element im View erstellst? Dazu schauen wir uns die typisierten Literale an und wie sie dir im Alltag helfen können.

30.01.2026

RAP - CDS Pattern

Kategorie - ABAP

Wie geht eigentlich das CDS Pattern und was hat CDS-only damit zu tun? In diesem Artikel schauen wir auf die Architektur und Nutzung des Patterns.

28.11.2025