Ansicht
Dokumentation

ABENSELECT_HIERARCHY_DESC_AGG - SELECT HIERARCHY DESC AGG

ABENSELECT_HIERARCHY_DESC_AGG - SELECT HIERARCHY DESC AGG

PERFORM Short Reference   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

SELECT, FROM hierarchy_descendants_aggregate

... HIERARCHY_DESCENDANTS_AGGREGATE(
      SOURCE hierarchy $[AS tabalias$]
     $[JOIN data_source $[AS tabalias$] ON sql_cond$]
      MEASURES agg_func1 AS alias1$[,
               agg_func2 AS alias2$[,
               ...$]$]
     $[WHERE sql_cond$]
     $[WITH SUBTOTAL$]
     $[WITH BALANCE$]
     $[WITH NOT MATCHED$]
     $[WITH TOTAL$] ) ...


Zusätze:

1. ... JOIN data_source $[AS tabalias$]

2. ... WHERE sql_cond

3. ... WITH SUBTOTAL

4. ... WITH BALANCE

5. ... WITH NOT MATCHED

6. ... WITH TOTAL

Wirkung

Angabe des Hierarchieaggregatnavigators HIERARCHY_DESCENDANTS_AGGREGATE als Datenquelle data_source in einer Query von . Er greift auf die hinter SOURCE angegebene SQL-Hierarchie hierarchy zu und wertet diese aus. Hinter der SQL-Hierarchie kann mit AS ein Aliasname für diese angegeben werden, der innerhalb der runden Klammern gültig ist und dann dort an den Stellen, an denen die SQL-Hierarchie angesprochen wird, verwendet werden muss.

Der Hierarchienavigator HIERARCHY_DESCENDANTS_AGGREGATE gibt ein tabellarisches Ergebnis zurück, das aus den Hierarchieknoten der hinter SOURCE angegebenen SQL-Hierarchie hierarchy besteht, welche die optional angegebene WHERE-Bedingung erfüllen. Wenn keine WHERE-Bedingung angegeben ist, sind dies alle Hierarchieknoten. Für jeden Knoten des Ergebnisses werden die hinter MEASURES angegebenen Aggregatfunktionen auf die Zeilenmenge angewendet, die sich aus dem Knoten und allen seinen Nachfahrenknoten ergibt. Das Ergebnis jeder Aggregatfunktion wird im aktuellen Knoten als Inhalt einer eigenen zusätzlichen Spalte abgelegt.

Hinter MEASURES muss eine kommaseparierte Liste von Aggregatfunktionen agg_func1, agg_func2, ... angegeben werden. Es muss mindestens eine Aggregatfunktion angegeben werden. Jeder Aggregatfunktion muss ein Aliasname alias1, alias2, ... zugeordnet werden. Die Argumente der Aggregatfunktionen können einzelne Spalten col der SQL-Hierarchie hierarchy inklusive ihrer Hierarchiespalten oder einer hinter JOIN angegebenen Datenquelle data_source sein. Den Spalten kann bzw. muss über den Spaltenselektor ~ der Name der SQL-Hierarchie oder Datenquelle vorangestellt werden. Es sind folgende Aggregatfunktionen möglich:

  • Wenn JOIN nicht angegeben ist, können die Argumente col Spalten der SQL-Hierarchie sein und es können folgende Aggregatfunktionen verwendet werden:
MIN( col ),
MAX( col ),
SUM( col ),
COUNT( $[DISTINCT$] col ),
COUNT( * ), COUNT(*)
Der Zusatz DISTINCT ist nur für COUNT möglich.
  • Wenn JOIN angegeben ist, können die Argumente col Spalten der SQL-Hierarchie und der Datenquelle hinter data_source sein und die folgende Aggregatfunktionen können verwendet werden:
MIN( col ),
MAX( col ),
SUM( col ),
COUNT( $[DISTINCT$] col )
Der Zusatz DISTINCT ist nur für COUNT und nur für Spalten der SQL-Hierarchie möglich.

