Automatisches Ziehen einer Reportingvariante

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

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.

VarianteZiehen1.jpg

Benennen Sie den Parameter und legen eine Beschreibung an

VarianteZiehen2.jpg

Nun kann im eigenen Benutzerstamm "Eigene Daten - Parameter" der neue SET/GET-Parameter mit einer Variante gepflegt werden.

VarianteZiehen3.jpg

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.

Web-Links