Текущее время: Пн, июл 21 2025, 14:54

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Чт, ноя 17 2011, 07:06 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Цитата:
Извините, но что такое "SO" и "динпро без интервалов"?


SO без интервалов это selection-option с no intervals.
Динпро это Dynpro.

Цитата:
Мне нужно чтобы в программе было поле в которое можно ввести несколько значений с использованием определённого средства поиска. После ввода этих значений нужно чтобы они поместились во внутренню переменную программы, чтобы потом можно было их обработать (по нажатию других кнопок). Сейчас читаю про DYNP_VALUES_READ, но пока не понял, сможет ли она считать множество значений из select-options, плюс вызывать её, как я понял, нужно будет не после заполнения поля (по какому-то событию), а перед обработкой внутренней переменной программы.


Понятно что Вам нужно.

Рекомендую делать примерно так -
1) Объявляете SO без matchcode.
2) Вызываете СП в событии at selection-screen on value-request с помощью F4IF_FIELD_VALUE_REQUEST(мульти)
3) После выбора из СП множества значений, обрабатываете их в at selection-screen on value-request. То есть нужно будет закинуть в Ваш SO. Там нужно не попасть на одни грабли при заполнении SO, не забывайте, что это по сути внутренняя табличка с хидером.
4) Нужно будет обновить иконку на экране(когда заполнен многократный выбор она зеленная) с помощью 'DYNP_VALUES_UPDATE'.

Таким образом, у Вас на экране будет поле с кнопкой многократный выбор и с СП(мульти), после выбора нескольких значений из СП, получите заполненную глобальную переменную типа range(SO), которую дальше будете использовать где нужно в программе.

P.S. Возможно кому то это покажется извратом, но вот я использовал когда то именно такой вариант, другого не нашел. Буду рад если найдется более простое и оптимальное решение.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Чт, ноя 17 2011, 08:42 
Менеджер
Менеджер

Зарегистрирован:
Пн, июн 30 2008, 17:16
Сообщения: 690
сделал как Вы сказали, но почему-то после выбора нескольких значений, например 1, 2, 3
при последющем просмотре списка значений я вместо 1 вижу 3 (т.е. такой список = 3, 2, 3).
при этом если я делаю loop at p1, то вижу там все значения от 1 до 3.
заполняю поле вот так:
сначала вызов F4IF_FIELD_VALUE_REQUEST
после этого
loop at return_tab
p1-low=return_tab-fieldvalue
p1-sign = 'I'.
p1-option = 'EQ'.
append p1.
endloop.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Чт, ноя 17 2011, 08:46 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Об этом я и говорил. После заполнения таблички, Вам нужно сделать read table <tab> index 1.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Чт, ноя 17 2011, 08:49 
Менеджер
Менеджер

Зарегистрирован:
Пн, июн 30 2008, 17:16
Сообщения: 690
да, спасибо. уже тоже нашёл.
скажите, как вызвать DYNP_VALUES_READ для моего случая. Мне же вроде значения никакие изменять в полях не нужно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Чт, ноя 17 2011, 08:53 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Osm написал(а):
да, спасибо. уже тоже нашёл.
скажите, как вызвать DYNP_VALUES_READ для моего случая. Мне же вроде значения никакие изменять в полях не нужно.

Зачем Вам DYNP_VALUES_READ с той схеме которую я предложил. Я говорил о DYNP_VALUES_UPDATE.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Чт, ноя 17 2011, 08:58 
Менеджер
Менеджер

Зарегистрирован:
Пн, июн 30 2008, 17:16
Сообщения: 690
да, да я и имел ввиду DYNP_VALUES_UPDATE. Как мне её вызвать если не нужно менять значения полей, а просто обновить вид кнопки?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Чт, ноя 17 2011, 09:10 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Osm написал(а):
да, да я и имел ввиду DYNP_VALUES_UPDATE. Как мне её вызвать если не нужно менять значения полей, а просто обновить вид кнопки?

Старый кусок кода
Code:
tables bkpf.
select-options vers for bkpf-belnr no intervals.

at selection-screen on value-request for vers-low.

  field-symbols: <qinfo>.
  data:  qinfo           like icont-quickinfo.
  data:  dynpfields      like dynpread occurs 0 with header line.
  data:  icon type iconname.

  assign ('(RSDBRUNT)TEXT-281') to <qinfo>.
  icon = 'ICON_DISPLAY_MORE'.
  refresh dynpfields.
  dynpfields-fieldname = '%_VERS_%_APP_%-VALU_PUSH'.
  append dynpfields.
  qinfo = <qinfo>.
  call function 'ICON_CREATE'
    exporting
      name   = icon
      info   = qinfo
    importing
      result = dynpfields-fieldvalue
    exceptions
      others = 0.
  modify dynpfields index 1 transporting fieldvalue.
  call function 'DYNP_VALUES_UPDATE'
    exporting
      dyname     = sy-cprog
      dynumb     = '1000'
    tables
      dynpfields = dynpfields
    exceptions
      others     = 0.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Чт, ноя 17 2011, 09:48 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
Besa написал:

Понятно что Вам нужно.

