Messagehandling (ABAP): Unterschied zwischen den Versionen
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Zweck und Voraussetzungen == | |||
Zweck: Nach der Verwendung von Nachrichten einer Nachrichtenklasse per SAP Verwendungsnachweis suchen können. | Zweck: Nach der Verwendung von Nachrichten einer Nachrichtenklasse per SAP Verwendungsnachweis suchen können. | ||
Voraussetzung: In den Eigenschaften der jeweiligen Klasse muss die Nachrichtenklasse gepflegt sein. | Voraussetzung: In den Eigenschaften der jeweiligen Klasse muss die Nachrichtenklasse gepflegt sein. | ||
== Implementierungsbeispiele == | |||
=== Grundform der Message-Implementierung mit lokaler Struktur === | |||
<syntaxhighlight lang="abap"> | |||
MESSAGE ID 'ZMSGCLASS' TYPE 'E' NUMBER 56 with lv_var1 into data(lv_dummy). | |||
ls_msg-msgid = 'ZMSGCLASS'. | |||
ls_msg-msgno = 56. | |||
ls_msg-severity = 'E'. | |||
ls_msg-parameter_1 = lv_morxverp. | |||
APPEND ls_msg TO lt_msg. | |||
</syntaxhighlight> | |||
=== Aufruf Message ohne und mit Messageklassen-Zuordnung === | |||
Aufruf von MESSAGE in Klasse ohne Zuordnung der Message-Klasse in der Klassendefinition: | |||
<syntaxhighlight lang="abap"> | |||
MESSAGE ID 'ZMSGCLASS' TYPE 'E' NUMBER 1 | |||
WITH 'Implementierung Unvollständig!' 'Verantwortlich: User1234' 'Ort: ZMYCLASS1->MYMETHOD1'. | |||
</syntaxhighlight> | |||
Aufruf von MESSAGE in Klasse, wenn eine Zuordnung der Message-Klasse in der Klassendefinition vorliegt: | |||
<syntaxhighlight lang="abap"> | |||
MESSAGE w031 WITH lv_sel_year '000' INTO lv_dummy. | |||
zmyclass1=>add_sy_message( ). | |||
</syntaxhighlight> | |||
=== Add-Message-Methode === | |||
Dann kann man eine Add-Message-Methode bauen, die etwa so aussieht: | Dann kann man eine Add-Message-Methode bauen, die etwa so aussieht: | ||
Zeile 23: | Zeile 56: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Aufruf Add-Message-Methode === | |||
Der Aufruf findet dabei wie folgt statt. Dabei setzt die <code>MESSAGE</code>-Funktion die sy-msg*-Werte. | Der Aufruf findet dabei wie folgt statt. Dabei setzt die <code>MESSAGE</code>-Funktion die sy-msg*-Werte. | ||
Zeile 41: | Zeile 75: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Da es sich bei diesem Rückgabewert um einen Returning- und nicht um einen Changing-Parameter handelt, muss an der | Da es sich bei diesem Rückgabewert um einen Returning- und nicht um einen Changing-Parameter handelt, muss an der aufrufenden Stelle das Ergebnis an die Messages-Tabelle mit <code>APPEND</code> angefügt werden: | ||
<syntaxhighlight lang="abap"> | <syntaxhighlight lang="abap"> | ||
APPEND LINES OF me->set_char_texts_edit( ) to rt_messages. | APPEND LINES OF me->set_char_texts_edit( ) to rt_messages. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Implementierung mit VALUE und BASE === | |||
<syntaxhighlight lang="abap"> | |||
MESSAGE ID 'ZMSGCLASS' TYPE 'E' NUMBER 56 WITH lv_var1 INTO lv_string. | |||
me->add_msg( CHANGING ct_msg = et_messages ). | |||
lt_msg = value #( base lt_msg ( | |||
msgid = sy-msgid | |||
msgno = sy-msgno | |||
severity = sy-msgty | |||
parameter_1 = sy-msgv1 | |||
parameter_2 = sy-msgv2 | |||
parameter_3 = sy-msgv3 | |||
parameter_4 = sy-msgv4 ) ). | |||
APPEND value #( msgid = sy-msgid msgno = sy-msgno severity = sy-msgty parameter_1 = sy-msgv1 parameter_2 = sy-msgv2 parameter_3 = sy-msgv3 parameter_4 = sy-msgv4 ) TO lt_msg. | |||
</syntaxhighlight> | |||
[[Category:ABAP]] | [[Category:ABAP]] |
Aktuelle Version vom 24. Juli 2019, 08:34 Uhr
Zweck und Voraussetzungen
Zweck: Nach der Verwendung von Nachrichten einer Nachrichtenklasse per SAP Verwendungsnachweis suchen können.
Voraussetzung: In den Eigenschaften der jeweiligen Klasse muss die Nachrichtenklasse gepflegt sein.
Implementierungsbeispiele
Grundform der Message-Implementierung mit lokaler Struktur
MESSAGE ID 'ZMSGCLASS' TYPE 'E' NUMBER 56 with lv_var1 into data(lv_dummy).
ls_msg-msgid = 'ZMSGCLASS'.
ls_msg-msgno = 56.
ls_msg-severity = 'E'.
ls_msg-parameter_1 = lv_morxverp.
APPEND ls_msg TO lt_msg.
Aufruf Message ohne und mit Messageklassen-Zuordnung
Aufruf von MESSAGE in Klasse ohne Zuordnung der Message-Klasse in der Klassendefinition:
MESSAGE ID 'ZMSGCLASS' TYPE 'E' NUMBER 1
WITH 'Implementierung Unvollständig!' 'Verantwortlich: User1234' 'Ort: ZMYCLASS1->MYMETHOD1'.
Aufruf von MESSAGE in Klasse, wenn eine Zuordnung der Message-Klasse in der Klassendefinition vorliegt:
MESSAGE w031 WITH lv_sel_year '000' INTO lv_dummy.
zmyclass1=>add_sy_message( ).
Add-Message-Methode
Dann kann man eine Add-Message-Methode bauen, die etwa so aussieht:
METHOD add_message_from_sy.
APPEND VALUE fpmgb_s_t100_message(
msgid = sy-msgid
msgno = sy-msgno
severity = sy-msgty
parameter_1 = sy-msgv1
parameter_2 = sy-msgv2
parameter_3 = sy-msgv3
parameter_4 = sy-msgv4
) TO ct_messages.
ENDMETHOD.
Aufruf Add-Message-Methode
Der Aufruf findet dabei wie folgt statt. Dabei setzt die MESSAGE
-Funktion die sy-msg*-Werte.
MESSAGE w380 with <f_variables>-var_id-vnam INTO DATA(lv_dummy).
add_message_from_sy( CHANGING ct_messages = rt_messages ).
Rückgabewerte:
methods SET_CHAR_TEXTS_EDIT
returning
value(RT_MESSAGES) type FPMGB_T_MESSAGES .
Da es sich bei diesem Rückgabewert um einen Returning- und nicht um einen Changing-Parameter handelt, muss an der aufrufenden Stelle das Ergebnis an die Messages-Tabelle mit APPEND
angefügt werden:
APPEND LINES OF me->set_char_texts_edit( ) to rt_messages.
Implementierung mit VALUE und BASE
MESSAGE ID 'ZMSGCLASS' TYPE 'E' NUMBER 56 WITH lv_var1 INTO lv_string.
me->add_msg( CHANGING ct_msg = et_messages ).
lt_msg = value #( base lt_msg (
msgid = sy-msgid
msgno = sy-msgno
severity = sy-msgty
parameter_1 = sy-msgv1
parameter_2 = sy-msgv2
parameter_3 = sy-msgv3
parameter_4 = sy-msgv4 ) ).
APPEND value #( msgid = sy-msgid msgno = sy-msgno severity = sy-msgty parameter_1 = sy-msgv1 parameter_2 = sy-msgv2 parameter_3 = sy-msgv3 parameter_4 = sy-msgv4 ) TO lt_msg.