首页 > 应用开发 > IT综合 > ABAP計算自動義公式
原理是動態建立一個ABAP程式處理
以下代碼是根據自動的字符串公式自動計算出結果,如輸入公式字串:12 + 5 * ( 5 -2 ), 計算出的結果爲27, 這樣就不用用固定代碼了, 可以根據公式動態計算結果......不錯吧
不過需注意的有, 字串公式中不能出現小數點, 如3.5 *2 等, 要改爲35 / 10 * 2, 還有一點就是各參數及操作符之單要有一個空格, 要懂得ABAP語法哦......
report ZABAP_Test_01.
parameters: p_code1(100) type c.
data t_source_tab(72) occurs 0 with header line.
data g_program_name like sy-repid.
data g_message(128).
data g_line_no type i.
data var type p decimals 2.
at selection-screen.
perform create_dynamic_program.
start-of-selection.
perform cal_formula in program (g_program_name) changing var .
write:/ p_code1 no-gap,'=' no-gap,var.
*&---------------------------------------------------------------------*
*& Form create_dynamic_program
*&---------------------------------------------------------------------*
* 建立動態ABAP程式
*----------------------------------------------------------------------*
form create_dynamic_program.
data t_abap(100) occurs 0 with header line.
refresh t_source_tab.
append 'REPORT' to t_source_tab.
append sy-repid to t_source_tab.
append '.' to t_source_tab.
append 'FORM cal_formula changing var type p.' to t_source_tab.
append 'var =' to t_source_tab.
append p_code1 to t_source_tab.
append '.' to t_source_tab.
append 'ENDFORM.' to t_source_tab.
generate subroutine pool t_source_tab name g_program_name message g_message line g_line_no.
if sy-subrc <> 0.
message g_message type 'E'.
endif.
endform. "create_dynamic_program
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9437124/viewspace-914782/ ,如需转载,请注明出处,否则将追究法律责任。