Ansicht
Dokumentation

ABENEXCEPTION_TEXTS_GUIDL - EXCEPTION TEXTS GUIDL

ABENEXCEPTION_TEXTS_GUIDL - EXCEPTION TEXTS GUIDL

BAL_S_LOG - Application Log: Log header data   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Ausnahmetexte

Jede globale Ausnahmeklasse hat einen vorgegebenen Ausnahmetext mit dem gleichen Namen wie die Ausnahmeklasse. Dieser Text kann editiert werden, und es können weitere Ausnahmetexte definiert werden. Die Ausnahmetexte einer Ausnahmeklasse können entweder durch Bezug auf Nachrichten in der Tabelle T100 oder auf Texte im Online Text Repository (OTR) angelegt werden.

Für jeden Ausnahmetext legt der Class Builder eine statische Konstante in der Ausnahmeklasse an, die den gleichen Namen wie der Ausnahmetext hat. Diese kann beim Auslösen der Ausnahme an den Parameter TEXTID des Instanzkonstruktors übergeben werden, um den Ausnahmetext zu bestimmen. Falls der Parameter nicht übergeben wird, wird der vorgegebene Ausnahmetext mit dem gleichen Namen wie die Ausnahmeklasse verwendet.

Technisch gesehen können über den Parameter TEXTID des Instanzkonstruktors aber auch beliebige Nachrichten oder Texte des OTR als Ausnahmetexte übergeben werden.

Nachrichten als Ausnahmetexte verwenden

Für Ausnahmeklassen in Anwendungen sollen Nachrichten als Ausnahmetexte verwendet werden. Texte aus dem OTR sollten auf Systemklassen beschränkt sein. Beim Auslösen der Ausnahme dürfen nur diese zugehörigen Texte verwendet werden.

Für die Verwendung der Textart gilt folgende Richtlinie:

  • In allen Ausnahmeklassen der Anwendungsprogrammierung sollen Nachrichten als Ausnahmetexte verwendet werden.
  • Texte aus dem OTR sollten nur in Systemklassen, das heißt Ausnahmeklassen für Systemausnahmen verwendet werden. Das OTR bietet zwar einige Vorteile gegenüber Nachrichten, wie z.B. keine Beschränkung der Kurztexte auf 73 Zeichen oder beliebig viele Platzhalter, wird aber nicht ausreichend durch Werkzeuge unterstützt. Insbesondere unterstützen die ABAP Development Tools (ADT) keine Texte aus dem OTR.

Technisch gesehen kann dem Eingabeparameter TEXTID des Instanzkonstruktors beim Auslösen einer Ausnahme zwar ein Datenobjekt übergeben werden, das je nach Textart entweder eine beliebige Nachricht oder einen beliebigen OTR-Text spezifiziert. Von einer solchen Vorgehensweise wird aber dringend abgeraten. Eine Ausnahme darf bei der Verwendung des Parameters TEXTID nur mit den für sie spezifischen Texten ausgelöst werden. An den Eingabeparameter TEXTID des Instanzkonstruktors dürfen nur die entsprechenden Konstanten der Ausnahmeklasse übergeben werden.

Hinweise

  • In den Fällen, wo eine klassenbasierte Ausnahme dazu dient, eine klassische Ausnahme zu verschalen und diese klassische Ausnahme über MESSAGE ... RAISING oder nach dem Abfangen einer Nachricht über error_message mit einem Nachrichtentext verbunden ist, soll die klassenbasierte Ausnahme sinnvollerweise denselben Nachrichtentext verwenden, unabhängig davon ob es sich um ein System- oder Anwendungsprogramm handelt. Für diesen Anwendungsfall dienen das System-Interface IF_T100_DYN_MSG und der Zusatz MESSAGE der Anweisung RAISE EXCEPTION und des Zusatzes THROW in einem bedingten Ausdruck.
  • Klassische Ausnahmen haben keine zugeordneten Ausnahmetexte. Falls aus Gründen der Abwärtskompatibilität noch mit klassischen Ausnahmen gearbeitet werden muss, bietet die Anweisung MESSAGE ... RAISING eine Möglichkeit, auch dort Ausnahmetexte zu emulieren. Die Verwendung von MESSAGE ... RAISING ist in Fällen, in denen noch mit nicht-klassenbasierten Ausnahmen gearbeitet werden muss, der Verwendung der Anweisung RAISE vorzuziehen, da dies die Möglichkeit eröffnet, eine Ausnahme mit zusätzlichen Textinformationen zu versehen.

Folgender Quelltext zeigt die Übergabe einer UUID für einen beliebigen OTR-Text an den Eingabeparameter TEXTID des Instanzkonstruktors beim Auslösen einer Ausnahme. Nach obiger Regel dürfen aber nur Ausnahmetexte der Ausnahmeklasse übergeben werden, wofür jede Ausnahmeklasse entsprechende Konstanten enthält.

...
DATA otr_id TYPE sotr_conc.
otr_id = '9753EBD0102AD0418D902B8D972083C4'.
RAISE EXCEPTION TYPE cx_system_exception
   EXPORTING
      textid = otr_id.
...

Folgender Quelltext zeigt die durch obige Regel vorgeschriebene Übergabe der Konstante für den zugeordneten OTR-Text an den Eingabeparameter TEXTID des Instanzkonstruktors beim Auslösen einer Ausnahme.

...
RAISE EXCEPTION TYPE cx_system_exception
   EXPORTING
      textid = cx_system_exception=>cx_system_exception.
...






SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 6378 Date: 20240523 Time: 163937     sap01-206 ( 112 ms )