Generische Select Order-By-Klausel

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

Hier ist die Order-By-Sortierung einer Tabelle erst zur Laufzeit bekannt. Die Felder werden mit einem Parameter P_ORDER im Selektionsbildschirm abgefragt und mit "(gt_order)" dem Select-Statement übergeben.

Um einen Laufzeitfehler zu vermeiden, wenn es in der Tabelle die Felder nicht gibt, wird mit einem Try-Endtry-Befehl eine Fehlerbehandlung durchgeführt.

PARAMETERS: p_order(70) type c.

DATA: oerror     TYPE REF TO cx_root,
      txterror   TYPE string,
      gt_order   type table of string,
      gt_sflight type table of sflight.

append p_order to gt_order.

TRY.
    SELECT carrid
      INTO CORRESPONDING FIELDS OF TABLE gt_sflight
      from sflight
      order by (gt_order).

  CATCH cx_sy_dynamic_osql_semantics INTO oerror.
    txterror = oerror->get_text( ).
    MESSAGE i531(0u) WITH txterror.
ENDTRY.

Literatur