Florian Tent
19. März 2021

Varianten mit ABAP Coding erstellen, verwenden und löschen

Varianten in ABAP

Kennen Sie das? Sie möchten einen Report mit einem aufwändigen Selektionsbildschirm mehrfach ausführen. Dabei müssen Sie jedes Mal umständlich alle Felder neu ausfüllen. Geht das nicht auch einfacher? Ja! Mit Varianten. In diesem Beitrag erfahren Sie, was Varianten sind und wie Sie sie zu SAP Reports in der ABAP Hintergrundverarbeitung anlegen und anwenden.

Was sind überhaupt Varianten?

Wenn Sie einen Report mehrfach ausführen möchten, ohne dafür jedes Mal alle Felder neu ausfüllen zu müssen, können Sie Varianten zur Hilfe nehmen. Diese ermöglichen es Ihnen, einen ausgefüllten Selektionsbildschirm zu speichern und jederzeit wieder abzurufen. Dazu können Sie zum Beispiel in der SE38 alle gewünschten Parameter füllen und dann speichern (STRG + S). Sofort erscheint der Bildschirm zum Anlegen einer Variante:

Variante Speichern SE38

Variante Speichern in der SE38

Nachdem Sie sie gespeichert haben, können Sie die Varianten auch über die SE38 hinaus verwenden. Wenn Sie zum Beispiel über die SM36 einen Hintergrundjob definieren wollen, können Sie ebenfalls die eben erstelle Variante verwenden, um alle passenden Parameter für den Job zu übergeben.

Varianten in der Hintergrundverarbeitung

Etwas spannender werden die Varianten für die Hintergrundverarbeitung, bspw. in folgendem Szenario: Sie entwickeln einen Report, der die Daten für andere Reports aufbereitet und diese dann dynamisch im Programm aufruft. Auch dann können Varianten ebenfalls sehr hilfreich sein. Ich zeige Ihnen im Folgenden, wie Sie Varianten dynamisch im Quellcode erstellen, verwenden und anschließend wieder löschen können.

So erstellen Sie Varianten mit ABAP

Um eine Variante zu erstellen,  verwenden Sie den Funktionsbaustein RS_CREATE_VARIANT. Für den Aufruf gibt es einige Parameter, die Sie befüllen müssen:

RS_CREATE_VARIANT

Aufruf Funktionsbaustein RS_CREATE_VARIANT

Die Parameter curr_report und curr_variant beschreiben den Namen des Reports, für den die Variante angelegt werden soll und den Namen der Variante selber. Achten Sie hierbei darauf, dass der Variantenname nicht bereits vergeben ist und Sie innerhalb der Längenbeschränkung bleiben. Ich habe auch festgestellt, dass Kleinbuchstaben beim Anlegen automatisch in Großbuchstaben umgewandelt werden und sich später auch nur noch mit Großbuchstaben ansteuern lassen.

Parameter vari_desc: Eigenschaften Ihrer Variante

Der Paramter vari_desc ist ein Strukturtyp, der die Eigenschaften der Variante definiert.

Eigenschaften der Variante

Eigenschaften der Variante befüllen

Besonders zentral hierbei ist das Feld „environmnt“. Hier entscheiden Sie, ob die Variante im Katalog (z. B.: SE38) sichtbar sein soll, oder nur der Hintergrundverarbeitung dient. Zum Testen Ihrer neuen Variante empfiehlt sich natürlich die Katalog-Variante, die Sie ganz einfach in der SE38 auswählen und prüfen können.

Tabelle vari_text: Texte Ihrer Variante

Die Tabelle vari_text enthält die Texte ihrer Variante, die Sie zum Beispiel im Katalog sehen. Für mehrsprachige Varianten können Sie hier einfach mehrere Tabelleneinträge pflegen.

Texte der Variante

Texte der Variante befüllen

Tabelle vari_contents: Inhalte Ihrer Variante

Zuletzt fehlt noch die Tabelle vari_contents, in der Sie die tatsächlichen Inhalte der Variante, also die Parameter für Ihren Selektionsbildschirm eintragen. Dementsprechend sind die Inhalte höchst spezifisch für den Report, den Sie ansteuern wollen. Für das folgende Beispiel habe ich die Inhalte für einen einfachen Aufruf des SAP Reports RHSTRU00 befüllt:

Inhalte der Variante

Inhalte der Variante befüllen

