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.


