动态公式计算

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/morious/article/details/79557722

先看一段代码:

REPORT ZTEST_TEST.

data:jj type DECIMALS .
dataaa type string.
dataa1 type DECIMALS ,a2 type DECIMALS .
datab1 type string.
datab2 type string.
datas1 type string,s2 type string.

a1 '100.55'.
a2 '5.1' .
aa '( a1 + a2 ) /a2'.

b1 a1.
b2 a2.

REPLACE ALL OCCURRENCES OF 'a1' in aa  WITH b1  .
REPLACE ALL OCCURRENCES OF 'a2' in aa  WITH b2 .

PERFORM Dynamicformula  USING aa jj.

WRITE:/ jj.

FORM Dynamicformula USING  formula  TYPE STRING
CHANGING re TYPE p.
  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->evaluatesource ).
  re RETURN_VALUE.

ENDFORM.                    "Dynamicformula


这段代码实现了一个动态执行计算的功能。

aa '( a1 + a2 ) /a2'.可以是任何一个复杂的公式,把其中的变量用具体的数值替换以后,

交由PERFORM Dynamicformula  USING aa jj.执行,可以得到任意公式的值。

作用:

    我们可以把若干个计算公式都存放在数据库中,根据一定的条件来选择使用具体的哪一个公式。

这样,在计算公式发生变更的时候,不用每次都更改程序。只需要更改数据库中的值就可以了。

展开阅读全文

没有更多推荐了,返回首页