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

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


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

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


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

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