Ну почему не доделали.. все логично если таблица после IN пустая то в результирующий запрос к БД такое сравнение вообще выбрасывается, если же надо выбрать именно пустое значение, то типа надо добавить запись вид I EQ SAPCE тогда будут выбраны именно пустые значения, а так просто такое сравнение будет проигнорировано. Как по мне логично, а дальше уже проверки ставим сами
Кстати так чего-то подумал, если бы они доделали так как ты хочешь, то была бы полная засада, смотри наиболее часто используемая структура отчетов это селекционный экран и дальше один или больше запросов которые выбирают данные, селекционный экран имеет вид типа:
select-options: s_pstyp for rm06e-epstp,
s_knttp for ekpo-knttp,
s_eindt for eket-eindt и т.д.
Далее по тексту есть запрос вид:
select * into corresponding fields of table lt_ekpo
from ekko as k inner join ekpo as p
on p~ebeln = k~ebeln
where k~lifnr in s_lifnr "EKKO-Data
and k~ekorg in r_ekorg
and k~bsart in s_bsart
and k~ekgrp in s_ekgrp
and k~reswk in s_reswk
and k~bedat in s_bedat
and p~matnr in em_matnr "EKPO-Data
and p~werks in em_werks
and p~bstyp in r_bstyp
and p~wepos in r_wepos
and p~repos in r_repos
and p~loekz in r_loekz
and p~pstyp in r_pstyp
and p~knttp in s_knttp
and p~matkl in s_matkl
and p~ean11 in s_ean11
and p~idnlf in s_idnlf
and p~ltsnr in s_ltsnr
and p~aktnr in s_aktnr
and p~saiso in s_saiso
and p~saisj in s_saisj
and p~ebeln in s_ebeln.
Так вот, поля которые пользователь не заполнил на селекционном экране будут проигнорированы, в противном же случае я даже не знаю, надо было бы что-то мутить с динамическим формированием строки запроса. Так что это они хорошо продумал что пусты значения диапазонов в операторе
IN игнорируются в запросе.