‎2008 Jun 02 3:07 AM
hi,
im a new learner for abap....
i have to create a new subject and put in drop down text..
usually its take from data dictionary... but in my kes i support to creat new subject like ' text1' and 'text2', put it in drop down menu....'
i need your help....
‎2008 Jun 02 5:16 AM
Hi Suguna,
Use this FM "VRM_SET_VALUES". For reference I am sending one program,go thru it and make changes accordingly...
REPORT zmti_pump_sr_no.
**********DATA DECLARATION**********
Type-pools : vrm.
INCLUDE zmti_pump_sr_no_dec.
**************************************
********Selection Screen************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_plant TYPE eqbs-b_werk OBLIGATORY,
p_mat_no TYPE m_mat1m-matnr OBLIGATORY,
p_year(4) AS LISTBOX VISIBLE LENGTH 10,
p_test(10) AS LISTBOX VISIBLE LENGTH 12,
p_no_ser TYPE i OBLIGATORY,
p_sbu(11) DEFAULT 'P | PDP-SBU' MODIF ID sg1,
p_mat_de TYPE m_mat1m-maktg MODIF ID sg1.
SELECTION-SCREEN END OF BLOCK b1.
*************************************
INITIALIZATION.
PERFORM f4_year_request.
PERFORM f4_value_request.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-group1 = 'SG1'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
AT SELECTION-SCREEN ON p_mat_no.
PERFORM validate_mat_no.
AT SELECTION-SCREEN.
SELECT SINGLE maktg
FROM m_mat1m "#EC *
INTO p_mat_de
WHERE matnr = p_mat_no
AND spras = 'EN'. " This is for material description. "#EC *
START-OF-SELECTION.
SET PF-STATUS 'EUSRN'.
PERFORM fetch_sernr.
PERFORM get_srno.
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'BK' OR 'EXIT' OR 'CANCEL'.
--
LEAVE PROGRAM. "CHNG01 --
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = text-022
text_question = text-023
text_button_1 = text-024
text_button_2 = text-025
default_button = '1'
display_cancel_button = 'X'
IMPORTING
answer = _answer
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
CASE _answer.
WHEN 'A'.
WHEN 1.
LOOP AT it_ser INTO wa_ser.
x_spec-serialno = wa_ser-sernr.
CALL FUNCTION 'ZBAPI_EQUI_CREATE'
EXPORTING
data_general = x_gen
data_specific = x_spec
plant = p_plant
IMPORTING
equipment = x_eqp
return = x_ret.
COMMIT WORK AND WAIT.
ENDLOOP.
MESSAGE s002(zermes) WITH text-021.
LEAVE TO SCREEN 0.
WHEN 2.
IF sy-ucomm = 'CANCEL'.
LEAVE PROGRAM.
ELSE.
LEAVE TO SCREEN 0.
ENDIF.
ENDCASE.
--
WHEN 'SAVE'.
LOOP AT it_ser INTO wa_ser.
x_spec-serialno = wa_ser-sernr.
CALL FUNCTION 'ZBAPI_EQUI_CREATE'
EXPORTING
data_general = x_gen
data_specific = x_spec
plant = p_plant
IMPORTING
equipment = x_eqp
return = x_ret.
COMMIT WORK AND WAIT.
ENDLOOP.
MESSAGE s002(zermes) WITH text-021.
LEAVE TO SCREEN 0.
ENDCASE.
&----
*& Form fetch_sernr
&----
text
----
FORM fetch_sernr.
CONCATENATE p_year p_test p_sbu(1) INTO ser_no. " To generate YYMMP as the reference serial number.
ser_no1 = ser_no.
SELECT sernr
FROM equi
INTO TABLE it_equi.
WRITE : / text-003 COLOR 4, 48 p_mat_no COLOR 7, p_mat_de COLOR 7.
SKIP.
WRITE : / text-020 COLOR 4, 48 p_no_ser COLOR 7.
SKIP.
ENDFORM. "form_sernr
&----
*& Form get_srno
&----
text
----
FORM get_srno.
DELETE it_equi
WHERE sernr NS ser_no.
DESCRIBE TABLE it_equi
LINES lin.
IF lin = 0.
WRITE 😕 text-016 COLOR 4, ser_no1 COLOR 4, text-018 COLOR 4, 48 text-019 COLOR 4.
SKIP.
WRITE : / text-017 COLOR 4.
SKIP.
CONCATENATE ser_no '0001' INTO ser_no. " Generate the first serial number i.e YYMMP0001.
MOVE ser_no TO wa_ser-sernr.
PERFORM bapi_call.
ELSE.
SORT it_equi BY sernr.
LOOP AT it_equi INTO wa_equi.
len = STRLEN( wa_equi-sernr ).
IF len <> 9.
DELETE it_equi .
ENDIF.
ENDLOOP.
DESCRIBE TABLE it_equi
LINES lin.
READ TABLE it_equi INTO
wa_equi INDEX lin.
IF sy-subrc = 0.
WRITE 😕 text-016 COLOR 4, ser_no1 COLOR 4, text-018 COLOR 4, 48 wa_equi-sernr COLOR 7.
SKIP.
WRITE : / text-017 COLOR 4.
var2 = wa_equi-sernr.
var1 = var2+5.
PERFORM calc.
ENDIF.
ENDIF.
ENDFORM. "get_srno
&----
*& Form bapi_call
&----
text
----
FORM bapi_call.
CLEAR : x_spec,
x_gen,
x_eqp,
x_ret.
x_spec-material = p_mat_no.
x_spec-serialno = wa_ser.
x_spec-equicatgry = 'S'.
WRITE 😕 ser_no COLOR 5.
var1 = ser_no+5.
p_no_ser = p_no_ser - 1.
APPEND wa_ser TO it_ser.
PERFORM calc.
ENDFORM. "bapi_call
&----
*& Form calc
&----
text
----
FORM calc.
DO p_no_ser TIMES.
var1 = var1 + 1.
CONCATENATE ser_no1 var1 INTO ser_no2.
MOVE ser_no2 TO wa_ser-sernr.
CLEAR : x_spec,
x_gen,
x_eqp,
x_ret.
x_spec-material = p_mat_no.
x_spec-serialno = wa_ser-sernr.
x_spec-equicatgry = 'S'.
SKIP.
WRITE 😕 ser_no2 COLOR 5.
APPEND wa_ser TO it_ser.
ENDDO.
ENDFORM. "calc
&----
*& 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 = '01'.
l_value-text = text-002.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '02'.
l_value-text = text-004.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '03'.
l_value-text = text-005.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '04'.
l_value-text = text-006.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '05'.
l_value-text = text-007.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '06'.
l_value-text = text-008.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '07'.
l_value-text = text-009.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '08'.
l_value-text = text-010.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '09'.
l_value-text = text-011.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '10'.
l_value-text = text-012.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '11'.
l_value-text = text-013.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '12'.
l_value-text = text-014.
APPEND l_value TO li_list.
CLEAR l_value.
l_name = 'P_TEST'.
p_test = '01'. "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
&----
*& Form validate_mat_no
&----
text
----
--> p1 text
<-- p2 text
----
FORM validate_mat_no .
SELECT SINGLE matnr
FROM mara
INTO i_mara
WHERE matnr = p_mat_no.
IF sy-subrc <> 0.
MESSAGE e001(zermes) WITH text-015.
ENDIF.
ENDFORM. " validate_mat_no
&----
*& Form F4_YEAR_REQUEST
&----
text
----
--> p1 text
<-- p2 text
----
FORM f4_year_request .
DATA: l_name TYPE vrm_id,
li_list TYPE vrm_values,
l_value LIKE LINE OF li_list.
l_value-key = '05'.
l_value-text = '2005'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '06'.
l_value-text = '2006'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '07'.
l_value-text = '2007'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '08'.
l_value-text = '2008'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '09'.
l_value-text = '2009'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '10'.
l_value-text = '2010'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '11'.
l_value-text = '2011'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '12'.
l_value-text = '2012'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '13'.
l_value-text = '2013'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '14'.
l_value-text = '2014'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '15'.
l_value-text = '2015'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '16'.
l_value-text = '2016'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '17'.
l_value-text = '2017'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '18'.
l_value-text = '2018'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '19'.
l_value-text = '2019'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '20'.
l_value-text = '2020'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '21'.
l_value-text = '2021'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '22'.
l_value-text = '2022'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '23'.
l_value-text = '2023'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '24'.
l_value-text = '2024'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '25'.
l_value-text = '2025'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '26'.
l_value-text = '2026'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '27'.
l_value-text = '2027'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '28'.
l_value-text = '2028'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '29'.
l_value-text = '2029'.
APPEND l_value TO li_list.
CLEAR l_value.
l_value-key = '30'.
l_value-text = '2030'.
APPEND l_value TO li_list.
CLEAR l_value.
l_name = 'P_year'. "#EC NOTEXT
p_year = '07'.
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_YEAR_REQUEST
Regards,
Shafi
‎2008 Jun 02 5:21 AM
Hi,
Check the below code :
selection-screen begin of block b1 with frame.
parameters p_dep(20) as listbox visible length 15
default 'IT' obligatory.
selection-screen end of block b1.
at selection-screen output.
type-pools : vrm.
types : begin of tp_dep,
dep(20),
end of tp_dep.
data : my_list type vrm_values,
value like line of my_list.
data : ig_dep type standard table of tp_dep,
wg_dep type tp_dep.
clear wg_dep.
wg_dep-dep = 'MECH'.
append wg_dep to ig_dep.
clear wg_dep.
wg_dep-dep = 'EEE'.
append wg_dep to ig_dep.
clear wg_dep.
wg_dep-dep = 'ECE'.
append wg_dep to ig_dep.
clear wg_dep.
wg_dep-dep = 'CSE'.
append wg_dep to ig_dep.
loop at ig_dep into wg_dep.
value-key = sy-tabix.
value-text = wg_dep-dep.
append value to my_list.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'P_DEP'
values = MY_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.
endloop.Regards,
Raghu