Hallo ABAPer
ich möchte gerne in einem ALV-Grid eine Spalte anzeigen, in der einfach die Zeilennummer der angezeigten Zeilen steht, von oben nach unten durchnummeriert.
Auch wenn der Benutzer das ALV umsortiert oder filtert, soll die oberste angezeigte Zeile wieder die Nummer 1 haben und die zweite die 2, auch wenn gefilterte dazwischen lägen. Und das am besten, ohne dass ich die interne Tabelle nach Sortieren oder Filtern neu aufbauen muss.
Anwendung: der Benutzer markiert die obersten n Zeilen in dem Grid und führt damit eine Funktion aus.
Wie viele Zeilen markiert werden, ist je nach Kontext unterschiedlich, jedenfalls will der Benutzer z.B. mal die obersten 10, mal 13 oder auch mal 20 Zeilen markieren, aber die Zeilen während des Markierens nicht mitzählen müssen.
Eine Zeilennummer wie in Excel scheint mir die naheliegendste Lösung. Da sieht man gleich wie viele Zeilen man markiert.
Kann man dafür diese ROW_ID von LVC_S_ROID verwenden? Wie kriege ich die im ALV angezeigt?
Als Workaround fällt mir nur ein: eine Funktion "Zeilen markieren" und ich frage in einem PopUp die gewünschte Anzahl n ab und markiere dann die ersten n Zeilen programmatisch. Kommt mir aber aus Anwendersicht umständlich vor...
registriere den Event AFTER_USER_COMMAND.
Im Handler musst du schauen, ob eine der einschlägigen ALV-Funktionen, die eine Änderung der Sortierung verursachen könnten ausgeführt wurde ( Sortieren, Filtern, evtl. Zwischensummen ) und falls ja einfach die Zeilen neu nummerieren.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag: michamint