除錯使用了函式模組的程式時需要注意的一個小問題
昨天下午複製了一個系統標準程式,在它的 SAP List Viewer 控制元件裡新增一個顯示欄位,結果在內表裡增加了欄位以後,除錯了一個小時也沒能在 List Viewer 中顯示出來。看看所有呼叫的地方該新增的都新增了,就是執行到系統的函式模組 REUSE_ALV_FIELDCATALOG_MERGE 時,新增的欄位就死活出不來。因為快下班了,就沒有繼續調——加班解決問題是個不好的工作習慣。
今天早上來了之後,開啟程式繼續查,在呼叫 REUSE_ALV_FIELDCATALOG_MERGE 的地方加了個斷點,深入函式模組內部繼續觀察。結果,居然昨天沒有顯示的欄位今天自己就出來了,這也太奇怪了吧。
回想這期間做的工作,再聯想到最近看的標準教程,忽然覺悟——由於函式模組所屬的函式組在函式模組被呼叫時會整體載入,同時函式組中間的全域性資料物件也一起被載入,並且在程式執行過程中一直保持。
這樣這個問題就可以解釋了,昨天除錯,一直是在事務碼 SE38 下進行的,無論怎麼改程式,都沒有退出事務碼,也就沒有退出整個程式的內部會話,這樣,REUSE_ALV_FIELDCATALOG_MERGE 所屬的函式組 SALV 也就總在這個內部會話中盤踞著,導致某些 SALV 中的全域性變數在呼叫時值未改變,從而使輸出結果也無法達到預期的內容。而今天是退出 SE38 並重新讀取和執行程式,退出後內部會話所佔用的記憶體已經清除,重新執行時會再次載入函式組並初始化相應全域性變數,這樣用新值運算出來的結果就正確了。
由此想到,學習基礎知識確實非常重要。如果沒有最近學習標準教程,對此問題就無法解釋,最後只能歸於 RPWT,而現在能夠解釋原因並寫出這篇文章為後來的朋友解惑,我也感覺到十分欣慰。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7941665/viewspace-974841/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- js Date()建構函式引數需要注意一個問題JS函式
- 10個需要注意的SQL問題SQL
- 安裝rac時需要注意的問題
- JavaScript ES6 Fetch API時需要注意的一個Cookie問題JavaScriptAPICookie
- Python讀書筆記:需要注意的70個小問題Python筆記
- 運用mysqldump 工具時需要注意的問題MySql
- 兩個需要求 sg 函式的樹上博弈問題函式
- thinkphp session 管理函式的一個問題PHPSession函式
- 除錯433M模組遇到的問題除錯
- 在下載opencv等類似的包時,需要注意到的一個大問題!OpenCV
- IBM面試需要注意的幾個問題IBM面試
- 敲程式碼時的一個小疑問
- 微信小程式開發需要注意的29個坑微信小程式
- 微信小程式開發需要注意的30個坑微信小程式
- 使用blueZ進行藍芽程式設計時需要注意的問題藍芽程式設計
- TO_DATE函式的小問題(二)函式
- 使用sql*plus時的一個安全小問題SQL
- 手機遊戲設計需要注意的7個問題遊戲設計
- 請教:除錯時出現的問題除錯
- 教育培訓APP開發時需要注意的問題APP
- 選擇代理IP時需要注意的三大問題
- 程式導向,物件導向,函式式對同一個問題的思考方式物件函式
- 做聚合支付代理需要注意的這幾個問題?
- 11gRAC安裝需要注意的幾個問題
- 資料補丁中需要注意的幾個問題
- linux下幾個問題的除錯Linux除錯
- Python import 時要注意的幾個問題PythonImport
- visual studio建立專案時需要注意的問題
- 燒錄Mac OS系統光碟時需要注意的問題Mac
- C#的Replace函式,使用函式作為的引數需要注意C#函式
- 配置Oracle RAC需要注意的問題Oracle
- go除錯的問題。Go除錯
- 幽默:除錯程式碼問題的最佳方法除錯
- 線上教育程式開發時應注意的問題
- 小程式呼叫上一個頁面的函式函式
- 聊一聊 GDB 除錯程式時的幾個實用命令除錯
- 關於php解構函式的一個有趣問題PHP函式
- spring呼叫帶引數的oracle函式應注意的問題SpringOracle函式