This is a test message to test the length of the message box.
Login
ABAP RAP Länge von Nachrichten
Erstellt von Software-Heroes

RAP - Länge von Meldungen

110

Deine Meldung wird bei der Ausgabe mit RAP abgeschnitten? Lass uns das Problem und eine Lösung anschauen.

Werbung


In diesem Artikel schauen wir uns einmal die Länge von Meldungen bei der Ausgabe in RAP an und wie diese unsere Möglichkeiten beeinflusst.

 

Einleitung

Die Ausgabe von Meldungen in RAP Anwendungen ist genauso wichtig, wie bereits zu Report Zeiten. Meldungen geben uns Auskünfte zu Fehlern in der Verarbeitung und während der Prozessierung. Der User weiß, wenn etwas nicht stimmt und kann darauf reagieren. Heute wollen wir unser Custom Pattern um eine Aktion erweitern und schauen uns in diesem Zusammenhang die Ausgabe der Meldungen an.

 

Vorbereitung

Dazu müssen wir im ersten Schritt in unserem RAP Objekt eine Aktion implementieren, damit wir eine Möglichkeit haben, Nachrichten ans Frontend zu übermitteln.

 

Verhalten

Im ersten Schritt erweitern wir das Verhalten um eine neue Aktion namens "CreateOutputMessage". Dabei setzen wir auf eine statische Aktion, da wir dies auslösen wollen, ohne einen Datensatz zu markieren.

static action CreateOutputMessage;

 

Über STRG + 1 können wir die Methode implementieren lassen. Die Funktion legt die Definition und die Implementierung in der Verhaltensimplementierung an.

 

Sichtbarkeit

Damit die Aktion nun im UI erscheint, müssen wir diese in der Entität in den UI Annotationen ergänzen. Da wir sie im List Report über der Liste sehen wollen, erweitern wir das Listitem.

