Report-Vorlage mit Lokaler Klasse

Aus SAP-Wiki
Wechseln zu:Navigation, Suche

Siehe Reporting.

Siehe Report-Vorlage mit Form-Routinen.

Siehe Report-Vorlage mit Lokaler Klasse.

Siehe ALV-Vorlage CL GUI ALV GRID.

Siehe ALV-Vorlage REUSE ALV GRID DISPLAY LVC.

siehe ALV-Vorlage CL SALV*.

Im Vergleich zur Reportvorlage mit Form-Routinen ist die Reportvorlage mit einer lokalen Klasse recht ähnlich. Unterschiedlich ist die Sichtbarkeit von globalen Variablen, wie Selektionsparametern in der lokalen Klasse. Die globalen Variablen vom Report sind nicht in der lokalen Klasse im Zugriff. Daher werden diese globalen Report-Variablen gewöhnlich bei der Instanzizierung der lokalen Klasse im Konstruktor der Klasse als Importparameter empfangen und Public- oder Private-Attributen der lokalen Klasse zugewiesen. Danach kann jede Methode der lokalen Klasse auf diese Attribute zugreifen. Hier erfolgt eine saubere Kapselung als bei einem Report mit globalen Report-Variablen/Parametern, die auch ohne Parameterübergabe innerhalb der Form-Routinen sichtbar sind.

"Data & Types

************************************************************************
* Programmname...............:                                         *
* Autor......................:  René Eberstein                         *
* Firma......................:  Eberstein Consulting                   *
* Projekt....................:                                         *
* Ticket.....................:                                         *
* Ansprechpartner Berater....:                                         *
* Ansprechpartner Fachabt....:                                         *
* Erstellt am................:  13.06.2021                             *
* Kopiert von................:                                         *
* Online/Batch/USER-EXIT ....:  Online                                 *
* Funktionsbeschreibung .....:                                         *
*                                                                      *
*                                                                      *
*                                                                      *
*----------------------------------------------------------------------*
*& Änderungen:                                                         *
*&                                                                     *
*----------------------------------------------------------------------*
*& <sy-uname>, <sy-datum>, <ticket>, <beschreibung>                    *
*&                                                                     *
*&---------------------------------------------------------------------*
report yz.

*include yz.._top.
*include yz.._class.

"Local Class

CLASS lcl_class DEFINITION FINAL.
  PUBLIC SECTION.
   Types: begin of ty_itab,
          kunnr type kna1-kunnr,
          end of ty_itab.

   Types: tty_itab type standard table of ty_itab with key kunnr. 
 
   Data: mt_itab type Standard table of ty_itab.

   Types: tyr_vbeln type range of vbak-vbeln.
   Data: mr_vbeln type tyr_vbeln.

   methods constructor.
   methods get_data.

 "PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.
CLASS lcl_class IMPLEMENTATION.
*&---------------------------------------------------------------------*
*&      Methode  CONSTRUCTOR
*&---------------------------------------------------------------------*
*       Instanzconstructor der Klasse
*----------------------------------------------------------------------*
method constructor.
* Übergabe Selektionsparameter an Klasse
  mr_vbeln = ir_vbeln.
endmethod.

*&---------------------------------------------------------------------*
*&      Methode  GET_DATA
*&---------------------------------------------------------------------*
*       Lesen Daten/Select (MT_ITAB füllen)
*----------------------------------------------------------------------*
method get_data.

  if sy-subrc <> 0.
    MESSAGE i550(fre). "Keine Datensätze gefunden
    leave list-processing.
  endif.

endmethod.
ENDCLASS.

"Parameters

**************
* PARAMETERS *
**************
Tables: vbak.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS: s_vbeln FOR vbak-vbeln.

SELECTION-SCREEN END OF BLOCK b1.

"Initialization

******************
* INITIALIZATION *
******************
INITIALIZATION.
 PERFORM initialization.

"At Selection-Screen

***********************
* AT SELECTION-SCREEN *
***********************
at selection-screen.

"Start-of-Selection

**********************
* START-OF-SELECTION *
**********************
start-of-selection.

DATA(go_class) = NEW lcl_class( ir_vbeln = s_vbeln[] ). 
************
* get data *
************
go_class->get_data( ).  "Daten in MT_ITAB

"Form initialization

*&---------------------------------------------------------------------*
*&      Form  INITIALIZATION
*&---------------------------------------------------------------------*
*       Default Routinen
*----------------------------------------------------------------------*
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