Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Search Help

Former Member
0 Likes
588

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

1 ACCEPTED SOLUTION
Read only

awin_prabhu
Active Contributor
0 Likes
544

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

4 REPLIES 4
Read only

Former Member
0 Likes
544

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

Read only

awin_prabhu
Active Contributor
0 Likes
545

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

Read only

Former Member
0 Likes
544

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

Read only

venkat_o
Active Contributor
0 Likes
544

Hi Shaik, Try this way.


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.
Thanks Venkat.O