Moin,
SELECT SINGLE liest immer den ersten Datensatz von der Datenbank der die Selektionskriterien erfüllt (Und ich würde mich nie darauf verlassen das die Daten in wie auch immer gearteter Reihenfolge auf der Datenbank stehen).
Ich würde statt SELECT SINGLE einen normalen SELECT ... ENDSELECT verwenden der sich ja wie eine Schleife verhält. Wenn es wirklich die Belegnummer sein soll und nicht so etwas wie Buchungsdatum, dann würde ich das in etwa so machen:
DATA: ls_ekpo type ekpo,
bestellung like ekpo-ebeln.
CLEAR: bestellung.
SELECT SINGLE * FROM ekpo INTO ls_ekpo WHERE matnr EQ mara-matnr
AND elikz EQ space
AND loekz NE 'L'
AND ebeln BETWEEN 4300000000 AND 4599999999.
IF ls_ekpo-ebeln GT bestellung.
bestellung = ls_ekpo-ebeln.
ENDIF.
ENDSELECT.
Das ist natürlich die am wenigsten performanteste Form, besser wäre beim SELECT das ORDER BY kriterium zu verwenden (ob dann SELECT SINGLE noch funktioniert bin ich mir nicht sicher, dann wäre es am elegantesten, ansonsten EXIT nach dem ersten Durchlauf)..
Ungetesteter Code, Gruß,
Olli