Fehlermeldung in einer Klasse

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
15 Beiträge • Seite 1 von 1
15 Beiträge Seite 1 von 1

Fehlermeldung in einer Klasse

Beitrag von Nicolas_ ( / / 0 / 3 ) »
Hei Leute

Ich habe ein problem mit Fehlermeldungen in einer Klasse.

In meiner Klasse benutze ich eine Nachrichtenklasse. Ich programmiere die message den etwa so: message e000 with 'Fehler bei xyz'. Fehler zeigt er mir beim programmierern nich an. erst wenn das programm läuft und auf diesen befehl stösst, bricht es ab und geht in das StartMenu von SAP zurück!

Kennt jemand von euch das auch? was kann man dagegen tun?

Ich habe von fehlerklassen gehört, jedoch sind di erst ab release 6.1 verfügbar(soweit ich weis). ich arbeite noch mit 46B.

Danke für eure Hilfe

grüsse
nicolas

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


Beitrag von Thomas R. (Expert / 766 / 83 / 40 ) »
Hallo Niclas,
das Verhalten erscheint auf den ersten Blick korrekt. Du gibst ja eine Fehermeldung (E) aus. Mit einem I000 sollte das Programm nicht abbrechen.
Lies doch einfach die F1-Hilfe zu message
MfG
Thomas R.

ich meine etwas anderes

Beitrag von Nicolas_ ( / / 0 / 3 ) »
ja das ist mir klar, mit einer 'e' meldung gebe ich einen Fehler aus. das ist genau das was ich auch möchte..... Aber, jetzt kommt das problem, wenn ich das Programm laufen lasse kommt nicht nur eine Fehlermeldung und beendet den momentanen ablauf. sondern er geht ins START-MENÛ, also das Einstiegsmenu von SAP zurück, dabei sollte er bei einer 'e' meldung nur den momentanen ABlauf abbrechen.

Bei der programmausführug habe ich nur problemme mit den Error-Mitteilungen in den Klassen, alle anderern mitteilungen in unterprogrammen, etc ... funktionieren.

könnt ihr mir vieleicht da ein tipp geben?

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Das Symptom deutet eher darauf hin, dass die E-Message zum PBO-Zeitpunkt ausgegeben wird.
Lies doch mal die F1-Hilfe zu Message, wie bereits vorgeschlagen.

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

Es könnte sein, daß man in Klassen keine Messages ausgeben darf...

mfg.
babap

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
babap hat geschrieben:Es könnte sein, daß man in Klassen keine Messages ausgeben darf...
Es könnte auch sein, dass Du ebenfalls mal die F1-Hilfe zu MESSAGE lesen solltest.

SCNR, Frank

F1-Hilfe

Beitrag von Nicolas_ ( / / 0 / 3 ) »
In der F1 hilfe steht nichts spezielles über den Umgang mit Klassen. Sie habend dort eine Tabelle erstellt wie sich fehlermeldungen in welchem programabschnitt(pbo,pai, etc) verhalten, jedoch sind klassen in dieser Liste nicht vorhanden.

Gibt es den vieleicht eine Fehlerklasse in rel 4.6B ?

gruss

nicolas

Re: F1-Hilfe

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Nicolas_ hat geschrieben:In der F1 hilfe steht nichts spezielles über den Umgang mit Klassen. Sie habend dort eine Tabelle erstellt wie sich fehlermeldungen in welchem programabschnitt(pbo,pai, etc) verhalten, jedoch sind klassen in dieser Liste nicht vorhanden.
Und in welchem Kontext wird die Methode aufgerufen, die die E-Message erzeugt?
(Break-Point auf die Message-Anweisung, Beim Erreichen der Message-Anweisung den ABAP-Callstack ansehen.)
Das Symptom, dass die E-Message zu einen Abbruch führt, deutet auf den PBO-Zeitpunkt eines Dynpros (bzw. AT SELECTION-SCREEN OUTPUT eines Selektionsdynpros) hin und hat m.E. nichts damit zu tun, dass die E-Message in einer Klasse erzeugt wird.
Deswegen empfahl ich ja, die F1-Hilfe zu Message zu lesen.

Oder wird die Message gar nicht angezeigt (weder als Popup noch in der Status-Zeile), bevor das Programm beeendet wird?
Gibt es den vieleicht eine Fehlerklasse in rel 4.6B ?
Parse error

Re: F1-Hilfe

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Frank Dittrich hat geschrieben: Parse error
LOL
Das ABAP Kochbuch ab sofort bei Amazon...

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

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

sorry, war wohl etwas abwesend.

Ich gebe in Klassen Meldungen aus und zwar immer in der vollständigen Form

-->MESSAGE S711(AB01).

das geht!

Ich lasse die Message immer vom "MUSTER"-Button einfügen, der macht das alles mit.

