Перед выпуском 7.40 SP05 нельзя использовать предложение WHERE
для фильтрации по столбцу «правой» таблицы в LEFT OUTER JOIN ( ABAP 7.31 doc : «Во внешних объединениях все сравнениякоторые содержат столбцы из таблицы базы данных или представления dbtab_right справа [...] Эти столбцы не допускаются в качестве операндов в условии WHERE того же оператора SELECT. ")
Это ограничение было логичным, потому что еслиодна строка находится только в левой таблице, все столбцы правой таблицы считаются «нулевыми», поэтому, если в столбце правой таблицы есть выделение, строка не будет выделена (кроме случаев использования IS NULL
).
Правильный способ - определить условие в ON
:
SELECT smeal~carrid smeal~mealnumber smealt~text
INTO TABLE meals
FROM smeal
LEFT JOIN smealt
ON smealt~carrid = smeal~carrid
AND smealt~mealnumber = smeal~mealnumber
AND smealt~sprache EQ 'E'. " <==== move it from WHERE to ON