Exceptionhandling

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Exceptionhandling

Beitrag von john_doe (ForumUser / 12 / 0 / 0 ) »
Guten Morgen allerseits!

Ich habe mich in den letzten Tagen ein wenig mit Abap-Objects beschäftigt und habe folgendes Problem:

Gleich vorweg, ich entwickle auf einem 4.6c System, möglicherweise sind diverse Konzepte hier noch nicht implementiert, keine Ahnung... ;-)

Jedenfalls wollte ich einen von mir geschriebenen Report nochmals mittels ABAP Objects realisieren.

Habe diverse Klassen angelegt, mit den dazugehörigen Accessor - Methoden und Konstruktoren.
Leider ist es etwas umständlich, denn ich konnte z.b die Getter/Setter nicht wie von Eclipse gewohnt generieren lassen.
Und Collections bzw ein Array für Objekte hab ich auch nicht entdeckt, habe einen Tabellentyp angelegt um mehrere Objekte in einem Attribut speichern zu können.

Es ist mir aber irgendwie nicht möglich ein vernünftiges Exceptionhandling zu implementieren, mit try - catch Blöcken und dergleichen.

Deswegen wollte ich mal fragen wie ihr denn die Fehlerbehandlung verwirklicht!
Und, wenn wir schon dabei sind, bevor ichs ausprobiere, funktioniert method-overloading in abap objects?

Vielen Dank und lG,
john

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


Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Tach.

Exception-Handling:
Du legst in der Schnittstelle der Methode, die eine Ausnahme auslösen soll eine Exception an. Diese löst Du im Coding mittels RAISE oder (besser) MESSAGE...RAISING aus. Beim Aufrufer fängst Du dann die Ausnahmen ab. Wird eine Ausnahme ausgelöst wird SY-SUBRC gesetzt, auf den Du dann reagieren kannst.
Du kannst Dir über "Muster" einen derartigen Methoden-Aufruf in Deinen Code generieren lassen, dann wird das Vorgehen vielleicht klarer.
Ausnahme-Klassen gibt es zu 4.6C noch nicht, die sind IMHO ab Release 6.20 verfügbar.

Method-Overloading:
Funzt nur beim Constructor, ansonsten nicht.

Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo auch,

mindestens im 4.7 funktioniert das Method-Overloading, heißt aber in SAP-Jargon 'Redefinition' und wird in lokalen Klassen mit REDEFINING <Master-Methode> benutzt.

Im Class-Browser setzt man seinen Cursor auf die entsprechende Methode und wählt in der Button-Leiste den entsprechenden Button (steht ziemlich weit rechts). Damit wird dann im Editor die Methode auch zum auscodieren geöffnet.

PS:
Die Schnittstelle läßt sich nur durch optionale Parameter erweitern.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Tach.

@ereglam:
Das Erweitern der Methode durch eigenes Coding kenne ich als Redefinition. Overloading ist IMHO die Änderung der Schnittstelle.

Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
hm..., sollte ich mich da vertan haben... ???

Scheint so: mea culpa.

Wobei, durch die Abfragemöglichkeit IS SUPPLIED kann man sich immerhin auf die tatsächlich übergebenen Parameter beschränken.
Die Schnittstelle muss aber trotzdem alle Parameter in einer einzigen Definition enthalten. Damit ist es kein 'echtes' Overloading.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von john_doe (ForumUser / 12 / 0 / 0 ) »
@haubi:
Vielen Dank, werd mir diese RAISE Geschichte mal ansehen!
:-)

@ereglam:
Denke du meinst hier eher das überschreiben von Methoden, überladen wäre eine unterschiedliche Parameteranzahl bei gleichem Methodennamen.

Beitrag von john_doe (ForumUser / 12 / 0 / 0 ) »
@haubi
>>Method-Overloading:
>>Funzt nur beim Constructor, ansonsten nicht.

Naja, bei mir funktioniert das scheibar nicht wirklich, falls ich einen zweiten Constructor anlegen möchte macht der mich darauf aufmerksam das schon einer vorhanden ist.

Bei den Parametern besteht die Möglichkeit optional auszuwählen, dann könnte ich die Parameter im Constructor abfragen und darauf reagieren, allerdings hat das nichts mit überladen zu tun.

:-(

Java rulez! :-P

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Hi John.

Sry, hab mich falsch ausgedrückt. Es funzt beim Konstruktor insofern, als dass ich bei der Ableitung zusätzliche obligatorische Parameter festlegen kann.

Was die OO-Techniken angeht hat ABAP noch einiges zu lernen... ;)

Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Seite 1 von 1

Über diesen Beitrag


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

Aktuelle Forenbeiträge

LSMW-Problem
vor 2 Tagen von mazu gelöst 5 / 987
ATC Finding in Smartforms
vor 6 Tagen von sap_enthusiast 2 / 958

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

LSMW-Problem
vor 2 Tagen von mazu gelöst 5 / 987
ATC Finding in Smartforms
vor 6 Tagen von sap_enthusiast 2 / 958

Unbeantwortete Forenbeiträge

SFP/SEGW - Fehler beim Rendering
letzen Monat von Manfred K. 1 / 86505
Benutzerdefinierte Felder PSP
January 2026 von Rabea1103 1 / 139765