SQL und Performance


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

SQL und Performance

Beitragvon Hagbard » 24.11.2005, 08:51

In der Tabelle zr1_sd_msp sind Produkthierachien abgelegt, die per Schleife abgefragt werden. Der Eingangswert ist von der Größe variabel z.B.
1421990000, anschliessend wird so lange der Wert um 1
subtrahiert bis ein Eintag in der Datenbank gefunden wurde.
Ist es auch möglich, das mit einer SQL-Abfrage zutätigen, ohne Schleife.
Vielen Dank!

l_prdha = f_konp-prdha.
l_length = strlen( l_prdha ).

WHILE l_length > 0.
l_prdha = l_prdha(l_length).

SELECT SINGLE * FROM zr1_sd_msp INTO st_i_msp
WHERE vkorg = f_konp-vkorg
AND vtweg = f_konp-vtweg
AND prdha = l_prdha.
IF sy-subrc IS INITIAL.
APPEND st_i_msp.
IF l_prdha <> f_konp-prdha.
st_i_msp-prdha = f_konp-prdha.
APPEND st_i_msp.
ENDIF.
EXIT.
ENDIF.
l_length = l_length - 1.
ENDWHILE.
Hagbard
 

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Beitragvon Arno Simon » 24.11.2005, 09:01

Hallo Hagbard,

Deine Erläuterung ist mE so nicht ganz richtig. Du dekrementierst nicht den Wert an sich, sondern die Länge des Zeichenkettenanteils des Wertes der für den Vergleich herangezogen wird.

Sprich

1. Schritt: 1421990000
2. Schritt: 142199000

Jedenfalls ließt sich Dein Codingausschnitt für mich entsprechend....

Würde nur l_prdha dekrementiert, sollte es nach meinem dafürhalten (ungetestet) so funktionieren:
Code: Alles auswählen
SELECT SINGLE *
  FROM zr1_sd_msp
  INTO st_i_msp
 WHERE vkorg = f_konp-vkorg  
   AND vtweg = f_konp-vtweg
   AND prdha LE l_prdha
 ORDER BY prdha DESCENDING.


vG

Arno
Arno Simon
ForumUser
 
Beiträge: 84
Registriert: 06.06.2005, 10:11
Wohnort: Oberhausen
Dank erhalten: 1 mal

Beitragvon Andreas G » 24.11.2005, 09:04

Hallo Hagbard.

Ich weis nicht, ob ich deine Frage richtig verstanden habe, aber vielleicht hift dir das:
Wenn du nur einen Wert (den ersten gefundenen Wert) selektieren willst probiers mal mit SELECT SINGLE ... Damit wird nur ein Einzelsatz gelesen und du benötigst kein ENDSELECT.

mfg Andi
Hauptsoch: HAUPTSOCH!
Andreas G
Specialist
 
Beiträge: 175
Registriert: 05.10.2005, 14:13
Wohnort: w4tel
Dank erhalten: 0 mal


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Keine Ausgabe von 0,00 bei Beträgen
vor 15 Stunden von msfox 0 Antw.
gelöst Dynamischer Methodenaufruf mit dynamischer Tabelle
vor 18 Stunden von mark.thk 2 Antw.
Viele IDocs ohne Bestätigung per RFC
vor 20 Stunden von gs3rr4 0 Antw.
PDF Originale aus Kpro im Webbrowser anzeigen lassen
Gestern von DanielFulda 0 Antw.
Workflow: Bearbeiterfindung für Workitem wiederholen
vor 2 Tagen von DeathAndPain 0 Antw.

  Ähnliche Beiträge beta
Performance von INE vs. EEQ
22.08.2013, 10:40 von black_adept 3 Antw.
Performance
02.04.2018, 08:49 von gtoXX 3 Antw.
Inner Joins - Performance
09.02.2006, 13:52 von Gast 10 Antw.
Performance Select
14.08.2008, 15:29 von GastX 3 Antw.
Performance Optimierung
23.03.2011, 10:38 von milka_12 2 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]