Как установить значение по умолчанию и прочитать выбранное значение из выпадающего списка

Итак, я добавил поле с типом раскрывающегося списка как Listbox через Screen Painter (SE51).

Я привязал данные к раскрывающемуся списку с помощью PBO и функции VRM_SET_VALUES.

введите описание изображения здесь

У меня с этим 2 проблемы;

  1. Как установить выбранное значение для связанных данных?
  2. Как получить значение, выбранное пользователем.

Данные привязываются к раскрывающемуся списку с помощью следующего кода;

LOOP AT it_zzdelay_text INTO wa_zzdelay_text.
  wa_listbox-key = wa_zzdelay_text-zz_delay_reason.
  wa_listbox-text = wa_zzdelay_text-zz_delay_reason_text.
  APPEND wa_listbox TO it_listbox.
ENDLOOP.

 CALL FUNCTION 'VRM_SET_VALUES'
  EXPORTING
    id     = 'ZZ_DELAY_REASON'
    values = it_listbox.

zz_delay_reason - уникальный ключ, а zz_delay_reason_text - сопроводительный текст.


person Isuru    schedule 09.06.2017    source источник
comment
Просто используйте переменную, используемую для определения поля экрана ...? Без кода мы не сможем дать больше советов ...   -  person vwegert    schedule 09.06.2017
comment
@vwegert есть мысли? Мне пришлось прибегнуть к созданию справки по поиску, чтобы обойти это. Хотите исправить это, правильно реализовав выпадающий контроллер   -  person Isuru    schedule 15.06.2017
comment
Основная мысль прямо сейчас: предоставить ПОЛНЫЙ пример, а не просто несколько случайных фрагментов кода. У меня нет ни времени, ни энергии для сложных предположений.   -  person vwegert    schedule 15.06.2017


Ответы (2)


Обновлять:

По вашему коду поле на экране должно быть: ZZ_DELAY_REASON И еще вам нужен глобальный вариант с именем.

Затем вы можете установить / получить значение ключа в PBO / PAI: Установить значение: ZZ_DELAY_REASON = 'KEY'.

Получить выбранное значение (ключ): lv_key = ZZ_DELAY_REASON

======================================================

Когда список выбора установлен с помощью VRM_SET_VALUES, вы можете заметить, что это пара «ключ-значение». Поле «КЛЮЧ» заполняется значением поля экрана, когда пользователь выбирает раскрывающийся список.

Я мог бы предоставить подробную информацию, если вы приложите свой код к этому вопросу.

person terence4444    schedule 12.06.2017
comment
привет @ terence4444, я добавил код, используемый для привязки данных к выпадающему контроллеру. - person Isuru; 12.06.2017

Во-первых, для создания функционального раскрывающегося списка необходимо выполнить несколько предварительных условий:

  1. Таблица элементов должна иметь тип vrm_values.
  2. Значения, отображаемые в списке, должны быть в поле text строки позиции. Ключ должен быть в поле key.
  3. ПАРАМЕТР должен иметь тип LISTBOX.

После того, как все это будет сделано, ответы на ваши вопросы будут такими:

  1. Связь КЛЮЧ-ЗНАЧЕНИЕ осуществляется через тип vrm_values. Каждая строка этого типа представляет собой раскрывающийся элемент, где text - видимый текст, а key - ключ.
  2. Параметр автоматически получает значение ключа после того, как пользователь выберет элемент в списке.

Вот пример кода:

REPORT drop-down.

TYPE-POOLS: vrm.

PARAMETERS p_werks LIKE t001w-werks VISIBLE LENGTH 20 AS LISTBOX OBLIGATORY.

DATA: t_werks TYPE vrm_values,
w_line LIKE LINE OF t_werks.

INITIALIZATION.

SELECT werks name1
  FROM t001w INTO (w_line-key, w_line-text).
APPEND w_line TO t_werks.
ENDSELECT.

AT SELECTION-SCREEN OUTPUT.

CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'P_WERKS'
values = t_werks.

END-OF-SELECTION.

WRITE: / 'Selected factory:', p_werks.
person Suncatcher    schedule 15.06.2017