Drunken Lion

EVAL_FORMULA 로 계산 셈플 본문

SAP/ABAP

EVAL_FORMULA 로 계산 셈플

DrkLion 2019. 2. 28. 10:50

REPORT  ZZTEST0004.


DATAGV_FORM(100TYPE C,
      GV_VALUE TYPE i.


PARAMETERSP_A(30TYPE DEFAULT 1,
            P_B(30TYPE DEFAULT 2,
            P_SIGN(30TYPE 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