SORT BY (otab)

Zusatz 5

… BY (otab)

Wirkung

Mit dem Zusatz BY (otab) wird nicht nach dem primären Tabellenschlüssel, sondern nach den in der internen Tabelle otab dynamisch angegebenen Komponenten sortiert. Jede Zeile der Tabelle otab definiert eine Komponente des Sortierschlüssels. Die Priorität der Sortierung richtet sich nach der Reihenfolge der Zeilen in otab. Wenn die Tabelle otab initial ist, wird nicht sortiert.

Für otab muss eine Standardtabelle vom Tabellentyp ABAP_SORTORDER_TAB aus dem ABAP Dictionary angegeben werden. Der Zeilentyp dieser Tabelle ist die Dictionary-Struktur ABAP_SORTORDER mit folgenden Komponenten:

  • NAME vom Typ SSTRING

    für die Angabe einer Komponente des Sortierschlüssels. Die Komponentenangabe wird in der Form „comp_name[+off(len)]“ gemacht, wobei „comp_name“ die Bezeichnung einer in itab vorhandenen Komponente in Großbuchstaben sein muss. Die Bezeichnung der Komponente kann Offset-/Längenangaben, Strukturkomponenten-Selektoren und Komponentenselektoren für die Zuweisung von Attributen in Klassen bzw. Objekten sowie von strukturierten Datenobjekten enthalten.
  • DESCENDING vom Typ CHAR der Länge 1

    für die Angabe der Sortierrichtung für die aktuelle Komponente. Wenn DESCENDING initial ist, wird aufsteigend, wenn DESCENDING den Wert „X“ hat, wird absteigend sortiert.
  • ASTEXT vom Typ CHAR der Länge 1

    für die textuelle Sortierung der aktuellen Komponente. Wenn ASTEXT den Wert „X“ hat, wird wie mit dem Zusatz AS TEXT sortiert. Dies ist nur für zeichenartige Komponenten möglich. Wenn ASTEXT initial ist, werden zeichenartige Komponenten nach ihrer binären Darstellung sortiert.

Bei ungültigem Inhalt in einer Spalte von otab, d.h. NAME enthält den Namen einer nicht vorhandenen Komponente oder eine falsche Offset-/Längenangabe, DESCENDING oder ASTEXT enthalten nicht „X“ oder den Initialwert, kommt es zu einer behandelbaren Ausnahme der Klasse CX_SY_DYN_TABLE_ILL_COMP_VAL.

Hinweise

  • Der Zusatz BY (otab) kann nicht mit BY compi kombiniert werden.
  • Beim Zusatz BY (otab) kann nicht explizit mit den Zusätzen DESCENDING oder AS TEXT eine absteigende Sortierrichtung bzw. eine textuelle Sortierung für alle Komponenten vorgegeben werden.
  • Wenn hinter dem Zusatz BY ein einziges eingeklammertes Datenobjekt (dobj) angegeben ist, entscheidet sein Datentyp darüber, ob sein Inhalt als Angabe einer einzelnen dynamischen Komponente oder mehrerer Komponenten dient. In beiden Fällen wird bei initialem dobj keine Sortierung durchgeführt.