2012-07-21 36 views
1

我想提供創建高級選擇的可能性,比可以通過快速查看器創建的左連接更深刻。在ABAP中創建受限制的臨時子例程

最簡單的方法是讓用戶通過"GENERATE SUBROUTINE POOL"插入一些源代碼。

但確保此源代碼不會更改任何數據,啓動其他程序或執行任何操作而不是評估數據,這對我來說是十分必要的。

我的想法是將插入的源代碼復位到SELECT,LOOP,IF等一些關鍵世界。在這種情況下,我需要在插入的源代碼中查找所有關鍵字,並根據一些白名單。

我該怎麼做?有什麼辦法可以繞過我的限制來做一些真正的傷害嗎?有其他方法可以達到我的目標嗎?

回答

2

確保這樣的東西真的很難做到,它不是個人限制或平臺問題。您無法讓機器瞭解程序員在做什麼 - 請參閱Halting Problem。爲自己做關鍵字掃描是一項繁瑣的工作。您可能想嘗試SCAN ABAP-SOURCE並查看掃描儀拋出的表格。然而,限制到最基本的語言元素只會讓你如此,因爲對於任何實質性的編程,你必須允許外部子程序調用,然後你很容易受到任何東西的影響。在我看來,最好將規範交給開發人員,讓報告的開發沒有任何動態的東西。這樣,您還可以確保不會因爲用戶在SELECT語句中黑客不知道該取消標誌而創建不正確的報告...