‎2007 Jan 18 9:30 AM
HI all,
I need a drop down for a selection screen.
say for eg: Field is MARA-MTART (Material Type). The selection is optional and the dropdown should be using check table: T134
How to get a dropdown? I think a function module is used , but I dont remember the name.
Kindly reply.
Thanks in advance.
Points will be rewarded
‎2007 Jan 18 9:45 AM
Hi,
chk the below code...
TYPE-POOLS: vrm.
PARAMETER: pr_spart TYPE spart AS LISTBOX VISIBLE LENGTH 7.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR pr_spart.
INITIALIZATION.
*----Code for Drop down list....
DATA: lit_spart_list TYPE vrm_values, "Table for list of Divisions
lwa_spart_list TYPE vrm_value,
lw_name TYPE vrm_id. "Name of parameter with list-box.
*---Assign selected values to table that would be passed to FM VRM_SET_VALUES
CLEAR : lwa_spart_list,
lw_name.
*---Pass required values for list-box display.
lwa_spart_list-key = 'H'.
lwa_spart_list-text = 'HL'.
APPEND lwa_spart_list TO lit_spart_list.
lwa_spart_list-key = 'S'.
lwa_spart_list-text = 'SL'.
APPEND lwa_spart_list TO lit_spart_list.
lwa_spart_list-key = 'P'.
lwa_spart_list-text = 'PP'.
APPEND lwa_spart_list TO lit_spart_list.
lwa_spart_list-key = 'F'.
lwa_spart_list-text = 'FR'.
APPEND lwa_spart_list TO lit_spart_list.
*Name of parameter to which list is to be assigned
lw_name = 'PR_SPART'.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = lw_name
values = lit_spart_list
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.
Reagrds,
nagaraj
‎2007 Jan 18 9:32 AM
Hi ,
The FM is VRM_SET_VALUES.
here is a sample program which does the same
type-pools : VRM.
tables : T134.
Data : it_1 type VRM_VALUES ,
v_index type i ,
wa like line of it_1.
parameter : s_MTART LIKE T134-MTART AS LISTBOX VISIBLE
LENGTH 6 OBLIGATORY.
INITIALIZATION.
clear v_index.
select MTART INTO T134-MTART from T134.
wa-KEY = T134-MTART.
append wa to it_1.
ENdselect.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'S_MTART'
VALUES = it_1
* 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.Please optamize the select statement and a better option would be selecting data from T134T , as you get the description also , populate the description in TEXT field if the table it_1
Regards
Arun
Assign points if reply is useful
Message was edited by:
Arun R
‎2007 Jan 18 10:10 AM
Very excellent answer.
But can I do it for SELECT-OPTIONS and not for PARAMETER.
Kindly do reply as soon as possible
Thanks once again
‎2007 Jan 18 9:35 AM
Hi
Use FM 'VRM_SET_VALUES'
Ex:
TYPE-POOLS: vrm.
data:
ws_cnt type i,
ws_list_values type vrm_values,
ws_list_line like line of ws_list_values.
data: begin of ws_tab,
<field> like <table-field>,
end of ws_tsact.
data: i_tab like ws_tab occurs 0 with header line.
data: ws_text like <table-field>.
selection-screen: begin of line.
selection-screen: comment (31) <text> for field par_comm.
PARAMETERS: <field_name> AS LISTBOX VISIBLE LENGTH 20.
selection-screen: end of line.
append 'create' 'change' 'delete' to i_tab.
LOOP AT i_tab INTO ws_tab.
ws_cnt = ws_cnt + 1.
ws_list_line-key = ws_cnt.
ws_list_line-text = ws_tab-field.
APPEND ws_list_line TO ws_list_values.
ENDLOOP.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'PAR_COMM'
values = ws_list_values.
ENDIF.
PLZ REWARD POINTS IF HELPFUL
‎2007 Jan 18 9:39 AM
HI
Please go thru this report
RSDEMO_DROPDOWN_LISTBOX
thanks
Shiva
‎2007 Jan 18 9:45 AM
Hi,
chk the below code...
TYPE-POOLS: vrm.
PARAMETER: pr_spart TYPE spart AS LISTBOX VISIBLE LENGTH 7.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR pr_spart.
INITIALIZATION.
*----Code for Drop down list....
DATA: lit_spart_list TYPE vrm_values, "Table for list of Divisions
lwa_spart_list TYPE vrm_value,
lw_name TYPE vrm_id. "Name of parameter with list-box.
*---Assign selected values to table that would be passed to FM VRM_SET_VALUES
CLEAR : lwa_spart_list,
lw_name.
*---Pass required values for list-box display.
lwa_spart_list-key = 'H'.
lwa_spart_list-text = 'HL'.
APPEND lwa_spart_list TO lit_spart_list.
lwa_spart_list-key = 'S'.
lwa_spart_list-text = 'SL'.
APPEND lwa_spart_list TO lit_spart_list.
lwa_spart_list-key = 'P'.
lwa_spart_list-text = 'PP'.
APPEND lwa_spart_list TO lit_spart_list.
lwa_spart_list-key = 'F'.
lwa_spart_list-text = 'FR'.
APPEND lwa_spart_list TO lit_spart_list.
*Name of parameter to which list is to be assigned
lw_name = 'PR_SPART'.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = lw_name
values = lit_spart_list
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.
Reagrds,
nagaraj
‎2007 Jan 18 10:10 AM
Hi jayasree,
check this,
TABLES : mara,
t134.
TYPE-POOLS: vrm.
DATA: name TYPE vrm_id,
w_mtart LIKE mara-mtart,
list TYPE vrm_values,
value LIKE LINE OF list.
PARAMETERS: p_mtart LIKE mara-mtart AS LISTBOX VISIBLE LENGTH 10.
AT SELECTION-SCREEN OUTPUT.
name = 'P_MTART'.
SELECT mtart
UP TO 10 ROWS
FROM t134
INTO w_mtart.
value-key = W_MTART.
value-text = W_MTART.
APPEND value TO list.
CLEAR W_MTART.
ENDSELECT.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = name
values = list.
START-OF-SELECTION.
WRITE: / 'PARAMETER:', p_mtart.
‎2007 Jan 18 10:15 AM
Hi,
Check this program.
it demonstrates how to use.
DEFINE LB_MACRO_KOART.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(31) &3.
PARAMETERS: &1 AS LISTBOX VISIBLE LENGTH &2 OBLIGATORY.
SELECTION-SCREEN END OF LINE.
END-OF-DEFINITION.
************************************************************************
SELECTION-SCREEN *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK S1 WITH FRAME TITLE TEXT-001.
LB_MACRO_KOART MYLIST(1) 5 COMMENT.
SELECTION-SCREEN END OF BLOCK S1.
************************************************************************
AT SELECTION - SCREEN
************************************************************************
AT SELECTION-SCREEN OUTPUT.
PERFORM ADD_VALUES_TO_KOART.
COMMENT = 'Account type'.
&----
*& Form ADD_VALUES_TO_KOART
&----
Fill the values in dropdownlistbox
----
FORM ADD_VALUES_TO_KOART .
TYPE-POOLS: VRM.
DATA: MY_LIST TYPE VRM_VALUES,
VALUE LIKE LINE OF MY_LIST.
DATA : BEGIN OF I_TAB OCCURS 0,
KOART TYPE C,
END OF I_TAB.
CLEAR I_TAB.
I_TAB-KOART = 'A'.
APPEND I_TAB.
CLEAR I_TAB.
I_TAB-KOART = 'D'.
APPEND I_TAB.
CLEAR I_TAB.
I_TAB-KOART = 'K'.
APPEND I_TAB.
CLEAR I_TAB.
I_TAB-KOART = 'M'.
APPEND I_TAB.
CLEAR I_TAB.
I_TAB-KOART = 'S'.
APPEND I_TAB.
CLEAR I_TAB.
&----
*& Filling the list structure with values from MARA table
&----
LOOP AT I_TAB.
VALUE-KEY = SY-TABIX.
VALUE-TEXT = I_TAB-KOART.
APPEND VALUE TO MY_LIST.
ENDLOOP.
&----
*& Finally calling the function module to create the list box.
&----
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'MYLIST'
VALUES = MY_LIST.
ENDFORM. " ADD_VALUES_TO_KOART
reward if helpful
‎2007 Jan 18 10:20 AM