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

来源:互联网 发布:拍卖系统安卓as源码 编辑:程序博客网 时间:2024/06/05 07:02

利用关键字 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.
  DATAcode TYPE TABLE OF rssource-line,
  prog(8TYPE c, msg(120TYPE c, lin(3TYPE c,
  wrd(10TYPE c, off(3TYPE 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

原创粉丝点击