SELECT - ABAP-Schlüsselwortdokumentation (2024)

SAP NetWeaver AS ABAP Release 751, ©Copyright 2017 SAP AG. Alle Rechte vorbehalten.

ABAP - Schlüsselwortdokumentation→ABAP - Referenz→Externe Daten verarbeiten→ABAP-Datenbankzugriffe→Open SQL→Open SQL - Lesende Zugriffe→

SELECT

Kurzreferenz

Syntax

SELECT mainquery_clauses
[UNION ...]
INTO|APPENDING target
[additional_options].
...
[ENDSELECT].

Wirkung

Verwendung der Open-SQL-Anweisung SELECT als eigenständige Anweisung. Diese Anweisung liest Daten aus einer oder mehrerenDatenbanktabellen,klassischen Views oderCDS-Entitäten underzeugt daraus entweder eine mehrzeilige oder eine einzeilige Ergebnismenge und weist diese an geeignete ABAP-Datenobjekte zu.

Die Zusätze mainquery_clausesdefinieren, welche Daten in welcher Form von der Datenbank gelesen werden. Um die Ergebnismengen mehrererQueries zu kombinieren, kann das Sprachelement UNIONverwendet werden. Dabei gelten zusätzliche Regeln query_clauses für die Angabe der Klauseln. Abschließend werden folgende Eigenschaften definiert:

  • ABAP-Zielobjekte
In der INTO-Klausel werdenhinter INTO oder APPENDING die Datenobjekte target angegeben, denen die Ergebnismenge zeilenweise oder paketweise zugewiesen wird.
  • Weitere Zusätze
Optionale Zusätze additional_options legen fest, ob dieSAP-Pufferung umgangen wird, bestimmen die maximale Anzahl der zu lesenden Zeilen und definieren die Datenbankverbindung.

In den folgenden Fällen öffnet die Anweisung SELECT eine Schleife,die durch ENDSELECT abgeschlossen werden muss:

  • Bei der Zuweisung an einen nicht-tabellenartigen Zielbereich, d.h. bei einer SELECT-Anweisung ohne den Zusatz INTO|APPENDING ... TABLE, tritt eine mit ENDSELECT abzuschließende Schleife immer auf, außer wenn:
  • hinter SELECT der Zusatz SINGLE zum Auslesen genau einer Zeile angegeben ist
  • die Spalten der Ergebnismenge in der SELECT-Liste statisch angegeben sind, in ihr ausschließlichAggregatfunktionenauftreten und weder der Zusatz GROUPBY noch UNION angegeben sind.
  • Bei der Zuweisung an einen tabellenartigen Zielbereich d.h. bei einer SELECT-Anweisung mit dem Zusatz INTO|APPENDING ... TABLE, tritt eine mit ENDSELECT abzuschließende Schleife genau dann auf, wenn der Zusatz PACKAGE SIZE verwendet wird.

Bei jedem Schleifendurchgang weist die SELECT-Anweisung eine Zeile bzw. einPaket von Zeilen den in target angegebenen Datenobjekten zu. Wenn die letzteZeile zugewiesen wurde oder die Ergebnismenge leer ist, verzweigt SELECT zu ENDSELECT. Für die Verarbeitung einer SELECT-Schleife wird implizit einDatenbank-Cursor geöffnet und bei Beendigung der Schleife wieder geschlossen. In einem Programm dürfen Über dieOpen-SQL-Schnittstellemaximal 17 Datenbank-Cursor gleichzeitig geöffnet sein. Beim Versuch, mehr als 17 Datenbank-Cursorzu öffnen, kommt es zum Laufzeitfehler DBSQL_TOO_MANY_OPEN_CURSOR. Eine SELECT-Schleife kann mit den Anweisungen aus dem AbschnittSchleifen verlassen beendet werden. Wenn die Ergebnismengeden Datenobjekten komplett in einem Schritt übergeben wird, wird keine Schleife geöffnet und die Anweisung ENDSELECT darf nicht angegeben werden.

Systemfelder

Die Anweisung SELECT setzt die Werte der Systemfelder sy-subrc und sy-dbcnt.

sy-subrcBedeutung
0Die Anweisung SELECT setzt sy-subrc bei jederWertübergabe an ein ABAP-Datenobjekt auf 0. Außerdem setzt SELECTsy-subrc vor dem Verlassen einer SELECT-Schleifeüber ENDSELECT auf 0, wenn in der Schleife mindestens eine Zeile übergeben wurde.
4Die Anweisung SELECT setzt sy-subrc auf 4,wenn die Ergebnismenge leer ist. D.h. in der Regel, dass keine Daten auf der Datenbank gefunden wurden. Sonderregeln gelten bei der ausschließlichen Verwendung vonAggregatausdrücken alsSpaltenangaben inder SELECT-Liste der SELECT-Klausel.
8Die Anweisung SELECT setzt sy-subrc auf 8, wenn der Zusatz FOR UPDATE in result verwendet wird, ohne dass derPrimärschlüssel vollständig hinter WHERE spezifiziert wird.

