Текущее время: Вс, июл 20 2025, 21:49

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: SELECT-OPTIONS - проверка ввода
СообщениеДобавлено: Ср, фев 07 2007, 20:41 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 06 2005, 17:52
Сообщения: 559
Если я правильно понимаю, система не проверяет введенные пользователем в SELECT-OPTIONS значения. Ну или я неправильно объявляю.

Например (ФП):

DATA wa_fictr LIKE fmci-fipex.
SELECT-OPTIONS fp_sel FOR wa_fictr.

Вводи что хочешь.
Вопрос: как наимение затратно проверить правильность ввода. Неужели в цикле крутить pfm_sel и для каждого low & high делать выборку из fmci?
Подозреваю, что есть специальные функциональные модули?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 08 2007, 01:10 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
Точно - не проверяются, а надоли. обычно select-options
для того чтоб запрос с ним сделать - если набил не правильно - соотв. и не получиш его из запроса.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 08 2007, 09:47 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 06 2005, 17:52
Сообщения: 559
Понимаю, но в данном случае нужно проверить правильность.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 08 2007, 09:50 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Например так:
AT SELECTION-SCREEN ON fp_sel.
IF sy-ucomm = 'ONLI' OR sy-ucomm IS INITIAL.
SELECT SINGLE fipex FROM fmci INTO wa_fictr
WHERE fipex IN fp_sel.
IF NOT sy-subrc IS INITIAL.
MESSAGE E000(xxx). " incorrect value
ENDIF.
ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 08 2007, 10:06 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 06 2005, 17:52
Сообщения: 559
Имхо, такая проверка не поможет, мне нужно проверить ВСЕ введенные значения. Т.е. если пользователь задал три финпозиции, одна из которых неправильная - система должна среагировать. В этом же селекте все будет ОК. Я прав?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 08 2007, 10:23 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Может тогда есть смысл определить
SELECT-OPTIONS с NO INTERVALS, чтобы проверять одиночные значения.

В SELECT-OPTIONS может быть задан интервал, например от 0 до 100000, какой смысл тогда перебирать все возможные значения на проверку.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 08 2007, 10:32 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 06 2005, 17:52
Сообщения: 559
Нужно проверять не все, а все введенные, т.е. high & low. В описанном тобой случае нужно будет проверить только 0 и 100000. :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 08 2007, 10:33 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
ИМХО, это противоречит принципу работы SELECT-OPTIONS


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 08 2007, 10:50 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, июн 05 2006, 13:33
Сообщения: 805
Пол: Мужской
Можно просто получить список правильных значений:

DATA wa_fictr LIKE fmci-fipex.
DATA it_ficr LIKE TABLE OF wa_fictr

SELECT-OPTIONS fp_sel FOR wa_fictr.
SELECT fipex INTO it_ficr-fipex
WHERE fipex IN fp_sel.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 08 2007, 11:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Sergeant написал(а):
Т.е. если пользователь задал три финпозиции, одна из которых неправильная - система должна среагировать.

В принципе конечно можно извратиться и сделать так
Code:
...
RANGES: fp_sel_one for wa_fictr.
...
AT SELECTION-SCREEN.
...
LOOP AT fp_sel.
  REFRESH fp_sel_one.
  APPEND fp_sel TO fp_sel_one.
 
  SELECT fipex INTO it_ficr-fipex
  WHERE fipex IN fp_sel_one.

  IF sy-subrc <> 0.
    ....
  ENDIF.
ENDLOOP.

но зачем это нужно? :?

vga +1

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


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

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


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

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


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

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