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

RAP - Popup Pflichtfelder

196

Wie kannst du eigentlich Pflichtfelder für ein Popup in RAP definieren? In diesem Artikel werden wir etwas genauer auf die Details eingehen.

Werbung


In diesem Artikel schauen wir uns an, wie wir für unsere Excel Upload Action weitere Pflichtfelder definieren und diese dann validieren können. Dazu schauen wir uns verschiedene Lösungen an.

 

Einleitung

In diesem Beispiel werden wir unsere App für das Report Pattern erweitern. Normalerweise definierst du Pflichtfelder innerhalb der Verhaltensdefinition, wenn es um Felder des RAP Business Objekts geht. Doch wie würde das für das Popup in unserer Aktion funktionieren?

 

Problem

Wenn wir unsere Excel Datei laden, zeigen wir im ersten Schritt ein Popup an, wo der Anwender noch einmal zusätzliche Informationen hinterlegen kann. Problem ist allerdings, dass die Felder keine Pflichtfelder sind und damit auch leer gelassen werden können.

 

Grundsätzlich steht dir die Annotation "@ObjectModel.mandatory" zur Verfügung, diese ist aber nicht für ABAP Cloud freigegeben und damit können in der Entität keine Pflichtfelder mehr über die Annotation gesetzt werden. Da wir einen nachhaltigen und langfristigen Weg benötigen, schauen wir uns zwei Lösungen an.

 

Lösung

Hier findest du zwei Lösungsvorschläge, um das gewünschte Ergebnis zu erzielen und den User zur Eingabe der Felder zu bekommen.

 

Prüfung

Eine einfache Möglichkeit ist die Überprüfung der Pflichtangaben vor der eigentlichen Ausführung der Aktion. Bedeutet wir führen die Validierung als ersten Schritt durch, bevor wir dann die folgende Logik ausführen. Dazu erweitern wir die Verhaltensimplementierung der Methode "LoadExcelContent".

IF ls_key-%param-EventComment IS INITIAL.
  INSERT new_message( id       = 'ZBS_DEMO_RAP_PATTERN'
                      number   = '008'
                      severity = if_abap_behv_message=>severity-error )
         INTO TABLE reported-%other.
  RETURN.
ENDIF.

 

Ist das Feld EventComment leer, dann geben wir eine Fehlermeldung aus und verlassen die aktuelle Logik bzw. die Methode komplett. Allerdings können wir den "TestRun" nicht validieren, da auch leer ein Ergebnis ist. Als Ergebnis erhalten wir im ersten Schritt eine Warnmeldung aus dem Backend.

 

Bestätigen wir die Warnung, dann wird daraus eine Fehlermeldung. Das Popup wird ausgeblendet und die klassische Fehlermeldung angezeigt.

 

Verhalten

Als zweite Lösung wollen wir neues Verhalten für die abstrakte Entität hinterlegen. Bereits in einem anderen Artikel haben wir eine abstrakte Entität genutzt, um tiefe Strukturen an eine API zu übergeben. In diesem Fall müssen wir unsere abstrakte Entität "ZBS_S_DRPExcelPopup" um das Schlüsselwort ROOT erweitern, da wir sonst keine Verhaltensdefinition erzeugen können.

@EndUserText.label: 'Excel Popup'
define root abstract entity ZBS_S_DRPExcelPopup
{
  @EndUserText.label: 'Comment'
  EventComment : abap.char(60);
  @EndUserText.label: 'Test run'
  TestRun : abap_boolean;
}

 

Im nächsten Schritt kannst du über das Kontextmenü des Objekts eine Verhaltensdefinition erzeugen die als "abstract" gekennzeichnet ist.

 

Allerdings müssen wir in der generierten Verhaltensdefinition des STRICT Mode deaktivieren, damit wir das Objekt ohne Fehler aktivieren können. Im Artikel von Andre Fischer im unteren Bereich, geht das auch mit dem STRICT Mode, allerdings mit einigen Zusätzen.

abstract;

define behavior for ZBS_S_DRPExcelPopup
{
  field ( mandatory ) EventComment, TestRun;
}

 

Schauen wir uns nun das Popup an, dann wurden hier die entsprechenden Marker hinterlegt und die Felder als Pflichtfelder definiert.

 

Führen wir nun die Aktion ohne Eingabe der Parameter aus, dann erhalten wir direkt im UI eine Fehlermeldung und können nicht weiter. Hier fällt auch auf, dass das Ja/Nein Feld nun auch eine Validierung besitzt und wir explizit einen Wert auswählen müssen. Leere Werte sind damit nicht mehr möglich.

 

Vollständiges Beispiel

Alle Änderungen aus diesem Artikel und alle neuen Objekte findest du im passenden Commit im GitHub Repository und kannst damit die gemachten Änderungen nachvollziehen.

 

Fazit

Für die Definition von Pflichtfeldern gibt es aktuell verschiedene Möglichkeiten. Welche du in deinem Szenario verwenden willst, bleibt am Ende dir überlassen.

 

Quelle:
SAP Community - Mandatory Parameters


Enthaltene Themen:
RAPBTPPopupPflichtfelder
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 - 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 - Länge von Meldungen

Kategorie - ABAP

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

13.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