This is a test message to test the length of the message box.
Login
ABAP RAP Meldungen
Erstellt von Software-Heroes

RAP - Meldungen

243

Schauen wir uns einmal die verschiedenen Möglichkeiten von Nachrichten im Umfeld von Fiori Elements an und wie sie zusammen wirken.

Werbung


Im letzten Artikel haben wir eine statische Aktion implementiert und dir gezeigt, wie du an die Parameter herankommst. In diesem Artikel werden wir die Aktion weiter ausbauen, um dir das Verhalten von Meldungen zu zeigen und wie du es weiter beeinflussen kannst.

 

Einleitung

Werden Aktionen ausgeführt, so sind sie nicht immer erfolgreich, weil vielleicht noch Daten für die neue Entität fehlen oder nicht alle Eingaben im Popup gemacht wurden. In solchen Fällen müssen Meldungen an den Anwender weitergeben werden. Hier kommt es aber darauf an, was du dem User mitteilen möchtest und welchen Kontext solche Meldungen einnehmen. Bereits in den Fiori Guidelines ist das Verhalten entsprechend definiert.

 

Typen

Schauen wir uns einmal die verschiedenen Typen von Meldungen an, die wir über das Framework erzeugen können. Dazu müssen wir im ersten Schritt einen Blick in die Möglichkeiten werfen. Dazu schauen wir uns das Interface "IF_ABAP_BEHV_MESSAGE" einmal genauer an:

interface IF_ABAP_BEHV_MESSAGE public.
  interfaces IF_MESSAGE.
  interfaces IF_T100_DYN_MSG.
  interfaces IF_T100_MESSAGE.

  types:
    t_char01 type c length 1.
    
  types:
    begin of enum t_severity structure severity base type t_char01, "sychar01,
         none value is initial,
         error       value 'E',
         warning     value 'W',
         information value 'I',
         success     value 'S',
       end of enum t_severity structure severity.

  data M_SEVERITY type T_SEVERITY.
endinterface.

 

Wie du erkennst, sind die verschiedenen Typen von Meldungen als ENUM definiert, das heißt die Übergabe an die Meldungsschnittstelle wird dieses ENUM benötigt, um die entsprechenden Meldungen zu erzeugen. Schauen wir uns nun einmal die entsprechenden Einzelmeldungen und Verhalten an.

 

Erfolg

Die Erfolgsmeldung erscheint nur als Toast im unteren Bereich des Bildes und verschwindet automatisch wieder. Sie wird über die Konstante "if_abap_behv_message=>severity-success" erzeugt. Eine Erfolgsmeldung muss nicht extra bestätigt werden, um nicht den Arbeitsflow des Anwenders zu unterbrechen, wenn es keine Probleme gibt.

 

Information

Die Informationsmeldung wird über die Konstante "if_abap_behv_message=>severity-information" erzeugt und im Normalfall wie die Erfolgsmeldung als Toast angezeigt. In speziellen Fällen wird die Meldung als eigenes Popup angezeigt, soll aber ebenso nicht den Flow vom Anwender stören.

 

Warnung

Die Warnung soll auf mögliche Probleme hinweisen, deshalb sorgt sie für mehr Aufwerksamkeit beim Anwender und wir in einem Popup dargestellt, welches extra bestätigt werden muss. Die Konstante ist in diesem Fall "if_abap_behv_message=>severity-warning". Die Warnung kann bestätigt oder abgebrochen werden.

 

Fehler

Die Fehlermeldung zieht die meiste Aufmerksamkeit auf sich, da hier etwas bei der Verarbeitung schiefgelaufen ist. Die Konstante dafür ist "if_abap_behv_message=>severity-error". Der Fehler kann nur noch abgebrochen werden.

 

Kombination

Wenn es um komplexe Verarbeitungen gehen, dann sind solche Meldungen aber auch nicht allein, sondern es wird meist ein ganzes Protokoll ausgegeben. Erzeugen wir nun einmal zwei Erfolgsmeldungen für die Ausgabe:

reported-partner = VALUE #(
  ( %msg = new_message_with_text( severity = if_abap_behv_message=>severity-success text = 'Dummy message' ) )
  ( %msg = new_message_with_text( severity = if_abap_behv_message=>severity-information text = 'Dummy message' ) )
).

 

Die Ausgabe der Erfolgsmeldungen erfolgt nun in einem Popup. Hier solltest du dir Gedanken machen, ob du die beide Meldungen benötigst oder diese auf eine Meldung reduzierst, um den Flow des Anwenders nicht zu unterbrechen. Wenn aber Informationen wie Belegnummern nach Außen gegeben werden sollen, dann ist dies in Ordnung.

 

Versuchen wir es nun einmal mit einem komplexeren Beispiel und geben alle Arten von Meldungen aus.

