您的位置:首页 > 其它

取得一个字符串表达式的计算结果(实现方法二)

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