ABAP 浮点型运算

ABAP函数EVAL_FORMULA计算公式
背景
ABAP实现动态的表达式计算,可以使用函数EVAL_FORMULA实现,参考代码在下面;同时也可以考虑用类CL_JAVA_SCRIPT调用js功能实现。

参考代码
*&---------------------------------------------------------------------*
*& Report YPWK_FORMULA_TEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Report YPWK_FORMULA
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
report ypwk_formula.



data: dataf type f,
      datap type lbkum.

parameters: formula(40) default 'A*B*C*D',
            a_val       type lbkum default 3,
            b_val       type lbkum default 1,
            c_val       type lbkum default 2,
            d_val       type lbkum default 4.

start-of-selection.

  call function 'CHECK_FORMULA'
    exporting
      formula           = formula
      program           = sy-repid
      routine           = 'SUB_CHECK_FORMULA'
*     UNIT_OF_MEASURE   = ' '
* IMPORTING
*     FUNCNAME          =
*     MESSAGE           =
*     POS               =
*     SUBRC             =
    exceptions
      error_in_formula  = 1
      missing_parameter = 2
      others            = 3.
  if sy-subrc <> 0.
    message id sy-msgid type sy-msgty number sy-msgno
          with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.

  call function 'EVAL_FORMULA'
    exporting
      formula                 = formula
      program                 = sy-repid
      routine                 = 'SUB_GET_VALUE'
    importing
      value                   = dataf
    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.
  else.

    move dataf to datap.
    write:/ formula, datap.
  endif.

form sub_check_formula using value(name)
                       CHANGING value(subrc).
subrc = 0.

ENDFORM.


form sub_get_value using value(name)
                  changing value(value)
                           value(subrc).
  subrc = 0.
  value = 0.  
  case name.
    when 'A'.
      value = a_val.
    when 'B'.
      value = b_val.
    when 'C'.
      value = c_val.
    when 'D'.
      value = d_val.
  endcase.
endform.                    "VAR_GET
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在ABAP中创建一个四则运算的函数,您可以按照以下步骤进行: 1. 创建一个Function Module:在ABAP Workbench的SE37事务中,您可以创建一个名为“Z_CALCULATE”的Function Module。 2. 定义输入和输出参数:在Function Module的界面上,您可以为Function Module定义输入和输出参数。在这个例子中,您可以定义以下输入和输出参数: * 输入参数: - num1(类型为I,长度为10) - num2(类型为I,长度为10) - operator(类型为C,长度为1) * 输出参数: - result(类型为I,长度为10) 3. 编写ABAP代码:在Function Module的“源代码”选项卡中,您可以编写实现四则运算ABAP代码。在这个例子中,您可以使用CASE语句实现不同的运算符。以下是一个简单的示例代码: FUNCTION z_calculate. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(NUM1) TYPE I *" VALUE(NUM2) TYPE I *" VALUE(OPERATOR) TYPE C *" EXPORTING *" VALUE(RESULT) TYPE I *"---------------------------------------------------------------------- CASE operator. WHEN '+'. result = num1 + num2. WHEN '-'. result = num1 - num2. WHEN '*'. result = num1 * num2. WHEN '/'. IF num2 <> 0. result = num1 / num2. ELSE. result = 0. ENDIF. ENDCASE. ENDFUNCTION. 4. 测试Function Module:您可以使用SE37事务测试Function Module。在输入参数中输入您想要计算的数字和运算符,然后运行Function Module。在输出参数中,您将获得计算结果。 这就是在ABAP中创建四则运算函数的简单步骤。 ### 回答2: 在ABAP中,可以通过创建一个函数来实现四则运算。以下是一个示例: 首先,我们需要在ABAP编辑器中创建一个函数模块。可以通过进入事务码`SE37`进入函数构建器界面。在这个界面中,选择创建一个新的函数模块。 接下来,我们需要定义输入和输出参数。对于四则运算函数,我们需要定义四个输入参数(操作数1、操作数2、运算符、结果)以及一个输出参数(结果)。 在“接口/参数”选项卡下,点击“添加”按钮以创建输入参数。为每个输入参数分别指定一个名称、数据元素和描述。例如,对于操作数1和操作数2,可以选择INT4数据元素。 然后,点击“添加”按钮以添加输出参数。指定输出参数的名称、数据元素和描述。对于结果,也可以选择INT4数据元素。 接下来,在“源代码”选项卡下,我们需要编写ABAP代码来执行四则运算。根据输入参数中指定的运算符,使用条件语句(如CASE语句)来执行相应的运算。根据运算符的不同,可以使用ABAP提供的数学函数(如ADD、SUBTRACT、MULTIPLY、DIVIDE)来执行相应的运算。将结果分配给输出参数。 最后,保存函数模块,并使用事务码`SE93`来创建一个事务代码,以便在ABAP系统中调用该函数模块。 现在,我们可以在ABAP系统的任何地方使用该事务代码来调用四则运算函数。将操作数1、操作数2和运算符作为输入参数传递给函数,然后获取结果参数的值作为计算结果。 通过以上步骤,我们可以在ABAP中创建一个四则运算的函数,可以在需要计算的地方方便地调用该函数。 ### 回答3: 在ABAP中创建一个四则运算的函数,可以按照以下步骤进行: 1. 首先,使用函数建立一个函数模块。可以使用T-code SE37打开Function Builder。 2. 在Function Builder中,选择“创建函数模块”。 3. 将函数模块命名为合适的名称,比如“四则运算”。 4. 在“接口”标签页中,定义输入和输出参数。对于四则运算,我们需要定义四个输入参数(两个操作数和一个运算符)和一个输出参数(结果)。 5. 在“源代码”标签页中,编写函数逻辑。首先,使用“DATA”语句定义所需的变量。然后,使用“CASE”语句根据运算符执行相应的计算操作,并将结果存储在输出参数中。 6. 检查并保存函数模块。 以下是一个示例实现的函数模块的源代码: FUNCTION ZARITHMETIC. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(OP1) TYPE I *" VALUE(OP2) TYPE I *" VALUE(OPERATOR) TYPE C *" EXPORTING *" VALUE(RESULT) TYPE I *"---------------------------------------------------------------------- DATA: LV_RESULT TYPE I. CASE OPERATOR. WHEN '+'. LV_RESULT = OP1 + OP2. WHEN '-'. LV_RESULT = OP1 - OP2. WHEN '*'. LV_RESULT = OP1 * OP2. WHEN '/'. LV_RESULT = OP1 / OP2. WHEN OTHERS. LV_RESULT = 0. ENDCASE. RESULT = LV_RESULT. ENDFUNCTION. 通过以上步骤,我们可以成功创建一个四则运算的函数模块。之后,可以在其他ABAP程序或报表中调用该函数,实现四则运算的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值