a-dead-trousers hat geschrieben: ↑09.05.2023 15:11
Ist es gesichert, dass auf der Datenbank in diesen zwei Feldern nur Zahlen vorkommen?
Wenn ja, verwende für deine interne Tabelle beim Einlesen eine andere Struktur, welche diese Felder als numerische Datentypen definiert hat und verwende den Zusatz INTO CORRESPONDING FIELDS OF beim SELECT.
Ist bei CHAR insofern kritisch, als da auf jeden Fall auch Leerzeichen im Spiel sein werden, wenn die Länge der Zahl kürzer ist als die Länge des betreffenden CHAR-Feldes. Ich bin nicht sicher, inwieweit es da Probleme geben könnte, wenn diese Leerzeichen in der Datenbank z.B. am Anfang des Feldes stehen (rechtsbündige Felder).
Man könnte aber einfach hingehen, die Feldwerte alle rechtsbündig in die interne Tabelle schreiben (SHIFT wert RIGHT DELETING TRAILING SPACE) und die interne Tabelle dann einfach nach den betreffenden Spalten sortieren. Der Clou dabei ist, dass man dafür den Spaltentyp nicht ändern muss, also die betreffenden Spalten der internen Tabelle durchaus auch als CHAR definiert lassen kann. Die Sortierung wird trotzdem richtig werden
(da dann nach ASCII-Code sortiert wird, was auf das Gleiche hinausläuft). Nebenbei wäre dieser Ansatz robuster, da er einem nicht wegdumpt, wenn da doch mal was anderes als eine Zahl drinsteht.
Nur bei ggf. negativen Werten wird das nicht funktionieren, wobei bei denen dann wieder zu klären wäre, ob das Vorzeichen im CHAR-Feld der Datenbanktabelle gesellschaftsüblich vor der Zahl steht oder ABAP-üblich dahinter.