‎2009 Dec 17 6:48 AM
Hi Experts,
I have two parameters LOCATION AND PLAN with f4 help in selection screen.
i want to filter second parameter based on the first selection criteria.
on entering value say 16 in location .
I want to filter plan through drop down based on location 16.
thanks
Surbhi
‎2009 Dec 17 6:58 AM
Hi
Example to get materials(Second parameter in selection scree) based on plant(First selection screen parameter)
PARAMETERS:p_werks TYPE marc-werks,
p_matnr TYPE mara-matnr.
DATA:it_dynread TYPE TABLE OF dynpread.
DATA:wa_dynread TYPE dynpread.
TYPES:BEGIN OF ty_matnr,
werks TYPE marc-werks,
matnr TYPE marc-matnr,
END OF ty_matnr.
TYPES:BEGIN OF ty_mara,
matnr TYPE mara-matnr,
END OF ty_mara.
DATA:wa_matnr TYPE ty_matnr.
DATA:it_matnr TYPE STANDARD TABLE OF ty_matnr.
DATA:wa_mara TYPE ty_mara,
it_mara TYPE STANDARD TABLE OF ty_mara.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr.
CLEAR:it_dynread[],wa_dynread.
wa_dynread-fieldname = 'P_WERKS'.
APPEND wa_dynread TO it_dynread.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
translate_to_upper = 'X'
TABLES
dynpfields = it_dynread
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
READ TABLE it_dynread INTO wa_dynread INDEX 1.
IF wa_dynread-fieldvalue IS INITIAL.
MESSAGE i000(oo) WITH 'Enter Valid Value'.
ENDIF.
ENDIF.
READ TABLE it_dynread INTO wa_dynread INDEX 1.
p_werks = wa_dynread-fieldvalue.
SELECT matnr FROM marc INTO TABLE it_mara WHERE werks = p_werks.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MATNR'
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = 'P_MATNR'
value_org = 'S'
TABLES
value_tab = it_mara
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.
Regards
Srilaxmi
‎2009 Dec 17 6:55 AM
Hi Surbhi,
You have to use function module DYNP_VALUES_READ to read the value entered in the first Parameter & based on that you have to read the data form database in a internal table & pass the data to the function module ,F4IF_INT_TABLE_VALUE_REQUEST.
Kindly check for the code in SCN.
Regards
Abhii
‎2009 Dec 17 6:56 AM
Hi,
Refer following code
*--Local Variables
DATA :lt_value_tab TYPE STANDARD TABLE OF ty_s_value_tab.
*--Select Document Numbers from table WITH_ITEM
SELECT augbl "Document Number
FROM with_item "With Item
INTO TABLE lt_value_tab
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr.
IF sy-subrc EQ 0.
*--Sort table by document number
SORT lt_value_tab BY augbl.
*--Delete duplicate records from table
DELETE ADJACENT DUPLICATES FROM lt_value_tab COMPARING ALL FIELDS.
*--Call function module for F4
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'AUGBL' "Document number
dynpprog = sy-cprog "program name
dynpnr = sy-dynnr "Screen number
dynprofield = 'S_AUGBL' "Selection field
value_org = gc_s "Structure view
TABLES
value_tab = lt_value_tab "Data table
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.
ENDIF.
Regards,
Prashant
‎2009 Dec 17 6:58 AM
Hi
Example to get materials(Second parameter in selection scree) based on plant(First selection screen parameter)
PARAMETERS:p_werks TYPE marc-werks,
p_matnr TYPE mara-matnr.
DATA:it_dynread TYPE TABLE OF dynpread.
DATA:wa_dynread TYPE dynpread.
TYPES:BEGIN OF ty_matnr,
werks TYPE marc-werks,
matnr TYPE marc-matnr,
END OF ty_matnr.
TYPES:BEGIN OF ty_mara,
matnr TYPE mara-matnr,
END OF ty_mara.
DATA:wa_matnr TYPE ty_matnr.
DATA:it_matnr TYPE STANDARD TABLE OF ty_matnr.
DATA:wa_mara TYPE ty_mara,
it_mara TYPE STANDARD TABLE OF ty_mara.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr.
CLEAR:it_dynread[],wa_dynread.
wa_dynread-fieldname = 'P_WERKS'.
APPEND wa_dynread TO it_dynread.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
translate_to_upper = 'X'
TABLES
dynpfields = it_dynread
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
READ TABLE it_dynread INTO wa_dynread INDEX 1.
IF wa_dynread-fieldvalue IS INITIAL.
MESSAGE i000(oo) WITH 'Enter Valid Value'.
ENDIF.
ENDIF.
READ TABLE it_dynread INTO wa_dynread INDEX 1.
p_werks = wa_dynread-fieldvalue.
SELECT matnr FROM marc INTO TABLE it_mara WHERE werks = p_werks.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MATNR'
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = 'P_MATNR'
value_org = 'S'
TABLES
value_tab = it_mara
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.
Regards
Srilaxmi
‎2009 Dec 17 7:01 AM
Hi,
Please find the Sample code.. Please try with your case.
*** Populate listbox for control grade whenever matnr changes
REFRESH git_list[].
CLEAR : gwa_value.
SELECT matnr cctrlgrade
FROM <dbtable>
INTO TABLE git_cctrlgrade
WHERE matnr = p_matnr.
IF git_cctrlgrade[] IS NOT INITIAL.
SORT git_cctrlgrade BY matnr cctrlgrade.
DELETE ADJACENT DUPLICATES FROM git_cctrlgrade COMPARING matnr cctrlgrade.
LOOP AT git_cctrlgrade INTO gwa_cctrlgrade WHERE cctrlgrade IS NOT INITIAL.
gwa_value-text = gwa_cctrlgrade-cctrlgrade.
gwa_value-key = gwa_cctrlgrade-cctrlgrade.
APPEND gwa_value TO git_list.
ENDLOOP.
ENDIF.
gv_name = 'P_CCTRLG'.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = gv_name
values = git_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.
Regards,
Nagaraj