matinal:SAP ABAP 函数EVAL_FORMULA的使用

DATA : PROG(20)   VALUE ‘ZTEST_FORMULA_1′,
FORME(15) VALUE ‘GET_EVAL_VALUES’,
FORMC(16) VALUE ‘GET_CHECK_VALUES’,
FUNC(30),
MESS(80),
POSITION(2),
RC LIKE SY-SUBRC,
UNIT LIKE T006D-MSSIE,
RESULT TYPE i.
DATA : FORMEL1(50)  VALUE ‘TFKT:10*A + 5* B + 3**C’,
FORMEL2(50)  VALUE ‘10*A + 5* B + 3**C’,
FORMEL3(50)  VALUE ‘TFKT:TCFORMULA1(A,B,C)’.
“PERFORM FORMEL USING FORMEL1.”Error!!!!
PERFORM FORMEL USING FORMEL2.
PERFORM FORMEL USING FORMEL3.
*———————————————————————–
*  Formel     Formula Check and Manipulate
*———————————————————————–
FORM FORMEL USING FORMEL.
CALL FUNCTION ‘CHECK_FORMULA’
EXPORTING
FORMULA           = FORMEL
PROGRAM           = PROG
ROUTINE           = FORMC
UNIT_OF_MEASURE   = UNIT
IMPORTING
FUNCNAME          = FUNC
MESSAGE           = MESS
POS               = POSITION
SUBRC             = RC.
IF RC IS INITIAL.
CALL FUNCTION ‘EVAL_FORMULA’
EXPORTING
FORMULA            = FORMEL
PROGRAM            = PROG
ROUTINE            = FORME
UNIT_OF_MEASURE    = UNIT
IMPORTING
VALUE              = RESULT
EXCEPTIONS
DIVISION_BY_ZERO   = 1
EXP_ERROR          = 2
INVALID_EXPRESSION = 3
INVALID_VALUE      = 4
LOG_ERROR          = 5
PARAMETER_ERROR    = 6
SQRT_ERROR         = 7
UNITS_NOT_VALID    = 8
FORMULA_TABLE_NOT_VALID = 9.
IF sy-subrc <> 0.
WRITE : / FORMEL,‘Error!!!’.
else.
WRITE : / FORMEL,RESULT,UNIT.
ENDIF.
ELSE.
WRITE : / FORMEL,
/ FUNC,
/ MESS,
/ POSITION,
/ RC.
ENDIF.
ENDFORM.
*———————————————————————–
*  GET_EVAL_VALUES    For Real-parameter ==> Formal Parameters
*———————————————————————–
FORM GET_EVAL_VALUES  USING    PARM
CHANGING WERT
SUBRC.
CASE PARM.
WHEN ‘A’.
WERT  = 3.
SUBRC = 0.
WHEN ‘B’.
WERT  = 2.
SUBRC = 0.
WHEN ‘C’.
WERT  = 2.
SUBRC = 0.
WHEN OTHERS.
SUBRC = 1.
ENDCASE.
ENDFORM.
*———————————————————————–
*  GET_CHECK_VALUES    Bypass  Formal Parameters
*———————————————————————–
FORM GET_CHECK_VALUES USING PARM
CHANGING SUBRC.
CASE PARM.
WHEN ‘A’.
SUBRC = 0.
WHEN ‘B’.
SUBRC = 0.
WHEN ‘C’.
SUBRC = 0.
WHEN OTHERS.
SUBRC = 1.
ENDCASE.
ENDFORM.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值