ich lese mit dem BAPI_INCOMINGINVOICE_GETDETAIL eine vorerfasste Rechnung aus, welche ich dann in eine Z-Tabelle abspeichern möchte.
Das Ursprungsfeld hat den Typ DEC 23 Dezimalstellen 4. Diesen möchte ich in ein Feld CURR 13 Dezimalstellen 2 schreiben. Bei Währungen mit 2 Dezimalstellen ist das auch kein Problem, aber bei JPY funktioniert es nicht, diese haben keine Nachkommastellen.
In der Tabelle in die ich hineinschreiben möchte ist natürlich der Bezug zur Währung vorhanden und wird auch vor dem Betrag übergeben.
Wenn ich 50.000 JPY auslese und wegschreibe sind nachher in der Tabelle 5000.00 anstatt 50.
Im Debugger sieht alles noch gut aus, da wird aus 50.000 => 50.00 was ja eigentlich richtig ist, wenn man bei JPY die Nachkommastellen ausser Acht lässt.
Kennt sich jem. mit diesem Problem aus? Ich bin wirklich am verzweifeln.
zunächst in Tab. TCURX überprüfen, ob die Dezimalstellen für JPY richtig mit '0' eingestellt sind.
Es gibt einen Unterschied zwischen dem, was in einer SAP-Tabelle (intern) gespeichert ist und wie es (z.B. mit SE16) angezeigt wird.
Währungsbeträge werden intern OHNE Dezimaltrennzeichen gespeichert; bei Beträgen mit Dezimalstellen werden aber, wenn keine Nachkommastellen vorhanden sind, entsprechend viele Nullen angehängt:
50,49 EUR werden als 5049 gespeichert.
50 EUR werden als 5000 gespeichert.
50 JPY werden als 50 gespeichert.
Bei der Anzeige wird der Betrag aufbereitet und das Dezimaltrennzeichen gemäß Tab. TCURX bzw. gemäß Felddefinition oder Aufbereitungsoptionen hinzugefügt.
Die Beträge in deiner Z-Tabelle sind 'richtig', wenn 50 JPY mit SE16 als '0,50' angezeigt werden (weil das Tabellenfeld mit 2 Nachkommastellen definiert ist).
Um das zu erreichen, mußt du beim Füllen der Tabelle evtl. den WRITE-Befehl mit dem Zusatz CURRENCY 'JPY' benutzen.