@UI.lineItem: [{ position: 10, type: #FOR_ACTION, dataAction: 'CreateOutputMessage', label: 'Create message' }]

 

Nach Aktivierung der Objekte sollte nun die Aktion im List Report verfügbar sein.

 

Meldungen

Um nun eine Meldung nach dem Auslösen der Aktion an das UI zu geben, steht uns die "reported" Struktur in der Methode zur Verfügung. Wir können über %OTHER eine Vielzahl an Meldungen zurückgeben oder über die entsprechende Entität, in diesem Fall "swc" über das Feld %MSG eine entsprechende Meldung zu einem Schlüssel.

 

Dabei können wir über die beiden Methoden "NEW_MESSAGE" und "NEW_MESSAGE_WITH_TEXT" Meldungen vom Typ IF_ABAP_BEHV_MESSAGE erzeugen. Die Definition der beiden Methoden findest du durch die Vererbungshierarchie in der Klasse CL_ABAP_BEHV.

  • NEW_MESSAGE - Erzeugung einer T100 Nachricht für die Ausgabe 
  • NEW_MESSAGE_WITH_TEXT - Übernahme eines Textes und Ausgabe einer Meldung

 

Die beiden Methoden erlauben uns ein einfaches Erzeugen von Meldungen während der Verarbeitung. Grundsätzlich kannst du auch ein eigenes Nachrichtenobjekt definieren, um Meldungen auszugeben.

 

Erzeugung

In diesem Kapitel erzeugen wir Meldungen und prüfen das Ergebnis der Ausgabe.

 

NEW_MESSAGE_WITH_TEXT

Erzeugen wir nun im ersten Schritt eine Meldung, bei der wir nur einen Text übergeben, dabei ist der Text relativ lang. In diesem Fall verwenden wir %OTHER, um verschiedene Nachrichten zu übergeben.

INSERT new_message_with_text( text = 'This is a message with the method NEW_MESSAGE_WITH_TEXT!' ) INTO TABLE reported-%other.

 

Dafür erhalten wir die folgende Ausgabe in der UI. Schauen wir uns die Meldung etwas genauer an, dann wirst du feststellen, dass die Meldung abgeschnitten wurde. Nicht alle Bestandteile der Meldung wurden ausgegeben.

 

Prüfen wir nun die Erzeugung der Meldung in der Klasse CL_ABAP_BEHV, dann werden wir den folgenden Quellcode finden. Dabei wir unser Text an eine Message Variable übergeben. Wenn du die Zeichen der Ausgabe prüfst, wirst du feststellen, dass die Meldung nach 50 Zeichen abgeschnitten wurde, was einer Länge einer Messagevariable entspricht.

obj = new_message(
  id       = 'SABP_BEHV'
  number   = 100
  severity = severity
  v1       = text
).

 

Damit können wir aktuell nur Meldungen mit einer maximalen Länge von 50 Zeichen erzeugen, ohne das Informationen abgeschnitten werden.

 

NEW_MESSAGE

Im nächsten Beispiel erzeugen wir eine Meldung mit der zweiten Methode. Dazu legen wir eine neue Nachricht in unserer Nachrichtenklasse ZBS_DEMO_RAP_PATTERN an und ergänzen die Nachricht um einen Platzhalter.

INSERT new_message( id       = 'ZBS_DEMO_RAP_PATTERN'
                    number   = '009'
                    severity = if_abap_behv_message=>severity-error
                    v1       = 'NEW_MESSAGE' )
       INTO TABLE reported-%other.

 

Die Ausgabe übernimmt nun wieder die komplette Meldung plus dem Platzhalter und es gehen keine Informationen in der Ausgabe verloren. Grundsätzlich stehen uns vier Mal die 50 Zeichen zur Verfügung plus ein kleiner Teil an Meldung. Die Begrenzung von 220 Zeichen solltest du allerdings weiterhin nicht übersteigen.

 

Maximum

Das Maximum von 220 Zeichen kannst du relativ leicht prüfen. Dazu legen wir uns eine neue Meldung mit 4 Platzhaltern an und befüllen den Text der Meldung auf ein Maximum, hier sind insgesamt 74 Zeichen möglich. Dann erzeugen wir eine Meldung und übergeben jeweils Platzhalter mit 50 Zeichen.

DATA(placeholder) = '01234567890123456789012345678901234567890123456789'.

INSERT new_message( id       = 'ZBS_DEMO_RAP_PATTERN'
                    number   = '010'
                    severity = if_abap_behv_message=>severity-error
                    v1       = placeholder
                    v2       = placeholder
                    v3       = placeholder
                    v4       = placeholder )
       INTO TABLE reported-%other.

 

Das Ergebnis können wir dann im Popup nachvollziehen und die Zeichenkette zählen lassen.

 

Vollständiges Beispiel

Die gesamte Anwendung findest du bei uns in GitHub bei den restlichen Beispielen aus dem RAP Bereich. Über den Commit kannst du alle Änderungen am Repository nachvollziehen.

 

Fazit

Für die Erzeugung von Nachrichten solltest du aktuell auf die Methode NEW_MESSAGE_WITH_TEXT verzichten, da damit Informationen verloren gehen. Nutze stattdessen normale T100 Meldungen mit NEW_MESSAGE oder eine eigene Implementierung der Klasse, um Meldungen an den Anwender zu übergeben.


Enthaltene Themen:
RAPBTPMessageLänge
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 - API Pattern

Kategorie - ABAP

In diesem Artikel schauen wir uns das API-Pattern für RAP an und wie du es flexibel in der ABAP Entwicklung einsetzen kannst, um Schnittstellen zur Verfügung zu stellen.

20.06.2025

RAP - Mehrere Filter und Einstellungen

Kategorie - ABAP

Wie sieht es eigentlich aus, wenn wir in RAP mehrere Filter und Felder als Standard setzen wollen und dazu noch eine standardmäßige Sortierung benötigen?

16.05.2025

RAP - Suchhilfe und Schlüssel optimieren

Kategorie - ABAP

In diesem Artikel optimieren wir unsere Suchhilfen im Custom Pattern, verwenden das Additional Binding und machen unsere RAP Anwendung fit für den Endanwender.

06.05.2025

RAP - Festwert-Filter

Kategorie - ABAP

Wie verwendest du Festwerte aus einer Domäne für einen Filter und passt diesen nach deinen Bedüfnissen in RAP an? Mehr dazu hier.

02.05.2025

RAP - Custom Pattern (Verhalten)

Kategorie - ABAP

In diesem Artikel erweitern wir das Custom Pattern in RAP um zusätzliche Daten und Verhalten. Damit können wir Mehrwerte in der Implementierung schaffen.

29.04.2025