
Eine Fault-Message ist eine Nachricht, die eine anwendungsspezifische Fehlersituation beschreibt.
Die Proxy-Generierung generiert Ausnahmeklassen zu Fault-Messages. Löst eine Anwendung eine Ausnahme über eine solche Ausnahmeklasse aus, setzt sie die ABAP-Proxy-Laufzeit automatisch in eine Fault-Message um. Mit Hilfe der Fault-Message meldet die Anwendung einen Anwendungsfehler (zum Beispiel:"Angefordertes Kundenprofil unbekannt").
Die Struktur der Fault-Message ist im WSDL-Dokument beschrieben und kann beliebig sein.
Fault-Messages in PI werden durch standardisierte Fault-Message-Typen im Enterprise Services Repository beschrieben, die in eine entsprechende Struktur im WSDL-Dokument umgesetzt werden (siehe unten).
Standardisierte Struktur für Fault-Messages in PI
In PI können Sie der aus der Fault-Message generierten Anwendungsklasse Informationen zur Fehlerursache über die folgende Struktur mitgeben:

Die Struktur STANDARD ist vorgegeben und enthält essentielle Felder, um den Fehler weiterzuleiten. Die Struktur ADDITION lässt sich frei von der Anwendung verwenden.
Um eine Fault-Message zu verschicken, füllen Sie die generierte Struktur zur Fault-Message und lösen die Ausnahme mit der zugehörigen Ausnahmeklasse aus:
data: l_standard_data type <Standard Fault-Datentyp>,
l_detail_data type <Detailstruktur zum Standard Fault-Datentyp>,
l_additional_data type <Anwendungsfehlerdatentyp>.
l_standard_data-fault_text = <Fehlertext>.
l_standard_data-fault_url = <Fehler-URL>.
l_detail_data-severity = <System-Fehlerkategorie>.
l_detail_data-text = <System-Fehlertext>.
l_detail_data-id = <System-Fehler-ID>.
l_detail_data-url = <System-Fehler-URL>.
append l_detail_data to l_standard_data-fault_detail.
l_additional_data = <Anwendungsfehlerinformationen>
RAISE EXCEPTION TYPE <Name der Ausnahmeklasse>.
EXPORTING
standard = l_standard_data
addition = l_additional_data
Wenn Sie das Anwendungsprotokoll verwenden oder Fehlerinformationen einer BAPI-Return-Tabelle zur Verfügung haben, können Sie diese auch direkt verwenden, um die Fault Message zu füllen. In diesem Fall brauchen Sie nur die Methode CL_PROXY_FAULT=>RAISE der Proxy-Laufzeit zum Auslösen des Fehlers aufrufen:
CALL METHOD cl_proxy_fault=>raise
EXPORTING
exception_class_name = <Name der Ausnahmeklasse>
application_log_handle = <Anwendungsprotokoll: Handle eines Protokolls>
bapireturn_tab = <Tabelle mit BAPI-Return-Informationen>
Wenn Sie weder ein Handle eines Anwendungsprotokolls noch eine Tabelle mit BAPI-Return-Informationen übergeben, füllt die Methode die Standard-Daten einer Fault-Message wie folgt:
|
faultText |
Text der Fault-Message im Enterprise Services Repository (verkürzt auf 60 Zeichen) |
|
faultUrl |
URL zum Langtext dieser Message im Enterprise Services Repository |
Für die Daten aus dem Anwendungsprotokoll beziehungsweise der BAPI-Return-Tabelle werden zusätzlich folgende Felder gefüllt:
|
faultDetail-severity |
Der ABAP-Meldungstyp wird auf dieses Feld wie folgt abgebildet: |
|
|
ABAP-Feld MSGTY |
Fault-Message-Feld faultDetail-severity |
|
|
A (Abend) |
error |
|
|
E (Error) |
error |
|
|
W (Warning) |
warning |
|
|
S (Success) |
information |
|
|
I (Information) |
information |
|
|
faultDetail-text |
Aufbereiteter T100-Meldungstext (in der Sprache, in der der Service ausgeführt wurde) |
|
|
faultDetail-url |
URL zum T100-Langtext (falls vorhanden) |
|
|
faultDetail-id |
Verbindung aus Arbeitsgebiet und Meldungsnummer (z.B. "007(XY)") |
Datendarstellung im Message-Monitor
Im asynchronen Fall können Sie eine Fault-Message im Web-Services-Monitoring anzeigen. Weitere Informationen finden Sie unter ABAP-Web-Service-Messages überwachen.