Einfaches Reportmenü

Mit diesem Programm können Sie einfach Reports als Menü einbinden. Die Einbindung erfolgt zwar statisch, ist aber eine ganz nette Alternative zu einem mit SE43 erstellten Benutzer-Menü. Durch Klick auf das [i]-Symbol wird die Dokumentation zum Report angezeigt. Das Menü eignet sich also recht gut zur Sammlung wenig genutzter Programme, bei denen man sich vor Ausführung noch einmal versichern kann, was das Programm denn macht.

Anmerkung

Mit einer kleinen Änderung ist es natürlich auch möglich, eine Transaktion aufzurufen. Hierzu muss nur eine weitere Variable im Makro _TEXT_ definiert werden. Bei AT SELECTION-SCREEN muss man dann eben noch prüfen, ob die Variable gesetzt ist und kann dann entsprechend einen Call Transaktion anstelle des SUBMIT machen.

Coding

REPORT Z_REPORTMENUE .
**********************************************************************
***                                                                ***
***                   https://tricktresor.com                   ***
***                                                                ***
**********************************************************************

*--------------------------------------------------------------------*
*
* Einfach zu erstellendes Menü für Reports
*
*--------------------------------------------------------------------*

type-pools: icon.

*-- Datendeklaration
DATA:          var(30).
FIELD-SYMBOLS: <rep>, <skip>.

*** MAKRO FÜR DRUCKKNOPF ***
DEFINE _button_.
selection-screen begin of line.
*-- Druckknopf zum Start des Reports
selection-screen pushbutton 2(70) pb&1 user-command pb&1.
*-- Druckknopf für Doku
  selection-screen pushbutton 75(4) in&1 user-command in&1.
selection-screen end   of line.
selection-screen skip 1.
*-- Variablendeklaration
data rp&1 type syrepid.
data im&1 type c.
END-OF-DEFINITION.

*** MAKRO ZUR TEXTZUWEISUNG ***
DEFINE _text_.
*-- Variablenzuweisung
concatenate &2 &3 into pb&1.
rp&1 = &4.
in&1 = '@0S@Info'.
im&1 = &5.

END-OF-DEFINITION.

*-- Block 1
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP 1.
_button_: a1,a2.
SELECTION-SCREEN END   OF BLOCK 1.

*-- Block 2
SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE text-002.
SELECTION-SCREEN SKIP 1.
_button_: b1,b2.
SELECTION-SCREEN END   OF BLOCK 2.

*-- Block 3
SELECTION-SCREEN BEGIN OF BLOCK 3 WITH FRAME TITLE text-003.
SELECTION-SCREEN SKIP 1.
_button_: c1,c2,c3.
SELECTION-SCREEN END   OF BLOCK 3.

INITIALIZATION.
*-- Block 1
  _text_ a1 icon_transport
  'Texte transportieren'
  'RSTXTRAN' space.

  _text_ a2 icon_binary_document
  'Konvertiere SAPscript-Standardtext nach RAW-Format (ASCII)'
  'RSTXCNVR' space.

*-- Block 2
  _text_ b1 icon_display
  'Anzeige Icons'
  'RSTXICON' 'X'.

  _text_ b2 icon_header
  'Anzeige Symbole'
  'RSTXSYMB' 'X'.

*-- Block 3
  _text_ c1 icon_compare
  'Vergleich zweier Formulare'
  'RSTXFCOM' space.

  _text_ c2 icon_copy_object
  'Formulare zwischen Mandanten kopieren'
  'RSTXFCPY' space.

  _text_ c3 icon_information
  'Umfassende Informationen zu einem Formular'
  'RSTXFINF' space.

AT SELECTION-SCREEN.
*-- Drucktasten auswerten
  CASE sy-ucomm(2).
*-- Report aufrufen
    WHEN 'PB'.
*-- Reportnamen ermitteln
      CONCATENATE 'RP' sy-ucomm+2(4) INTO var.
      ASSIGN (var) TO <rep>.
*-- Soll der Report sofort ausgeführt werden?
      CONCATENATE 'IM' sy-ucomm+2(4) INTO var.
      ASSIGN (var) TO <skip>.
      IF <skip> = space.
*-- Aufruf über Selektionsbild
        SUBMIT (<rep>) VIA SELECTION-SCREEN AND RETURN.
      ELSE.
*-- Sofortige Ausführung
        SUBMIT (<rep>) AND RETURN.
      ENDIF.

    WHEN 'IN'.
*-- Dokumentation zum Report aufrufen
      CONCATENATE 'RP' sy-ucomm+2(4) INTO var.
      ASSIGN (var) TO <rep>.
      CALL FUNCTION 'RS_TOOL_ACCESS'
        EXPORTING
          operation           = 'DOCS'
          object_name         = <rep>
          object_type         = 'PROG'
        EXCEPTIONS
          invalid_object_type = 1
          OTHERS              = 2.

  ENDCASE.
Enno Wulff

Leave a Comment