Report-Vorlage mit Lokaler Klasse

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

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* (Factory).

Siehe Vorlage Upload/Download Datei Frontend.

Siehe Vorlage Upload CSV-Datei mit Job-Steps und Suche nach Stichwort in Programmen. template:Report-Vorlagen Siehe Kategorie: ABAP-Vorlagen.

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

************************************************************************
* Reportname.................:                                         *
* Paket......................:                                         *
* Autor......................:  René Eberstein                         *
* Ticket.....................:                                         *
* Ansprechpartner Berater....:                                         *
* Ansprechpartner Fachabt....:                                         *
* Erstellt am................:  29.03.2024                             *
* Online/Batch/USER-EXIT ....:  Online                                 *
* Tabellen...................:                                         *
* Funktionsbeschreibung .....:                                         *
*                                                                      *
*                                                                      *
*                                                                      *
*----------------------------------------------------------------------*
*& Änderungen:                                                         *
*&                                                                     *
*----------------------------------------------------------------------*
*& <nr> <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.

SELECT-OPTIONS: 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[] ). 
 DATA(go_class) = NEW lcl_class( ). 
************
* get data *
************
go_class->get_data( ).  "Daten in MT_ITAB

"Form initialization

*&---------------------------------------------------------------------*
*&      Form  INITIALIZATION
*&---------------------------------------------------------------------*
*       Default Routinen
*----------------------------------------------------------------------*
FORM initialization.


ENDFORM.                    "INITIALIZATION