CDS-Views in ABAP nutzen, Pfade von Assoziationen

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
1 Beitrag • Seite 1 von 1
1 Beitrag Seite 1 von 1

CDS-Views in ABAP nutzen, Pfade von Assoziationen

Beitrag von rob_abc (ForumUser / 68 / 15 / 26 ) »
Hallo zusammen
ich setze mich seit Kurzem mit dem virtuellen Datenmodell (VDM) der SAP auseinander. Dort werden viele CDS-Views angeboten, die auch in ABAP-Programmen verwendet werden können. Eigentlich ganz praktisch nicht jede DB-Tabelle einzeln lesen zu müssen.

So habe ich zum Beispiel folgendes kleines Programm geschrieben:

Code: Alles auswählen.

SELECT
   plant,
   storagelocation,
   \_storagelocation-storagelocationname,
   \_storagelocation-handlingunitisrequired,
   product,
   batch,
   inventorystocktype,
   materialbaseunit,
   matlwrhsstkqtyinmatlbaseunit
 FROM i_stockquantitycurrentvalue_2( p_displaycurrency = 'EUR' )
 WHERE product = '4711'
   AND valuationareatype = '1' "BWKRS_CUS 1 = plant 3 = company code
INTO TABLE @DATA(l_db).

cl_demo_output=>display( l_db ).
Über die Assoziation _storagelocation, welche in i_stockquantitycurrentvalue_2 definiert ist, kann ich einfach Felder aus der t001l dazu lesen, ohne den join noch mal explizit angeben zu müssen. Funktioniert soweit wunderbar, wenn genau ein Eintrag gefunden wird.

Doch bei Texten, die es zu einem Material in mehreren Sprachen geben kann, oder halt auch gar nicht in der gewünschten Sprache, wird es schon schwerer.

Die Pfadangaben können um Restriktionen erweitert werden. Der Materialname wird in Englisch ausgegeben. Wenn es keinen Text auf Englisch gibt, bleibt das Feld leer. Ohne die Restriktion würde es pro gefundenen Text eine zusätzliche Zeile geben.

Code: Alles auswählen.

SELECT
   plant,
   storagelocation,
   \_storagelocation-storagelocationname,
   \_storagelocation-handlingunitisrequired,
   product,
   batch,
   inventorystocktype,
   materialbaseunit,
   matlwrhsstkqtyinmatlbaseunit,
   \_product\_text[ (1) left outer : WHERE language = 'E' ]-productname
 FROM i_stockquantitycurrentvalue_2( p_displaycurrency = 'EUR' )
 WHERE product = '4711'
   AND valuationareatype = '1' "BWKRS_CUS 1 = plant 3 = company code
INTO TABLE @DATA(l_db).

cl_demo_output=>display( l_db ).
Das komische ist nur, wenn ich

Code: Alles auswählen.

 \_product\_text[ (1) left outer : WHERE language = 'E' ]-productname 
nicht am Ende der Feldliste schreibe, bekomme ich einen Syntaxfehler. Ich darf kein Komma dahinter angeben. Die Hilfe lässt mich etwas ratlos zurück, finde zu der obigen Schreibweise nicht wirklich was. Ich würde gerne mehrerer dieser Angaben in einen Select machen und sie auch nicht nur am Ende angeben können. Nutze aktuell SAP_BASIS 758 SP 1.

Hat wer von euch damit Erfahrung? Wie löst ihr das Problem? Nutz ihr die von der SAP bereitgestellten CDS-Views? Wäre das Thema einfacher zu lösen, indem ich direkt einen neuen (consumption) CDS-View auf Basis des Obigen erstelle anstatt es mit open sql zu lösen?

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


Seite 1 von 1

Vergleichbare Themen

2
Antw.
2452
Views
TLB-Funktionalitäten in ABAP nutzen
von Johann » 17.10.2005 11:44 • Verfasst in ABAP® für Anfänger
3
Antw.
854
Views
CDS Views WHERE
von retsch » 01.03.2023 19:11 • Verfasst in ABAP® für Anfänger
6
Antw.
1132
Views
RAP und CDS Views
von retsch » 19.01.2023 09:30 • Verfasst in ABAP® für Anfänger
2
Antw.
5260
Views
CDS Views
von SAP_ENTWICKLER » 04.09.2018 11:56 • Verfasst in Development Related

Über diesen Beitrag

rob_abc

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

Aktuelle Forenbeiträge

Neue Themen als SAP Entwickler
vor 3 Stunden von ralf.wenzel 84 / 6706
Mail versenden in ABAP - Status in SOST
vor 6 Stunden von PeterPaletti gelöst 3 / 79

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.