Central basis隱式增強

我一直想修改SAP Easy Access的圖片, 後來我在TCODE SMW0上傳了一張圖片, 在SM30修改VIEW SSM_CUST 裏的STRAT_IMAGE 那一欄的值.


在我修改後的第二天, 管理員發現了, 用SM02廣播了一條消息, 意思是叫我們不要修改這些東西...


然後我想, 有沒有可能只修改我自己的圖片呢? 用隱式增強? 但這估計是central basis的component... 估計不能做隱式增強... 有沒有可能去掉這個限制?


於是我開始探索, 首先用程序RPR_ABAP_SOURCE_SCAN找到了START_IMAGE的相關代碼, 找到了隱式增強點


更重要的是要找到屬於central basis的component爲什麼不能做隱式增強, 於是我開了兩個程序, 一個能做隱性增強的, 一個不能做的, 對同時建一個implement來debug比較, 看看跑的語句有什麼不同... 我承認, 這個方法很無聊, 但無可否認, 很有效...


找到方法了, 就開始吧


ProblemDescription                                                                                                      

屬於centralbasis 的東西是不允許做隱式增強的. 我想在FM: NAVIGATION_READ_START_IMAGE建一個隱式增強, 但有message報出Object FUGR SMTR_NAVIGATION_MODULES is part ofthe central basis and therefore cannot be enhanced


Problem Resolution                                                                                                      

我們可以通過一些暴力方法去解決這個問題.

1. 在CLASS: CL_R3STANDARD_PERSISTENCE=>OBJ_IS_ENHANCEABLE打個斷點, 如下圖所示


2. 再去Create隱式增強, 這時, 程序會在停在斷點上



3. 把IN_CENTRAL_BASE這個變量改成空白, 按F8, 這樣, Choose Enhancement Mode的窗口就會彈出來.


4. 此後, 在掛TR和激活的時候, 斷點還會斷下幾次, 如法炮製把IN_CENTRAL_BASE這個變量改成空白,然後按F8.



5. 看看我之前做的增強的結果. (這是美國鄉村歌手Taylor Swift, 很漂亮吧)

User: PEIPING.LI



User: LUPKID


注意:

本方法只爲娛樂,在實際開發中請勿應用,因爲這可能會產生未知的後果.


後來我把這個文檔Share給幾位同事後, 同事們認爲, 這個增強很屌絲...






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章