利用关键字 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