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

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


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

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


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

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