Текущее время: Сб, июл 26 2025, 04:12

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


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

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


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

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