Текущее время: Пт, июл 18 2025, 19:24

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Запрет ручного ввода значений в поле
СообщениеДобавлено: Ср, фев 26 2014, 11:49 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, янв 29 2010, 06:15
Сообщения: 58
Добрый день! Вроде бы элементарная ситуация, а вот не получается.
Как в диалоговом экране сделать поле , в котором значения могут выбираться ТОЛЬКО из справочника? (причем у меня там возможность множественного выбора, значения записываются в поле из справочника через запятую, но это здесь не так важно). И все хорошо, только надо его сделать недоступным для ручного ввода. Подскажите, как?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет ручного ввода значений в поле
СообщениеДобавлено: Ср, фев 26 2014, 14:04 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
вариант 1: Делаете поле недоступным для ввода. Рядом ставите свою кнопку, по нажатию на которую показываете справочник, при выходе из него меняете программно значение поля на экране
вариант 2: Вроде бы можно было сделать поле недоступным для ввода, навесить ср-во поиска на него, а в обработчике Process on value request вручную менять значение поля

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрет ручного ввода значений в поле
СообщениеДобавлено: Чт, фев 27 2014, 05:10 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, янв 29 2010, 06:15
Сообщения: 58
Спасибо, буду пробовать вариант 1, с вариантом 2 - скорее всего не получится, ведь когда поле недоступно для ввода, из справочника, который вызывается по F4, ничего нельзя выбрать, кнопка выбора неактивна


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет ручного ввода значений в поле
СообщениеДобавлено: Чт, фев 27 2014, 07:02 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
Вариант 3: на поле структуры, которое лежит под динпро, определить в словаре данных внешний ключ с проверкой...
В результате при вводе значения, отсутствующего в справочнике (проверочной таблице), получим сообщение об ошибке 058(00) (стандарт), или любое другое, определенное во внешнем ключе.

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет ручного ввода значений в поле
СообщениеДобавлено: Чт, фев 27 2014, 07:18 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, янв 29 2010, 06:15
Сообщения: 58
Вариант 3 тоже вряд ли получится, т.к. в поле осуществлен множественный выбор значений из справочника : например, выбрали из справочника значения 1,2,5 и 10 - в поле занесли строку '1; 2; 5; 10', а такого значения в справочнике нет...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет ручного ввода значений в поле
СообщениеДобавлено: Чт, фев 27 2014, 07:28 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
julia.mat написал(а):
Вариант 3 тоже вряд ли получится, т.к. в поле осуществлен множественный выбор значений из справочника : например, выбрали из справочника значения 1,2,5 и 10 - в поле занесли строку '1; 2; 5; 10', а такого значения в справочнике нет...

Множественный выбор? Для этого есть select-options (см. SELECTION-SCREEN ..SUBSCREEN)

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрет ручного ввода значений в поле
СообщениеДобавлено: Чт, фев 27 2014, 08:04 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, янв 29 2010, 06:15
Сообщения: 58
Это поле не на селекционном экране, а на одной из вкладок карточки договора (тр cv01n,cv02n,cv03n), которая добавлена в стандартную карточку через расширение.
честно говоря, я не поняла, где в экранной логике можно использовать select-options?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет ручного ввода значений в поле
СообщениеДобавлено: Чт, фев 27 2014, 08:24 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Вариант 2 вполне работоспособен. вот пример для сел.экрана (для диалогового экрана все практически тоже самое)

Code:
REPORT z_test_pov.

PARAMETERS
  : plifnr TYPE lfa1-lifnr
  .

DATA
  : gt_shreturn   TYPE STANDARD TABLE OF ddshretval
  , gt_dynfields  type STANDARD TABLE OF  DYNPREAD

  , gdynfields    like LINE OF gt_dynfields
  .
FIELD-SYMBOLS
  : <gshreturn>  LIKE LINE OF gt_shreturn
  .

AT SELECTION-SCREEN OUTPUT.

  LOOP AT SCREEN.
    IF screen-name = 'PLIFNR'.
      screen-input = '0'.
    ENDIF.
    MODIFY SCREEN.
  ENDLOOP.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR plifnr.

  CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
    EXPORTING
      tabname                   = 'LFA1'
      fieldname                 = 'LIFNR'
   TABLES
     return_tab                = gt_shreturn
   EXCEPTIONS
     field_not_found           = 1
     no_help_for_field         = 2
     inconsistent_help         = 3
     no_values_found           = 4
     OTHERS                    = 5
            .
  IF sy-subrc <> 0.
* Implement suitable error handling here

  ELSE.
    READ TABLE gt_shreturn ASSIGNING <gshreturn>
      WITH KEY fieldname = 'LIFNR'.
    if sy-subrc = 0.
      gdynfields-fieldname = 'PLIFNR'.
      gdynfields-fieldvalue = <gshreturn>-fieldval.
      append gdynfields to gt_dynfields.

      CALL FUNCTION 'DYNP_VALUES_UPDATE'
        EXPORTING
          dyname                     = sy-repid
          dynumb                     = sy-dynnr
        TABLES
          dynpfields                 = gt_dynfields
       EXCEPTIONS
         INVALID_ABAPWORKAREA       = 1
         INVALID_DYNPROFIELD        = 2
         INVALID_DYNPRONAME         = 3
         INVALID_DYNPRONUMMER       = 4
         INVALID_REQUEST            = 5
         NO_FIELDDESCRIPTION        = 6
         UNDEFIND_ERROR             = 7
         OTHERS                     = 8
                .
      IF sy-subrc <> 0.
* Implement suitable error handling here
      ENDIF.

    endif.
  ENDIF.


START-OF-SELECTION.

  write:/ plifnr.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


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

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Цитата:
честно говоря, я не поняла, где в экранной логике можно использовать select-options?


При желании, можно вставлять селекционный экран как подэкран в диалоговый.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрет ручного ввода значений в поле
СообщениеДобавлено: Чт, фев 27 2014, 09:00 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, янв 29 2010, 06:15
Сообщения: 58
Cпасибо большое всем! Вариант 2 помог, не думала, что все так просто :-)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрет ручного ввода значений в поле
СообщениеДобавлено: Чт, фев 27 2014, 12:52 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
julia.mat написал(а):
Это поле не на селекционном экране, а на одной из вкладок карточки договора (тр cv01n,cv02n,cv03n), которая добавлена в стандартную карточку через расширение.
честно говоря, я не поняла, где в экранной логике можно использовать select-options?

Вот пример

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


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

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


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

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


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

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