Ansicht
Dokumentation
CL_RSDRI_POSTFLTR - Filtert Ergebnisse in RSDRI_INFOPROV_READ nach
General Data in Customer Master Fill RESBD Structure from EBP Component StructureDiese Dokumentation steht unter dem Copyright der SAP AG.
Funktionalität
RSDRI-Postfilter:
Filtert Daten eines Infoproviders in der Methode 'Read' der Klasse CL_RSDRI_INFOPROV entsprechend den RSDRI Selektionsbedingungen (Parameter: 'i_t_range' und 'i_th_tablsel'), falls der Infoprovider selbst nicht die Filterung durchführen kann (z.B. externe Infoprovider).
Der RSDRI-Postfilter wird in 2 Phasen ausgeführt, die von folgenden Methoden umgesetzt werden:
-
Phase 1 ('Constructor' und Methode 'build_filter'): Aus den Parametern 'i_t_range' und 'i_th_tablsel'
wird ein opt. Ausführungsplan erstellt, der den Filter umsetzt. Der Ausführungsplan besteht
aus einzelnen Operatoren. Als logische Operatoren werden die Selektion, der Semi-Join, der Sort und
der Scan-Operator eingesetzt. Die Selektion führt die Filterung entsprechend des 'i_t_range'
Parameters durch (inkl. Hierarchieselektion). Der Semi-Join Operator setzt eine Tabellenselektion (aus
'i_th_tablsel') um. Für jede logische Operation (Selektion und Semi-Join) gibt es mehrere physische
Implementierungen (z.B. Hash- oder Sortmerge Semi-Join), die entsprechend den Daten gewählt werden, um eine optimale Ausführung zu erzielen. Siehe Methode 'build_filter' der Klasse
CL_RSDRI_POSTFLTR>. -
Phase 2 (Methode 'filter'): Anschließend wird der Ausführungsplan ausgeführt (d.h. die tatsächliche Filterung wird auf jedes Datenpacket angewendet). Siehe Methode 'filter' der Klasse
CL_RSDRI _POSTFLTR>.
Die folgenden physischen Operatoren sind aktuell umgesetzt:
- CL_RSDRI_FLTROP_SELABAP: Der Operator setzt einen Filter auf einer internen Tabelle mit Hilfe von ABAP Mitteln (dyn. WHERE-Bedingung auf einer internen Tabelle).
- CL_RSDRI_FLTROP_MDS: Der Operator setzt einen Filter auf einer internen Tabelle mit Hilfe der Klasse CL_RSMDS_FILTER Filter um, die Service-Methoden für multidimensionale Daten bietet. Diese Klasse kann als Alternative von CL_RSDRI_FLTROP_SELABAP verwendet werden, in denen es noch keine dyn. WHERE-Bedingung auf internen Tabellen gibt).
- CL_RSDRI_FLTROP_SMSEMIJOIN: Die Klasse setzt einen Sort-Merge-Semijoin um, der die Nachfilterung der Tabellenseletkion (d.h. des Parameters 'i_th_tablsel') ermöglicht. Der Join ist ein Semi-Equi-Join auf einen Attribute der internen Tabelle und dem in 'i_th_tablsel' angegebenen Attribut der Datenbanktabelle.
- CL_RSDRI_FLTROP_SMSEMIJOIN: Die Klasse setzt einen Hash-Semijoin um, der die Nachfilterung der Tabellenseletkion (d.h. des Parameters 'i_th_tablsel') ermöglicht. Die Semantik des Joins ist wie zuvor für die Klasse CL_RSDRI_FLTROP_SMSEMIJOIN beschrieben.
- CL_RSDRI_FLTROP_SORT: Die Klasse setzt einen Sort-Operator auf einer internen Tabelle für ein Sortierattribut um. Dient zur Umsetzung des
- Sort-Merge-Semijoins.
- CL_RSDRI_FLTROP_MSORT: Die Klasse setzt einen Sort-Operator auf einer internen Tabelle für mehrere Sortierattribute um. Die zur Umsetzung einer Sortierreihenfolge, die in der 'i_th_sfc' angegeben ist.
- CL_RSDRI_FLTROP_EMPTY: Liefert eine leere interne Tabelle mit den in 'i_th_sfc' angegeben Attributen. Dient zur Optimierung der Filterung, falls bekannt ist, dass der Filter ein leeres Ergebnis liefern muss (z.B. bei Join-Attributen mit unterschiedlichen Datentypen).
- CL_RSDRI_FLTROP_SCAN: Die Klasse setzt einen Scan-Operator für ein Datenpacket um, das von einem Infoprovider zurückgeliefert wird. Die Klasse implementiert eine Methode 'push_data' die ein neues Datenpacket dem Postfilter zur Filterung bereitstellt.
Jeder der o.g. Operatoren ist als Iterator umgesetzt (Methoden: 'open', 'next', 'close'):
- Die Methode 'open' bereitet die Filterung vor (z.B. Erzeugen von Hash-Tabellen).
- Die Methode 'next' wendet den Operator auf ein Datenpacket an.
- Die Methode 'close' räumt nach der Filterung auf (z.B. leert gepufferte Hash-Tabellen).
Beziehungen
Der RSDRI-Postfilter wird in der Klasse CL_RSDRI_INFOPROV verwendet.
Beispiel
Eine RSDRI Selektionsbedingung mit:
- i_t_range:
- i_th_tablesel:
kann als folgender Ausführungsplan umgesetzt werden (Datenfluss vom Blatt zur Wurzel):
Hash-Semijoin (Bedingung: 0product = tmptbl1-product)
| |
| tmptbl1
|
ABAP-Selektion (Bedingung: 0customer = 'SAP')
|
Scan (Lesen der RSDRI Datenpackete)
Hinweise
Weiterführende Informationen
Fill RESBD Structure from EBP Component Structure BAL_S_LOG - Application Log: Log header data
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 5549 Date: 20240426 Time: 170504 sap01-206 ( 61 ms )