Fault-Messages 
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).
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)") |
|
Im asynchronen Fall können Sie eine Fault-Message im PI-Monitoring 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.