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!
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.
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:
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.