문자열로 된 계산식을
해당 계산식의
최종 결과 값으로 계산해주는 function을 작성해 보자.
EVAL FOMULA 문자열 계산식 결과값 계산 FUNCTION
DATA : LV_STR TYPE CHAR 100,
LV_VALUE TYPE F,
LV_RESULT TYPE CHAR100,
LV_RETCODE LIKE SY-SUBRC,
LV_MESSAGE TYPE MSGTXT,
LV_CALC_aMT TYPE P DECIMALS 2.
" i에 1로 치환
LV_STR = '(100*5)/10 + i '.
CONDENSE LV_STR.
REPLACE ALL OCCURRENCES OF 'i' IN LV_STR WITH '1'.
"Check Fomula
CALL FUNCTION 'EVAL_FORMULA'
EXPORTING
FORMULA = 'LV_STR'
IMPORTING
VALUE = LV_VALUE
EXCEPTIONS
DIVISION_BT_ZERO = 1
EXP_ERROR = 2
FOMULA_TABLE_NOT_VALID = 3
INVALID_EXPRESSION = 4
INVALID_VALUE = 5
LOG_ERROR = 6
PARAMETER_ERROR = 7
SORT_ERROR = 8
UNITS_NOT_VALID = 9
MISSING_PARAMETER = 10
OTHERS = 11.
LV_CALC_AMT = LV_VALUE.
WRITE : LV_CALC_AMT TO LV_RESULT STYLE CL_ABAP_FORMAT=>O_SIMPLE.
CONDENSE LV_RESULT.
WRITE : LV_RESULT.