天天看點

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

Central basis隐式增強

Problem Resolution                                                                                                      

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

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

Central basis隐式增強

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

Central basis隐式增強

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

Central basis隐式增強

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

Central basis隐式增強

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

User: PEIPING.LI

Central basis隐式增強

User: LUPKID

Central basis隐式增強

注意:

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

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

繼續閱讀