Как установить значения в списке?

Я определил поле списка на экране выбора следующим образом:

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE ALTITLE1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (30) ALCONT4 FOR FIELD L1.
PARAMETERS: L1 AS LISTBOX VISIBLE LENGTH 20 MODIF ID AOD.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.

Теперь мне нужно предложить возможные значения для этого списка, как я могу это сделать?


person Siva    schedule 13.01.2012    source источник


Ответы (1)


Во время PBO вашего экрана (для экранов выбора код PBO определяется внутри блока событий AT SELECTION-SCREEN OUTPUT), необходимо вызвать функциональный модуль VRM_SET_VALUES, передав имя поля и список значений.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE altitle1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (30) alcont4 FOR FIELD l1.
PARAMETERS: l1 AS LISTBOX VISIBLE LENGTH 20 MODIF ID aod.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b2.

INITIALIZATION.
  alcont4 = 'Choose the country'(001).

AT SELECTION-SCREEN OUTPUT.
  DATA: lt_value TYPE vrm_values,
        ls_value TYPE vrm_value.
  ls_value-key = 'DE'.
  ls_value-text = 'Germany'.
  APPEND ls_value TO lt_value.
  ls_value-key = 'FR'.
  ls_value-text = 'France'.
  APPEND ls_value TO lt_value.
  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id              = 'L1'
      values          = lt_value
    EXCEPTIONS
      id_illegal_name = 1
      OTHERS          = 2.

Исполнение:

Список abap dynpro с 2 странами

Для информации можно добиться того же результата из таблицы базы данных стран T005T, перенеся записи в промежуточную внутреннюю таблицу:

  DATA: lt_t005t TYPE TABLE OF t005t,
        ls_t005t TYPE t005t.
  SELECT * FROM t005t
      INTO TABLE lt_t005t
      WHERE spras = 'E' " English names of countries
        AND land1 IN ('FR','DE').
  LOOP AT lt_t005t INTO ls_t005t.
    ls_value-key = ls_t005t-land1.
    ls_value-text = ls_t005t-landx50.
    APPEND ls_value TO lt_value.
  ENDLOOP.

Дополнительную информацию можно найти в библиотеке SAP (пояснения действительны для всех типов экранов, примеры приведены только для классических экранов, но их можно легко адаптировать к экранам выбора): http://help.sap.com/saphelp_470/helpdata/en/9f/dbabe435c111d1829f0000e829fbfe/frameset.htm >

person mydoghasworms    schedule 13.01.2012
comment
Привет, но есть ли только способ вызвать этот FM или это обычная программа для отчетов. как мне этого добиться???. Кроме этого FM есть любой другой способ... Спасибо - person Siva; 13.01.2012
comment
Вы по-прежнему можете вызывать этот функциональный модуль, используя событие AT SELECTION-SCREEN ON VALUE REQUEST FOR L1. - person Esti; 13.01.2012
comment
@Siva, извини, я не знал, что это программа для отчетов. +1 за комментарий Эсти. - person mydoghasworms; 13.01.2012