‎2007 Sep 14 6:37 AM
Hi,
I am working on a report in which I have created 4 parameter fields( Preferred/Not Pref field, Direct/Control, and the Low Cost Country Flag,parent/child).I have created list boxes for these fields using the FM VRM_SET_VALUES.For all these fields if I create 2 values as list box values,the 4th value is getting created as blank value.For example,for low cost country flag I created yes,no as list box options.But in the o/p I can see yes,no and blank as list box options.Can anyone tell me how to remove this blank from the list box option?
Regards,
Hema
‎2007 Sep 14 6:39 AM
Hi,
Check this..
TYPE-POOLS : vrm. "Value Request Manager
PARAMETERS: p_test AS LISTBOX VISIBLE LENGTH 12 OBLIGATORY.
INITIALIZATION.
PERFORM f4_value_request.
START-OF-SELECTION.
WRITE P_TEST.
&----
*& Form f4_value_request
&----
text
----
FORM f4_value_request.
DATA: l_name TYPE vrm_id,
li_list TYPE vrm_values,
l_value LIKE LINE OF li_list.
l_value-key = '1'.
l_value-text = 'January'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '2'.
l_value-text = 'February'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '3'.
l_value-text = 'March'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '4'.
l_value-text = 'April'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '5'.
l_value-text = 'May'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '6'.
l_value-text = 'June'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '7'.
l_value-text = 'July'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '8'.
l_value-text = 'August'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '9'.
l_value-text = 'September'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '10'.
l_value-text = 'October'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '11'.
l_value-text = 'November'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '12'.
l_value-text = 'December'.
APPEND l_value TO li_list.
CLEAR l_value.
l_name = 'P_TEST'.
p_test = '1'. "this is to set the default value of the list box.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = l_name
values = li_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.
ENDFORM. " f4_value_request
‎2007 Sep 14 6:49 AM
PARAMETER : p_int AS LISTBOX VISIBLE LENGTH 10 OBLIGATORY.
" Giving OBLIGATORY will solve your problem.
" Check this sample
TYPE-POOLS : vrm.
PARAMETER : p_int AS LISTBOX VISIBLE LENGTH 10 OBLIGATORY.
DATA : name TYPE vrm_id,
list TYPE vrm_values,
value LIKE LINE OF list.
AT SELECTION-SCREEN OUTPUT.
name = 'P_INT'.
value-key = 'One'.
value-text = '1'.
APPEND value TO list.
value-key = 'Two'.
value-text = '2'.
APPEND value TO list.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = name
values = list.
CLEAR list.Regards
Gopi
‎2007 Sep 14 7:16 AM
Hi,
Even if I use obligatory,the blank value is not getting deleted fron the list box.I am sending you the code I have written.Could you pls check this and let me know where the error is happening?
SELECTION-SCREEN COMMENT 1(20) TEXT-057 FOR FIELD P_DIRECT.
PARAMETERS : P_DIRECT AS LISTBOX VISIBLE LENGTH 10 OBLIGATORY.
SELECTION-SCREEN COMMENT 40(20) TEXT-163 FOR FIELD P_DIR.
PARAMETERS : P_DIR AS LISTBOX VISIBLE LENGTH 10 OBLIGATORY.
SELECTION-SCREEN COMMENT 78(20) TEXT-165 FOR FIELD P_LOW.
PARAMETERS : P_LOW(3) AS LISTBOX VISIBLE LENGTH 10 OBLIGATORY.
SELECTION-SCREEN END OF LINE.
AT SELECTION-SCREEN OUTPUT.
REFRESH V_LIST1.
v_name1 = 'P_DIRECT'.
v_value1-key = 'D'.
v_value1-text = 'Direct'.
APPEND v_value1 to v_list1.
clear v_value1.
v_value1-key = 'I'.
v_value1-text = 'Indirect'.
APPEND v_value1 to v_list1.
clear v_value1.
PERFORM VALUE USING V_NAME1
CHANGING V_LIST1.
REFRESH V_LIST2.
v_name2 = 'P_DIR'.
v_value2-key = 'D'.
v_value2-text = 'Directed'.
APPEND v_value2 TO v_list2.
clear v_value2.
v_value2-key = 'C'.
v_value2-text = 'Controlled'.
APPEND v_value2 TO v_list2.
clear v_value2.
v_value2-key = ' ' .
v_value2-text = ' '.
APPEND v_value2 to v_list2.
clear v_value2.
PERFORM VALUE USING V_NAME2
CHANGING V_LIST2.
REFRESH V_LIST3.
v_name3 = 'P_LOW'.
v_value3-key = 'YES'.
v_value3-text = 'Yes'.
APPEND v_value3 TO v_list3.
clear v_value3.
v_value3-key = 'NO'.
v_value3-text = 'No'.
APPEND v_value3 TO v_list3.
clear v_value3.
v_value3-key = ' ' .
v_value3-text = ''.
APPEND v_value3 to v_list3.
clear v_value3.
PERFORM VALUE USING V_NAME3
CHANGING V_LIST3.
Regards,
Hema
‎2007 Sep 14 7:26 AM
Check this code and change accordingly to other parameters also.
TYPE-POOLS : vrm.
DATA : v_name1 TYPE vrm_id,
v_list1 TYPE vrm_values,
v_value1 LIKE LINE OF v_list1.
PARAMETERS : p_direct AS LISTBOX VISIBLE LENGTH 10 OBLIGATORY.
AT SELECTION-SCREEN OUTPUT.
REFRESH v_list1.
v_name1 = 'P_DIRECT'.
p_direct = 'D'. " this make the default in ur dropdown list box
v_value1-key = 'D'.
v_value1-text = 'Direct'.
APPEND v_value1 TO v_list1.
CLEAR v_value1.
v_value1-key = 'I'.
v_value1-text = 'Indirect'.
APPEND v_value1 TO v_list1.
CLEAR v_value1.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = v_name1
values = v_list1.
CLEAR v_list1.Regards
Gopi
<b>But i could see the desired output as what you wanted with the above code.
Please paste ur complete code so that i can suggest you.</b>
If i am not wrong this is what you wanted right, just two values direct and indirect at selection screen, with out any empty valeus in drop down and making showing some default value in ur dropdown (direct / indirect)
P_direct__________________|Direct |^ (drop down)
|Indirect|Message was edited by:
Gopi Narendra
‎2007 Sep 14 7:38 AM
Hi,
you have comment the following lines from your code.
v_value2-key = ' ' .
v_value2-text = ' '.
APPEND v_value2 to v_list2.
clear v_value2.
v_value3-key = ' ' .
v_value3-text = ''.
APPEND v_value3 to v_list3.
clear v_value3.
check the below code.
TYPE-POOLS : vrm. "Value Request Manager
DATA: v_name1 TYPE vrm_id,
v_name2 TYPE vrm_id,
v_name3 TYPE vrm_id,
v_list1 TYPE vrm_values,
v_list2 TYPE vrm_values,
v_list3 TYPE vrm_values,
v_value1 LIKE LINE OF v_list1,
v_value2 LIKE LINE OF v_list2,
v_value3 LIKE LINE OF v_list3.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) TEXT-057 FOR FIELD P_DIRECT.
PARAMETERS : P_DIRECT AS LISTBOX VISIBLE LENGTH 10 OBLIGATORY.
SELECTION-SCREEN COMMENT 40(20) TEXT-163 FOR FIELD P_DIR.
PARAMETERS : P_DIR AS LISTBOX VISIBLE LENGTH 10 OBLIGATORY.
SELECTION-SCREEN COMMENT 78(20) TEXT-165 FOR FIELD P_LOW.
PARAMETERS : P_LOW(3) AS LISTBOX VISIBLE LENGTH 10 OBLIGATORY.
SELECTION-SCREEN END OF LINE.
*AT SELECTION-SCREEN OUTPUT.
INITIALIZATION.
REFRESH V_LIST1.
v_name1 = 'P_DIRECT'.
v_value1-key = 'D'.
v_value1-text = 'Direct'.
APPEND v_value1 to v_list1.
clear v_value1.
v_value1-key = 'I'.
v_value1-text = 'Indirect'.
APPEND v_value1 to v_list1.
clear v_value1.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = v_name1
values = v_list1
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.
REFRESH V_LIST2.
v_name2 = 'P_DIR'.
v_value2-key = 'D'.
v_value2-text = 'Directed'.
APPEND v_value2 TO v_list2.
clear v_value2.
v_value2-key = 'C'.
v_value2-text = 'Controlled'.
APPEND v_value2 TO v_list2.
clear v_value2.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = v_name2
values = v_list2
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.
REFRESH V_LIST3.
v_name3 = 'P_LOW'.
v_value3-key = 'YES'.
APPEND v_value3 TO v_list3.
clear v_value3.
v_value3-key = 'NO'.
APPEND v_value3 TO v_list3.
clear v_value3.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = v_name3
values = v_list3
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.
‎2007 Sep 14 9:34 AM
Hi,
This didn't solve my problem.Could you pls suggest me some other solution?
Regards,
Hema
‎2007 Sep 14 6:55 AM
Hi,
How are you capturing the values to be displayed as list(using internal tables?). If so you can delete the BLANK values using the following code.
For eg: If INT_TAB is the internal table used to capture the list values. you can delete the BLANK values from INT_TAB using.
DELETE TABLE INT_TAB WHERE <FIELD> IS INITIAL .
Hope it helps..
Regards,
Dilli
‎2007 Sep 14 9:55 AM
hi,
if you make your listbox parameter as obligatory , you will not found blank value in your listbox.
try it.
raj