Ansicht
Dokumentation

CL_TABLE_BUFFER_APPL - Anwendungsspezifische Tabellenpufferung

CL_TABLE_BUFFER_APPL - Anwendungsspezifische Tabellenpufferung

CPI1466 during Backup   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Viele Anwendungen gehen bei der Verarbeitung Ihrer Daten nach dem gleichen Schema vor:

Customizingtabellen und/oder Anwendungstabellen werden mittels SELECT in eine interne Tabelle gelesen und die weitere Prozessierung erfolgt dann über die interne Tabelle.

Vor dem Laden der Daten mittels des SELECT Statements wird noch geprüft, ob die Daten bereits in die interne Tabelle geladen wurden.

Es wäre oftmals auch noch wünschenswert, wenn die Daten einer Datenbanktabelle abhängig von bestimmten Kriterien in separaten internen Tabellen (mit der gleichen Struktur) verwaltet werden könnten.

Die Klasse CL_TABLE_BUFFER_APPL versucht, diese Funktionalität im Zusammenspiel mit Unterklassen zu realisieren.

Leistungsumfang der Klasse CL_TABLE_BUFFER_APPL:

  • Instanzverwaltung der Unterklassen, d.h. lesen und puffern der gewünschten Daten.

    Über einen frei definierbaren Schlüssel kann festgelegt werden, wie Objekte der Unterklasse erzeugt werden.

    Der Schlüssel setzt sich zusammen aus
  • IV_CLIENT
    Mandant (Space bei mandentenunabhängigen Tabellen)

  • IV_TABNAME
    Name der zu lesenden Datenbanktabelle

  • IV_INSTANCE_KEY
    max. 39 stelliger, frei wählbarer Schlüsselteil

    Pro Schlüssel wird eine Instanz der Unterklasse erzeugt. Der Aufrufer braucht sich also keine Gedanken darüber zu machen, ob eine Instanz bereits erzeugt wurde und die Daten von der Datenbank in die entsprechende interne Tabelle der Unterklasse geladen wurden oder nicht.

    Der Aufrufer fordert lediglich die Instanz mittels der Methode GET_INSTANCE an (siehe Eigenschaften der Unterklasse) und arbeitet dann mit den gelesenen Daten (entweder über die Methode GET_TABLE oder eine eigene Methodenimplementierung).

  • Löschen der erzeugten Instanzen und freigeben des SHARED Buffers

Pro zu lesender Datenbanktabelle wird eine Unterklasse angelegt, die von der Klasse CL_TABLE_BUFFER_APPL erbt.

Eigenschaften der Unterklasse:

  • Instanzerzeugung PROTECTED
  • die Klasse CL_TABLE_BUFFER_APPL muss als Freund deklariert werden
  • Definition einer internen Tabelle mit dem Namen GT_tabname, wobei tabname der Name der zu lesenden Datenbanktabelle ist
  • Definition eines CONSTRUCTORs mit den gleichen Parametern wie der CONSTRUCTOR der Klasse CL_TABLE_BUFFER_APPL.

    Der CONSTRUCTOR ruft die protected Method SET_TABLE auf oder redefiniert diese Methode, um den Datenbankzugriff selbst zu übernehmen.
  • Definition der statischen (public) Methoden GET_INSTANCE und DELETE_INSTANCE.

    Diese Methoden können entweder über das Interface IF_TABLE_BUFFER_APPL eingefügt werden, oder aber selbst deklariert werden.

    Die Methode GET_INSTANCE ruft die protected Method INSTANCE_MANAGER der Klasse CL_TABLE_BUFFER_APPL, um eine Instanz von sich selbst zu erzeugen. Hierbei müssen die Parameter IV_CLASS_NAME und IV_TABNAME versorgt werden.

    Die Methode DELETE_INSTANCE ruft die protected Method DELETE der Klasse CL_TABLE_BUFFER_APPL auf, um eine Instanz explizit wieder freizugeben.

    Am einfachsten ist es, die Beispielklasse CL_TABLE_BUFFER_SFLIGHT zu kopieren und dann die Attribute GC_TABNAME, GC_CLASSNAME und GT_TADIR, sowie die Konstruktor Methode anzupassen bzw. zu ändern

Beziehungen

Beispiel

Hinweise

Der Report RTABLE_BUFFER_APPL_RESET bietet die Möglichkeit, alle von dieser Klasse erzeugten SHARED BUFFER Einträge wieder freizugeben.

Weiterführende Informationen






BAL_S_LOG - Application Log: Log header data   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 5124 Date: 20240426 Time: 180957     sap01-206 ( 67 ms )