Die Aggregatfunktionen wirken wie allgemein beschrieben, außer dass als Argumente nur Spalten col erlaubt sind und dass das Ergebnis der Funktion COUNT INT8 statt INT4 ist. Für jede Aggregatfunktion wird dem tabellarischen Ergebnis des Hierarchienavigators eine Spalte mit dem über AS definierten Aliasnamen hinzugefügt, welche in jeder Zeile das Ergebnis der Aggregatfunktion enthält. Diese Spalten gehören nicht zu den Hierarchiespalten. Sie werden wie eine Spalte der als Quelle angegebenen SQL-Hierarchie bei der Angabe von * oder ...~* in der SELECT-Liste gelesen und tragen zu einer in der INTO-Klausel mit einer Inline-Deklaration @DATA$|@FINAL(...) erzeugten Struktur bzw. internen Tabelle bei.

Zusätzlich zu den Hierarchiespalten der hinter SOURCE angegebenen SQL-Hierarchie enthält die Ergebnismenge eine weitere Hierarchiespalte HIERARCHY_AGGREGATE_TYPE vom Typ INT1, welche in den Zeilen der Ergebnismenge, welche durch die optionalen WITH-Zusätze erzeugt werden, einen Indikator für den erzeugenden Zusatz und ansonsten den numerischen Wert 0 enthält.

Beispiel

Aufruf des Hierarchienavigators HIERARCHY_DESCENDANTS_AGGREGATE im Programm DEMO_HIERARCHY_AGGREGATE, wobei die CDS-Hierarchie DEMO_CDS_PARENT_CHILD_AGG als Quelle angegeben ist. Die WHERE-Bedingung wertet deren Hierarchiespalte HIERARCHY_LEVEL aus und es werden nur Knoten mit maximaler Hierarchieebene 2 in die Ergebnismenge übernommen. Die Aggregatfunktionen berücksichtigen aber alle Nachfahrenknoten unabhängig von deren Hierarchieebene. Ein Ausführen des Programms zeigt die Wirkung des Hierarchienavigators.

Zusatz 1

... JOIN data_source $[AS tabalias$]

Wirkung

Mit dem optionalen Zusatz JOIN kann eine weitere Datenquelle data_source mit der hinter SOURCE angegebenen SQL-Hierarchie verknüpft werden. Für data_source gilt das Gleiche wie für jede Datenquelle einer Query mit der Ausnahme, dass keine Pfadausdrücke sql_path möglich sind. Hinter der Datenquelle kann mit AS ein Aliasname für diese angegeben werden, der innerhalb der runden Klammern gültig ist und dann dort an den Stellen, an denen die Datenquelle angesprochen wird, verwendet werden muss.

Die Ergebnismenge der SQL-Hierarchie wird nach den Regeln von LEFT OUTER JOIN mit der Ergebnismenge der Datenquelle data_source verknüpft. Für die ON-Bedingung gelten die Regeln für Bedingungen sql_cond in Ausdrücken. Spalten der Datenquelle können als Argumente der Aggregatfunktionen hinter MEASURES verwendet werden, für die sie gemäß ihres Datentyps geeignet sind. Die werden aber nicht als zusätzliche Spalten zum tabellarischen Ergebnis des Hierarchienavigators hinzugefügt.

Die hinter MEASURES angegebenen Aggregatfunktionen werden für jeden Knoten der ursprünglichen SQL-Hierarchie, welcher die WHERE-Bedingung erfüllt, auf jeden Nachfahrenknoten angewendet, der gemäß der Eltern-Kind-Beziehung in der Ergebnismenge des Joins vorhanden ist.

