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

59

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 - Deep Table Action

Kategorie - ABAP

Ist die Übergabe von Tabellen an Aktionen in RAP aktuell möglich? Dieser Artikel soll einen besseren Einblick in das Thema gewähren.

07.01.2025

ABAP Cloud - Programmiermodell

Kategorie - ABAP

Welches Programmiermodell kommt mit ABAP Cloud zum Einsatz und was können wir aus dem Vorgänger lernen? Mehr Details im Artikel.

03.01.2025

RAP - Side Effects

Kategorie - ABAP

Wie kannst du Teile der Fiori UI aktualisieren, ohne einen kompletten Refresh zu machen? Mit Side Effects ist das in ABAP und RAP ganz leicht möglich.

27.12.2024

RAP - Events

Kategorie - ABAP

Wie kannst du eigentlich Events in RAP erzeugen und mit ABAP verarbeiten? Hier erfährst du mehr zur eventgetriebenen Verarbeitung.

23.12.2024

RAP - Excel Datei laden

Kategorie - ABAP

In diesem praktischen Beispiel schauen wir uns die Verarbeitung von Excel in ABAP mit den neuen XCO Klassen an und wie wir die Datei in unser RAP Objekt bekommen.

20.12.2024