abap--如何根据动态公式计算数据(增补),谢谢网友补充
2008-03-25 16:07
489 查看
最近有位同事在项目中碰到一个问题,需要动态公式计算数据。我们开始想到自动生成子程序,但是动态生成子程序有个数限制(不能超过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
方法一
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
相关文章推荐
- abap--如何根据动态公式计算数据(增补),谢谢网友补充
- abap--如何根据动态公式计算数据(增补),谢谢网友补充
- abap--如何根据动态公式计算数据(增补),谢谢网友补充
- Android 如何根据设置文字大小动态计算TextView长度、动态设置Relativelayout布局
- Android 如何根据设置文字大小动态计算TextView长度、动态设置Relativelayout布局
- 为网友解题:如何根据合同明细表及已发货明细表,来计算合同未发货的数量?
- ABAP根据输入的表名动态生成上传TXT数据的代码
- [资料下载] 如何将接收RSSI实验数据得到距离计算公式呢?
- Android 如何根据设置文字大小动态计算TextView长度、动态设置Relativelayout布局
- 如何根据宽度来计算字体的大小(就像Iphone拨号时,输入的数据越多,字就会越来越小)
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
- abap动态计算公式程序
- jquery多条数据输入的时候,会根据文本框输入的值动态计算并显示到另一个文本框的值
- ABAP根据输入的表名动态生成上传EXCEL数据的代码
- 如何根据传感器实时采集的数据计算出前进后退侧移下蹲等动作,并且能够估算出速度,算法
- 根据经纬度计算距离的公式、百度坐标转换成GPS坐标(PHP版)
- iOS根据坐标数据点所在的坐标区域来动态显示到可视范围
- (C#)WPF根据设计的数据动态生成火车席位
- OLAP如何实现数据的聚合计算-分析过程
- MVEL实现java直接根据公式计算结果