不能通过 VRM_SET_VALUES select 值吗?

Cannot select values via VRM_SET_VALUES?

我使用函数 VRM_SET_VALUES 在屏幕上创建了列表框。它工作正常,但我无法从列表中选择字段。

我是不是忘记了什么?

DATA: BEGIN OF gs_screen1100,
        db_flight(40) TYPE c,
      END OF gs_screen1100.

MODULE init_listbox OUTPUT.
  DATA:
    ls_value  TYPE vrm_value,
    lt_values TYPE vrm_values.

  SELECT carrid, connid
    FROM sflight
    WHERE carrid = 'LH'
    INTO TABLE @DATA(lt_sflight).

  CLEAR lt_values.
  LOOP AT lt_sflight ASSIGNING FIELD-SYMBOL(<fs_sflight>).
    ls_value-key = <fs_sflight>-carrid.
    ls_value-text = <fs_sflight>-connid.
    APPEND ls_value TO lt_values.
  ENDLOOP.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = 'GS_SCREEN1100-DB_FLIGHT'
      values = lt_values.
ENDMODULE.

在列表框顶部使用全局名称。并读取全局值

我在 answer.sap.com 上得到了答案。 错误是由于您如何填写值列表,KEY 应该是唯一的

ls_value-key = <fs_sflight>-carrid 不是唯一的。它将在屏幕字段中存储“LH”,“LH”代表许多条目,显示第一个。下面的代码是解决方案之一。

LOOP AT lt_sflight ASSIGNING FIELD-SYMBOL(<fs_sflight>).
    ls_value-key = <fs_sflight>-carrid && <fs_sflight>-connid.
    ls_value-text = <fs_sflight>-carrid && ` ` && <fs_sflight>-connid.
    APPEND ls_value TO lt_values.
  ENDLOOP.