reported-partner = VALUE #(
  ( %msg = new_message_with_text( severity = if_abap_behv_message=>severity-success text = 'Dummy message' ) )
  ( %msg = new_message_with_text( severity = if_abap_behv_message=>severity-error text = 'Dummy message' ) )
  ( %msg = new_message_with_text( severity = if_abap_behv_message=>severity-warning text = 'Dummy message' ) )
  ( %msg = new_message_with_text( severity = if_abap_behv_message=>severity-information text = 'Dummy message' ) )
).

 

Das Meldungspopup verhält sich nun wie folgt und nicht ganz so wie erwartet:

 

Die positiven Meldungen wurden gefiltert und es sind nur noch Warnungen und Fehler zu sehen. Der Anwender kann damit den vollen Fokus auf die Fehlermeldungen legen, um an der Behebung des Fehlers zu arbeiten.

 

Validierungen

Die bisher erzeugten Meldungen stammen aus einer Aktion, schauen wir einmal ein paar Artikel zurück, hatten wir bereits Meldungen für Validierungen implementiert. Die Meldungen dort, werden in der UI anders dargestellt:

 

Beispiel

Für die oben gezeigten Beispiele haben wir die Methode "withPopup" entsprechend erweitert, um über den Parameter MessageType die entsprechende Ausgabe zu erzeugen. Hier noch einmal die implementierte Methode:

METHOD withPopup.
  TRY.
      DATA(ls_key) = keys[ 1 ].
    CATCH cx_sy_itab_line_not_found.
      RETURN.
  ENDTRY.

  CASE ls_key-%param-MessageType.
    WHEN 1.
      INSERT VALUE #(
        %msg = new_message_with_text( severity = if_abap_behv_message=>severity-success text = 'Dummy message' )
      ) INTO TABLE reported-partner.
    WHEN 2.
      INSERT VALUE #(
        %msg = new_message_with_text( severity = if_abap_behv_message=>severity-information text = 'Dummy message' )
      ) INTO TABLE reported-partner.
    WHEN 3.
      INSERT VALUE #(
        %msg = new_message_with_text( severity = if_abap_behv_message=>severity-warning text = 'Dummy message' )
      ) INTO TABLE reported-partner.
    WHEN 4.
      INSERT VALUE #(
        %msg = new_message_with_text( severity = if_abap_behv_message=>severity-error text = 'Dummy message' )
      ) INTO TABLE reported-partner.
    WHEN 5.
      INSERT VALUE #(
        %msg = new_message_with_text( severity = if_abap_behv_message=>severity-none text = 'Dummy message' )
      ) INTO TABLE reported-partner.
    WHEN 6.
      reported-partner = VALUE #(
        ( %msg = new_message_with_text( severity = if_abap_behv_message=>severity-success text = 'Dummy message' ) )
        ( %msg = new_message_with_text( severity = if_abap_behv_message=>severity-information text = 'Dummy message' ) )
      ).
    WHEN 7.
      reported-partner = VALUE #(
        ( %msg = new_message_with_text( severity = if_abap_behv_message=>severity-success text = 'Dummy message' ) )
        ( %msg = new_message_with_text( severity = if_abap_behv_message=>severity-error text = 'Dummy message' ) )
        ( %msg = new_message_with_text( severity = if_abap_behv_message=>severity-warning text = 'Dummy message' ) )
        ( %msg = new_message_with_text( severity = if_abap_behv_message=>severity-information text = 'Dummy message' ) )
      ).
  ENDCASE.
ENDMETHOD.

 

Fazit

Meldungen können unterschiedlich für den Anwender aufbereitet werden, zeigen aber immer wieder das gleiche Schema und sollten je nach Kontext auch entsprechend funktionieren. Wie Meldungen erzeugt werden, ist aber wie im klassischen UI, sehr einfach.


Enthaltene Themen:
RAPBTPMeldungen
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


RAP - Semantischer Schlüssel

Kategorie - ABAP

Wofür benötigst du den semantischen Schlüssel und wie wird er im ABAP RESTful Programming Model dargestellt? Hier gibt es mehr dazu.

13.12.2024

RAP - Upload von Dateien (Stream)

Kategorie - ABAP

Wie kannst du einfach Dateien in deine RAP Entität laden und diese in ABAP zur Verfügung stellen? Hier schauen wir uns einmal die Details an.

10.12.2024

RAP - Report Pattern

Kategorie - ABAP

Wie ist das Report Pattern in RAP aufgebaut und was kannst du damit machen? Mehr dazu in diesem ABAP Artikel.

06.12.2024

RAP - Übersetzungs-App (Beispiel)

Kategorie - ABAP

Schauen wir uns einmal ein praktisches Beispiel für die Entwicklung einer RAP Anwendung im ABAP Environment an und wie du mit wenig Aufwand eine App erstellst.

02.08.2024

RAP - Custom Entity Wertehilfe (Deep Dive)

Kategorie - ABAP

Mit der Custom Entity hast du in RAP die meisten Freiheiten in der Entwicklung von ABAP Cloud Anwendungen, doch wie sieht es mit potentiellen Fehlern aus?

12.07.2024