BEx webbasierten Variablendialog kundenindividuell anpassen

1      Einführung

Die Möglichkeiten der Anpassung des Variablendialoges eines webbasierten Berichtes waren bisher stark eingeschränkt. Über Parameter des WebTemplate und mit Hilfe der Web Design API kann das zwar das Verhalten des WebTemplates bezüglich der Variablen beeinflusst werden aber nicht das Layout und die Verarbeitungslogik der Eingabe.

 SAP_Standard_Variable_Dialog
Abbildung 1.1: SAP Standard Variable Dialog

Mit dem Patch NW730 BI JAVA SP08 Patch 30 (siehe auch Hinweis 1622306) bietet SAP eine Möglichkeit das Layout und die Verarbeitungslogik für folgende Dialoge, bezüglich der Variablenverarbeitung,  anzupassen:

  • Variablendialog
  • Dialog für die F4 Hilfe einzelner Variablen
  • Filterdialog einzelner Merkmale

Für die kundenindividuelle Anpassung des Variablendialoges stehen zwei alternative Wege zur Verfügung:

  • Kundenindividuelle Formatierung und Positionierung
  • Kundenindividuelles Layout und Verarbeitungslogik

Das Prinzip der Implementierung ist für alle Arten der Anpassung identisch. Über ein Web Item vom Typen Individuelle Erweiterung wird der BEx Web-Laufzeitumgebung ein HTML und/oder JavaScript Codesegment (Snipplte) übergeben. Die BEx Web-Laufzeitumgebung ersetzt den SAP Standard Code durch die übergebenen Codesegmente. Damit die BEx Web-Laufzeitumgebung diesen Ersetzungsprozess durchführt müssen bestimmte Rahmenbedingungen erfüllt sein.

Ich gehe weiter unten noch im Detail auf die Implementierung ein.

2      Kundenindividuelle Formatierung und Positionierung

Die erste Möglichkeit den Variablendialog kundenindividuell anzupassen ist, die einzelnen Elemente des Variablendialoges kundenindividuell zu Positionieren. Zur Bestimmung der Positionen der einzelnen Elemente können beliebige HTML Tags verwendet werden. Für die einzelnen Elemente stehen Muster (Pattern) zur Verfügung die innerhalb eines kundenindividuellen HTML Textes platziert werden können.

Folgende Elemente stehen zur Verfügung:

  • Bereich Varianten
  • Bereich Personalisieren
  • Jede einzelne Variable des Berichtes
  • OK-Button
  • Check-Button

Die Pattern werden als individuelle XML-Tags im kundenindividuelle HTML Coding platziert. Die BEx Web-Laufzeitumgebung erkennt die Pattern und ersetzt sie durch das benötigte Coding.

Abbildung 2.2 zeigt in (1) einen angepassten Variablendialog in dem die Bereiche Varianten und Personalisieren so wie die Button OK und Check analog zum Standard Variablendialog positioniert wurden. Die Variablen wurden unterteilt in zeitbezogene Variablen und nicht zeitbezogene Variablen. Um diese Gliederung besser hervorzuheben wurde für die einzelnen Typen jeweils eine eigene Gruppe erzeugt.

customer_individual_variabledialog
Abbildung 2.1: Kundenindividuelle Formatierung und Positionierung

Die Anpassung in (2) zeigt die Verwendung von komplexeren HTML Komponenten. Hier werden nur die zeitbezogenen Variablen direkt dargestellt und alle weiteren Variablen werden über einen Tray ausgeblendet. Hierdurch kann der Variablendialog für Berichten mit sehr vielen Variablen übersichtlicher gestaltet werden und somit der Bedienungskomfort erhöht werden.

Die Implementierung der hier verwendeten Tray Komponente erfolgt rein über HTML und JavaScript und Bedarf keinen Round-Trip.

Diese Darstellung könnte auch über eine Personalisierung erreicht werden, die könnte aber nicht zentral gesteuert werden.

3      Kundenindividueller Variablendialog

Eine weitere Möglichkeit den Variablendialog anzupassen ist es das Layout und die Verarbeitungslogik für die einzelnen Variablen kundenindividuell zu gestalten.

Bei dieser Variante wird nicht das SAP Standard HTML Coding des gesamten Variablendialoges durch kundenindividuelles HTML Coding ersetzt sondern nur die Bereiche für die Eingabe der Variablenwerte. Im Variablendialog in Abbildung 3.1 wurde das SAP Standard HTML Coding für die beiden Variablen Current Yera Period und Previous Year Period durch kundenindividuelle HMTL Coding ersetzt.

customer_individual_variabledialog_2
Abbildung 3.1: Kundenindividueller Variablendialog

Für die Beispielimplementierung in Abbildung 3.1 wurde neben der sehr individuellen Oberfläche zur Eingabe einer Periode noch zusätzliches JavaScript Coding hinterlegt, über das eine Abhängigkeit der beiden Variablen Current Yera Period und Previous Year Period implementiert wurde.

Validierung und Anpassung von Variablenwerten

Bei der Eingabe eines Periodenwertes für eine der beiden Variablen wird automatisch geprüft ob der Variablenwert der anderen Periode, nach kundenspezifischen Regeln, noch gültig ist. Ist dies nicht der Fall wird der Wert entsprechend der Regeln direkt angepasst.

