Skip to Content
0
Former Member
Oct 14, 2016 at 04:29 PM

F4 Search Help

835 Views

Dear all,

I'm having a a requirement where I need to populate next parameter on the selections screen based on the input from first search help field.

If you look at below upon selecting P_KUNNR value from search help , P_VKORG needs to be defaulted. Remember that KUNNR value may be assigned to multiple Sales Organizations .

I have written below code but it is always reading first record from internal table because I'm reading by KUNNR - Not sure how to retrieve the index of the selected row on the search help screen so that I can read the correct row from internal table.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_kunnr.

PERFORM provide_search_help_kunnr.

FORM provide_search_help_kunnr.

* Declaration for Transactional Data
TYPES: BEGIN OF ty_acct,
vkorg TYPE vkorg,
kunnr TYPE zkunnr_sis,
znicknm TYPE znicknm,
END OF ty_acct.

DATA: lt_acct TYPE TABLE OFty_acct,
ls_acct TYPE ty_acct,
lv_kunnr TYPE kunnr,
l_repid TYPE sy-repid,
l_dynnr TYPE sy-dynnr..

* Search Help related declarations.

DATA : lt_fmap TYPE STANDARD TABLE OF dselc ,
lt_returntab TYPE STANDARD TABLE OF ddshretval,
lt_dynpread TYPE STANDARD TABLE OF dynpread.
DATA:
ls_dynpread TYPE dynpread,
ls_fmap TYPE dselc.

FIELD-SYMBOLS: <rwa> LIKE LINE OF lt_returntab.
CLEAR:lv_kunnr,lt_acct,ls_acct.
l_repid = sy-repid.
l_dynnr = sy-dynnr.
SELECT DISTINCT vkorg kunnr znicknm
FROM ztsis_accounts
INTO TABLE lt_acct.
ls_fmap-dyfldname = ls_fmap-fldname = 'VKORG'. APPEND ls_fmap TO lt_fmap.
ls_fmap-dyfldname = ls_fmap-fldname = 'KUNNR'. APPEND ls_fmap TO lt_fmap.
ls_fmap-dyfldname = ls_fmap-fldname = 'ZNICKNM'. APPEND ls_fmap TO lt_fmap.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'KUNNR'
dynpprog = l_repid
dynpnr = l_dynnr
dynprofield = 'KUNNR'
value_org = 'S'
TABLES
value_tab = lt_acct
return_tab = lt_returntab
dynpfld_mapping = lt_fmap
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0.
READ TABLE lt_returntab ASSIGNING <rwa> INDEX 1.
CHECK sy-subrc EQ 0.
p_kunnr = <rwa>-fieldval.


CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = p_kunnr
IMPORTING
output = lv_kunnr.


SORT lt_acct BY kunnr.


READ TABLE lt_acct INTO ls_acct WITH KEY kunnr = lv_kunnr BINARY SEARCH.

ls_dynpread-fieldname = 'P_VKORG'.
ls_dynpread-fieldvalue = ls_acct-vkorg.
APPEND ls_dynpread TO lt_dynpread.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = lt_dynpread.
ENDIF.

ENDFORM.