Die Kurzform MESSAGE S711 geht auf jeden Fall dann, wenn das Programm die Nachrichtenklasse kennt z.B. aus der REPORT-Anweisung.

E-Meldungen gebe ich immer in eine Variable aus, oder mit RAISING "irgendwas", von daher weiß ich nicht, was dann passiert.

mfg.
babap

Re: Fehlermeldung in einer Klasse

Beitrag von ralf.wenzel (Top Expert / 3996 / 208 / 282 ) »
Ich bin gerade zufällig darauf gestoßen und kann (fürs Protokoll) von dem gewählten Verhalten NUR abraten. Mit der Anweisung MESSAGE verliert man komplett die Kontrolle über das Programmverhalten an SAP.

Was viel sinnvoller ist: Fehler per Fehlerklasse abfangen und "nach oben" durchreichen bis in den UI-Part der Anwendung und DORT die Fehler mit allen "previus"-Fehlern auspacken und als Protokoll ausgeben.

Bei mir erhält der Anwender ein Protokoll oder eine Mail mit folgendem Text:

Betreff: Fehler bei Druck des Versicherungsscheins von PERNR .....

Mailtext:
Es wurde ein Fehler beim Druck von Versicherungsscheinen festgestellt.
Der Versicherungsschein .... von PERNR ... konnte nicht gedruckt werden .
Die Datenermittlung zum Versicherungsschein ist fehlerhaft.
Es wurde ein Fehler im Customizing gefunden.
In der Tabelle ... fehlt ein Eintrag ... zu ....

Wie geht das? In der DAO-Klasse weiß ich genau, welcher Eintrag nicht gefunden wurde - das gebe ich in eine Fehlerklasse in die rufende Methode. Sie kennt aber nicht den Kontext (Versicherungsschein-Druck und den Versicherten).
Die rufende Methode fängt den Fehler ein, speichert ihn in "previous" und stellt fest: Das ist ein Customizing-Fehler (es könnten ja auch fehlende Daten sein). In jedem Falle ist es ein Fehler in der Datenermittlung - das stellt wiederum die rufende Methode fest.

Und JETZT bin ich im Versicherungsscheindruck und kann den Kontext dazuschreiben (dass es eben der Versicherungsschein-Druck ist und um welchen Versicherten es geht). Immer mit allen vorherigen Fehlern als "previous".
Danach ein Loop über den "geschachtelten" Fehler, Ausgabe des Textes in ein Protokoll oder eine Mail und ab dafür.

So weiß der Anwender sehr genau, was fehlt und wenn er technisch unbedarft ist, wendet er sich an den Techniker für den Versicherungsscheindruck, das bin in diesem Falle ich. Ich kann ihm genau erklären, warum er was im Customizing sucht, OHNE den Debugger zu bemühen.

Übrigens ist es IMMER eine schlechte Idee, eine reine "&"-Meldung zu "missbrauchen" (so verstehe ich den OP), weil man so über den Verwendungsnachweis nie findet, wo der Fehler aufgetreten ist. WENN schon Meldungen, dann bitte für jeden Fehler eine eigene schreiben.


Gruß

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Fehlermeldung in einer Klasse

Beitrag von msfox (Specialist / 408 / 61 / 79 ) »
Nach 22 Jahren.... Aber ja, man kann es nicht oft genug sagen, wie man es richtig macht. Sogar bei der SAP macht es beim Belegbuchen manchmal bautz, weil intern mit hart mit MESSAGE gearbeitet wird. Das fällt einem dann beim Webdynpro4ABAP auf die Füße.
ralf.wenzel hat geschrieben:
Heute 14:19
Bei mir erhält der Anwender ein Protokoll oder eine Mail mit folgendem Text:
Eben, wie es der Kunden gern hätte....
Alternativ geht auch:
- ein Anwendungslog
- oder im Webdynpro alle Meldungen in den MessageHandler.
- oder, oder.
--
MESSAGE ist ein UI-Befehl. Wenn ich aber Logik implementieren, befinde ich mich nicht im UI-Layer, sondern im Application-Layer. Darum dürfen dort auch keine UI-Befehle genutzt werden. Gleiches ist z.B. mit POPUP_TO_CONFIRM.
--
Ja, man kann auch mit Exceptions arbeiten. Da kommt es allerdings darauf an, was gewünscht ist. Wenn ich alle mögliche Fehler erfahren möchte (z.B. bei einer Simulation), darf ich nicht beim ersten Fehler mit einer Exception aussteigen, sondern muss die Fehler sammeln. Auch hier, entweder im Application Log oder in einer lokalen Tabelle - wie und wo auch immer die liegt.

Re: Fehlermeldung in einer Klasse

Beitrag von ralf.wenzel (Top Expert / 3996 / 208 / 282 ) »
msfox hat geschrieben:
Heute 18:29
Nach 22 Jahren....
Huch, ich könnte schwören, ich hab da "2019" gelesen....

