ich habe eine stinknormales ALV-Grid (CL_GUI_ALV_GRID) erzeugt und möchte die Grid-Tabelle nun z. B. nach Datum sortieren. Nach der Sortierung markiere ich eine Zeile und möchte die Werte der markierten Zeile für andere Zwecke übernehmen per Command-Button. Problem: Über GET_SELECTED_ROWS erhalte ich zwar den richtigen Zeilenindex, doch der passt nicht zur unsortierten Ursprungstabelle. Die Werte der sortierten Tabelle befinden sich im Protected Attribute MT_OUTTAB. Ich möchte also über den Zeilenindex die Werte der markierten MT_OUTTAB-Zeile erhalten und nicht der Ursprungstabelle. Leider finde ich keine passende Methode, um mit dem Zeilenindex auf die sortierte Tabelle (MT_OUTTAB) zugreifen zu können, um die Zeilenwerte auszulesen. Any ideas?
Ich würde in die MT_OUTTAB noch irgendeinen Identifier mit reinpacken. Timestamp Feld welches nicht angezeigt wird. Oder ne ID die automatisch hochzählt. Damit kannst über den Zeilen Index aus GET_SELECTED_ROWS den Identifyer auslsen und dann in der unsortierten Tabelle die Zeile finden und weiter verarbeiten.
Du könntest dir auch vom ALV-Grid die Sortierkriterien liefern lassen (Methode GET_SORT_CRITERIA) und deine Inputtabelle entsprechend BY (otab) nachsortieren.
Hast du eigentlich mal geprüft, ob beim Sortieren nicht auch deine Ursprungstabelle mit sortiert wird. Denn m.E. wird doch die Tabelle via CallByReference übergeben und das ist auch der Grund, warum der ALV, wenn man eine sortierte Tabelle übergibt zwar angezeigt wird aber dann, wenn man anders sortiert dumpt, weil eben die Originaltabelle nicht verändert werden darf. Ich schreibe andauernd ALVs und lasse da hin- und her sortieren und greife immer über den Zeilenindex und auf die Originaltabelle zu. Welchen Sinn hätte sonst auch die Methode GET_SELECTED_ROWS wenn Sie dir nicht die Tabellenzeilen der Tabelle übergäbe, die du angegeben hast.