REPORT ZZTEST0004.
DATA: GV_FORM(100) TYPE C,
GV_VALUE TYPE i.
PARAMETERS: P_A(30) TYPE C DEFAULT 1,
P_B(30) TYPE C DEFAULT 2,
P_SIGN(30) TYPE C DEFAULT '+'.
CONCATENATE 'P_A' P_SIGN 'P_B' INTO GV_FORM SEPARATED BY SPACE.
*DATA: L_F TYPE F.
CALL FUNCTION 'EVAL_FORMULA'
EXPORTING
* DEGREES = ' '
FORMULA = GV_FORM
PROGRAM = SY-CPROG
ROUTINE = 'CALC'
* UNIT_OF_MEASURE = ' '
* NO_EXISTENCE_CHECK = ' '
IMPORTING
VALUE = GV_VALUE
EXCEPTIONS
DIVISION_BY_ZERO = 1
EXP_ERROR = 2
FORMULA_TABLE_NOT_VALID = 3
INVALID_EXPRESSION = 4
INVALID_VALUE = 5
LOG_ERROR = 6
PARAMETER_ERROR = 7
SQRT_ERROR = 8
UNITS_NOT_VALID = 9
MISSING_PARAMETER = 10
OTHERS = 11`
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
WRITE : GV_VALUE.
*&---------------------------------------------------------------------*
*& Form CALC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GV_FROM text
* <--P_GV_VALUE text
*----------------------------------------------------------------------*
FORM CALC USING P_GV_FORM
CHANGING P_GV_VALUE
P_SUBRC.
FIELD-SYMBOLS: <FS>.
ASSIGN (P_GV_FORM) TO <FS>.
IF SY-SUBRC = 0.
P_GV_VALUE = <FS>.
ENDIF.
ENDFORM. " CALC