Ansicht
Dokumentation

ABAPMESSAGE_RAISING - MESSAGE RAISING

ABAPMESSAGE_RAISING - MESSAGE RAISING

rdisp/max_wprun_time - Maximum work process run time   Vendor Master (General Section)  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

MESSAGE, RAISING

Kurzreferenz



MESSAGE ${ msg $| text $} $[DISPLAY LIKE dtype$] $[WITH dobj1... dobj4$]
        RAISING exception.


Wirkung

Die Anweisung MESSAGE mit dem Zusatz RAISING löst eine nicht-klassenbasierte Ausnahme exception aus und sendet nur dann eine Nachricht, wenn die Ausnahme nicht behandelt wird. Die Bedeutung von msg, text und WITH ist wie bei der Anweisung MESSAGE ohne den Zusatz RAISING.

Der Zusatz ist nur während der Verarbeitung von Methoden und Funktionsbausteinen sinnvoll, in denen die nicht-klassenbasierte Ausnahme exception definiert ist. Weiterhin darf er nicht im gleichen Verarbeitungsblock wie die Anweisung RAISE EXCEPTION oder der Zusatz THROW in einem bedingten Ausdruck zum Auslösen klassenbasierter Ausnahmen verwendet werden.

  • Wenn die MESSAGE-Anweisung mit dem Zusatz RAISING während der Verarbeitung einer Methode oder eines Funktionsbausteins ausgeführt wird, deren Aufrufer der Ausnahme exception mit dem Zusatz EXCEPTIONS der Anweisung CALL einen Rückgabewert zuweist, wirkt sie wie die Anweisung RAISE.
  • Wenn der Ausnahme exception kein Rückgabewert zugewiesen wird, wird der Zusatz RAISING ignoriert, die Nachricht mit der Anweisung MESSAGE gesendet und gemäß ihrem Nachrichtentyp verarbeitet.

Die Systemfelder der Anweisung MESSAGE werden in beiden Fällen versorgt und stehen nach der Behandlung einer mit MESSAGE ... RAISING ausgelösten Ausnahme im aufrufenden Programm zur Verfügung. Dies gilt insbesondere auch dann, wenn ein Funktionsbaustein über Remote Function Call (RFC) aufgerufen wurde.

Hinweise

  • Die AnweisungMESSAGE ... RAISING ist vordergründig als Anweisung zum Auslösen einer Ausnahme zu sehen und nicht zum Senden einer Nachricht. Eine solche Ausnahme sollte wie eine mit RAISE ausgelöste Ausnahme immer behandelt werden, da das Verhalten der Nachricht stark vom Kontext abhängt und beim Anlegen des Funktionsbausteins in der Regel nicht vorhergesehen werden kann.
  • 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.
  • Nachrichten, die in Funktionsbausteinen ohne den Zusatz RAISING gesendet werden, kann mit der vordefinierten Ausnahme error_message ein Rückgabewert zugewiesen werden.
  • Nachrichten, die beim Aufruf eines Funktionsbausteins trotz des Zusatzes RAISING nicht abgefangen, sondern als Nachrichten gesendet werden, werden wie solche von error_message beeinflusst.
  • Wenn eine Prozedur über das Auslösen einer Ausnahme verlassen wird, wird der Inhalt der Formalparameter, für welche die Wertübergabe definiert ist, nicht den jeweiligen Aktualparametern zugewiesen.

Beispiel

Beim ersten Aufruf der Methode wird eine Informationsnachricht gesendet, beim zweiten Aufruf wird stattdessen eine Ausnahme ausgelöst und nach dem Aufruf über die Auswertung von sy-subrc behandelt.

     CLASS c1 DEFINITION.
       PUBLIC SECTION.
         CLASS-METHODS m1 EXCEPTIONS exc1.
     ENDCLASS.
     CLASS c1 IMPLEMENTATION.
       METHOD m1.
         MESSAGE 'Message in a Method' TYPE 'I' RAISING exc1.
       ENDMETHOD.
     ENDCLASS.
     ...
       c1=>m1( ).
       c1=>m1( EXCEPTIONS exc1 = 4 ).
     IF sy-subrc = 4.
       ...
     ENDIF.






Addresses (Business Address Services)   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 6394 Date: 20240423 Time: 091552     sap01-206 ( 77 ms )