Class kennt eigene Methode nicht

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

Class kennt eigene Methode nicht

Beitrag von HH_ABAP (Specialist / 262 / 144 / 1 ) »
Hallo,

ich habe eine Klasse definiert und implementiert.

Ich möchte die Methode start_excel( ) aus der klasse aufrufen aber klappt es nicht.

Ich habe festgestellt, wenn ich die Klasse ganz unten definiere, implementiere und oben die Methode aus der Klasse aufrufen möchte, geht es nicht.

Ist es so im SAP/ABAP, dass klasse sollte zu erst (oben) definiert/implementiert werden? wenn ja, wie kann ich das Problem lösen?

Bitte siehe den Screenshot.

Danke im Voraus!
VG

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


Re: Class kennt eigene Methode nicht

Beitrag von ewx (Top Expert / 4843 / 310 / 638 ) »
entweder packst du Definition der Klasse vor die Datendefinitionen oder du gibst vor den Datendefinitionen ein:

Code: Alles auswählen.

CLASS lcl_alv_grid DEFINITION DEFERRED.
ein.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
HH_ABAP


Re: Class kennt eigene Methode nicht

Beitrag von DeathAndPain (Top Expert / 1934 / 253 / 410 ) »
Ja, das ist eine Schwäche von OO, dass es relevant ist, wo im Code die Klassen- und Methodendefinitionen stehen. Völlig sinnlose Einschränkung; schon bei den alten Formroutinen war das völlig egal, aber gehört halt zum bürokratischen Wasserkopf von ABAP OO.

Re: Class kennt eigene Methode nicht

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
DeathAndPain hat geschrieben:
08.05.2023 20:42
Ja, das ist eine Schwäche von OO, dass es relevant ist, wo im Code die Klassen- und Methodendefinitionen stehen.
Eine Schwäche von ABAP OO, nicht von OO generell.
DeathAndPain hat geschrieben:
08.05.2023 20:42
Völlig sinnlose Einschränkung; schon bei den alten Formroutinen war das völlig egal, aber gehört halt zum bürokratischen Wasserkopf von ABAP OO.
Wenn man Java als Vergleich nimmt, sieht man wie es besser lösbar gewesen wäre. ABAP hat sich da scheinbar von C++ mit seinen Header-Files "inspirieren" lassen.
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: Class kennt eigene Methode nicht

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
DeathAndPain hat geschrieben:
08.05.2023 20:42
Ja, das ist eine Schwäche von OO, dass es relevant ist, wo im Code die Klassen- und Methodendefinitionen stehen. Völlig sinnlose Einschränkung; schon bei den alten Formroutinen war das völlig egal, aber gehört halt zum bürokratischen Wasserkopf von ABAP OO.
Es war auch bei den Form-Routinen nicht egal. Der ABAP Compiler ist wie viele Compiler zeilen-orientiert. Die Deklaration muss also immer vor der Verwendung kommen.

Viele wissen nicht mal , das in ein TOP Include die Report Anweisung gehört. Denn das ist eine Besonderheit bei ABAP. Es wird zuerst nach einem Include mit _TOP am Ende gesucht. Dies wird vor dem Ereignis LOAD-OF-PROGRAM immer zuerst gelesen. Egal wo es steht. Danach werden die Includes in der Reihenfolge abgearbeitet wie sie im Code stehen. Die meisten folgen der Empfehlung von SAP, weswegen es kaum auffällt. Wenn du die Inklude Reihenfolge mal änderst erfreut dich der Compiler mit zahlreichen Fehlern.
Zuletzt geändert von gtoXX am 08.05.2023 23:34, insgesamt 3-mal geändert.
"Code lügt nicht ^^"

Re: Class kennt eigene Methode nicht

Beitrag von gtoXX (Specialist / 213 / 44 / 36 ) »
a-dead-trousers hat geschrieben:
08.05.2023 22:55
DeathAndPain hat geschrieben:
08.05.2023 20:42
Ja, das ist eine Schwäche von OO, dass es relevant ist, wo im Code die Klassen- und Methodendefinitionen stehen.
Eine Schwäche von ABAP OO, nicht von OO generell.
DeathAndPain hat geschrieben:
08.05.2023 20:42
Völlig sinnlose Einschränkung; schon bei den alten Formroutinen war das völlig egal, aber gehört halt zum bürokratischen Wasserkopf von ABAP OO.
Wenn man Java als Vergleich nimmt, sieht man wie es besser lösbar gewesen wäre. ABAP hat sich da scheinbar von C++ mit seinen Header-Files "inspirieren" lassen.
Ich bin gespannt wie Du in Java eine Routine aufrufst, die du nicht vorher per Bibliothek gelinkt hast. Den Laufzeitfehler hast du garantiert gewonnen. Im Gegenteil ABAP arbeitet da exakt wie Java.
"Code lügt nicht ^^"

