在修改現有程序的CASE語句時,我不得不添加第二個塊,其中重複一些邏輯來設置NetWeaver門戶設置。這是通過設置局部變量中的值,然後將該變量分配給Changing參數來完成的。我複製了代碼並做了一個漂亮的打印,期待編譯器抱怨未知的變量。令我吃驚然而,這段代碼實際上編譯就好:Case Statement中的變量封裝
CASE i_actionid.
WHEN 'DOMIGO'.
DATA: ls_portal_actions TYPE powl_follow_up_sty.
CLEAR ls_portal_actions.
ls_portal_actions-bo_system = 'SAP_ECC_Common'.
" [...]
c_portal_actions = ls_portal_actions.
WHEN 'EBELN'.
ls_portal_actions-bo_system = 'SAP_ECC_Common'.
" [...]
C_PORTAL_ACTIONS = ls_portal_actions.
ENDCASE.
正如我在所有其他編程語言所看到的,DATA:
聲明在第一WHEN
聲明應被封裝僅是開關塊內。 SAP是否忽略此封裝以使整個CASE語句中的值可用?這是記錄在任何地方?
請注意,此代碼編譯得很好,然後雙擊第二個開關中的局部變量將我帶到第一個數據聲明中。但是,由於我們的測試環境停機,我無法測試此代碼是否正確執行。
你修改漂亮的打印機來移動數據聲明?棒極了。不要以爲你已經在任何地方分享了這個代碼,scn等等? –
感謝您提供有用的概述,在培訓和幫助材料中沒有更好地記錄這一點,這真是一個恥辱。假設您能夠公開發布,我會再次選擇Bryain對漂亮打印修改的請求。 – Lilienthal
不幸的是,它在工作,所以我不能自由地分享它,但它非常直截了當我在ENDFUCTION之前的函數模塊PRETTY_PRINTER的末尾添加了一個退出權限。如果你在這裏添加一個調用,你可以使用包含格式化源代碼的表ntext [](只要檢查l_indentation_wrong,如果'X'表示語法錯誤,在這種情況下我沒有進行格式化)。它也適用於新的Eclipse ABAP編輯器 – DW8Reaper