Hinweise

  • Der Zusatz JOIN ändert nicht die Anzahl der Zeilen der Ergebnismenge des Hierarchienavigators HIERARCHY_DESCENDANTS_AGGREGATE. Wenn es aber in der Ergebnismenge des Joins mehr Nachfahrenknoten zu einem Knoten gibt, als in der ursprünglichen SQL-Hierarchie, werden diese alle in den Aggregatfunktionen berücksichtigt. Auch ein mehrfach vorkommender Ausgangsknoten einer Berechnung wird mehrfach berücksichtigt.

Hierarchienavigator HIERARCHY_DESCENDANTS_AGGREGATE

Zusatz 2

... WHERE sql_cond

Wirkung

Die WHERE-Bedingung selektiert die Knoten der hinter SOURCE angegebenen SQL-Hierarchie, welche in die Ergebnismenge des Hierarchienavigators aufgenommen werden. In der Bedingung sql_cond können Spalten der SQL-Hierarchie inklusive der zusätzlichen Hierarchiespalten verwendet werden.

Hinweise

  • Die WHERE-Bedingung beschränkt nicht die Nachfahrenknoten der selektierten Knoten. Sie dient nur der Auswahl der Knoten, für welche die Aggregatfunktionen berechnet werden sollen.
  • Die Spalten einer über JOIN verknüpften Datenquelle können nicht hinter WHERE verwendet werden.

Zusatz 3

... WITH SUBTOTAL

Zusatz 4

... WITH BALANCE

Zusatz 5

... WITH NOT MATCHED

Zusatz 6

... WITH TOTAL

Wirkung

Jeder der optionalen WITH-Zusätze, die in beliebiger Reihenfolge angegeben werden können, fügt genau eine Zeile zum tabellarischen Ergebnis des Hierarchieaggregatnavigators HIERARCHY_DESCENDANTS_AGGREGATE hinzu. In der hinzugefügten Zeile enthalten alle Spalten inklusive der Hierarchiespalten außer den durch den Zusatz MEASURES erzeugten Spalten und außer der Hierarchiespalte HIERARCHY_AGGREGATE_TYPE den Null-Wert. Die spezielle Hierarchiespalte HIERARCHY_AGGREGATE_TYPE zeigt mit folgenden Werten an, welcher WITH-Zusatz die Zeile hinzugefügt hat:

WITH-Zusatz HIERARCHY_AGGREGATE_TYPE
SUBTOTAL 1
BALANCE 2
NOT MATCHED 3
TOTAL 4

In den nicht durch WITH erzeugten Zeilen enthält die Hierarchiespalte HIERARCHY_AGGREGATE_TYPE den numerischen Wert 0. Die durch den Zusatz MEASURES erzeugten Spalten enthalten die Ergebnisse ihrer Aggregatfunktionen für die durch den WITH-Zusatz wie folgt bestimmten Hierarchieknoten:

  • WITH SUBTOTAL
Die Aggregatfunktionen werten alle Hierarchieknoten aus, welche die WHERE-Bedingung des Hierarchienavigators erfüllen.
  • WITH BALANCE
Die Aggregatfunktionen werten alle Hierarchieknoten aus, welche die WHERE-Bedingung des Hierarchienavigators nicht erfüllen.
  • WITH NOT MATCHED
Dieser Zusatz kann nur zusammen mit dem JOIN-Zusatz angegeben werden. Die Aggregatfunktionen werten alle Zeilen der hinter JOIN angegebenen Datenquelle data_source aus, für welche die ON-Bedingung des Joins nicht erfüllt ist.
  • WITH TOTAL
Die Aggregatfunktionen werten alle Hierarchieknoten zuzüglich der Zeilen einer hinter JOIN angegebenen Datenquelle data_source, welche die ON-Bedingung nicht erfüllen aus.

Hinweis

Bei Verwendung einer der WITH-Zusätze wird die Syntaxprüfung im strikten Modus ab Release ausgeführt.

Hierarchienavigator HIERARCHY_DESCENDANTS_AGGREGATE mit WITH






rdisp/max_wprun_time - Maximum work process run time   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 17410 Date: 20240523 Time: 102234     sap01-206 ( 268 ms )