2013-12-18 8 views
3

我正在尋找一個編譯指示我可以用來隱藏在select的WHERE條件中使用的字段可能包含NULL值時生成的編譯器警告在數據庫中。Pragma要隱藏警告:where條件中使用的字段可能包含空值

讀過SAP註釋1088403後,我意識到可能存在的問題,但由於我在WHERE子句中使用範圍而不是單個值,因此我無法應用此處提出的解決方案。在這兩種情況下,這都是從未發現有缺陷的遺留代碼(據我們所知),並且不久將被替換。

但是,當我重寫程序的其他部分,我想要禁用此警告與pragma。任何人都可以告訴我,我能用這個編譯指示嗎?

示例選擇:

SELECT d~matnr d~werks d~lgort d~bdmng k~maktx 
INTO CORRESPONDING FIELDS OF TABLE itab 
FROM resb AS d 
INNER JOIN makt AS k ON d~matnr = k~matnr 
WHERE 
    k~spras = syst-langu 
    AND d~werks = p_werks 
    AND d~matnr IN s_matnr 
    AND d~bwart IN r_bwart. 

請注意,我因爲使用​​這種替代選擇一個動態where子句也隱藏了,因爲編譯器警告顯然無法檢查基於文本的地方。

+0

能否請您提供一個小小的一段代碼被抑制?另外,附註'#EC *'適用於所有內容。 –

+0

我已經按要求添加了一個示例select。至於你提到的編譯指示,我相信它實際上是一個僞造的註釋來禁用擴展程序檢查中的警告。這些僞註釋被編譯指示廢棄,並且在一個程序中同時使用這兩個註釋會觸發無法停用的EPC警告(根據ABAP參考資料)。此外,我遇到的警告不是由EPC生成的,而是編譯時警告,此僞描述似乎不會被禁用。 – Lilienthal

回答

3

如果你運行了這個片段在程序擴展語法檢查,你會看到,它明確規定,沒有編譯抑制這種(重點煤礦):

計劃:<程序名>行:<行>
語法檢查警告
在WHERE條件中使用的字段「BWART」可能包含NULL值。
內部消息碼信息GYT
不能使用編譯或僞評論

+0

很高興知道這可以在這裏提到,我會確保將來檢查它。 – Lilienthal

相關問題