Eine solche Validierung und Anpassung ist ohne diese Erweiterung nicht möglich, da es im Customer Exit im I_STEP 3 nicht möglich ist die Werte des Anwenders zu überschreiben.

Analog zur Implementierung eines kundenindividuellen Variablendialoges muss auch hier über ein Web Item vom Typen Individuelle Erweiterung der SAP Standard HTML Code ersetzt werden. Bei dieser Variante muss für jede Variable ein Web Item vom Typen Individuelle Erweiterung im WebTemplate hinterlegt werden.

Für die Implementierung des kundenspezifischen HTML Coding werden für einige HTML Elemente auch hier Pattern zur Verfügung gestellt. Für folgende HTML Elemente stehen Pattern zur Verfügung:

  • Input Feld
  • Dropdown-Box
  • Label

Die Pattern dienen der Erleichterung zur Erstellung eines Portal Layout konformen HTML Codes, sie müssen aber nicht zwingend verwendet werden.

Einige Eigenschaften der Erweiterung können über die Parameter des Web Item vom Typen Individuelle Erweiterung im WebTemplate angepasst werden.

Bei jeder Erweiterung wird zusätzlich, durch die BEx Web-Laufzeitumgebung, ein Standard Variablen Eingabefeld in das Layout hineingeneriert. Über die Web Item Parameter können Sie steuern ob das Eingabefeld oberhalb oder unterhalb des kundeneigenen Layouts dargestellt werden soll.

Standard Eingabefeld

Mit Hilfe von JavaScript ist es auch möglich das Standard Eingabefeld auszublenden. Wichtig ist aber das es innerhalb der HTML Seite verfügbar ist. Auch der Button für die F4-Wertehilfe kann mit Hilfe von JavaScript ausgeblendet werden wenn dies nicht benötigt wird.

Ziel der Implementierung ist es dieses Eingabefeld mit dem Variablenwert zu füllen.

Layout

In der aktuellen Version müssen gerade in Bezug auf das Layout noch einige Anpassungen vorgenommen werden. Dies gilt zum Beispiel für die Breite des Variablendialoges, die Höhe der Zeile in der eine kundenindividuelle Anpassung eingebettet wird und die Positionierung des Standard Eingabefeldes für den Variablenwert.

4      Kundenindividuelle F4- und Filterdialoge

Eine weitere Möglichkeit der Variablendarstellung ist die kundenindividuelle Anpassung der F4- und Filterdialoge. Abbildung 4.1 zeigt zwei unterschiedliche Implementierungen zu einem F4 Wertehilfedialog für die Variable ZTK_0I0DAYS. Im oberen Beispiel werden die Werte einer Bezugsperiode mit angezeigt.

Abhängigkeiten zwischen Variablen

Der F4-Wertehilfe-Dialog steht dient explizit für eine Variable. Bei dieser Variante ist es nicht möglich die Werte einer anderen mit zu beeinflussen. Technisch gesehen enthält der Dialog ein zusätzliches Eingabefeld das den Wert der Variablen enthält. Dieses Feld ist genau der Variablen zugeordnet. Der Wert dieses Feldes wird beim Schließen des Dialoges über den OK-Button dem Variablendialog für genau diese Variable übergeben. Die Erweiterung ersetzt lediglich das HTML Coding innerhalb des F4-Wertehilfedialoges.

customer_individual_F4_and_filterdialog
Abbildung 4.1: Kundenindividueller F4- und Filterdialog

Für jeden Dialog muss ein eigenes Web Item vom Typen Individuelle Erweiterung im WebTemplate bereitgestellt werden. Hierbei ist es möglich die Implementierung wiederzuverwenden. Sie wollen einen individuellen F4-Wertehilfedialog für die Variabel 0I_CALMONTH (basiert auf 0CALMONTH) Implementieren. Gleichzeitig möchten Sie aber auch, dass wenn der Anwender im Bericht einen Filter auf das Merkmal 0CALMONTH anwendet der Filterdialog das analoge Verhalten hat wie der F4-Wertehilfedialog. Dies können Sie erreichen in dem Sie für beide Web Item die gleiche Implementierungsklasse verwenden. Genauso gut ist es möglich unterschiedliche Dialoge zu implementieren.

5      Implementierung

Die Implementierung aller beschriebenen Erweiterungen erfolgt immer über das gleiche Prinzip. Abbildung 5.1 zeigt die Architektur der einzelnen Erweiterungen.

Architecture_SAP_Standard
Abbildung 5.1: Architektur – SAP Standard

Die Anzahl der Implementierungen des Web Item vom Typen Individuelle Erweiterung kann auf Grund der vielen Kombinationsmöglichkeiten sehr schnell ansteigen. Zu jeder  Implementierung eines Web Item vom Typen Individuelle Erweiterung gehört immer eine implementierende ABAP-OO Klasse.

Mit Hilfe eines BAdIs können die unterschiedlichen Implementierungen besser organisiert und strukturiert werden. Des Weiteren bietet die erweiterte Architektur durch das BAdI Framework die Möglichkeit Implementierungstemplates zu erstellen die den Aufwand neuer Implementierungen stark vereinfachen und verkürzen. Zusätzlich kann eine Fallback Implementierung hinterlegt werden für den Fall, dass eine Implementierung nicht verfügbar ist.

Architecture_SAP_Standard_with_BAdI
Abbildung 5.2: Architektur – SAP Standard mit BAdI

 

Dieser Beitrag wurde unter SAP veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar