Sortierung char-Feld numerisch

Getting started ... Alles für einen gelungenen Start.
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Sortierung char-Feld numerisch

Beitrag von Micha_ela (ForumUser / 29 / 0 / 0 ) »
Servus zusammen,

ich lese eine DB-Tabelle in eine interne Tabelle ein. Diese interne Tabelle muss ich NUMERISCH nach 2 Feldern sortieren, die allerdings char sind (keine führende Nullen).
wie stelle ich das am einfachsten an, die DB-Tabelle darf nicht verändert werden.
Grüße Michaela

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Sortierung char-Feld numerisch

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
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.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Sortierung char-Feld numerisch

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Alternativ kann man, glaube ich, beim ORDER BY auf der Datenbank auch mit einem gecasteten Datentyp sortieren.

Code: Alles auswählen.

... ORDER BY CAST( feld as INT4 ) ...
Ob und ab welchem Release das überhaupt geht weiß ich jetzt leider nicht.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Sortierung char-Feld numerisch

Beitrag von DeathAndPain (Top Expert / 1939 / 257 / 412 ) »
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.

Seite 1 von 1

Vergleichbare Themen

3
Antw.
2072
Views
SALV: CHAR-Spalte numerisch sortieren
von ralf.wenzel » 28.09.2017 12:59 • Verfasst in ABAP Objects®
2
Antw.
2826
Views
Char Feld auf Integer
von Kusi » 20.02.2017 22:58 • Verfasst in ABAP® für Anfänger
2
Antw.
3120
Views
char-Feld aufteilen
von liberado » 19.07.2007 12:38 • Verfasst in ABAP® für Anfänger
3
Antw.
3472
Views
Char-Feld (Ziffern) ersetzen
von Sculi » 05.01.2011 16:07 • Verfasst in ABAP® für Anfänger
2
Antw.
4678
Views
Vergleich STRING <> CHAR Feld (Unicode-Problem?)
von ST22 » 04.04.2007 09:17 • Verfasst in ABAP® Core

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 11 Stunden von Bright4.5 1 / 230
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1870
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8473