Текущее время: Пт, июл 25 2025, 05:40

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: как правильно проверить выбрали параметр или нет?
СообщениеДобавлено: Пт, фев 22 2008, 17:32 
Начинающий
Начинающий

Зарегистрирован:
Вт, дек 04 2007, 19:51
Сообщения: 10
Пытаюсь получить кол-во записей при выборе параметра, а если его не выбрали хочу получить кол-во всех записей:
PARAMETERS: pgp TYPE mara-spart.
DATA: dgp TYPE range OF mara-spart,n type i.
IF pgp IS INITIAL. SELECT count(*) INTO n FROM mara WHERE spart IN dgp.
ELSE. SELECT count(*) INTO n FROM mara WHERE spart = pgp. ENDIF.
WRITE: n.
Все записи мне показывает вроде бы правильно, а иначе (при выборе параметра) дает 8.718 (думаю это код ошибки). Т.Е. IS INITIAL - мне кажется я неправильно использую для определения есть ли у переменной значение. (ноль тоже не подходит) .... ?? )


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, фев 22 2008, 17:56 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Я может быть не совсем уловил...
Цитата:
8.718 (думаю это код ошибки).
А почему вы думаете, что это код ошибки, а не кол-во записей?



Цитата:
DATA: dgp TYPE range OF mara-spart,n type i.
IF pgp IS INITIAL. SELECT count(*) INTO n FROM mara WHERE spart IN dgp.


а чем вы заполняете dgp? если ни чем, тоесть он пуста, то отбираются все записи.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


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

Зарегистрирован:
Вт, дек 04 2007, 19:51
Сообщения: 10
>А почему вы думаете, что это код ошибки, а не кол-во записей?
потому, что тип int у пересенной да и count() я выбираю откуда там запитая мне не понятно и показывает у всех 8.718 (при разных значениях параметра)
>а чем вы заполняете dgp? если ни чем, тоесть он пуста, то >отбираются все записи.
не пуста точно )) я смотрела. да и работает не првильно: если перевернуть условие, то я получу наоборот там количество при выборе параметра (уже правильное), а если не выберу опять 8.718


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

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


Последний раз редактировалось sibrin Пт, фев 22 2008, 23:39, всего редактировалось 2 раз(а).

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как правильно проверить выбрали параметр или нет?
СообщениеДобавлено: Пт, фев 22 2008, 21:18 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Даринка написал(а):
дает 8.718 (думаю это код ошибки).


Какой такой код ошибки? :shock: Если написано WRITE N, то и выдается значение переменной N. Ошибки выдавались бы собщениями или в дамп валились. Вы уверены, что точка у вас не thousand separator? :? А вообще можно все в дебагере проверить и сравнить с SE16.

Кстати, dgp там совершенно лишний IMHO...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: как правильно проверить выбрали параметр или нет?
СообщениеДобавлено: Вс, фев 24 2008, 13:54 
Почетный гуру
Почетный гуру
Аватара пользователя

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

1.В переменной n ВСЕГДА будет количество записей.
2.Код ошибки при SELECT указывается в переменной SY-SUBRC. Но при использовании COUNT в запросе SY-SUBRC всегда будет равен 0, т.к. отсутствие записей при подсчете количества записей не является ошибкой.
3.Вот более подходящий код:
Code:
TABLES: mara.

DATA: n type i.

SELECT-OPTIONS: so_mtart FOR mara-mtart NO INTERVALS NO-EXTENSION.

START-OF-SELECTION.
  SELECT count( * )
  FROM MARA
  WHERE mtart IN so_mtart.

  IF n NE 0.
    WRITE: / 'Количество записей:', n.
  ELSE.
    WRITE: / 'Записи не найдены'.
  ENDIF.

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


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

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


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

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


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

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