首页 > 其他分享 >ABAP公式计算

ABAP公式计算

时间:2024-10-20 15:31:53浏览次数:8  
标签:sy val 公式 value lv ABAP 计算 formula TYPE

输入公式和对应值,先算括号、再算乘除,再算加减

 结果

参考代码

调用函数EVAL_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.

DATA:lv_retcode      TYPE sy-subrc,
     lv_funcname(30) TYPE c,
     lv_message(70)  TYPE c,
     lv_pos          TYPE i.

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.
*  CALL FUNCTION 'CHECK_FORMULA'
*    EXPORTING
*      formula           = formula
*      program           = sy-repid
*    IMPORTING
*      subrc             = lv_retcode
*      funcname          = lv_funcname
*      message           = lv_message
*      pos               = lv_pos
*    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.        

 

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back     此页面的语言为英语   翻译为中文(简体)          

标签:sy,val,公式,value,lv,ABAP,计算,formula,TYPE
From: https://www.cnblogs.com/BinGeneral/p/18487378

相关文章

  • 《计算机基础与程序设计》第4周学习总结
    学期2024-2025-1学号20241414《计算机基础与程序设计》第四周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第四周作业这个作业的目标1.算法的描述方法2.分支语句3.条件运算符4.逻......
  • java计算机毕业设计贷款申请审核管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今社会,金融服务与教育领域的交互日益频繁。随着教育成本的不断上升,无论是学生的学业深造还是教师的职业发展相关的学习进修等,都可能涉及到贷......
  • java+vue计算机毕设高考志愿智能填报系统【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高等教育的普及和高考制度的改革,高考志愿填报成为每位考生及家长面临的重大决策问题。传统的高考志愿填报依赖于纸质指南和口头咨询,信息获取渠道......
  • java+vue计算机毕设大学生四六级刷题交流系统【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高等教育的普及和英语作为国际交流语言的重要性日益凸显,大学英语四六级考试已成为衡量大学生英语水平的重要标尺。然而,面对海量的备考资料和复杂......
  • java+vue计算机毕设电子健康证管理系统【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着社会的快速发展和人们生活水平的提高,公共卫生安全日益成为社会各界关注的焦点。传统的健康证管理方式大多采用纸质记录,不仅容易丢失、损坏,而且查......
  • java+vue计算机毕设蛋糕店销售管理系统【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着生活水平的不断提升,消费者对蛋糕等甜点的需求日益多样化与个性化。蛋糕店作为满足这一需求的重要场所,其业务管理面临着诸多挑战。传统的手工记录......
  • java+vue计算机毕设房屋空气治理预约平台的设计与实现【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速和人们生活水平的提高,房屋装修和居住环境的改善成为现代人生活中的重要议题。然而,装修过程中使用的各种材料往往会释放出甲醛、......
  • python+flask框架的基于Uniapp的核酸检测系统(开题+程序+论文) 计算机毕业设计
    取,系统界面在最后面。系统程序文件列表开题报告内容选题背景在当前全球新冠疫情的背景下,核酸检测已成为疫情防控的重要手段之一。关于核酸检测系统的研究,现有研究主要集中在大型医疗机构或政府卫生部门的信息系统整合与优化上,专门针对移动端、特别是基于Uniapp框架的核酸......
  • python+flask框架的基于SSM框架的微信小程序(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着移动互联网技术的飞速发展,微信小程序作为一种轻量级的应用形式,已经深入到人们的日常生活中。微信小程序以其无需下载、即用即走的特点......
  • python+flask框架的基于OA技术的办公文档归档系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景关于办公文档归档系统的研究,现有研究主要集中在传统档案管理系统以及大型企业级内容管理系统(ECM)方面,这些系统虽然功能强大,但往往复杂且成......