Ich möchte gerne ein ALV basteln und um die Anzahl der Einträge zu bestimmen soll am Selection Screen eine Parameter mitgegeben werden (ähnlich zur SE16N). Hat jemand bereits etwas ähnliches gemacht und könnte mir erklären wie das funktioniert.
Worin genau besteht Dein Problem? Du machst einen Report, packst einen Parameter auf's Selektionsbild, liest Deine Daten bis maximal so viele Zeilen wie der Parameterwert und zeigst das ALV an.
Das ist alles trivial, so dass ich gerne wissen würde, wobei Du genau Hilfe brauchst. Oder kannst Du noch gar nicht programmieren und willst einen ABAP-Kurs?
Eventuell denke ich da grade zu Komplex. Ich würde mich eher noch als Anfänger einstufen, aber habe schon ein paar Reports geschrieben.
Ich bin davon ausgegangen, dass ich einen bestimmten Type beim Parameter angeben muss (eventuell von einer Klasse) und diesen befüllten Parameter dann einer Methode einer Klasse oder ähnlichem weitergebe um die Anzahl der Ergebnisse beim ALV einzuschränken.
Für den Aufruf des ALV benutze ich die Klasse cl_salv_gui_table_ida und die Methode create_for_cds_view, weil ich den Select über einen CDS View machen möchte.
Na der Datentyp des Parameters wird I sein, wenn da eine maximale Anzahl rein soll. Du musst da nicht auf einen DDIC-Typ referenzieren.
Das ALV erzeugt keine Ergebnisse. Es zeigt sie nur an. Die Ergebnisse musst Du vorher ermitteln und in einer internen Tabelle bereitstellen, die Du dann als ALV darstellen lässt. Bei der Ermittlung der Ergebnisse musst Du mit der Begrenzung ansetzen. Wenn Deine Ergebnisse beispielsweise aus einem SELECT-Befehl kommen, kannst Du mit dem Zusatz UP TO obergrenze ROWS der Datenbank sagen, dass sie nach obergrenze Ergebnissen aufhören soll zu liefern.
Wenn alle Stricke reißen und Deine Ermittlungsroutine es partout nicht hergibt, die Anzahl der Ergebniszeilen zu begrenzen, dann musst Du halt alles einlesen und dann alle Zeilen der internen Tabelle bis auf die gewünschte Anzahl wieder löschen, bevor Du sie an die ALV-Klasse weiterreichst.