Automatisches Ziehen einer Reportingvariante
Es kann sehr praktisch sein, wenn eine Reportingvariante automatisch gezogen wird.
Vorteile
- Beim Testen eines Reports muss der Entwickler die Selektionsfelder nicht immer neu auszufüllen oder manuell eine Variante auswählen
- Die Anwender können im Produktivsystem die Initialisierung der Felder verändern, ohne dass das Coding verändert werden muss
- Schnelle Anpassungen sind möglich
- Der Entwickler muss das Coding nicht anpassen
- Es sind keine Transporte vom Entwicklungssystem ins Produktivsystem nötig
Codinganpassungen in Initialization-Routine des Reports
Hier wird im Report eine Variante STANDARD angelegt.
Diese Variante wird durch den Aufruf des Funktionsbausteins RS_SUPPORT_SELECTIONS beim Initialization-Eventr des Reports aufgerufen, sodass diese Variante beim Start des Reports automatisch gezogen wird.
form initialization. data: lv_report type rsvar-report, lv_variant type rsvar-variant. * Variante STANDARD wird automatisch gezogen lv_report = sy-repid. lv_variant = 'STANDARD'. call function 'RS_SUPPORT_SELECTIONS' exporting report = lv_report variant = lv_variant exceptions variant_not_existent = 1 variant_obsolete = 2 others = 3. if sy-subrc <> 0. * Variante & ist nicht vorhanden message i809(00) with lv_variant. endif. endform. " initialization
Ziehen einer benutzerabhängigen Variante
Noch flexibler ist es, wenn die User in "Eigene Daten - Parameter" selber eine Variante einpflegen können, die automatisch gezogen wird.
Dazu muss zunächst per SE80 und Rechter Mausklick auf ein Paket ein SET/GET-Parameter angelegt werden.
Benennen Sie den Parameter und legen eine Beschreibung an
Nun kann im eigenen Benutzerstamm "Eigene Daten - Parameter" der neue SET/GET-Parameter mit einer Variante gepflegt werden.
Diese Variante wird nun im Report ausgelesen und gezogen.
INITIALIZATION. PERFORM variante_ziehen.
FORM variante_ziehen. DATA: lv_vari TYPE rsvar-variant. CONSTANTS: lc_report TYPE rsvar-report VALUE sy-repid. * Parameter wird in "Eigene Daten" gepflegt mit Variante, die * im Programm angelegt wurde GET PARAMETER ID 'YLOC_LC_EINFUHR' FIELD lv_vari. * Automatisch Ausführen Programm mit Selektionsvariante STANDARD IF sy-slset IS INITIAL AND lv_vari IS NOT INITIAL. CALL FUNCTION 'RS_SUPPORT_SELECTIONS' EXPORTING report = lc_report variant = lv_vari EXCEPTIONS variant_not_existent = 1 variant_obsolete = 2 OTHERS = 3. IF sy-subrc <> 0. * Report & mit Variante & existiert nicht MESSAGE i059(/bdl/d-) WITH lc_report lv_vari. ENDIF. ENDIF. ENDFORM. " variante_ziehen
Pflegetabelle mit Varianten
Alternativ ist auch eine Pflegetabelle Z_VARIANTEN denkbar, wo für ausführbare Reporte jeder User eine Variante in einem Pflegeview abspeichern kann, die dann während der Laufzeit für diesen User gezogen wird. Man spart sich hier das jeweilige Anlegen eines SET/GET-Parameters und durch die Tabelle wird sofort ersichtlich für welche Reporte und Anwender Defaultvarianten eingestellt sind.
Felder
Key:
- PROGNAME type PROGNAME
- BNAME type XUBNAME
Sonstige:
- VARIANT type VARIANT
Coding
DATA: lv_variant TYPE rsvar-variant. Select variant into lv_variant from Z_VARIANTEN where programe = sy-repid and bname = sy-uname. check sy-subrc = 0. call function 'RS_SUPPORT_SELECTIONS' exporting report = lv_report variant = lv_variant exceptions variant_not_existent = 1 variant_obsolete = 2 others = 3. if sy-subrc <> 0. * Variante & ist nicht vorhanden message i809(00) with lv_variant. endif.