DB Abfrage in interne Tabelle - Sortierung

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
3 Beiträge • Seite 1 von 1
3 Beiträge Seite 1 von 1

DB Abfrage in interne Tabelle - Sortierung

Beitrag von Eddi (ForumUser / 8 / 0 / 0 ) »
Hi,

eine Frage:
Wenn ich in einem Select Statement mit Zusatz "for all entries of itab" eine DB Tabelle abfrage, wird dann das Ergebnis bereits nach dem Primärschlüssel der DB Tabelle sortiert sein, nur weil ich den vollen primär Schlüssel in meiner Where-Klausel angebe? Ich meine nicht.

Beispiel:

die DB Tabelle /BI0/PMATERIAL hat den Primärschlüssel MATERIAL

Code: Alles auswählen.

data: IT_0MATERIAL type sorted table of /BI0/PMATERIAL
                       with unique key MATERIAL.
Ich will nun in einem Rutsch in diese interne Tabelle alle Einträge schreiben, denen MATERIAL bereits in meiner internen Tabelle DATAPAK vorhanden ist.

Code: Alles auswählen.

select MATERIAL /BIC/BH_MATPRD from /BI0/PMATERIAL
         into corresponding fields of table it_0material
         for all entries in DATAPAK
         where MATERIAL = DATAPAK-MATNR
         and   OBJVERS  = 'A'.
DATAPAK-MATNR war:

Code: Alles auswählen.

'000000000000000004'.
'000000000000000004'.
'000000000000000005'.
'000000000000000003'.
"Zufälliger" Weise hat dieses Statement funktioniert, sprich das Ergebnis von der Datenbank muss sortiert gewesen sein, sodass das Einfügen in die interne Tabelle keine Probleme bereitete.

Aber wenn es kein Zufall war, würde ich gerne die Logik von SAP bzw. der Oracle Datenbank dahinter verstehen. Die "for all entries"- Tabelle ist definitiv nicht sortiert gewesen. Die interne Tabelle hat sogar doppelte Einträge enthalten.

Mein SQL Trace hat leider nicht viel ergeben. Schlussfolgerung: SAP/Oracle sortiert bereite eigenständig die "for all entries" tabelle und eliminiert doppelte Einträge. Da Oracle einen Index für den Primätschlüssel verwendet, hat lediglich die Sortierung der "for all entries" Tabelle und der Index Zugriff dazu geführt, dass das Abfrageergebnis nach dem Primärschlüssel sortiert war.
Da die Interne Tabelle nun über den gleichen unique Key wie die DB Tabelle verfügt, gab es keine Probleme beim Einfügen in diese.

Ist das so richtig?

:-) Gruß, Eddi

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
ÄHM, Nein.

Dein ergebnis kommt dir glaub nur sortiert vor, weil deine Interne Tabelle eine SORTET TABLE ist.

Das einzige was der FOR ALL ENTRIES bewirkt ist, das das im Endergebnis alle exakt doppelten rausgeschmissen werden.

Beitrag von ralf.wenzel (Top Expert / 3935 / 200 / 281 ) »
DeathGuardian hat geschrieben:Dein ergebnis kommt dir glaub nur sortiert vor, weil deine Interne Tabelle eine SORTET TABLE ist.
Tja, das wolle ich auch erst schreiben - aber weil das so offensichtlich ist, habe ich gedacht, dass ich die Frage nicht verstanden habe ;)

Wichtig beim "for all entries" ist, dass die itab auf keinen fall leer sein darf -- das vergessen viele (ist mir auch schon passiert). Darum sag ichs für die Mitlesenden nochmal dazu.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Seite 1 von 1

Vergleichbare Themen

6
Antw.
719
Views
Interne Tabelle Sortierung
von abap_frischling » 28.02.2022 20:16 • Verfasst in ABAP® für Anfänger
4
Antw.
1143
Views
5
Antw.
2142
Views
Inhalt interne Tabelle an andere interne Tabelle übergeben
von L0w-RiDer » 30.01.2020 16:28 • Verfasst in ABAP® für Anfänger
9
Antw.
5537
Views
Sortierung der internen Tabelle nach SELECT
von cali » 04.10.2006 15:02 • Verfasst in ABAP® Core
2
Antw.
2091
Views
Sortierung einer Tabelle klappt nicht...
von Lamerman » 06.06.2006 15:38 • Verfasst in Web-Dynpro, BSP + BHTML

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
Gestern von tar 8 / 432
Daten an Tabelle binden
vor 2 Tagen von Bright4.5 3 / 1678
Programm anlegen mit Vorlage
vor 3 Tagen von DeathAndPain 2 / 332
IT0024 Qualifikationen CP-ID
vor 3 Tagen von DeathAndPain 2 / 572

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
Gestern von tar 8 / 432
Daten an Tabelle binden
vor 2 Tagen von Bright4.5 3 / 1678
Programm anlegen mit Vorlage
vor 3 Tagen von DeathAndPain 2 / 332
IT0024 Qualifikationen CP-ID
vor 3 Tagen von DeathAndPain 2 / 572

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 3 Tagen von snooga87 1 / 266
aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3451
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9999