Сделать поле SELECT по пустым?

Мне нужно знать, как провести сравнение в SELECT для поля, которое должно быть пустым.

Я пытаюсь выбрать некоторые поля из bkpf, при этом поле stblg пустое. Я сделал это так:

 SELECT c~kunnr a~belnr d~spart c~bldat c~waers a~hwaer f~mwskz
      INTO CORRESPONDING FIELDS OF TABLE lt_data
        FROM ( ( ( bsis AS f
      INNER JOIN bkpf AS a ON f~belnr = a~belnr )
      INNER JOIN bsad AS c ON c~belnr = a~belnr )
      INNER JOIN vbrk AS d ON d~vbeln = c~belnr )
      WHERE a~gjahr IN gjahr
        AND a~bukrs IN bukrs
        AND c~augdt IN augdt
        AND a~stblg = ' '
        AND f~hkont = '0034930020'.

Это правильно или мне нужно использовать другую вещь? Спасибо.


person Eva Dias    schedule 03.07.2012    source источник


Ответы (2)


В вашем случае вы можете использовать AND a~stblg = ' ' или уже упомянутый AND a~stblg EQ SPACE - нет разницы (я бы рекомендовал использовать SPACE. С ' ' вы не можете быть уверены, хотите ли вы проверить пробел или если вы забыли что-то заполнить '.)

На уровне базы данных пусто может иметь другое значение. Базы данных делают разницу между space или ' ' и без значения (NULL).

Вы можете проверить NULL в SAP с помощью:

AND a~stblg IS NULL

В вашем случае этот оператор не должен ничего выбирать, потому что SAP обычно сохраняет пробел для пустых символьных значений.

person knut    schedule 04.07.2012

В качестве альтернативы вы можете использовать:

AND a~stblg EQ SPACE

--

Тальха

person Mtu    schedule 04.07.2012
comment
Это верно в большинстве случаев, но я рекомендую вам использовать ПРОБЕЛ, именно так рекомендует словарь abap. - person Mtu; 04.07.2012