Текущее время: Сб, июл 19 2025, 00:55

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


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

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


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

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