取得一个字符串表达式的计算结果(实现方法二)
2010-12-24 09:39
591 查看
利用关键字 COMPUTE .但是这样子传入的字符串必须满足abap的语法格式.如下例中,lv_aa = '(12+23)*45'. 的话将无法计算出结果.
REPORT zsolar.
DATA: lv_re TYPE string.
DATA: lv_aa TYPE string VALUE '( 12 + 23 ) * 45'.
PERFORM frm_test USING lv_aa CHANGING lv_re.
WRITE:/ lv_re.
*&---------------------------------------------------------------------*
*& Form frm_test
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->LV_IN text
* -->LV_OUT text
*----------------------------------------------------------------------*
FORM frm_test USING lv_in CHANGING lv_out.
DATA: code TYPE TABLE OF rssource-line,
prog(8) TYPE c, msg(120) TYPE c, lin(3) TYPE c,
wrd(10) TYPE c, off(3) TYPE c.
DATA: lv_temp TYPE string.
CONCATENATE 'COMPUTE lv_out = ' lv_in '.' INTO lv_temp SEPARATED BY space.
APPEND 'PROGRAM SUBPOOL.' TO code.
APPEND 'FORM frm_string_count2 USING lv_in CHANGING lv_out.' TO code.
APPEND lv_temp TO code.
APPEND 'ENDFORM.' TO code.
GENERATE SUBROUTINE POOL code NAME prog
MESSAGE msg
LINE lin
WORD wrd
OFFSET off.
IF sy-subrc EQ 0.
PERFORM frm_string_count2 IN PROGRAM (prog) USING lv_in CHANGING lv_re IF FOUND.
ENDIF.
ENDFORM. "frm_test
REPORT zsolar.
DATA: lv_re TYPE string.
DATA: lv_aa TYPE string VALUE '( 12 + 23 ) * 45'.
PERFORM frm_test USING lv_aa CHANGING lv_re.
WRITE:/ lv_re.
*&---------------------------------------------------------------------*
*& Form frm_test
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->LV_IN text
* -->LV_OUT text
*----------------------------------------------------------------------*
FORM frm_test USING lv_in CHANGING lv_out.
DATA: code TYPE TABLE OF rssource-line,
prog(8) TYPE c, msg(120) TYPE c, lin(3) TYPE c,
wrd(10) TYPE c, off(3) TYPE c.
DATA: lv_temp TYPE string.
CONCATENATE 'COMPUTE lv_out = ' lv_in '.' INTO lv_temp SEPARATED BY space.
APPEND 'PROGRAM SUBPOOL.' TO code.
APPEND 'FORM frm_string_count2 USING lv_in CHANGING lv_out.' TO code.
APPEND lv_temp TO code.
APPEND 'ENDFORM.' TO code.
GENERATE SUBROUTINE POOL code NAME prog
MESSAGE msg
LINE lin
WORD wrd
OFFSET off.
IF sy-subrc EQ 0.
PERFORM frm_string_count2 IN PROGRAM (prog) USING lv_in CHANGING lv_re IF FOUND.
ENDIF.
ENDFORM. "frm_test
相关文章推荐
- 取得一个字符串表达式的计算结果(实现方法一)
- 输入一个字符串表达式,输出计算结果(队列、栈的应用)
- 给定一个表示分数加减表达式的字符串,需要以字符串格式返回计算结果。结果表达式也是分数式
- 给定一个字符串表达式s,计算其值(使用string和stack实现)
- 输入一个字符串表达式,输出计算结果
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- 设计Point类用来定义平面上的一个点,用构造方法传 递坐标位置,方法有计算两点的距离。编写测试类,在该类中实现Point类的对象。
- 给Nsstring增加一个对象方法:计算某个字符串中的阿拉伯数字的个数
- Shell读取一个表达式并计算其结果
- 利用API 实现字符串表达式的计算
- 在Java中用正则表达式判断一个字符串是否是数字的方法
- git是一种分布式代码管理工具,git通过树的形式记录文件的更改历史,比如: base'<--base<--A<--A' ^ | --- B<--B' 小米工程师常常需要寻找两个分支最近的分割点,即base.假设git 树是多叉树,请实现一个算法,计算git树上任意两点的最近分割点。 (假设git树节点数为n,用邻接矩阵的形式表示git树:字符串数组matrix包含n个字符串,每个字符串由字符'0
- 判断一个字符串是否是ip地址的实现方法
- js将字符串转成正则表达式的实现方法
- 正则表达式实现将html文本转换为纯文本格式(将html字符串转换为纯文本方法)
- 在C#中解决动态计算表达式的问题(如字符串"Sin(1)+Cos(2)",执行并得出结果)
- asp.net字符串的数学表达式计算结果
- 编写一个程序,将两个字符串链接起来,结果取代第一个字符串。要求用方法
- 输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形。 例如: 输入:3+8×2/9-2 输出:2