Folgende Benutzer bedankten sich beim Autor sap_enthusiast für den Beitrag:
Nion
Gibt ja auch noch EXPORTING, CHANGING- und IMPORTING-Parameter.
Code: Alles auswählen.
CLASS hahaha DEFINITION.
whatever SECTION.
TYPES: BEGIN OF type_return_structure,
return_table_1 TYPE t_table1,
return_table_2 TYPE t_table2,
END OF type_return_structure.
METHODS bla RETURNING return_structure TYPE type_return_structure.
Sagt wer? Der Tabellentyp muss nur bekannt sein. Entweder im DDIC, oder Du deklarierst ihn einfach im DEFINITION-Block der Klasse; dann steht er klassenweit zur Verfügung. (Gibt noch andere Orte, wo man ihn definieren kann, aber die genannten reichen ja schon.)Ich wüsste, wie ich das mit einem normalen Returning-Parameter machen könnte, aber 1. kann ich da ja keinen Tabellentypen deklarieren
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Nion
Ja, da hab ich mich falsch ausgedrückt bzw Informationen unterschlagen.Sagt wer? Der Tabellentyp muss nur bekannt sein. Entweder im DDIC, oder Du deklarierst ihn einfach im DEFINITION-Block der Klasse; dann steht er klassenweit zur Verfügung. (Gibt noch andere Orte, wo man ihn definieren kann, aber die genannten reichen ja schon.)
Welcome to ABAP I guess :D
Folgende Benutzer bedankten sich beim Autor sap_enthusiast für den Beitrag:
Nion
In der Schnittstelle Tabellen anhand von Strukturen zu definieren ist bei der SAP bereits in Funktionsbausteinen "obselete". Darum wurde das in Klassen gar nicht erst erlaubt.
Direkt in der Schnittstelle der Methode im Quellcodebasierten Editor? Das sollte meines Wissens nicht gehen. Ansonsten klar, beim Anlegen von Typen geht das, aber eben nur im Quellcode. Aber da kann man den Typ dann teilweise nicht als RETURNING verwenden. Ich glaube, der muss public sein?
Du kannst den Typ einfach im DEFINITION-Block der Klasse definieren. Die PUBLIC SECTION muss es nur sein, wenn die aufrufende Methode nicht auch zur Klasse gehören soll; ansonsten kannst Du die Typdeklaration sogar in die PRIVATE SECTION packen. In Eclipse gibt es bei Klassen auch noch Tabreiter "Class-relevant Local Types" und "Local Types". Zumindest in ersteren kann man die Typdeklaration auch reinpacken. Wo Eclipse das dann physisch versteckt, bin ich gerade nicht sicher.msfox hat geschrieben: ↑12.09.2023 11:13Direkt in der Schnittstelle der Methode im Quellcodebasierten Editor? Das sollte meines Wissens nicht gehen. Ansonsten klar, beim Anlegen von Typen geht das, aber eben nur im Quellcode. Aber da kann man den Typ dann teilweise nicht als RETURNING verwenden. Ich glaube, der muss public sein?
Das halte ich für einen ideologischen Ansatz. In der Praxis halte ich Strukturen für bedeutend nachvollziehbarer als Objekte, insbesondere wenn man die Klasse nicht selber geschrieben hat und im Debugger ergründen möchte, was da passiert. Bei Objekten braucht man im Grunde eine extrem gute und detailreiche Dokumentation, die real kein Schwein schreibt. Andernfalls weiß man nicht, wofür genau die Attribute des Objektes stehen, wo ihre Werte herkommen und wo sie hingehen. Das hängt damit zusammen, dass Attribute im Grunde nichts anderes sind als globale Variablen längst vergangener Zeiten, mit allen damit zusammenhängenden Nachteilen.Wenn du es wirklich richtig, richtig machen willst, nimmst du statt Strukturen Objekte, so wie in anderen Programmiersprachen auch. JAVA z.B. kennt keine Strukturen. Hat auch nur einen Return-Parameter, der ein Objekt oder ein einfacher Datentyp ist.
Aber nur in ABAP. In JAVA stellt sich die Frage nach dem Ansatz nicht.
Das hier ist das ABAPforum. Daher ist D&Ps Anmerkung durchaus relevant.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
DeathAndPain