Aber du hast recht: Diskutieren kann man immer alles. Und es ist WE, da hab ich Zeit 😉
msfox hat geschrieben:
Heute 18:29
MESSAGE ist ein UI-Befehl. Wenn ich aber Logik implementieren, befinde ich mich nicht im UI-Layer, sondern im Application-Layer. Darum dürfen dort auch keine UI-Befehle genutzt werden. Gleiches ist z.B. mit POPUP_TO_CONFIRM.
Das verbietet aber keiner. Was glaubst du, wie viele Programme ich schon gesehen habe, die tief in der Datenselektion einfach mit MESSAGE das Programm abbrechen?
msfox hat geschrieben:
Heute 18:29
Ja, man kann auch mit Exceptions arbeiten. Da kommt es allerdings darauf an, was gewünscht ist. Wenn ich alle mögliche Fehler erfahren möchte (z.B. bei einer Simulation), darf ich nicht beim ersten Fehler mit einer Exception aussteigen, sondern muss die Fehler sammeln.
Jein, wenn ich eine Situation habe, mit der das Programm nicht weiter arbeiten kann, dann kann ich auch keine weiteren Fehler sammeln. Dann kriege ich nur Folgefehler des ersten Fehlers.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Fehlermeldung in einer Klasse

Beitrag von msfox (Specialist / 408 / 61 / 79 ) »
ralf.wenzel hat geschrieben:
vor 59 Minuten
Jein, wenn ich eine Situation habe, mit der das Programm nicht weiter arbeiten kann,
Darum auch von mir:
Da kommt es allerdings darauf an, was gewünscht ist.
Ich habe/hatte jetzt einen "findigen" Entwickler, der musst unbedingt alles auf Class-Exceptions umstellen, was bisher via RETURN-Table geregelt war. Hier war z.B. die Diskussion, ob man eine Warnung auch als Excption wirft. Er hatte ja quasi keine RETURN-Table mehr und musste irgendwie die Warnung nach außen durchreichen.
Blöd nur, dass dann eben der restlich Quellcode nicht mehr verarbeitet wird.
--
Wie gesagt, bei einer Simulation oder auch Echtverarbeitung, wollen die Anwender nicht nach "Salamitaktik" sich von Fehler zu Fehler hangeln. Besser Sie bekommen 5 Fehler, die sie auf einmal beheben können - z.B. Sachkonto falsch und Betrag zu hoch usw.
Aber ja, wenn der ursprüngliche Fehler zu Folgefehlern führt, ist das auch unschön.

Re: Fehlermeldung in einer Klasse

Beitrag von ralf.wenzel (Top Expert / 3996 / 208 / 282 ) »
Es kommt nicht nur drauf an, was gewünscht ist, sondern insbesondere, was möglich ist.

Zu deiner Diskussion: Er kann der Exceoption als Parameter einen Messagetyp mitgeben. Oder gleich die T100 einbinden.

Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Seite 1 von 1

Vergleichbare Themen

1
Antw.
5143
Views
Lokale Klasse autom. in globale Klasse ändern
von JohnLocklay » 09.01.2019 09:10 • Verfasst in ABAP Objects®
5
Antw.
6128
Views
Klasse soll Typdefinition von anderer Klasse nutzen
von debianfan » 24.05.2017 11:30 • Verfasst in ABAP Objects®
7
Antw.
5911
Views
Fehlermeldung
von 1337 » 06.12.2013 09:01 • Verfasst in ABAP® für Anfänger
1
Antw.
5206
Views
Fehlermeldung
von Anfänger » 15.11.2010 15:44 • Verfasst in ABAP® für Anfänger
1
Antw.
3453
Views
Job Fehlermeldung
von moppel251 » 26.06.2009 12:39 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Aktuelle Forenbeiträge

Fehlermeldung in einer Klasse
vor 27 Minuten von ralf.wenzel gelöst 15 / 4339
BAPI_ACC_DOCUMENT_POST
vor 4 Tagen von Lukas Sanders 3 / 1455
Side by Side extensions
vor 6 Tagen von JHM 2 / 1627

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

Fehlermeldung in einer Klasse
vor 27 Minuten von ralf.wenzel gelöst 15 / 4339
BAPI_ACC_DOCUMENT_POST
vor 4 Tagen von Lukas Sanders 3 / 1455
Side by Side extensions
vor 6 Tagen von JHM 2 / 1627

Unbeantwortete Forenbeiträge

Benutzerdefinierte Felder PSP
vor einer Woche von Rabea1103 1 / 14765
Spool vereinen OTF und PDF
vor 4 Wochen von anna2205 1 / 29070
XSLT und Loipro05 Transformation
December 2025 von Torsten1965 1 / 36028
VOLL Artikel in einem Display Typ 12
November 2025 von ThomasM84 1 / 54844