不能通过 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.
我使用函数 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.