Рекомендую делать примерно так -
1) Объявляете SO без matchcode.
2) Вызываете СП в событии at selection-screen on value-request с помощью F4IF_FIELD_VALUE_REQUEST(мульти)
3) После выбора из СП множества значений, обрабатываете их в at selection-screen on value-request. То есть нужно будет закинуть в Ваш SO. Там нужно не попасть на одни грабли при заполнении SO, не забывайте, что это по сути внутренняя табличка с хидером.
4) Нужно будет обновить иконку на экране(когда заполнен многократный выбор она зеленная) с помощью 'DYNP_VALUES_UPDATE'.

Таким образом, у Вас на экране будет поле с кнопкой многократный выбор и с СП(мульти), после выбора нескольких значений из СП, получите заполненную глобальную переменную типа range(SO), которую дальше будете использовать где нужно в программе.

P.S. Возможно кому то это покажется извратом, но вот я использовал когда то именно такой вариант, другого не нашел. Буду рад если найдется более простое и оптимальное решение.



Мне кажется тут не все гладко будет, если пользователь попеременно будет использовать выбор значений непосредственно из списка по F4
и при помощи кнопки Многократный выбор.
К примеру ситуация:
1. Пользователь нажимает кнопку F4 и выбирает значения
1 2 3
2. Пользователь решает добавить значений используя кнопку Многократный выбор и там пользуется средством поиска выбрав 4 - средство поиска вернет не выбранное пользователем значение 4 а согласно:
Besa написал:
Об этом я и говорил. После заполнения таблички, Вам нужно сделать read table <tab> index 1.

первое значение их всех уже выбранных значений . Т.е. 1.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Чт, ноя 17 2011, 10:11 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
to bossjohn, не вижу в этом никаких проблем или я Вас неправильно понял, я просто не писал все в деталях. Там нужно еще проверки понаставить некоторые.
Например, то про что Вы говорите. Если пользователь будет добавлять ограничения через кнопку "многократный выбор", там нужна проверка чтобы СП вызывалось без мультиселекта. Далее закидывать это значение в конец таблички. СП вернет список значений, выбираете 4-ку, единственное значение, то что в SO уже есть на тот момент, не играет роли. 4-ке не нужно быть первой записью в табличке.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Чт, ноя 17 2011, 10:13 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
Besa написал:
to bossjohn, не вижу в этом никаких проблем или я Вас неправильно понял, я просто не писал все в деталях. Там нужно еще проверки понаставить некоторые.
Например, то про что Вы говорите. Если пользователь будет добавлять ограничения через кнопку "многократный выбор", там нужна проверка чтобы СП вызывалось без мультиселекта. Далее закидывать это значение в конец таблички. СП вернет список значений, выбираете 4-ку, единственное значение, то что в SO уже есть на тот момент, не играет роли. 4-ке не нужно быть первой записью в табличке.

Вот да. Правильно меня поняли, требуется более изощренный алгоритм, нежели просто считывание 1 записи.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Пт, ноя 18 2011, 05:37 
Менеджер
Менеджер

Зарегистрирован:
Пн, июн 30 2008, 17:16
Сообщения: 690
поковырялся, и как-то не понравилось мне это решение.
в итоге сделал определение select-options c matchcode object, а потом уже при нажатии другой кнопки прохожу loop-ом по p1.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Пт, ноя 18 2011, 06:38 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Osm написал(а):
поковырялся, и как-то не понравилось мне это решение.
в итоге сделал определение select-options c matchcode object, а потом уже при нажатии другой кнопки прохожу loop-ом по p1.

"хозяин - барин" конечно. :)
Не могу понять, что с мультиселектом в СП по Вашей схеме? И зачем при нажатие другой кнопки(какой?) проходить лупом по внутренней табличке?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Пт, ноя 18 2011, 06:42 
Менеджер
Менеджер

Зарегистрирован:
Пн, июн 30 2008, 17:16
Сообщения: 690
с мультиселектом в СП всё нормально. Работает корректно.
Проходить по внутренней табличке, мне нужно чтобы обработать выбранные пользователем объекты.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Пт, ноя 18 2011, 07:48 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Osm написал(а):
с мультиселектом в СП всё нормально. Работает корректно.
Проходить по внутренней табличке, мне нужно чтобы обработать выбранные пользователем объекты.

Сорри, не догоняю все равно :oops:

Хорошо, Вы используете select-options c matchcode object, то есть о событие at selection-screen on value-request for можно забыть. Дальше идет СП с мульти выбором, при таком раскладе p1 не заполняется несколькими значениями, а только одним, так?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поля выбора в Graphical Screen Painter
СообщениеДобавлено: Пт, ноя 18 2011, 07:56 
Менеджер
Менеджер

Зарегистрирован:
Пн, июн 30 2008, 17:16
Сообщения: 690
почему? всё заполняется.
всё что сделано для появления поля выбора с несколькими значениями это:
selection-screen begin of screen 0902 as subscreen nesting level 0.
select-options: p1 for <field> no intervals matchcode object <shlp>.
selection-screen end of screen 0902.
ну и вызов этого экрана с основного в pbo:
call subscreen <arear> including sy-repid <number>.

после этого уже в программе при нажатии какой-нибудь кнопки делаю:
loop at p1

endloop.

при этом в p1 несколько значений.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу Пред.  1, 2, 3  След.

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


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

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


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

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