Текущее время: Сб, авг 02 2025, 02:04

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Динамическая установка экранного поля, как комбобокса
СообщениеДобавлено: Чт, фев 12 2009, 17:25 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Всем добрый день.
Делаю свою версию ФМ POPUP_GET_VALUES .
Хочу, чтобы если у поля есть постоянные значения домена, то стиль поля менялся на комбобокс ("Listbox with keys").

Проблемы.
1.) Не получается вывести с ключами. Т.е., работает только как обычный "Listbox" .
2.) Не присваивается значение соответствующему полю ZSVALD-VALUE.

Вопрос: где грабли?

Код.
LZDIALOG_BOXESF60:
Code:
FORM p100_show.
....
  LOOP AT SCREEN.
    CASE screen-name.
      WHEN 'ZSVALD-VALUE'.
...
        PERFORM fill_combo .
      WHEN 'ZSVALD-KEYTEXT'.
...
    ENDCASE.
    MODIFY SCREEN.
    IF screen-values_in_combo = '1' .
      PERFORM fill_combo2 .
    ENDIF.
  ENDLOOP.


Перформы:
Code:
DATA: BEGIN OF ltd_domvalues OCCURS 0
     , domvalue TYPE domvalue_l
     , valtxt   TYPE val_text
    , END OF ltd_domvalues
    .

FORM fill_combo .
  DATA: lp_domvalue TYPE domvalue_l
     ,  lp_valtxt   TYPE val_text
     .

  REFRESH ltd_domvalues .
  lp_domvalue = svali-value .
  IF NOT svali-domname IS INITIAL .

    SELECT domvalue_l INTO ltd_domvalues-domvalue
      FROM dd07l
     WHERE domname EQ svali-domname .

      CALL FUNCTION 'GET_TEXT_DOMVALUE'
        EXPORTING
          domname   = svali-domname
          domvalue  = ltd_domvalues-domvalue
          langu     = sy-langu
        IMPORTING
          txt       = ltd_domvalues-valtxt
        EXCEPTIONS
          not_found = 1
          OTHERS    = 2.
      IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ELSE.
        APPEND ltd_domvalues .
      ENDIF.
    ENDSELECT .
  ENDIF.

  CHECK NOT ltd_domvalues[] IS INITIAL .
  screen-values_in_combo = '1' .
  screen-length = 25 .
ENDFORM.                    " fill_combo
*&---------------------------------------------------------------------*
*&      Form  fill_combo2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM fill_combo2 .
  DATA: l_name      TYPE  vrm_id,
        lt_list      TYPE vrm_values,
        lwa_value    LIKE LINE OF lt_list .

  LOOP AT ltd_domvalues .
    lwa_value-key = ltd_domvalues-domvalue .
    lwa_value-text = ltd_domvalues-valtxt .
    APPEND lwa_value TO lt_list .
  ENDLOOP .

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = 'ZSVALD-VALUE'
      values = lt_list.
ENDFORM.                    " fill_combo2

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамическая установка экранного поля, как комбобокса
СообщениеДобавлено: Чт, фев 12 2009, 18:36 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Уже разобрался сам.

На всякий случай - спасибо всем, кто собирался помочь.

По поводу стиля комбобокса стормозил:
Code:
    CONCATENATE lwa_value-key ':' ltd_domvalues-valtxt INTO lwa_value-text
      SEPARATED BY space .

В fill_combo2. И все, собсно.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


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

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


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

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


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

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