Nicht doch lieber so:Matthias_L. hat geschrieben:erg = 100,25 * 16 * 3 + 0,7.
Code: Alles auswählen.
erg = 100,25 * ( 16 * 3 + 0,7 ).
In den Einstellungen zum (Rahmen)Programm gibt es den Schalter 'Festpunktarithmetik'.Matthias_L. hat geschrieben:Hallo zusammen,
soooo, habe in einem Testabap mal mit dem Fuba getestet und es funktioniert auch alles wunderbar.
Jetzt habe ich dieses Coding in meine "Preisfindungsformel" (das ist ein Include, TAC VOFM) eingebaut und es rechnet dann auch, aber es rechnet hier falsch.
Als Formel habe ich in einer Tabelle hinterlegt:
BASIS*1.8-10. Als Wert zum Rechnen verwende ich in beiden Fällen 256,00 EUR.
In meinem Testprogramm (siehe Anhang) erhalte ich dann als Ergebnis 450,80 ? (256,00*1,8-10). RICHTIG!!
Im Include hingeben erhalte ich als Ergebnis 460,70 ?. Es werden hier also nicht 10 Euro (wie in der Formel hinterlegt), sondern nru 10 Cent abgezogen.
Das Coding ist in beiden Fällen identisch.
Hat jemand eine Idee, woran das liegen kann ???? Ich bin ratlos.
Danke + Gruß
Matthias
eine Möglichkeit dürfte sein, in Deiner Formel 'BASIS * 1.8 - 10.0' zu schreiben.Anonymous hat geschrieben:Hi ereglam,
in meinem Testprogramm ist das Flag aktiv, im Rahmenprogramm (SAPLV61A) meines Includes ist dieses Flag nicht aktiv. Hab es jetzt in meinem Testprogramm auch "deaktiviert" und siehe da, jetzt bekomm ich auch hier das falsche Ergebnis.
Was kann ich da jetzt machen ?
Danke + Gruß
Matthias
Funzt net, habe ich auch probiert. Warum? 42.ereglam hat geschrieben: eine Möglichkeit dürfte sein, in Deiner Formel 'BASIS * 1.8 - 10.0' zu schreiben.
Damit wird zumindestens sichergestellt, dass er immer mit Zehn rechnet.
Code: Alles auswählen.
DATA: ls_preisformel TYPE ZSD_PREISFORMEL.
CONSTANTS: lc_memid_preisformel TYPE char15 VALUE 'ZSD_PREISFORMEL'.
SUBMIT zsd_preisformel_cn AND RETURN
WITH p_pltyp EQ group
WITH p_preis EQ kbetr_new.
* Importieren aus Speicher
IMPORT zsd_preisformel = ls_preisformel
FROM MEMORY ID lc_memid_preisformel.
FREE MEMORY ID lc_memid_preisformel.
xkomv-kbetr = ls_preisformel-ergeb.
Code: Alles auswählen.
tables: zsdpriceformcn.
data : result type f,
basis like vbak-netwr,
formel(40),
progr like sy-repid,
netp like vbak-netwr,
result2 like vbak-netwr.
data: zsd_preisformel type zsd_preisformel.
CONSTANTS: lc_memid_preisformel TYPE char15 VALUE 'ZSD_PREISFORMEL'.
parameters: p_pltyp like VBKD-pltyp,
p_preis like komv-kwert.
* Mit Formel aus Tabelle selektieren anhand Preisliste
SELECT SINGLE * FROM zsdpriceformcn WHERE zzpltyp = p_pltyp.
formel = zsdpriceformcn-zzformel.
basis = p_preis.
progr = sy-repid.
call function 'EVAL_FORMULA'
exporting
formula = formel
program = progr
routine = 'GET_EVAL_VALUES'
importing
value = result
exceptions
division_by_zero = 4
exp_error = 8
log_error = 12
sqrt_error = 16
other = 99.
* aus Float wird "normales" Betragsfeld
result2 = result.
*Ergebnis in Struktur schieben
zsd_preisformel-ergeb = result2.
*exportieren in Speicher
export zsd_preisformel to memory id lc_memid_preisformel.
*******************
form get_eval_values using bitch
changing wert
subrc.
field-symbols:
<p>.
assign (bitch) to <p>.
if sy-subrc = 0.
wert = <p>.
endif.
endform.
*******************