
ABAP Tipp - Generische Datentypen
Was unterscheidet eigentlich CLIKE von CSEQUENCE? Generische Typen können manchmal etwas undurchsichtig sein und als ABAP Entwickler wählen wir vielleicht den Typen zu generisch.
Inhaltsverzeichnis
In diesem Artikel schauen wir uns das Thema generische Datentypen an und wie du damit in Zukunft recht einfach umgehen kannst, um den perfekten Typen für dich zu finden.
Einleitung
Was sind eigentlich generische Datentypen? Hierbei handelt es sich um eine Zusammenfassung von verschiedenen Basistypen zu einer Oberkategorie. Definierst du zum Beispiel einen Übergabeparameter damit, dann kannst du bestimmte Datentypen an die Schnittstelle übergeben, ohne vorher eine Konvertierung durchführen zu müssen. Passt dann einmal ein Typ nicht zur Obergruppe, dann siehst du das bereits durch den Compiler hervorgehoben.
Generische Typen
Die verschiedenen generischen Typen lassen sich in verschiedene Unterkategorien einteilen, die wir uns einmal in diesem Kapitel anschauen. Grundsätzlich findest du eine schöne Übersicht in der SAP Help (siehe Link unten).
Elementar
Elementare Datentypen gibt es in ABAP zahlreich, vom Character, über das Datum bis zum String ist eine große Palette an Typen vertreten. Daher gibt es hier auch die Großzahl der generischen Typen. Dabei bilden die Typen Gruppen von elementaren Datentypen ab, die du dann bei der Schnittstelle verwenden kannst. Um nun auf die Eingangsfrage zurückzukommen, was ist eigentlich der Unterschied zwischen CLIKE und CSEQUENCE?
- CSEQUENCE - Mögliche Typen sind C und STRING.
- CLIKE - Mögliche Typen sind C und STRING, aber auch D (Datum), T (Zeit) und N (Nummerischer Character).
Würdest du dir unter CLIKE auch ein Datum oder eine Uhrzeit vorstellen? Könnte bei der Verarbeitung zu Problemen führen und vielleicht doch eher CSEQUENCE anschauen, wenn du eigentlich Texte erhalten wolltest.
Weitere generische Typen fassen die verschiedenen Zahlen zusammen, wie zum Beispiel DECFLOAT oder NUMERIC. Ist es dir am Ende eigentlich egal und du willst einen Basistypen erhalten, dann kannst du auch SIMPLE verwenden.
Komplex
Unter den komplexen Typen werden Strukturen, Tabellen und Meshes zusammengefasst. Generisch wird es hier vor allem bei den verschiedenen Typen von Tabellen. Da der Zugriff auf die verschiedenen Typen unterschiedlich sein kann, gibt es hier spezifische Type und Zusammenfassungen. Zum Beispiel wird unter INDEX TABLE die Tabellen des Typs Standard und Sorted zusammengefasst, da du bei diesen Beiden mit einem numerischen Index zugreifen kannst.
DATA(selected_entry) = table[ 1 ].
Ist dir dann zum Beispiel die Art der Tabelle egal, dann kannst du auch ANY TABLE angeben und damit können alle Arten von Tabellen an deine Schnittstelle übergeben werden.
Objekt
Eine der einfachsten Arten sind die Objekte, hier gibt es im Grunde nur die Klasse und das Interface, die hier darunter fallen. In den meisten Fällen gibst du das Interface in der Schnittstelle an, da du hier sowieso verschiedene Klassen mappen kannst, die das Interface implementieren. Möchtest du alle Arten von Objekten zulassen, die sich nicht die gleiche Grundklasse oder das gleiche Interface teilen, dann kannst du OBJECT verwenden.
Generisch
Möchtest du alles zulassen, dann steht dir ANY oder DATA zur Verfügung. Aber Vorsicht, da nun alle Arten an Daten übergeben werden können, musst du damit auch umgehen können. Sonst solltest du dich dazu entschließen einen spezifischeren Typen zu verwenden.
ABAP Generic Types
Wir hatten nun über die verschiedenen generischen Datentypen gesprochen, doch wie sieht es nun eigentlich mit der Anwendung und Nutzung aus. Grundsätzlich solltest du nicht zu generisch arbeiten, also gleich ANY verwenden, wenn du eigentlich nur Texte zulassen willst. Dafür stellen wir dir ein kleines Tool auf der Webseite zur Verfügung: ABAP Generic Types. Im Tool wählst du die Datentypen die deine Methode zum Beispiel unterstützen soll.
Nach der Ausführung bekommst du eine Liste der möglichen Datentypen vom spezifischsten Typen zum allgemeinen Typen. Damit siehst du auf den ersten Blick, welcher generische Datentyp sich für dein Szenario eignet und was du darüber aber auch erhalten könntest.
Hinweis: Willst du einfach eine Übersicht haben, kannst du das Tool auch ohne Einschränkung ausführen. Dann bekommst du eine Liste aller generischen Datentypen und der Zuordnung.
Vollständiges Beispiel
Das vollständige Beispiel des Testprogramms findest du im GitHub Repository, wo auch die Konfiguration für das Tool liegt. Möchtest du etwas mit den Typen experimentieren, schau gern in diese Klasse.
Fazit
Über die Dokumentation und unser Tool solltest du nun die richtige Auswahl für dich treffen können. Im nächsten Projekt sollte damit der Scope für die Übergabe passen und du keine Überraschungen oder Abbrüche erhalten.
Quelle:
SAP Help - Types and Objects

