Show TOC

ObjektdokumentationFault-Messages Dieses Dokument in der Navigationsstruktur finden

 

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").

Struktur

  • 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 Abbildung wird im Begleittext erläutert.

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.

Beispiel

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)")

Darstellung der Daten in SAP NetWeaver PI

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.