Текущее время: Пн, июл 28 2025, 18:32

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Простой вопрос по select-options
СообщениеДобавлено: Ср, янв 10 2007, 18:38 
Специалист
Специалист

Зарегистрирован:
Пт, июл 28 2006, 08:36
Сообщения: 183
Есть запись вида

Code:
select-options:
  p_sel for v_stub-sel default '001' to '004' no-extension.


Пользователь может вводить интервал не только как правильный
диапазон, где p_sel-low <= p_sel-high, но и как неправильный,
p_sel-low > p_sel-high. В последнем случае автоматически выдается ошибка - "Нижняя граница превышает верхнюю". Мне надо, чтобы
система не считала такую ситуацию ошибочной. Можно ли отключить такую проверку?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Простой вопрос по select-options
СообщениеДобавлено: Ср, янв 10 2007, 19:03 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, янв 24 2005, 16:22
Сообщения: 749
Пол: Мужской
perishkin написал(а):
Есть запись вида

Code:
select-options:
  p_sel for v_stub-sel default '001' to '004' no-extension.


Пользователь может вводить интервал не только как правильный
диапазон, где p_sel-low <= p_sel-high, но и как неправильный,
p_sel-low > p_sel-high. В последнем случае автоматически выдается ошибка - "Нижняя граница превышает верхнюю". Мне надо, чтобы
система не считала такую ситуацию ошибочной. Можно ли отключить такую проверку?


может быть, в данном случае (no-extension) будет проще всего использовать два параметра, расположенные на одной строке

_________________
Счастье есть!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, янв 11 2007, 09:18 
Специалист
Специалист

Зарегистрирован:
Пт, июл 28 2006, 08:36
Сообщения: 183
Интерфейсная часть не моя и содержит много select-options. Хотелось бы просто оставить все без существующих изменений, разрешив только указывать нижнюю границу больше верхней не разбивая интервальный элемент на два простых... Может все-таки есть другое решение?


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
perishkin написал(а):
Хотелось бы просто оставить все без существующих изменений, разрешив только указывать нижнюю границу больше верхней
А чего вы хотите этим добиться?

_________________
С уважением, Сергей Королев


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

Зарегистрирован:
Пт, июл 28 2006, 08:36
Сообщения: 183
На экране находятся пары диапазонов:

Период ___ по ___
Год ____ по ___

Таких пар много на экране. Разработчика сейчас нет на месте, а переделать код надо, чтобы отрабатывали условия вида

Нужен цикл с Год-low/Период-low по Год-high/Период-high

Как пример

Нужен цикл с 2006/05 по 2007/01

Понятно, что отдельными элементами я этого добьюсь, а вот select-options с интервалами?


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

Зарегистрирован:
Пн, янв 24 2005, 16:22
Сообщения: 749
Пол: Мужской
perishkin написал(а):
На экране находятся пары диапазонов:

Период ___ по ___
Год ____ по ___

Таких пар много на экране. Разработчика сейчас нет на месте, а переделать код надо, чтобы отрабатывали условия вида

Нужен цикл с Год-low/Период-low по Год-high/Период-high

Как пример

Нужен цикл с 2006/05 по 2007/01

Понятно, что отдельными элементами я этого добьюсь, а вот select-options с интервалами?


извините, но если установите период 05 .. 01 и год 2006 .. 2007, то в лучшем случае он обработает интервалы янв 2006 - май 2006 и янв 2007 - май 2007, так как разработчик, скорее всего, использовал in. В противном случае ему бы пришлось выполнять очень громоздкую проверку:
((so_per-low <= period) and (so_year-low = year) and ((so_year-low < so_year-high) or (so_per-high >= period))) or ((so_year-low < year) and (so_year-high > year)) or ((so_per-high >= period) and (so_year-high = year) and ((so_year-low < so_year-high) or (so_per-low <= period)))
вместо
((period in so_per) and (year in so_year))

так что без разработчика не обойтись

поэтому не стоит пытаться обойти стандартную функциональность; лучше попробуйте либо заменить пары значений, либо (лучше) воспользоваться select-options для дат, а уже из них извлекать период и год

_________________
Счастье есть!


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

Зарегистрирован:
Пт, июл 28 2006, 08:36
Сообщения: 183
Все, разбил все интервальные select-options на parameters

процедуру get_perio_cnt приводить не стал, она возвращает
максимальное количество периодов в году по варианту периода (K4-месяц, D1 - день и т.п)

Проверка совсем негромоздкая...

Code:
  data:
    v_perio_cnt type i.

  perform get_perio_cnt
  using
    p_periv
  changing
    v_perio_cnt.

  data:
    v_gjahr type THead-gjahr,
    v_perio type THead-gjahr.

  v_gjahr = p_gjahr-low.
  v_perio = p_perio1.
 
  while v_gjahr <= p_gjahr-high.

    if v_gjahr <> p_gjahr-low.
      v_perio = 1.
    endif. 
     
    while
      ( v_perio <= p_perio2 and v_gjahr = p_gjahr-high ) or
      ( v_perio <= v_perio_cnt and v_gjahr <> p_gjahr-high ).

      write: /
        v_gjahr,
        v_perio.

      v_perio = v_perio + 1.     
    endwhile.

    v_gjahr = v_gjahr + 1.
  endwhile.


Короче все, вопрос отпал


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

Зарегистрирован:
Сб, июн 23 2007, 14:56
Сообщения: 203
А как указать так, чтобы был не диапазон значений, а 2 значения?

Чтобы примерно так было...
Цитата:
select-options:
p_sel for v_stub-sel default '001' OR '004' no-extension.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 22 2007, 13:24 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
nymbos написал(а):
А как указать так, чтобы был не диапазон значений, а 2 значения?

Чтобы примерно так было...
Цитата:
select-options:
p_sel for v_stub-sel default '001' OR '004' no-extension.

Заполнять "вручную" в событии отчёта Initialization.

Кстати, небольшое дополнение - при select-options мы получаем вн.таблицу с заголовком. Так вот опция default применяется именно к заголовку, не меняя содержимого таблицы.

_________________
"После" - не значит "вследствие"


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
sy-uname написал(а):
Так вот опция default применяется именно к заголовку, не меняя содержимого таблицы.


Вот текст:
Code:
REPORT  z_test                        .

TABLES: bkpf.

SELECT-OPTIONS gjahr FOR bkpf-gjahr DEFAULT '2007'.

AT SELECTION-SCREEN.

  DESCRIBE TABLE gjahr.

START-OF-SELECTION.

Поставьте break-point на операторе DESCRIBE и запустите программу, не меняя SELECT-OPTIONS. Проверьте содержимое GJAHR. И как? Содержимое таблицы заполнено?

_________________
С уважением, Сергей Королев


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

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


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

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


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

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