lokale klasse in include verwenden

Getting started ... Alles für einen gelungenen Start.
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

lokale klasse in include verwenden

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Hallo zusammen,

ich hätte eine lokale Klasse in einem Include erstellt. Nun würde ich gerne von dieser Klasse aus eine Klassenmethode aufrufen und zwar in einem anderen Include welcher die Ereignisblöcke Start-of-Selection usw. enthält. Ich möchte also eine Klassenmethode darin nach End-of-Selection aufrufen. Ich erhalte dabei aber immer die Fehlermeldung, dass die Typ der Klasse unbekannt sei (außerhalb der Sichtbarkeit?). Weiß einer wie man dieses Problem vielleicht beheben kann?

Vielen Dank im Voraus.

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


Re: lokale klasse in include verwenden

Beitrag von a-dead-trousers (Top Expert / 4276 / 213 / 1140 ) »
Das Include mit dem Definition-Teil deiner Klasse muss VOR dem Include mit dem End-of-Selection inkludiert werden.
Das Include mit dem Implementation-Teil deiner Klasse muss NACH dem Include mit dem End-of-Selection inkludiert werden.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: lokale klasse in include verwenden

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
a-dead-trousers hat geschrieben:
03.02.2024 17:55
Das Include mit dem Implementation-Teil deiner Klasse muss NACH dem Include mit dem End-of-Selection inkludiert werden.
Warum sollte das nötig sein? Wenn das Klassen-Include nacheinander DEFINITION und IMPLEMENTATION enthält (oder beides in verschiedenen INCLUDEs) und alles vor END-OF-SELECTION inkludiert wird, sollte das problemlos funktionieren. Das ist eine Frage persönlichen Stils, wie man das gliedern möchte, damit es übersichtlich ist. Der Ansatz, ein Include für eine bestimmte Klasse zu bauen, wo dann alles von dieser Klasse drin ist (DEFINITION und IMPLEMENTATION) ist sicher nicht alternativlos, aber auf der anderen Seite durchaus eine Option. Die Aufteilung von Klassen in DEFINITION und IMPLEMENTATION-Block hat ja ohnehin nur akademische Hintergründe und ist aus praktischen Gesichtspunkten nachteilhaft (wobei der wesentlichste Nachteil darin besteht, dass die Schnittstelle einer Methode nicht mehr dort im Code zu finden ist, wo der Code der Methode steht. Das ist bei FORM-Routinen anders und bei Funktionsbausteinen effektiv auch, weil ABAP bei diesen automatisch einen entsprechenden Kommentar am Beginn des Bausteins einfügt und diesen auch stets aktuell hält).

Aber das ist halt auch so ein unnötiger Mist bei Klassen, dass der ABAP-Interpreter prüft, wo sie stehen. FORM-Routinen können stehen, wo sie wollen - solange sie irgendwo im Programm existieren, werden sie gefunden. Ich verstehe nicht, weshalb das bei Klassen und ihren Methoden nicht auch möglich sein soll. Dann bräuchte man auch nicht mehr die idiotische DEFINITION DEFERRED-Klausel. Wenn in modernen Programmen die Reihenfolge der Zeilenblöcke wieder eine Rolle spielt, dann kann man gleich wieder den ollen GOTO-Befehl aus Basic einführen.

@L0w-RiDer: Grundsätzlich hat Dein Problem mit Includes nichts zu tun. Includes verhalten sich exakt so, als ob ihr Inhalt dort stehen würde, wo sie aufgerufen werden. Du könntest also mit Copy&Paste den Inhalt des Includes ins Hauptprogramm kopieren und den INCLUDE-Befehl damit ersetzen; der Effekt wäre syntaktisch derselbe. Auf diesem Hintergrund musst Du schauen, dass der DEFINITION-Block der Klasse vor der ersten Benutzung derselben steht. Wie Du das dann in Includes aufteilst, um Dein Programm übersichtlicher zu gliedern, ist eine andere Frage und Dir überlassen.

Re: lokale klasse in include verwenden

Beitrag von L0w-RiDer (Expert / 535 / 83 / 2 ) »
Hallo zusammen,

vielen Dank für eure Infos.

Die Lösung war tatsächlich ganz einfach. Das Include mit der Klasse musste vor dem Include mit den Ereignisblöcken gesetzt werden und dann hat es funktioniert.

Seite 1 von 1

Vergleichbare Themen

1
Antw.
2018
Views
Lokale Klasse autom. in globale Klasse ändern
von JohnLocklay » 09.01.2019 09:10 • Verfasst in ABAP Objects®
5
Antw.
201
Views
INCLUDE in Textbaustein verwenden
von Bright4.5 » 30.01.2024 13:18 • Verfasst in ABAP® für Anfänger
6
Antw.
3407
Views
Lokale Klasse importieren
von ewx » 16.04.2013 19:33 • Verfasst in ABAP Objects®
12
Antw.
6850
Views
Lokale Klassendefinition in globaler Klasse
von ewx » 23.11.2017 21:52 • Verfasst in ABAP Objects®
10
Antw.
2417
Views
Lokale Klasse in zwei Dynpros
von Aba » 15.02.2018 16:43 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 73

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.

Aktuelle Forenbeiträge

PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 73

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 132
Group Items auf einer Filterbar
vor 4 Wochen von Bright4.5 1 / 166