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

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


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

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


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

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