2013-04-26 23 views
3

在我的SAP應用程序的上下文中,我向現有表添加了一列,並且希望爲其定義一個默認值,以便使用該表的舊代碼(代碼特別是插入行)不必關心新列 - 而是我希望自動填充預定義的默認值(僅當沒有指定值時)。SAP中列的數據庫表默認值

落後的DB系統是Oracle-DB,儘管我只能通過SAP-GUI和ABAP-SQL訪問它。

由於我們公司的SAP專家不知道這是否可能,我想也許這裏有人會這樣做。所以 - 這是可能的,如果是 - 如何?

編輯 - 請求的場景細節: 場景其實很簡單:我們有一個用戶表我們包含標準用戶的東西應用(姓名,一些設置,IDS,等分,一堆標誌等的),我添加了一個專欄來存儲一個簡單的設置(用戶爲他的web界面選擇的設計)。它只包含一個名字(char 40)。這就是我上面提到的那個專欄,我想讓它的默認值是「Default Design」。

+0

由於人們指出SAP DB邏輯對底層數據庫不是不依賴的,因此刪除了oracle標記 – LionC 2013-04-26 17:56:50

+0

我想你並沒有使用系統本身提供的USR *表,所以你不能使用提供的機制將自定義數據添加到完全能夠提供默認值的用戶數據中? – vwegert 2013-04-27 07:33:19

+0

不,我們沒有使用系統提供的表格 - 當我讀出你的答案時,這意味着我所嘗試的是不可能的。我會標記你的答案,真的非常感謝你。 – LionC 2013-05-02 11:37:44

回答

2

請不要考慮在數據庫級別上這樣做。認真。直接對數據庫層所做的更改不會在系統內部可見,並會導致各種奇怪的副作用,這將成爲噩夢的支持。此外,您的更改不會被更改和傳輸系統收集 - 您必須手動更新質量檢查和生產系統。

如果可能的話,我建議選擇你的域值,使中性域值(空格,零,任何)對應於你的默認值。如果這不可行,請詳細描述您的方案以獲得更具體的答案。


的SAP R/3/ABAP環境不給你列添加默認值的選項。添加列時,您只能選擇強制系統填充非默認值,但這通常不是一個好主意。修改所有數據並插入默認值需要一些時間,並且根據表的大小和關鍵性,這可能會導致生產中斷。使用默認值填充字段必須由應用程序服務器執行,而不是數據庫。在你的情況,我只是添加邏輯讀訪問模塊中,像

IF my_user-ze_design IS INITIAL. 
    my_user-ze_design = co_ze_default_design. 
ENDIF. 
+0

我不知道你如何定義「數據庫級別」,但我從來沒有計劃試圖繞過SAP給我的工具,如果我這樣做,我想幹淨整潔。 我編輯的問題擴大它的情況下的細節 – LionC 2013-04-26 17:42:56

0

您可以定義默認值添加到表中的列 - 如果你的數據庫是的Oracle 11g(或更高版本), Oracle推出了「Dictionary Only添加列」,這意味着默認值元數據僅存儲在字典中 - 因此現有記錄不需要使用默認值進行更新,並且不存在開銷,無論表格有多大。