ich lade eine CSV-Datei mit dem Funktionsbaustein GUI_UPLOAD in eine interne Tabelle mit dem Zeilentyp CHAR100. Die einzelnen Zeilen verarbeite ich mit einem Loop und entsprechendem SPLIT ... AT ';'. Damit sind alle Spalten zugeordnet.
Die Zuordnung ist bis auf die letzte Spalte unproblematisch, da alles CHAR oder NUMC-Felder sind. Die letzte Spalte ist aber eigentlich ein DEC-Feld mit zwei Nachkommstellen. Für die Umwandlung habe ich erst einmal ein CHAR-Feld der Länge 9 verwendet, dass ich dann im zweiten Schritt in das DEC-Feld 'konvertieren' wollte, in dem ich einfach den Befehl MOVE verwenden wollte, da ich davon ausgehen kann, dass nur gültige Zahlen geliefert werden.
Das Problem ist jetzt aber, dass alle Stellen des CHAR-Feldes nach dem Ende der Zahl SPACES also 20h sind. Damit kommt es nun zum Kurzdump ....
Ich habe schon diverse Funktionsbausteine zum Konvertieren angeschaut, bzw. ausprobiert ... funktioniert hat keiner.
Hat jemand eine Idee, wie ich das Problem umgehen oder lösen kann ????
hat ein wenig gedauert mit der Antwort.
Inzwischen habe ich das Problem lösen, bzw. umgehen können.
Punkt 1: Aus der CSV-Datei kommt die Zahl mit einem Komma als Dezimalpunkt. SAP verarbeitet aber mit Punkten. Das weiß man zwar, aber beim Debuggen ist mir das nicht ins Auge gesprungen.
Punkt2: Nachdem das Problem mit Translate xx using ',.' behoben wurde, hat ein MOVE von einem String-Wert in ein DEC-Wert mit zwei Nachkommastellen dazu geführt, dass die Nachkommstellen verloren gehen; d.h. der String hat nach dem oben erwähnten SPLIT folgenden Wert '-34,45' als HEX-Wert '2D33342C3435202020'. Nach dem Translate und dem Move hat die Variable den Wert 34.00.
Ich habe das Problem nun umgangen, in dem ich den ursprünglichen Stringwert in Vor- und Nachkommastellen gesplittet habe und anschließend mit CONCATENATE wieder zusammengesetzt habe. Jetzt klappt es auch mit dem Move in ein DEC-6.2-Wert.
Hat jemand eine Erklärung für dieses Verhalten ??