Всем добрый день.
Делаю свою версию ФМ
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