Re: Class kennt eigene Methode nicht

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
gtoXX hat geschrieben:
08.05.2023 23:29
a-dead-trousers hat geschrieben:
08.05.2023 22:55
DeathAndPain hat geschrieben:
08.05.2023 20:42
Ja, das ist eine Schwäche von OO, dass es relevant ist, wo im Code die Klassen- und Methodendefinitionen stehen.
Eine Schwäche von ABAP OO, nicht von OO generell.
DeathAndPain hat geschrieben:
08.05.2023 20:42
Völlig sinnlose Einschränkung; schon bei den alten Formroutinen war das völlig egal, aber gehört halt zum bürokratischen Wasserkopf von ABAP OO.
Wenn man Java als Vergleich nimmt, sieht man wie es besser lösbar gewesen wäre. ABAP hat sich da scheinbar von C++ mit seinen Header-Files "inspirieren" lassen.
Ich bin gespannt wie Du in Java eine Routine aufrufst, die du nicht vorher per Bibliothek gelinkt hast. Den Laufzeitfehler hast du garantiert gewonnen. Im Gegenteil ABAP arbeitet da exakt wie Java.
Sorry, du hast natürlich recht. Ich bezog mich auf die DECLARATION/IMPLEMENTATION Trennung und damit darauf, dass immer zuerst die Deklaration kommen muss bevor man etwas aufrufen kann. Auch wenn ich mich im selben Report bewege. In Java ist es hingegen egal in welcher Reihenfolge in einer Datei die Klassen definiert sind (wenn man sie nicht in mehreren Dateien getrennt definiert). Bei Bibliotheken oder Objekten aus anderen Dateien muss natürlich zuerst die IMPORT-Anweisung stehen.
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: Class kennt eigene Methode nicht

Beitrag von DeathAndPain (Top Expert / 1934 / 253 / 410 ) »
gtoXX hat geschrieben:
08.05.2023 23:27
DeathAndPain hat geschrieben:
08.05.2023 20:42
Ja, das ist eine Schwäche von OO, dass es relevant ist, wo im Code die Klassen- und Methodendefinitionen stehen. Völlig sinnlose Einschränkung; schon bei den alten Formroutinen war das völlig egal, aber gehört halt zum bürokratischen Wasserkopf von ABAP OO.
Es war auch bei den Form-Routinen nicht egal. Der ABAP Compiler ist wie viele Compiler zeilen-orientiert. Die Deklaration muss also immer vor der Verwendung kommen.
Das halte ich für ein Gerücht. Seit ein paar Monaten bin ich auf Methoden umgestiegen, weil die zwar aufwendiger anzulegen, aber unendlich viel übersichtlicher aufzurufen sind, aber in all meinen alten Programmen lautet die Reihenfolge Variablendeklaration, (ggf.) Selektionsbild, START-OF-SELECTION-Block mit den PERFORMs der höchsten Aufrufebene und dahinter dann die Formroutinen. Bedeutet, dass die Formroutinen immer hinter der Stelle stehen, von der sie aufgerufen werden. Versuch das mal mit einer Methode, wenn nicht zumindest deren DEFINITION-Block vor der Aufrufstelle steht. Da reicht noch nicht mal die DEFINITION DEFERRED-Krücke; die macht nur die Typdefinitionen der Klasse zugänglich, soweit ich mich erinnere.
Viele wissen nicht mal , das in ein TOP Include die Report Anweisung gehört. Denn das ist eine Besonderheit bei ABAP. Es wird zuerst nach einem Include mit _TOP am Ende gesucht. Dies wird vor dem Ereignis LOAD-OF-PROGRAM immer zuerst gelesen. Egal wo es steht. Danach werden die Includes in der Reihenfolge abgearbeitet wie sie im Code stehen.
Dann müsste ja das INCLUDE programmname_TOP im Hauptprogramm zu einem Compilerfehler führen, wenn der das TOP-Include eigenständig vorher schon einbinden würde.
Die meisten folgen der Empfehlung von SAP, weswegen es kaum auffällt. Wenn du die Inklude Reihenfolge mal änderst erfreut dich der Compiler mit zahlreichen Fehlern.
Das TOP-Include enthält die ganzen Typ- und globalen Felddefinitionen. Welches Include sollte irgendwer früher als das aufrufen wollen?

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2355
Views
Klasse CL_REST_HTTP_CLIENT kennt PATCH-Methode nicht - was tun?
von DeathAndPain » 29.04.2020 19:44 • Verfasst in ABAP® Core
5
Antw.
6721
Views
Abstrakte Methode im Class Builder anlegen
von jay-tee » 18.12.2006 14:22 • Verfasst in ABAP Objects®
1
Antw.
2158
Views
SAP kennt die Zukunft?!
von ChrisB » 31.10.2012 14:14 • Verfasst in SAP - Allgemeines
1
Antw.
1517
Views
Kennt jemand se37-web?
von stoi » 01.07.2005 12:06 • Verfasst in SAP - Allgemeines
0
Antw.
1239
Views
Kennt sich jemand mit Netzplänen aus ???
von scott111 » 26.05.2006 10:42 • Verfasst in Dialogprogrammierung

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.