效果图
源代码
REPORT rsdemo_dropdown_listbox . DATA init. TABLES scarr. TABLES spfli. TABLES sflight. TABLES sbook. DATA save_ok LIKE sy-ucomm. DATA ok_code LIKE sy-ucomm. CALL SCREEN 100. *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE status_0100 OUTPUT. IF init is initial. SET PF-STATUS 'GRUND'. SET TITLEBAR '100'. * preset of listboxes spfli-carrid = 'LH'. sflight-carrid = 'LH'. sbook-carrid = 'LH'. ENDIF. ENDMODULE. " STATUS_0100 OUTPUT *&---------------------------------------------------------------------* *& Module SET_DATA_CARRID INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE set_data_carrid INPUT. TYPES: BEGIN OF type_carrid, carrid LIKE spfli-carrid, carrname LIKE scarr-carrname, END OF type_carrid. DATA itab_carrid TYPE STANDARD TABLE OF type_carrid WITH HEADER LINE. SELECT carrid carrname FROM scarr INTO CORRESPONDING FIELDS OF TABLE itab_carrid. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING retfield = 'CARRID' value_org = 'S' TABLES value_tab = itab_carrid EXCEPTIONS parameter_error = 1 no_values_found = 2 OTHERS = 3. 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. " SET_DATA_CARRID INPUT *&---------------------------------------------------------------------* *& Module FILL_CARRID OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE fill_carrid OUTPUT. * Do not use this process (but it works) TYPE-POOLS vrm. DATA values TYPE vrm_values WITH HEADER LINE. IF init is initial. SELECT * FROM scarr. values-text = scarr-carrname. values-key = scarr-carrid. APPEND values. ENDSELECT. CALL FUNCTION 'VRM_SET_VALUES' EXPORTING id = 'SBOOK-CARRID' values = values[] 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. ENDIF. scarr-carrid = 'LH'. init = 'X'. ENDMODULE. " FILL_CARRID OUTPUT *&---------------------------------------------------------------------* *& Module EVENT_FROM_LISTBOX INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE event_from_listbox INPUT. save_ok = ok_code. CLEAR ok_code. CASE save_ok. WHEN 'LISTBOX_2'. MESSAGE i300(eu) WITH save_ok. WHEN 'LISTBOX_3'. MESSAGE i300(eu) WITH save_ok. ENDCASE. ENDMODULE. " EVENT_FROM_LISTBOX INPUT *&---------------------------------------------------------------------* *& Module EXIT INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE exit INPUT. LEAVE PROGRAM. ENDMODULE. " EXIT INPUT
屏幕逻辑流