Текущее время: Пт, июл 18 2025, 20:35

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: неправильная выборка при пустых SELECT-OPTIONS
СообщениеДобавлено: Вт, сен 19 2006, 12:50 
Менеджер
Менеджер

Зарегистрирован:
Сб, ноя 20 2004, 13:02
Сообщения: 575
Откуда: Москва
Пол: Мужской
Второй день понять не могу - почему один селект при отсутствии SELECT-OPTIONS не находит некоторые записи... Вот он:

SELECT t001k~bukrs mchbh~werks mchbh~matnr mchbh~charg mchbh~clabs
mara~meins mchbh~lfgja mchbh~lfmon
INTO corresponding fields of lt_move2
FROM mchbh join mara on mchbh~matnr = mara~matnr
join t001w on mchbh~werks = t001w~werks
join t001k on t001w~bwkey = t001k~bwkey
WHERE mchbh~matnr IN S_MATNR
AND mchbh~werks = P_WERKS
AND mchbh~clabs <> 0
AND mara~matkl IN S_MATKL AND
( ( mchbh~lfgja = P_GJAHR
AND mchbh~lfmon >= P_PERBL ) or
( mchbh~lfgja > P_GJAHR ) )
AND EXISTS ( select * from *mchbh where
*mchbh~matnr = mchbh~matnr and
*mchbh~werks = mchbh~werks and
*mchbh~lgort = mchbh~lgort and
*mchbh~charg = mchbh~charg and
( ( *mchbh~lfgja = P_GJAHR and
*mchbh~lfmon < P_PERBL ) or
( *mchbh~lfgja < P_GJAHR ) ) )
ORDER BY t001k~bukrs mchbh~werks mchbh~matnr mchbh~charg
mchbh~lfgja ASCENDING mchbh~lfmon ASCENDING.
collect lt_move2.
clear: lt_move2.
ENDSELECT.

Если в S_MATNR и S_MATKL ничего нет, то он не находит некоторые записи, а некоторые находит (закономерности не увидел). Если же ввести например группу материалов - то все находит, если же ввести 3 группы - опять не находит. Смотрел трассировщиком запросы с указанием материала, который не находился - отличаются только наличием строки AND T_00 . "MATNR" = 'искомый_материал'. Ничего понять не могу.... Что я не так сделал???


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 19 2006, 13:06 
Менеджер
Менеджер

Зарегистрирован:
Чт, янв 20 2005, 08:34
Сообщения: 573
Пол: Мужской
Странно, что он только некоторые не находит, ему бы вообще стоит ничего не находить :) :) :) На него даж смотреть страшно :) :) :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 19 2006, 13:19 
Менеджер
Менеджер

Зарегистрирован:
Сб, ноя 20 2004, 13:02
Сообщения: 575
Откуда: Москва
Пол: Мужской
Почему страшно-то? Что с ним не то?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 19 2006, 13:22 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 22 2004, 09:09
Сообщения: 95
действительно, жуть


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 19 2006, 13:24 
Менеджер
Менеджер

Зарегистрирован:
Вт, авг 17 2004, 13:14
Сообщения: 664
Откуда: Москва
Пол: Мужской
Сильный селект. У меня "интерпретатор" в мозгу повис после
этого условия where:

... AND EXISTS ( select * from *mchbh where
*mchbh~matnr = mchbh~matnr and
*mchbh~werks = mchbh~werks and
*mchbh~lgort = mchbh~lgort and
*mchbh~charg = mchbh~charg and
( ( *mchbh~lfgja = P_GJAHR and
*mchbh~lfmon < P_PERBL ) or
( *mchbh~lfgja < P_GJAHR ) ) )

Может стоит проще писать? Как после тебя другие этот код разберут? :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 19 2006, 13:29 
Менеджер
Менеджер

Зарегистрирован:
Вт, авг 17 2004, 13:14
Сообщения: 664
Откуда: Москва
Пол: Мужской
Сильный селект. У меня "интерпретатор" в мозгу повис после
этого условия where:

... AND EXISTS ( select * from *mchbh where
*mchbh~matnr = mchbh~matnr and
*mchbh~werks = mchbh~werks and
*mchbh~lgort = mchbh~lgort and
*mchbh~charg = mchbh~charg and
( ( *mchbh~lfgja = P_GJAHR and
*mchbh~lfmon < P_PERBL ) or
( *mchbh~lfgja < P_GJAHR ) ) )

