Pragma to Hide Warning: поле, используемое в условии where, может содержать нулевые значения.

Я ищу прагму, которую я могу использовать, чтобы скрыть предупреждение компилятора, сгенерированное, когда поле, используемое в условии WHERE выбора, может содержать значения NULL в базе данных.

Прочитав SAP-ноту 1088403, я знаю о возможных проблемах здесь, но я не могу применить предложенные там решения, поскольку я использую диапазон, а не одно значение в предложении WHERE. В любом случае это устаревший код, который никогда не был дефектным (насколько нам известно) и вскоре будет заменен.

Однако пока я переписываю другие разделы программы, я хотел бы отключить это предупреждение с помощью прагма. Может ли кто-нибудь сказать мне, какую прагму я смогу использовать для этого?

Пример выбора:

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, которое также скрывает предупреждение, поскольку компилятор, очевидно, не может проверить текстовое предложение where.


person Lilienthal    schedule 18.12.2013    source источник
comment
Не могли бы вы предоставить небольшой фрагмент кода? Кроме того, прагма #EC * применима ко всему.   -  person Eduardo Copat    schedule 18.12.2013
comment
Я добавил пример выбора по запросу. Что касается упомянутой вами прагмы, я считаю, что на самом деле это псевдокомментарий для отключения предупреждений от расширенной проверки программы. Эти псевдокомментарии устарели из-за прагм, и использование обоих в одной программе вызовет предупреждение EPC, которое нельзя деактивировать (согласно справочнику ABAP). Кроме того, предупреждение, с которым я сталкиваюсь, не генерируется EPC, а является предупреждением времени компиляции, которое этот псевдокомментарий, похоже, не отключает.   -  person Lilienthal    schedule 19.12.2013


Ответы (1)


Если вы запустите расширенную проверку синтаксиса для программы с этим фрагментом, вы увидите, что в нем конкретно указано, что нет прагмы для подавления этого (выделение мое):

Программа: ‹program_name› Строка: ‹row›
Предупреждение о проверке синтаксиса
Поле «BWART», используемое в условии WHERE, может содержать значения NULL.
Внутренний код сообщения: MESSAGE GYT
Нельзя подавить с помощью прагмы или псевдокомментария

person Smigs    schedule 19.12.2013
comment
Приятно знать, что это может быть упомянуто здесь, я обязательно проверю это в будущем. - person Lilienthal; 20.12.2013