Die Anweisung SELECT setzt sy-dbcnt nach jederWertübergabe an ein ABAP-Datenobjekt auf die Anzahl der bis dahin übergebenen Zeilen. Wenn dabei ein Überlauf eintritt, weil die Anzahl der Zeilen größer als 2.147.483.647 ist, wird sy-dbcnt auf -1 gesetzt. Wenn die Ergebnismenge leer ist, wird sy-dbcntauf 0 gesetzt. Wie bei sy-subrc gelten Sonderregeln bei der ausschließlichen Verwendung vonAggregatausdrücken alsSpaltenangaben in der SELECT-Liste der SELECT-Klausel.

Hinweise

  • Die in der SELECT-Anweisung formulierte Query wird in derDatenbankschnittstelle für die Programmierschnittstelle des Datenbanksystems umgesetzt und an dieses übergeben. Die Daten werdenpaketweise von der Datenbank gelesen und vom Datenbankserver zum aktuellenApplikationsservertransportiert. Auf dem Applikationsserver werden die Daten gemäß den Angaben im ZusatzINTO oder APPENDING an die Datenobjekte des ABAP-Programms übergeben.
  • SELECT-Schleifen sind schachtelbar. Aus Gründen der Performance sollte aber geprüft werden, ob ein Join oder eineSubquery nicht effizienter sind.
  • Neben den expliziten Open-SQL-Zugriffen über SELECT-Schleifen undmit OPEN CURSOR, öffnet die Open-SQL-Schnittstelle in bestimmten Situationen, wie z.B. beim Ladengepufferter Tabellen, auch implizit Datenbank-Cursor.Um den Laufzeitfehler DBSQL_TOO_MANY_OPEN_CURSOR zu verhindern, sollte deshalb die maximale Zahl geöffneter Datenbank-Cursor nicht durch explizite Zugriffe ausgenutzt werden.
  • Innerhalb einer SELECT-Schleife dürfen keine Anweisungen ausgeführt werden, die zu einemDatenbank-Commit oderDatenbank-Rollback und dadurch zum Schließen des zugehörigenDatenbank-Cursors führen.
  • Wenn innerhalb einer SELECT-Schleifeändernde Zugriffe auf in der Schleife ausgelesenenDatenquellen durchgeführt werden, ist das Verhalten datenbankabhängig und undefiniert. Solche Zugriffe sollten deshalb vermieden werden.
  • Die Anweisung ENDSELECT schließt alle mit der SELECT-Schleife verknüpften Leseströme.
  • Wenn mit SELECT auf eineCDS-Entität zugegriffen wird, die mit einerCDS-Rolle verknüpft ist und für welche dieCDS-Zugriffskontrolle nicht mit dem Wert #NOT_ALLOWED für die Annotation @AccessControl.authorizationCheck ausgeschaltet ist, werden implizit nur Daten gelesen, die der in der CDS-Rolle definiertenZugriffsbedingunggenügen. Es ist im ABAP-Programm nicht unterscheidbar, ob Daten auf Grund der Bedingungen der SELECT-Anweisung, der CDS-Entität oder einer zugeordneten CDS-Rolle nicht gelesen werden. Wenn auf dieCDS-Datenbank-View einer CDS-View zugegriffen wird, findet keine Zugriffskontrolle statt.
  • Ob eine SELECT-Anweisung nur auf durch einenDatenbank-Commit freigegebene Daten oder bereits auf noch nicht freigegebene Daten einer anderenDatenbank-LUW zugreift wird durch die aktuelle Isolationsebene festgelegt.
  • Die mit INTO|APPENDING eingeleitete INTO-Klausel sollte als letzte Klausel der SELECT-Anweisungaufgeführt werden. In diesem Fall müssen die optionalen Zusätze additional_options hinter der INTO-Klauselstehen. Aus Kompatiblitätsgründen kann die INTO-Klausel auchnoch vor oder hinter der FROM-Klauselstehen. Dann können die Zusätze additional_options auch vor oder hinter der FROM-Klausel stehen. Imstrikten Modus der Syntaxprüfung ab Release 7.50 muss die INTO-Klausel die letzte Klausel sein.
  • Die INTO-Klausel als letzte Klausel der SELECT-Anweisung führt zumstrikten Modus ab Release 7.40, SP08.
  • Außerhalb von Klassen ist noch eine obsoleteKurzform möglich, bei der die Angabe des Zielbereichsmit INTO bzw. APPENDING weggelassen werden kann, falls hinter FROM eine einzelne Datenbanktabelle oderklassische View statischangegeben ist, falls alle Spalten mit *ausgelesen werden und falls mit der Anweisung TABLES einTabellenarbeitsbereichdata_source für die entsprechende Datenbanktabelle bzw. klassischeView deklariert ist. Das System ergänzt die SELECT-Anweisung in diesem Fall implizit um den Zusatz INTO source.

