ABAP FIELD-SYMBOLS 有大做用- 將沒有可改參數的加強出口變得也能改主程序的值了

看下圖代碼:java

report  z_xul_test2 中 定義了 全局變量 G_DATA1 , 分別調用了 z_xul_tes1 中的 form  和 function zbapi_test , 這兩個調用都沒有將api

G_DATA1 做爲參數,但在兩個子程序中經過 field-symbol 成功修改了其值。app

打印結果以下:oop

 

若是直接把 G_DATA1 做爲一個普通變量來改,在語法檢查時就通不過的,但若是利用 field-symbol 在運行期來修改就能夠成功修改。測試

 

一樣在 function 中也能夠修改。 這個function 沒有任何參數。spa

 

 

頗有意思,若是碰到加強出口都是不帶修改功能的,無法實現經過出口來改程序中的值,這時候,利用這個特色,說不定將不可能變成可能。。。.net

 

http://blog.csdn.net/fangkailove/article/details/39695519orm

 測試代碼,你們能夠本身試試。blog

[java]  view plain copy
  1. 源代碼:  
  2. *&---------------------------------------------------------------------*  
  3. *& Report  Z_XUL_TEST2  
  4. *&  
  5. *&---------------------------------------------------------------------*  
  6. *&  
  7. *&  
  8. *&---------------------------------------------------------------------*  
  9.   
  10. REPORT  Z_XUL_TEST2.  
  11.   
  12.   
  13.   
  14. DATA:G_DATA1(100).  "定義全局變量  
  15.   
  16.   
  17. G_DATA1 = '111111111111'. "初始值  
  18. WRITE: / , '\ REPORT  Z_XUL_TEST2 初始值:' ,G_DATA1.  
  19.   
  20.   
  21. PERFORM TEST1_FORM1 IN PROGRAM ('Z_XUL_TEST1')  . "調用其它程序的 FORM  
  22. WRITE: / , '\ 通過Z_XUL_TEST1.TEST1_FORM1修改後:' ,G_DATA1.  
  23.   
  24.   
  25. CALL FUNCTION 'ZBAPI_TEST' . "調用 function module  
  26. WRITE: / , '\ 通過 ZBAPI_TEST修改後:' ,G_DATA1.  
  27.   
  28.   
  29.   
  30.   
  31.   
  32.   
  33. *&---------------------------------------------------------------------*  
  34. *& Report  Z_XUL_TEST1  
  35. *&  
  36. *&---------------------------------------------------------------------*  
  37. *& 沒有任何參數,卻改變了主程序裏的變量。  
  38. *&  
  39. *&---------------------------------------------------------------------*  
  40.   
  41. REPORT  Z_XUL_TEST1.  
  42.   
  43. form  test1_form1  .  
  44.   
  45.   
  46.    "(Z_XUL_TEST2)G_DATA1 = '嘗試1'.  
  47.    "G_DATA1 = '嘗試1'.  
  48.   
  49.   
  50.    FIELD-SYMBOLS:<f1> TYPE any.  
  51.    data fieldname(50).  
  52.    fieldname = '(Z_XUL_TEST2)G_DATA1' .  
  53.    ASSIGN (fieldname) to <f1>  .  
  54.   
  55.    <f1> = '2222222222222222'.  
  56.   
  57. ENDFORM.  
  58.   
  59.   
  60.   
  61.   
  62.    FUNCTION ZBAPI_TEST .  
  63.   
  64.   
  65.   
  66.    FIELD-SYMBOLS:<f1> TYPE any.  
  67.    data fieldname(50).  
  68.    fieldname = '(Z_XUL_TEST2)G_DATA1' .  
  69.    ASSIGN (fieldname) to <f1>  .  
  70.   
  71.    <f1> = '333333333'.  
  72.   
  73.   
  74.    ENDFUNCTION.  
相關文章
相關標籤/搜索