Текущее время: Вс, авг 03 2025, 14:40

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Как в SELECT'e не включать в выборку пустые параметры?
СообщениеДобавлено: Чт, ноя 06 2008, 13:39 
Начинающий
Начинающий

Зарегистрирован:
Чт, ноя 06 2008, 10:28
Сообщения: 11
Доброе время суток. Я только недавно начал изучать SAP и ABAP так что строго не судите ) Написал прогу, которая формирует акт инвентаризации доходов и сохраняет его основные параметры (такие как номер акта, дата, струк. подразделение, БЕ и тп.) в таблицу - назовем ее z_temp. Но из этой проги пользователю нельзя посмотреть уже созданные и сохраненные акты. Поэтому я решил написать еще одну прогу, которая делает поиск по вышеперечисленным параметрам акта и отображает найденные акты. Мне нужно реализовать поиск по параметрам, т.е. если заданы допустим БЕ и стр. подразделение, то выдать все акты по указанному подразделению в указанной БЕ.
Вопрос в следущем. Некоторые параметры поиска могут быть не заданы и тогда их не нужно включать в выборку - как это можно реализовать в одном SELECT'е?

В SQL'е я бы написал так:

SELECT *
FROM z_temp
WHERE (BUKRS = @BUKRS or @BUKRS is null)
and (UNIT = @UNIT or @UNIT is null)
and (GJAHR = @GJAHR or @GJAHR is null)
and ....

Но в ABAP'е такой SELEСT работать не будет.

З.Ы. а может я вообще неправильно делаю ? Тогда объясните, пожалуйста, что не так.


Последний раз редактировалось N7 Чт, ноя 06 2008, 13:55, всего редактировалось 1 раз.

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

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
используйте SELECT-OPTIONS...

SELECT ...

WHERE
bukrs IN so_bukrs AND...


Если SELECT-OPTIONS пустой, то он и не учитывается при выполнении запроса. Вам это нужно?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 06 2008, 14:27 
Начинающий
Начинающий

Зарегистрирован:
Чт, ноя 06 2008, 10:28
Сообщения: 11
Хм, попробую, спасибо ) а с параметрами никак не получится что-ли?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 06 2008, 14:30 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
N7 написал(а):
Хм, попробую, спасибо ) а с параметрами никак не получится что-ли?

нет. Значение параметра всегда участвует в выборке, даже если он пустой. Если вы хотите, чтобы селект-опшнс выглядели, как параметры, припишите
Code:
SELECT-OPTIONS: s FOR ... NO INTERVALS NO-EXTENSION


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 06 2008, 14:32 
Ассистент
Ассистент

Зарегистрирован:
Ср, мар 05 2008, 15:30
Сообщения: 44
select ...
WHERE (dyn_where).

CONCATENATE
..
'likp~bolnr IN so_bolnr AND'
'likp~vkorg = p_vkorg AND'
..
INTO dyn_where
SEPARATED BY space.

можно проверить, если параметр пустой, то не добавлять.


Последний раз редактировалось AlekseyG. Чт, ноя 06 2008, 14:36, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 06 2008, 14:33 
Начинающий
Начинающий

Зарегистрирован:
Чт, ноя 06 2008, 10:28
Сообщения: 11
Ясно. Спасибо еще раз )


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 06 2008, 15:14 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
AlekseyG. написал(а):
select ...
WHERE (dyn_where).

CONCATENATE
..
'likp~bolnr IN so_bolnr AND'
'likp~vkorg = p_vkorg AND'
..
INTO dyn_where
SEPARATED BY space.

можно проверить, если параметр пустой, то не добавлять.


Я бы не стал в таком простом случае городить динамические условия выбора :)


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

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


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

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


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

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