Может стоит проще писать? Как после тебя другие этот код разберут? :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 19 2006, 13:37 
Менеджер
Менеджер

Зарегистрирован:
Сб, ноя 20 2004, 13:02
Сообщения: 575
Откуда: Москва
Пол: Мужской
:-) Это еще простенький селект, видели бы вы что консалты писали - вот это действительно жуть.
Этот селект (вместе с сетектом по mchb) делает то, что нужно - выбирает остатки материала по заводу на конец периода. С указанием группы материалов или материала работает нормально. Без - криво, непонятно почему. Вопрос в том, почему криво, а не в том, жуть это или не жуть. Есть предположения?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 19 2006, 13:42 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, апр 10 2006, 17:17
Сообщения: 77
Во вложенном селекте не забыли использовать mchbh~matnr IN S_MATNR?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 19 2006, 13:44 
Специалист
Специалист

Зарегистрирован:
Пт, июн 16 2006, 11:39
Сообщения: 178
Откуда: Москва
2 Alexy:
Бывает и хуже;)
Разбей этого монстра на отдельные селекты, иначе сложно понять что же там происходит.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 19 2006, 13:49 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 01 2005, 07:11
Сообщения: 223
Откуда: Нижневартовск->Москва
Пол: Женский
может проблема в том, что материал стал относиться к другой группе?

_________________
Всегда открыта новым авантюрам!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 19 2006, 14:54 
Менеджер
Менеджер

Зарегистрирован:
Сб, ноя 20 2004, 13:02
Сообщения: 575
Откуда: Москва
Пол: Мужской
Шайтан - заменил вот этим и работает. Хотя смысл тот же...

SELECT t001k~bukrs mchbh~werks mchbh~matnr mchbh~charg mchbh~clabs
mara~meins mchbh~lfgja mchbh~lfmon mchbh~lgort
INTO corresponding fields of lt_move3
FROM mchbh join mara on mchbh~matnr = mara~matnr
join t001w on mchbh~werks = t001w~werks
join t001k on t001w~bwkey = t001k~bwkey
WHERE mchbh~matnr IN S_MATNR
AND mchbh~werks = P_WERKS
AND mchbh~clabs <> 0
AND mara~matkl IN S_MATKL AND
( ( mchbh~lfgja = P_GJAHR
AND mchbh~lfmon >= P_PERBL ) or
( mchbh~lfgja > P_GJAHR ) )
ORDER BY t001k~bukrs mchbh~werks mchbh~matnr mchbh~charg
mchbh~lfgja ASCENDING mchbh~lfmon ASCENDING.

select single matnr into l_matnr from mchbh where
mchbh~matnr = lt_move3-matnr and
mchbh~werks = lt_move3-werks and
mchbh~lgort = lt_move3-lgort and
mchbh~charg = lt_move3-charg and
( ( mchbh~lfgja = P_GJAHR and
mchbh~lfmon < P_PERBL ) or
( mchbh~lfgja < P_GJAHR ) ) .
check sy-subrc = 0.

move-corresponding lt_move3 to lt_move2.
collect lt_move2.
clear: lt_move2.
ENDSELECT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 19 2006, 15:10 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
Думаю, данный шайтан будет тормознутым... SELECT-ENDSELECT не есть гут...

_________________
Лучше сделать и пожалеть, чем не сделать и потом жалеть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 19 2006, 16:22 
Менеджер
Менеджер

Зарегистрирован:
Сб, ноя 20 2004, 13:02
Сообщения: 575
Откуда: Москва
Пол: Мужской
Именно этот селект нормально работает. По-другому там по-моему не сделать - будут вариации на ту же тему, т.к. мне коллектить надо во внутреннюю таблицу.
А тема почему первый вариант криво работает так и не раскрыта :-(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 19 2006, 16:54 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Alexy написал:
...А тема почему первый вариант криво работает так и не раскрыта :-(

Может стоит попробовать заменить
select * from *mchbh where
на
select * from mchbh as t2 where

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 19 2006, 17:32 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
Alexy написал:
По-другому там по-моему не сделать - будут вариации на ту же тему, т.к. мне коллектить надо во внутреннюю таблицу.
А тема почему первый вариант криво работает так и не раскрыта :-(


А оператор GROUP BY?

По-поводу кривой работы - действительно, надо попробовать использовать псевдонимы...

_________________
Лучше сделать и пожалеть, чем не сделать и потом жалеть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

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


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

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


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

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