Konkret habe ich die Parameter „Planvariante“, „Objekttyp“, „ObjektId“ und „Auswertungsweg“ befüllt. Um die technischen Namen zu ermitteln, laden Sie den Selektionsbildschirm in der SE38, betätigen die F1-Hilfe im entsprechenden Parameter-Feld und sehen sich die technischen Informationen zum Parameter an. Für einen normalen Parameter „P“ können Sie immer „I“ als Sign und „EQ“ als Option verwenden. In das Feld „low“ der Struktur geben Sie anschließend Ihren Parameter-Wert ein. Bei Select-Options „S“ können Sie hierbei die volle Bandbreite verwenden. In meinem Fall habe ich in der Select-Option für die ObjektId einfach nur einen Einzelwert angegeben.

So testen Sie Ihre neue Variante

Wenn ich nun den Report starte, wird die Variante automatisch angelegt. Da ich eine Katalog-Variante erstellt habe, kann ich mir das Ergebnis in der SE38 anschauen.

Prüfen der Variante

Prüfen der Variante in der SE38

In meinem Fall sind die von mir angesteuerten Parameter richtig befüllt worden. Die Variante ist nun einsatzfähig.

So verwenden Sie eine Variante mit ABAP

Wie Sie die Variante in der Hintergrundverarbeitung verwenden, ist schnell erklärt. Mit SUBMIT rufen Sie einen Report auf. Das können Sie je nach Bedarf im selben internen Modus, in einem neuen internen Modus oder in einem eigenen Hintergrundjob tun.

Aufruf der Variante

Aufruf der Variante

Ich habe den Report-Namen hier in einer Konstante stehen, daher benötige ich die Klammern beim Aufruf. Der Zusatz USING SELECTION-SET steuert die Verwendung Ihrer Variante an. Hier können Sie einfach den Namen Ihrer vorher erstellten Variante wählen. Achten Sie darauf, dass Sie hierbei nur Großbuchstaben verwenden – andernfalls könnte es zu Problemen beim Aufruf kommen. Den Zusatz AND RETURN verwende ich, damit mein Programm im Anschluss an den Aufruf noch weiter läuft, um die Variante bspw. wieder zu löschen oder um andere Aufrufe zu starten.

ODATA Grundlagen

ODATA bildet die Schnittstelle zwischen dem UI5 Frontend und dem SAP Backend. Lesen Sie hier wichtigsten Learnings im Bereich ODATA.

So löschen Sie eine Variante mit ABAP

Falls Sie die Variante nach Verwendung nicht mehr benötigen, können Sie diese mit dem Funktionsbaustein RS_VARIANT_DELETE wieder löschen.

Löschen der Variante

Löschen der Variante

Report-Name und Varianten-Name sind an dieser Stelle wieder selbsterklärend. Die beiden Flags „flag_confirmscreen“ und „flag_delallclient“ setzen Sie auf „abap_true“, damit der Löschvorgang ohne Bestätigungs-Popup für den Benutzer durchgeführt wird.

Haben Sie noch Fragen?

Ich hoffe, Sie haben nun ein besseres Verständnis davon, wie Sie SAP Varianten im ABAP Code anlegen und verwenden. Haben Sie noch offene Fragen zu dem Thema, die Sie gerne besprechen würden? Zögern Sie nicht, mich auch persönlich anzusprechen. Ich freue mich auf Ihren Kontakt!

Florian Tent

Florian Tent

Als SAP Consultant bei der mindsquare begeistere ich mich für das Verstehen und Lösen von Problemen. Die Beratung im Personalwesen sticht für mich aufgrund des hohen Kommunikationsanteils und der großen Anzahl betroffener Mitarbeiter besonders heraus!

Sie haben Fragen? Kontaktieren Sie mich!



Das könnte Sie auch interessieren

In diesem Blogbeitrag möchte ich Ihnen zeigen, wie Sie einen ODATA-Service anlegen und testen können. Dabei erkläre ich zuerst einmal das ODATA Model mit Entitätstypen und EDM-Typen. Danach zeige ich Ihnen, wie Sie alle 5 Standard-Methoden des ODATA-Services implementieren und […]

weiterlesen

Viele Aufgaben in Personalabteilungen werden manuell bearbeitet. Mitarbeiter warten dadurch oftmals mehrere Wochen auf die Bearbeitung von Anträgen, Anfragen und ähnlichem. Gleichzeitig sind die Mitarbeiter der Personalabteilung häufig überarbeitet und gestresst. Viele dieser Prozesse beinhalten wiederkehrende und monotone Aufgaben. Diese […]

weiterlesen

SAP hat mit Fiori einen guten Standard in Sachen User Experience und App-Implementierung ins Leben gerufen. Viele dieser Anwendungen können bereits out-of-the-box genutzt werden. Doch was ist, wenn die internen Prozesse sich nicht mit der neuen Anwendung vereinbaren lassen? Dazu […]

weiterlesen

Mehr von unseren Partnern


Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.





Angebot anfordern
Preisliste herunterladen
Expert Session
Support