Beispiel

Das Beispiel zeigt zwei SELECT-Anweisungen, die sich nur in der Anordnungihrer SELECT- und FROM-Klauseln unterscheiden. Das Ergebnis beider Anweisungen, die übereinen INNER JOIN auf zwei Datenbanktabellen zugreifen, ist identisch.

DATA cityfrom TYPE spfli-cityfrom VALUE 'NEW YORK'.

SELECT c~carrname, p~connid, p~cityfrom, p~cityto
FROM scarr AS c
INNER JOIN spfli AS p
ON c~carrid = p~carrid
WHERE p~cityfrom = @cityfrom
ORDER BY c~carrname, p~connid, p~cityfrom, p~cityto
INTO TABLE @DATA(result1)
UP TO 10 ROWS.

SELECT FROM scarr AS c
INNER JOIN spfli AS p
ON c~carrid = p~carrid
FIELDS c~carrname, p~connid, p~cityfrom, p~cityto
WHERE p~cityfrom = @cityfrom
ORDER BY c~carrname, p~connid, p~cityfrom, p~cityto
INTO TABLE @DATA(result2)
UP TO 10 ROWS.

ASSERT result2 = result1.
cl_demo_output=>display( result1 ).

Weiterlesen
SELECT - mainquery_clauses
ENDSELECT
SELECT - Beispiele

SELECT - ABAP-Schlüsselwortdokumentation (2024)

References

Top Articles
Autorondreis Canada - Mountain Country (20 dagen) - CanadaPLUS
Best Hosted PBX Services Of 2024
Tiny Tina Deadshot Build
Section 4Rs Dodger Stadium
Rondale Moore Or Gabe Davis
Retro Ride Teardrop
House Share: What we learned living with strangers
Carter Joseph Hopf
Moe Gangat Age
Sitcoms Online Message Board
Koop hier ‘verloren pakketten’, een nieuwe Italiaanse zaak en dit wil je ook even weten - indebuurt Utrecht
Nalley Tartar Sauce
Nashville Predators Wiki
[Birthday Column] Celebrating Sarada's Birthday on 3/31! Looking Back on the Successor to the Uchiha Legacy Who Dreams of Becoming Hokage! | NARUTO OFFICIAL SITE (NARUTO & BORUTO)
Find Such That The Following Matrix Is Singular.
Bj Alex Mangabuddy
Adam4Adam Discount Codes
Officialmilarosee
Skip The Games Fairbanks Alaska
Project, Time & Expense Tracking Software for Business
Dr Ayad Alsaadi
Crossword Help - Find Missing Letters & Solve Clues
Helpers Needed At Once Bug Fables
Kabob-House-Spokane Photos
Accuradio Unblocked
No Limit Telegram Channel
Is Henry Dicarlo Leaving Ktla
Meijer Deli Trays Brochure
Stickley Furniture
Publix Christmas Dinner 2022
Account Now Login In
3473372961
Grays Anatomy Wiki
404-459-1280
Tas Restaurant Fall River Ma
Chris Provost Daughter Addie
Top-ranked Wisconsin beats Marquette in front of record volleyball crowd at Fiserv Forum. What we learned.
Tds Wifi Outage
Craigslist Pets Huntsville Alabama
Oxford House Peoria Il
Conroe Isd Sign In
Suffix With Pent Crossword Clue
התחבר/י או הירשם/הירשמי כדי לראות.
Best Restaurants West Bend
Giovanna Ewbank Nua
Hovia reveals top 4 feel-good wallpaper trends for 2024
LumiSpa iO Activating Cleanser kaufen | 19% Rabatt | NuSkin
M&T Bank
The top 10 takeaways from the Harris-Trump presidential debate
Smoke From Street Outlaws Net Worth
Gear Bicycle Sales Butler Pa
Room For Easels And Canvas Crossword Clue
Latest Posts
Article information

Author: Geoffrey Lueilwitz

Last Updated:

Views: 6105

Rating: 5 / 5 (80 voted)

Reviews: 87% of readers found this page helpful

Author information

Name: Geoffrey Lueilwitz

Birthday: 1997-03-23

Address: 74183 Thomas Course, Port Micheal, OK 55446-1529

Phone: +13408645881558

Job: Global Representative

Hobby: Sailing, Vehicle restoration, Rowing, Ghost hunting, Scrapbooking, Rugby, Board sports

Introduction: My name is Geoffrey Lueilwitz, I am a zealous, encouraging, sparkling, enchanting, graceful, faithful, nice person who loves writing and wants to share my knowledge and understanding with you.