• abap如何根据动态公式计算数据(增补),谢谢网友补充


    最近有位同事在项目中碰到一个问题,需要动态公式计算数据。我们开始想到自动生成子程序,但是动态生成子程序有个数限制(不能超过36个),我们只好另寻他法。 由于以前看过abap调用javascript的应用,我就想到了javascript。具体代码如下(就是要求大家去学习javascript的语法):

    方法一

    report ZDEMO_COMPILE.
    data jj type i.
    perform Dynamicformula  using ' 900 + 7  % 3 ' jj.
    write / jj.
    perform Dynamicformula  using ' 900 + ( 7 + 10 )  % 3 ' jj.
    write / jj.
    perform Dynamicformula  using ' 900 * 30 + ( 7 + 10 )  % 3 ' jj.
    write / jj.
    *&---------------------------------------------------------------------*
    *&      Form  Dynamicformula
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->SOURCE     text
    *      -->RE         text
    *----------------------------------------------------------------------*
    FORM Dynamicformula using  formula type STRING
                        changing re type I.
      data source type string.
      data return_value type string.
      data js_processor type ref to cl_java_script.
      js_processor = cl_java_script=>create( ).
      concatenate
        'result = '
        formula
         ';'
       into source.
      RETURN_VALUE = js_processor->evaluate( source ).
      re = RETURN_VALUE.
    ENDFORM.                    "Dynamicformula

    方法二


    CALL FUNCTION 'EVAL_FORMULA'
      EXPORTING
        FORMULA                       = ' ( 9 * 10 + ( 7 + 10 ) * 2 )  div 3  '
     IMPORTING
       VALUE                         = jj
              .
    write / jj.

    Javascript 操作符列表

    算术运算符
    说明  符号 
    加法  +
    递减  --
    除法  /
    递增  ++
    取模算法  %
    乘法  *
    减法  -
    一元求反  -
     

    所有算术运算符都对数值数据执行计算。当任一操作数为字符串时,加法运算符还执行字符串串联操作。

    逻辑运算符
    说明  符号 
    相等  ==
     大于或等于  >=
     大于  >
     恒等  ===
     包含在其中  in
     不相等  !=
     小于或等于  <=
     小于  <
     逻辑“与”  &&
     逻辑“非”  !
     逻辑“或”  ||
     不全等  !==
     
    逻辑运算符返回Boolean值。根据运算符的不同,值可以表示比较、测试或组合的结果。

    位运算符
    说明  符号 
    按位“与”  &
     按位左移  <<
     按位“非”  ~
     按位“或”  |
     按位右移  >>
     按位“异或”  ^
     无符号右移  >>>
     
    位操作符对操作数的二进制表示形式执行操作。如果操作数相互不兼容,将强迫使它们成为适当的类型。有关更多信息,请参见按位运算符强制。

    赋值运算符
    说明  符号 
    赋值  =
     复合加法赋值  +=
     复合按位“与”赋值  &=
     复合按位“或”赋值  |=
     复合按位“异或”赋值  ^=
     复合除法赋值  /=
     复合左移赋值  <<=
     复合取模赋值  %=
    复合乘法赋值  *=
     复合右移赋值  >>=
     复合减法赋值  -=
     复合无符号右移赋值  >>>=
     
    所有的赋值运算符都返回赋给左操作数的值。

    其他运算符
    说明  符号 
    逗号  ,
     条件(三元)  ?:
     删除  delete
     确定实例  instanceof
     新建  new
     Typeof  typeof
     返回空  void
     

  • 相关阅读:
    SoC嵌入式软件架构设计II:否MMU的CPU虚拟内存管理的设计与实现方法
    Fckeditor用法
    BZOJ 2120 色彩数 暴力
    精灵菜单
    Java JDK 8 安装和环境变量的配置(Linux and Windows)
    专访雷水果国:离1.5K至18K 一个程序猿5每年的成长之路
    [Unity3D]Unity3D游戏开发Android内嵌视图Unity查看
    hdu 4472 dp
    hdu1848 Fibonacci again and again(SG游戏功能)
    孙陪你,了解它的力量——unity3d流程暂停
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157090.html
Copyright © 2020-2023  润新知