‎2009 Sep 30 8:48 AM
Hi,
I have two parameters on the selection screen
for the fist one i have created search help using F4IF_INT_TABLE_VALUE_REQUEST
as soon as i select any value form the search help i need to fill the second parameter with some value.
example.
when you press f4 on p1 we will get a b c
when i select b
depending on b i need to select some value from data base table then p2 need to be filled with that value .
Thanks
Shaik
‎2009 Sep 30 9:08 AM
Hi Shaik,
Try below code. Change it to ur requirement. I used MATNR and MAKTX as two fields.
Report Ztest.
TABLES: ddshretval.
DATA:l_t_dynpread1 LIKE dynpread OCCURS 0 WITH HEADER LINE,
l_t_retdynr TYPE TABLE OF ddshretval,
l_wa_retdynr LIKE LINE OF l_t_retdynr.
DATA: BEGIN OF g_t_desc OCCURS 0,
maktx TYPE makt-maktx,
END OF g_t_desc,
wa LIKE g_t_desc.
DATA: BEGIN OF g_t_mara OCCURS 0,
matnr TYPE matnr,
END OF g_t_mara.
PARAMETERS: matnr TYPE char18,
maktx TYPE char50.
INITIALIZATION.
SELECT matnr FROM mara INTO TABLE g_t_mara. " Get material numbers
AT SELECTION-SCREEN ON VALUE-REQUEST FOR matnr.
CLEAR: l_t_dynpread1, l_t_dynpread1[], l_t_retdynr,l_wa_retdynr,wa.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MATNR'
dynpprog = sy-repid
dynpnr = sy-dynnr
value_org = 'S'
TABLES
value_tab = g_t_mara
return_tab = l_t_retdynr
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
READ TABLE l_t_retdynr INTO l_wa_retdynr INDEX 1.
IF sy-subrc = 0.
l_t_dynpread1-fieldname = l_wa_retdynr-fieldname.
l_t_dynpread1-fieldvalue = l_wa_retdynr-fieldval.
APPEND l_t_dynpread1.
l_t_dynpread1-fieldname = 'MATNR'.
APPEND l_t_dynpread1.
*For converting MATNR to 18 digits
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = l_wa_retdynr-fieldval
IMPORTING
output = l_wa_retdynr-fieldval.
SELECT SINGLE maktx FROM makt INTO wa WHERE matnr = l_wa_retdynr-fieldval. " Get corresponding MAKTX
l_t_dynpread1-fieldname = 'MAKTX'.
l_t_dynpread1-fieldvalue = wa.
APPEND l_t_dynpread1.
CALL FUNCTION 'DYNP_VALUES_UPDATE' " Update both MATNR and MAKTX fields in screen
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = l_t_dynpread1
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
undefind_error = 7
OTHERS = 8.
ENDIF.
Thanks,
Edited by: Sap Fan on Sep 30, 2009 10:08 AM
‎2009 Sep 30 8:51 AM
Hi,
I think you can do that using the at selection-screen output event.
Try populating the field in this event based on your logic and it should work.
Regards,
Himanshu
‎2009 Sep 30 9:08 AM
Hi Shaik,
Try below code. Change it to ur requirement. I used MATNR and MAKTX as two fields.
Report Ztest.
TABLES: ddshretval.
DATA:l_t_dynpread1 LIKE dynpread OCCURS 0 WITH HEADER LINE,
l_t_retdynr TYPE TABLE OF ddshretval,
l_wa_retdynr LIKE LINE OF l_t_retdynr.
DATA: BEGIN OF g_t_desc OCCURS 0,
maktx TYPE makt-maktx,
END OF g_t_desc,
wa LIKE g_t_desc.
DATA: BEGIN OF g_t_mara OCCURS 0,
matnr TYPE matnr,
END OF g_t_mara.
PARAMETERS: matnr TYPE char18,
maktx TYPE char50.
INITIALIZATION.
SELECT matnr FROM mara INTO TABLE g_t_mara. " Get material numbers
AT SELECTION-SCREEN ON VALUE-REQUEST FOR matnr.
CLEAR: l_t_dynpread1, l_t_dynpread1[], l_t_retdynr,l_wa_retdynr,wa.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MATNR'
dynpprog = sy-repid
dynpnr = sy-dynnr
value_org = 'S'
TABLES
value_tab = g_t_mara
return_tab = l_t_retdynr
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
READ TABLE l_t_retdynr INTO l_wa_retdynr INDEX 1.
IF sy-subrc = 0.
l_t_dynpread1-fieldname = l_wa_retdynr-fieldname.
l_t_dynpread1-fieldvalue = l_wa_retdynr-fieldval.
APPEND l_t_dynpread1.
l_t_dynpread1-fieldname = 'MATNR'.
APPEND l_t_dynpread1.
*For converting MATNR to 18 digits
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = l_wa_retdynr-fieldval
IMPORTING
output = l_wa_retdynr-fieldval.
SELECT SINGLE maktx FROM makt INTO wa WHERE matnr = l_wa_retdynr-fieldval. " Get corresponding MAKTX
l_t_dynpread1-fieldname = 'MAKTX'.
l_t_dynpread1-fieldvalue = wa.
APPEND l_t_dynpread1.
CALL FUNCTION 'DYNP_VALUES_UPDATE' " Update both MATNR and MAKTX fields in screen
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = l_t_dynpread1
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
undefind_error = 7
OTHERS = 8.
ENDIF.
Thanks,
Edited by: Sap Fan on Sep 30, 2009 10:08 AM
‎2009 Sep 30 9:11 AM
Hi Shaik,
Try this.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_mview.
CLEAR : g_t_dynp , g_t_dynp[].
g_t_dynp-fieldname = 'P_PLAREA'.
APPEND g_t_dynp.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = 'ZAB_SCM_DP_LISTCUBE_DATA'
dynumb = '1000'
translate_to_upper = 'X'
TABLES
dynpfields = g_t_dynp
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
OTHERS = 9.
CHECK sy-subrc = 0.
REFRESH : gt_mview_f4.
SELECT mview pareaname mview_txt
FROM /sapapo/pbmvw
INTO CORRESPONDING FIELDS OF TABLE gt_mview_f4
WHERE pareaname = g_t_dynp-fieldvalue .
CLEAR : gs_values .
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MVIEW'
dynprofield = 'P_MVIEW'
dynpprog = sy-cprog
dynpnr = sy-dynnr
value_org = 'S'
TABLES
value_tab = gt_mview_f4.
I am sure this will help you to solve your problem.
Regards,
Vijay
‎2009 Sep 30 9:12 AM
Hi Shaik,
Try this way.
Thanks
Venkat.O
REPORT ZVENKAT_F4_FOR_PARAMETERS MESSAGE-ID ZMSG .
TYPES:BEGIN OF T_T001W,
WERKS TYPE T001W-WERKS,
NAME1 TYPE T001W-NAME1,
END OF T_T001W,
T_RETURN_TAB TYPE DDSHRETVAL.
DATA:W_T001W TYPE T_T001W,
W_RETURN_TAB TYPE T_RETURN_TAB.
DATA:I_T001W TYPE STANDARD TABLE OF T_T001W,
I_RETURN_TAB TYPE STANDARD TABLE OF T_RETURN_TAB.
DATA:W_DYNPFIELDS TYPE DYNPREAD,
I_DYNPFIELDS LIKE STANDARD TABLE OF DYNPREAD.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS :P_WERKS TYPE T001W-WERKS,
P_NAME1 TYPE T001W-NAME1.
SELECTION-SCREEN END OF BLOCK B1.
"F4 Help for Werks
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_WERKS.
IF I_T001W[] IS INITIAL.
SELECT WERKS NAME1
FROM T001W
INTO TABLE I_T001W.
ENDIF.
"Function module for F4 help
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'WERKS' "field name on f4 help window
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'P_WERKS' "Screen field name
VALUE_ORG = 'S'
TABLES
VALUE_TAB = I_T001W
RETURN_TAB = I_RETURN_TAB.
READ TABLE I_RETURN_TAB INTO W_RETURN_TAB INDEX 1.
P_WERKS = W_RETURN_TAB-FIELDVAL.
READ TABLE I_T001W INTO W_T001W WITH KEY WERKS = P_WERKS.
IF SY-SUBRC = 0.
W_DYNPFIELDS-FIELDNAME = 'P_NAME1'.
W_DYNPFIELDS-FIELDVALUE = W_T001W-NAME1.
APPEND W_DYNPFIELDS TO I_DYNPFIELDS.
CLEAR W_DYNPFIELDS.
"DYNP_VALUES_UPDATE
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
DYNAME = SY-REPID
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = I_DYNPFIELDS.
ENDIF.