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 XI werden durch standardisierte Fault-Message-Typen im Enterprise Services Repository beschrieben, die in eine entsprechende Struktur im WSDL-Dokument umgesetzt werden (siehe unten).
In XI 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äßt 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-FehlerId>.
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 Exception-Klasse>
EXPORTING
standard = l_standard_data
addition = l_additional_data.
Wenn Sie das Application Log 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 Exception-Klasse>
application_log_handle = <
Anwendungs-Log: Handle eines Protokolls>
bapireturn_tab = < Tabelle mit BAPI Return
Informationen>.
Wenn Sie weder ein Handle eines Anwendungs-Logs 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 auf den Langtext dieser Message im Enterprise Services Repository |
Für die Daten aus dem Application Log 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 |
|
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 auf den T100-Langtext (falls vorhanden) |
|
faultDetail-id |
Verbindung aus Arbeitsgebiet und Meldungsnummer (z.B. "XY(007)") |
Im asynchronen Fall können Sie eine Fault-Message im Monitoring zu XI sehen. Zum Beispiel erhalten Sie im technischen Monitoring bei der Anzeige einer Fault-Message eine besser lesbare Aufbereitung durch die Funktion Zusatzinformationen zum Fehler. Im synchronen Fall können Sie auf der rufenden Seite eine derartige Aufbereitung in Ihre Applikation einbauen, indem Sie die Methode CL_PROXY_FAULT=>SHOW nutzen.