當使用擴展程序檢查,我得到以下警告:在ABAP本地化全球varables報告
不要聲明領域和全球領域的符號(
variable name
)。
這是從選擇屏幕之前聲明全局數據。顯而易見的解決方案是,它們應該在子程序中進行本地聲明。
如果我決定這樣做,現在數據將超出其他子例程的範圍,所以我最終會創建一些對C或Java中的main()
函數的影響。這聽起來像是一個好主意 - 但是,像INITIALIZATION
這樣的事件不允許在子程序中,這意味着它會強制中斷程序。
觀察下面的示例程序:
REPORT Z_EXAMPLE.
SELECTION-SCREEN BEGIN OF BLOCK upload WITH FRAME TITLE text-H01.
PARAMETERS: p_infile TYPE rlgrap-filename LOWER CASE OBLIGATORY.
SELECTION-SCREEN END OF BLOCK upload.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_infile.
PERFORM main1 CHANGING p_infile.
INITIALIZATION.
PERFORM main2.
TOP-OF-PAGE.
PERFORM main3.
...
main1
,main2
和main3
不能就我所知的任何數據傳遞到彼此沒有全局聲明。如果從main1
上傳的文件p_infile
解析數據,則無法在main2
或main3
中訪問該數據。除了一起忽略事件,是否有任何方法來遵守警告,但讓數據通過事件傳遞?
謝謝。你對ABAP的關心太少了,你肯定是對的 - 但有人必須以身作則。我有一份Cengage Learning的ABAP編程介紹第三版的介紹,第294頁的示例程序ZCHECK僅包含全局變量。你知道任何好的資源對於試圖遵守編程標準的ABAPer有幫助嗎? – gkubed
我認爲你正在使用擴展程序檢查('SLIN')進入正確的軌道。如果您正在尋找需要閱讀的內容,[官方ABAP編程指南](https://www.sap-press.com/official-abap-programming-guidelines_2093/)是一個很好的參考。 – mjturner
@mjturner我在文檔中看到子程序已經過時。 – Christian