DATA: formel(50),
* Returncode für Fb-Aufruf
retcode LIKE sy-subrc,
funcname(30) TYPE c,
message(70) TYPE c,
pos TYPE i,
c TYPE f,
l_dmbtr TYPE mseg-dmbtr.
DATA: a1 TYPE string VALUE '5',
a2 TYPE string VALUE '8.2',
c1 TYPE string VALUE 'a1',
c2 TYPE string VALUE 'a2'.
PERFORM min.
FORM min.
formel = '(a1+a2)/2*0.1-10'.
REPLACE c1 WITH a1 INTO formel .
REPLACE c2 WITH a2 INTO formel .
* Formel FORMEL auf syntaktische Korrektheit prüfen
CALL FUNCTION 'CHECK_FORMULA'
EXPORTING
formula = formel
IMPORTING
subrc = retcode
funcname = funcname
message = message
pos = pos
EXCEPTIONS
error_in_formula = 1
missing_parameter = 2
OTHERS = 3.
IF retcode IS INITIAL and sy-subrc = 0.
* Wenn Formel FORMEL syntaktisch korrekt ist, auswerten
CALL FUNCTION 'EVAL_FORMULA'
EXPORTING
formula = formel
IMPORTING
value = c
EXCEPTIONS
OTHERS = 1.
IF sy-subrc = 0.
WRITE: / text-001, c.
l_dmbtr = c.
WRITE: / l_dmbtr.
ELSE.
WRITE: / sy-subrc.
ENDIF.
ELSE.
WRITE: / funcname, message, pos.
ENDIF.
阅读(200) | 评论(0) | 转发(0) |