方式一,利用选择屏:
REPORT ZNEIL_TEST MESSAGE-ID HB.
*VRM:Value Request Manager
*VRM_VALUES 的结构
**-- Single Value in Value Set
* BEGIN OF VRM_VALUE,
* KEY(40) TYPE C,
* TEXT(80) TYPE C,
* END OF VRM_VALUE,
* VRM_VALUES TYPE VRM_VALUE OCCURS 0,
TYPE-POOLS: VRM.
DATA: LNAME TYPE VRM_ID,
ILIST TYPE VRM_VALUES, "ITAB
LILIST LIKE LINE OF ILIST.
DATA: PS_T(10) TYPE C.
PARAMETERS: PS_PARM(10) AS LISTBOX VISIBLE LENGTH 10,
PS(10) AS LISTBOX VISIBLE LENGTH 10.
AT SELECTION-SCREEN OUTPUT.
REFRESH ILIST.
CLEAR ILIST.
**********PS
LNAME = 'PS'.
LILIST-KEY = '1'.
LILIST-TEXT = 'LINE 1'.
APPEND LILIST TO ILIST.
LILIST-KEY = '2'.
LILIST-TEXT = 'LINE 2'.
APPEND LILIST TO ILIST.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = LNAME
VALUES = ILIST.
START-OF-SELECTION.
CASE PS.
WHEN '1'.
PS_T = 'LINE 1'.
WHEN '2'.
PS_T = 'LINE 2'.
ENDCASE.
WRITE PS_T.
方式二,在事务中使用
1.在screen上建立Output/Input控件,将属性设置成listbox
2.用下列代码操作
REPORT YALVTEST3 .
DATA : OK_CODE LIKE SY-UCOMM,
SAVE_OK TYPE SY-UCOMM.
*VRM类型定义接口
type-pools: vrm.
DATA: FLD1(20) TYPE C.
DATA: FNAME TYPE VRM_ID,
VVA TYPE VRM_VALUES,
LVVA LIKE LINE OF VVA.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module STATUS_0100 output.
SET PF-STATUS 'STATUS1'.
* SET TITLEBAR 'xxx'.
FNAME = 'FIELD'.
LVVA-KEY = '1'.
LVVA-TEXT = '广州'.
APPEND LVVA TO VVA.
CLEAR LVVA.
FNAME = 'FIELD'.
LVVA-KEY = '2'.
LVVA-TEXT = '上海'.
APPEND LVVA TO VVA.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = FNAME
values = VVA
* EXCEPTIONS
* ID_ILLEGAL_NAME = 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.
ENDIF.
endmodule. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module USER_COMMAND_0100 input.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
endmodule. " USER_COMMAND_0100 INPUT