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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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