Текущее время: Пн, авг 04 2025, 00:23

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Не срабатывает поле WHERE в SELECT. Что за карамба?
СообщениеДобавлено: Чт, ноя 29 2007, 18:31 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, апр 07 2005, 05:27
Сообщения: 621
Откуда: Москва
Пол: Мужской
Следующий код без WHERE корректно возвращает всю таблицу, а с WHERE: sy-subrc = 4, число записей ессно = 0. Просмотр содержимого таблицы показывает что поле uploaded пустое. Что за чудеса?

Код:
Code:
  SELECT *
    FROM ztable
    INTO CORRESPONDING FIELDS OF TABLE it_ztab
    WHERE
      UPLOADED NE 'X'.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 29 2007, 19:05 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Прекрасно все работает.
Code:
ZTABLE   
Test     
--------
MANDT    MANDT
VBELN    VBELN_VA
UPLOADED    CHAR1

Содержимое:
MANDT VBELN      UPLOADED
098   1111111111         
098   2222222222         
098   3333333333 X       
098   4444444444         

программа
REPORT  z_get_ztable                            .

DATA: it_table TYPE STANDARD TABLE OF ztable WITH HEADER LINE.
END-OF-SELECTION.
  SELECT *
  INTO TABLE it_table
  FROM ztable
  WHERE uploaded NE 'X'.

  LOOP AT it_table.
    WRITE: / it_table-vbeln, '|', it_table-uploaded.
  ENDLOOP.

Результат
Test ztable           
                     
1111111111           
2222222222           
4444444444   
       


Как объявлена внутренняя таблица?

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не срабатывает поле WHERE в SELECT. Что за карамба?
СообщениеДобавлено: Чт, ноя 29 2007, 19:11 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
lumer написал:
Следующий код без WHERE корректно возвращает всю таблицу, а с WHERE: sy-subrc = 4, число записей ессно = 0. Просмотр содержимого таблицы показывает что поле uploaded пустое. Что за чудеса?

Код:
Code:
  SELECT *
    FROM ztable
    INTO CORRESPONDING FIELDS OF TABLE it_ztab
    WHERE
      UPLOADED NE 'X'.


иногда "глюки" имеют место, если это новое поле в таблице, т.е. оно добавлено после внесения в таблицу данных. Причем в определении поля в таблице не стоит галка "начальные значения". если ситуация не такая - увы..


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 29 2007, 19:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
holocorn написал(а):
новое поле в таблице, т.е. оно добавлено после внесения в таблицу данных.

А программа тогда скомпилируется?

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 29 2007, 19:57 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Удав написал(а):
А программа тогда скомпилируется?

Просто в базу данных попадает "undef".
undef <> 'X' = undef.

Компиляция смотрит только на словарь данных, а не на описание таблицы в БД, и уж тем более не на то, что там в ней заполнено.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не срабатывает поле WHERE в SELECT. Что за карамба?
СообщениеДобавлено: Чт, ноя 29 2007, 20:01 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
holocron написал(а):
иногда "глюки" имеют место, если это новое поле в таблице, т.е. оно добавлено после внесения в таблицу данных. Причем в определении поля в таблице не стоит галка "начальные значения". если ситуация не такая - увы..

Я тоже поддержу. Сделайте, на всякий случай, выравнивание данных по таблице и буфера скиньте тоже. Последнее - просто шаманский пасс...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 29 2007, 23:07 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
sibrin написал:
Просто в базу данных попадает "undef".
undef <> 'X' = undef.

Это как сказать.
Oracle с R/3 работает таким образом, что в БД никода не будет поля со значением undef. Или пробел(хотя бы один) - в случае символьного поля), или 0 - в случае I, D или F.
На всякий случай можно запустить утилиту БД для активации, но как правило при добавлении полей этого не требуется.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Не срабатывает поле WHERE в SELECT. Что за карамба?
СообщениеДобавлено: Чт, ноя 29 2007, 23:11 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
John Doe написал:
Последнее - просто шаманский пасс...

Или просто молитву прочитать :))

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 30 2007, 00:09 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Удав написал(а):
На всякий случай можно запустить утилиту БД для активации, но как правило при добавлении полей этого не требуется.

Собсно о чем мы с holocron и писали (по крайней мере я так понял). Активировать с выравниванием уже существующих данных.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 30 2007, 00:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Обычно утилита базы данных нужна при изменении состава ключевых полей или при удалении полей.
При добавлении полей в 99 % случаев ее применять не надо :wink:

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 30 2007, 09:35 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Удав написал(а):
Oracle с R/3 работает таким образом, что в БД никода не будет поля со значением undef. Или пробел(хотя бы один) - в случае символьного поля), или 0 - в случае I, D или F.
На всякий случай можно запустить утилиту БД для активации, но как правило при добавлении полей этого не требуется.

Не согласен. Уже наступлено на грабли и проверено не мной одним. Точно на Oracle и точно на R/3.
Или писать:
Code:
SELECT *
    FROM ztable
    INTO CORRESPONDING FIELDS OF TABLE it_ztab
    WHERE
      UPLOADED NE 'X'
OR UPLOADED IS NULL.

или ставить индикатор инициации поля.
sibrin написал:
Просто в базу данных попадает "undef".
undef <> 'X' = undef.

+1
Цитата:
NULL values in the database
If new fields are inserted in or added to transparent tables in the ABAP Dictionary, the fields are added to the database by means of an ALTER TABLE ADD FIELD <field name>..... .

The values for these new fields are undefined (NULL value in the database), so long as nothing else was specified. This status does not cause any problems, provided the new fields are not selected.

Example: The numeric field <newfield> was added to a table TAB. If you access this table with

'SELECT ... FROM TAB WHERE <newfield> <> 5 ...'

records with NULL values in <newfield> are not found, although they logically satisfy the WHERE condition of the SELECT (since the new column contains only NULL values). The cause of this is the NULL value behavior of the database systems.

If the newly added columns are to be selected in this way, the new field must be created at ADD FIELD with an initial value (force NOT NULL). In this case, the situation shown in the above example could not occur, since fields filled with an initial value could be selected correctly.



Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 30 2007, 10:00 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Удав написал(а):
Oracle с R/3 работает таким образом, что в БД никода не будет поля со значением undef. Или пробел(хотя бы один) - в случае символьного поля), или 0 - в случае I, D или F.

Может вы и правы.
Но я как то наступал на грабли с неинициализированным значением поля (NULL) после добавления в таблицу именно на оракловой базе

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 30 2007, 10:03 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, апр 07 2005, 05:27
Сообщения: 621
Откуда: Москва
Пол: Мужской
Сенкс ответившим. Да, ситуация именно такая - добавили новое поле.
Добавка
Code:
OR UPLOADED IS NULL
все вылечила.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 30 2007, 10:07 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
lumer написал:
Сенкс ответившим. Да, ситуация именно такая - добавили новое поле.
Добавка
Code:
OR UPLOADED IS NULL
все вылечила.

Все таки проинициализируйте. А то мало ли, будет другой человек запрос писать к вашей таблице - и опять вопрос здесь увидим :)

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB