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
2,359

Hi,

I need to create a search help which will filter the results according to a field in the screen. e.g., lets say i have selected a plant, then the search help should give results for that plant.

Can anyone please help me on how to do this.

Thanks.

Lilan

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,594

Hi,

Create a search help and in 'Selection Method' enter the table name from which you need the values.

'Dialog TYpe' = Display values immediately, in searche help parameter enter the fields you want, against the WERKS field which you have defined, in the default value give the standard parameter id 'WRK' (for werks).

Regards

Subramanian

7 REPLIES 7
Read only

Former Member
0 Likes
1,594

Hi ,

Follow this steps .

Step 1 - Create a custom Function Group in SE37 called ZSHLP

Step 2 -

1) In order to create a search help enhancement function, we need the interface parameters of function

*Enhancing a Standard Search Help

module F4IF_SHLP_EXIT_EXAMPLE (of Function Group SDHI). Figures 2 & 3 show the ‘Changing’ and

‘Tables’ parameters of F4IF_SHLP_EXIT_EXAMPLE.

Figure 2 – SE37 - Function Module – F4IF_SHLP_EXIT_EXAMPLE – Changing parameters

Figure 3 – SE37 - Function Module – F4IF_SHLP_EXIT_EXAMPLE – Tables parameters

2) Create a function module Z_CUSTOM_SEARCH within our custom function group ZSHLP (Figure 4).

Figure 4 – SE37 - Create Custom Function Z_CUSTOM_SEARCH within function group ZSHLP

4

*Enhancing a Standard Search Help

3) We need to create a similar set of parameters within Z_CUSTOM_SEARCH, as exists in

F4IF_SHLP_EXIT_EXAMPLE. This is shown in Figures 5 & 6.

Figure 5 – SE37 – Function Module Z_CUSTOM_SEARCH with similar ‘Changing’ parameters as function

module F4IF_SHLP_EXIT_EXAMPLE

Figure 6 – SE37 - Function Module Z_CUSTOM_SEARCH with similar ‘Tables’ parameters as function

module F4IF_SHLP_EXIT_EXAMPLE

Step 3 –

1) Within Function Module Z_CUSTOM_SEARCH go to Main Program as shown in Figure 7 and in the main

program TOP include, in this case INCLUDE LZSHLPTOP insert the following line

type-pools shlp.

Figure 7 – SE37

2) Save and activate the function module. You have the search help enhancement function framework ready

Step 4 –

1) Go to SE11 – create a custom elementary search help called ZS_BILLTO

2) Assign the fields that you want to display on the selection condition as well as on the hit list as shown

below. LPos is the Hit-list position and SPos is the order of the fields on the search help selection screen.

3) Hit list fields in the ascending order of LPos values:

1 - Ship To Customer Number - KUNNR (Make sure this is an export field as this is what we want to put back

on the Ship-to or Sold-to party fields after the user double clicks on a value on the hit list)

2 - Ship to Customer Name – NAME1

3 - City – ORT01

4 - Street – STRAS

5 - Bill to Customer Number – KUNN2

4) The SPos position dictates the order in which the restriction fields will appear on the selection screen in the

search help tab. In the ascending order of SPos values:

1 - Account group - KTOKD

2 - Search term - SORTL

3 - Name – MCOD1

4 - City – ORT01

5 - Customer Number - KUNNR

5) As shown above, assign the custom function module Z_CUSTOM_SEARCH as Search help exit. We are

not using any Selection method for this example, since our selection is being done within the function module.

6) Since we want to restrict values in our example, we set the Dialog Type to “Dialog with value restriction”

and any Hot key as desired.

Step 5 –

1) Go to SE11 – to Search help SD_DEBI and hit ‘Display’ button

2) Go to ‘Included search helps’ tab and hit Goto-> Append search help as shown below

3) You will be prompted to append the SD_DEBI search help with a proposed name ZASD_DEBI as shown

below.

4) Hit

5) Go to the ‘Included search helps’ tab of ZASD_DEBI. Here is where you will attach the custom search help

ZS_BILLTO created in Step 4. Select ZS_BILLTO and do the Parameter assignment for the value to be

transferred to the screen. We have set this to KUNNR for our example, to be pulled from the hit list to the

screen field when the user double clicks on a certain line.

Step 6 –

If you read the standard SAP help for the enhancement as shown in the link below, it mentions how each of

the events come into play.

http://help.sap.com/saphelp_46c/helpdata/EN/cf/21ee2b446011d189700000e8322d00/frameset.htm

Calling the Search Help Exit

If a search help exit is assigned to a search help, the help processor calls it at the following times:

Before Displaying the Dialog Box for Selecting the Required Search Path.

It is only called for collective search helps. Using the search help exit, the set of elementary search helps

available can for example be restricted depending on the context.

Before Displaying the Dialog Box for Entering Search Conditions.

You can either influence the dialog for entering search conditions or skip it altogether here. You can also

influence how the selection screen looks.

Before Selecting Data.

The data selection can be partly or completely copied from the search help exit. This can become necessary

if the data selection cannot be implemented with a SELECT statement for a table or a view.

Before Displaying the Hit List.

You can influence the display of the hit list in this step with the search help exit. You can reduce the number

of values displayed here. For example, you can display only values for which the person calling the input help

has authorization. You can also copy the complete hit list from the search help exit.

Before Returning the Values Selected by the User to the Input Template

It could be advisable to intervene at this time if control of the further transaction flow should depend on the

value selected. A typical example is setting set/get parameters.

We are writing our code in the event of “Before Selecting Data” when callcontrol-step = ‘SELECT’. If you

wanted to further restrict the data in the hit list, you could filter it when callcontrol-step = ‘DISP’.

Step 7 – Within Function Module Z_CUSTOM_SEARCH put in the custom code for retrieving data within the

‘SELECT’ scenario of CALLCONTROL-STEP as shown in source code below. Make sure to set the next

event as CALLCONTROL-STEP = ‘DISP’ within the code.

Code Sample

-

-


BEGIN OF CODE SAMPLE -

-


-

-


BEGIN OF INCLUDE LZSHLPTOP -

-


FUNCTION-POOL zshlp. "MESSAGE-ID ..

Enhancing a Standard Search Help

© 2005 SAP AG The SAP Developer Network: http://sdn.sap.com 12

TYPE-POOLS shlp.

TYPES:

BEGIN OF t_knvp,

kunnr TYPE kna1-kunnr,

name1 TYPE kna1-name1,

ort01 TYPE ort01_gp,

stras TYPE stras_gp,

kunn2 TYPE knvp-kunn2,

name1_2 TYPE kna1-name1,

END OF t_knvp.

DATA: i_knvp TYPE TABLE OF t_knvp,

wa_knvp TYPE t_knvp,

wa_selopt TYPE ddshselopt,

wa_fielddescr TYPE dfies.

DATA:

rc TYPE i,

v_tabix LIKE sy-tabix.

RANGES: r_ktokd FOR kna1-ktokd,

r_mcod1 FOR kna1-name1,

r_sortl FOR kna1-sortl,

r_kunnr FOR kna1-kunnr,

r_ort01 FOR kna1-ort01.

-

-


END OF INCLUDE LZSHLPTOP -

-


-

-


BEGIN OF FUNCTION MODULE Z_CUSTOM_SEARCH -

-


FUNCTION z_custom_search.

*"----

-


""Local interface:

*" TABLES

*" SHLP_TAB TYPE SHLP_DESCR_TAB_T

*" RECORD_TAB STRUCTURE SEAHLPRES

*" CHANGING

*" VALUE(SHLP) TYPE SHLP_DESCR_T

*" VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL

*"----

-


  • EXIT immediately, if you do not want to handle this step

CASE callcontrol-step.

*"----

-


  • STEP SELECT (Select values)

*"----

-


  • This step may be used to overtake the data selection completely.

  • To skip the standard seletion, you should return 'DISP' as following

  • step in CALLCONTROL-STEP.

  • Normally RECORD_TAB should be filled after this step.

Enhancing a Standard Search Help

© 2005 SAP AG The SAP Developer Network: http://sdn.sap.com 13

WHEN 'SELECT'.

  • Change column header texts appearing on the search help hit list

LOOP AT shlp-fielddescr INTO wa_fielddescr.

v_tabix = sy-tabix.

CASE wa_fielddescr-fieldname.

WHEN 'KUNNR'.

wa_fielddescr-fieldtext = 'ShipToCustomer#'.

wa_fielddescr-reptext = 'ShipToCustomer#'.

wa_fielddescr-scrtext_s = 'ShipTo #'.

wa_fielddescr-scrtext_m = 'ShipToCustomer#'.

wa_fielddescr-scrtext_l = 'ShipToCustomer#'.

MODIFY shlp-fielddescr FROM wa_fielddescr

INDEX v_tabix TRANSPORTING fieldtext reptext scrtext_s

scrtext_m scrtext_l.

WHEN 'KUNN2'.

wa_fielddescr-reptext = 'BillToCustomer#'.

wa_fielddescr-fieldtext = 'BillToCustomer#'.

wa_fielddescr-scrtext_s = 'BillTo #'.

wa_fielddescr-scrtext_m = 'BillToCustomer #'.

wa_fielddescr-scrtext_l = 'BillToCustomer #'.

MODIFY shlp-fielddescr FROM wa_fielddescr

INDEX v_tabix TRANSPORTING fieldtext reptext scrtext_s

scrtext_m scrtext_l.

WHEN 'NAME1'.

wa_fielddescr-fieldtext = 'ShipToCustomer Name'.

wa_fielddescr-reptext = 'ShipToCustomer Name'.

wa_fielddescr-scrtext_s = 'ShipTo Name'.

wa_fielddescr-scrtext_m = 'ShipToCustomer Name'.

wa_fielddescr-scrtext_l = 'ShipToCustomer Name'.

MODIFY shlp-fielddescr FROM wa_fielddescr

INDEX v_tabix TRANSPORTING fieldtext reptext scrtext_s

scrtext_m scrtext_l.

ENDCASE.

ENDLOOP.

  • Select the Bill to party customer based on the select options

FREE: r_ktokd, r_kunnr, r_sortl, r_mcod1, r_ort01, i_knvp.

LOOP AT shlp-selopt INTO wa_selopt.

  • Build a Range for the 5 selection options of the search help

CASE wa_selopt-shlpfield.

WHEN 'KTOKD'.

r_ktokd-sign = wa_selopt-sign.

r_ktokd-option = wa_selopt-option.

r_ktokd-low = wa_selopt-low.

r_ktokd-high = wa_selopt-high.

Enhancing a Standard Search Help

© 2005 SAP AG The SAP Developer Network: http://sdn.sap.com 14

APPEND r_ktokd.

CLEAR r_ktokd.

WHEN 'KUNNR'.

r_kunnr-sign = wa_selopt-sign.

r_kunnr-option = wa_selopt-option.

r_kunnr-low = wa_selopt-low.

r_kunnr-high = wa_selopt-high.

APPEND r_kunnr.

CLEAR r_kunnr.

WHEN 'SORTL'.

r_sortl-sign = wa_selopt-sign.

r_sortl-option = wa_selopt-option.

r_sortl-low = wa_selopt-low.

r_sortl-high = wa_selopt-high.

APPEND r_sortl.

CLEAR r_sortl.

WHEN 'MCOD1'.

r_mcod1-sign = wa_selopt-sign.

r_mcod1-option = wa_selopt-option.

r_mcod1-low = wa_selopt-low.

r_mcod1-high = wa_selopt-high.

APPEND r_mcod1.

CLEAR r_mcod1.

WHEN 'ORT01'.

r_ort01-sign = wa_selopt-sign.

r_ort01-option = wa_selopt-option.

r_ort01-low = wa_selopt-low.

r_ort01-high = wa_selopt-high.

APPEND r_ort01.

CLEAR r_ort01.

ENDCASE.

ENDLOOP.

  • Retrieve data from KNVP table for the above selected ranges

  • Doing query to retrieve data for the search help

SELECT knvp~kunnr

kna1~name1

kna1~ort01

kna1~stras

knvp~kunn2

INTO TABLE i_knvp

FROM knvp

INNER JOIN kna1

ON knvpkunnr = kna1kunnr

WHERE

knvp~parvw = 'RE' AND " Bill to Party

knvp~kunnr IN r_kunnr AND

kna1~ktokd IN r_ktokd AND

kna1~sortl IN r_sortl AND

kna1~mcod1 IN r_mcod1 AND

kna1~ort01 IN r_ort01.

Enhancing a Standard Search Help

© 2005 SAP AG The SAP Developer Network: http://sdn.sap.com 15

CHECK sy-subrc = 0.

DELETE ADJACENT DUPLICATES FROM i_knvp.

  • Select the short text for kunn2 from kna1.

  • Move all the selected records to Record_Tab

LOOP AT i_knvp INTO wa_knvp.

v_tabix = sy-tabix.

SELECT SINGLE name1 FROM kna1

INTO wa_knvp-name1_2

WHERE kunnr = wa_knvp-kunnr.

MOVE wa_knvp TO record_tab-string.

APPEND record_tab.

CLEAR record_tab.

MODIFY i_knvp FROM wa_knvp INDEX v_tabix.

CLEAR wa_knvp.

ENDLOOP.

rc = 0.

IF rc = 0.

callcontrol-step = 'DISP'.

ELSE.

callcontrol-step = 'EXIT'.

ENDIF.

EXIT. "Don't process STEP DISP additionally in this call.

WHEN 'PRESEL1'.

WHEN 'DISP'.

WHEN OTHERS.

ENDCASE.

ENDFUNCTION.

-

-


END OF FUNCTION MODULE Z_CUSTOM_SEARCH -

-


-

-


END OF CODE SAMPLE -

-


Save and activate at every step.

Enhancing a Standard Search Help

© 2005 SAP AG The SAP Developer Network: http://sdn.sap.com

Output Result

1) After doing all of the above steps, its time to see the output! Go to transaction VA01, enter details like

Order Type and hit ‘Enter’ to go to the second screen. Place cursor on the Ship-to party field at the header

section and hit ‘F4’. The last tab shows our custom search help ‘Custom Bill To Search’.

16

Enhancing a Standard Search Help

© 2005 SAP AG The SAP Developer Network: http://sdn.sap.com

2) Enter restriction values and hit enter to see the hit list result

3) Double clicking on any line, will bring back the value to the screen as seen below:

17

Enhancing a Standard Search Help

Conclusion

From the above example, we are able to filter based on the selection fields, change the column headers’ text

appearing on the hit list and content of internal table RECORD_TAB, the contents of which are shown on the

hit list. As you can see, the search help exit is a powerful feature that greatly enhances the whole search help

functionality and makes life easier for business. You can do this for any standard SAP search help which will

reflect across all transactions which use that search help, thus making it global.

.

Please reward if useful.

Read only

Former Member
0 Likes
1,594

use event AT SELECTION-SCREEN ON VALUE REQUEST FOR s-matnr. (ur field name) -

demo code -

REPORT ZGILL_VALUE_REQUEST .

data: begin of lt_all occurs 0.

include structure DYNPREAD.

data end of lt_all.

data: begin of lt_selected occurs 0.

include structure DDSHRETVAL.

data: end of lt_selected.

DATA: BEGIN OF lt_code OCCURS 0,

code LIKE zgill_main-PERNR,

END OF lt_code.

data no_dyn like sy-dynnr.

Parameters : ECODE like zgill_main-PERNR.

*parameters: pernr like pa0001-pernr .

no_dyn = sy-dynnr. "give the scren no directly or sy-dynnr in case of report.

At selection-screen on value-request for ECODE.

select PERNR into table lt_code from zgill_main.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'ECODE'

dynpprog = sy-repid

dynpnr = no_dyn

dynprofield = 'ECODE'

window_title = 'Employee Details'

value_org = 'S'

DISPLAY = 'F'

TABLES

value_tab = lt_code

RETURN_TAB = lt_selected.

  • EXCEPTIONS

  • PARAMETER_ERROR = 1

  • NO_VALUES_FOUND = 2

  • OTHERS = 3

*if sy-subrc eq '0' .

  • write: 'success'.

*endif.

read table lt_selected index sy-tabix.

move lt_selected-fieldval to ECODE.

Read only

Former Member
0 Likes
1,595

Hi,

Create a search help and in 'Selection Method' enter the table name from which you need the values.

'Dialog TYpe' = Display values immediately, in searche help parameter enter the fields you want, against the WERKS field which you have defined, in the default value give the standard parameter id 'WRK' (for werks).

Regards

Subramanian

Read only

Former Member
0 Likes
1,594

Hi,

This is not a report. Its a normal program. I just need to put a restriction to the number of results shown from the search help depending on a screen field.

Any comments on how to do this?

Thanks

Lilan

Read only

sreeramkumar_madisetty
Active Contributor
0 Likes
1,594

Hi

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_field-low.

PERFORM search_help_fieldname .

FORM search_help_field .

DATA: BEGIN OF itab_field OCCURS 0,

required fields.

END OF itab_field.

Selection query for HitList.(Which values you want to show in the Search Help)

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'fieldname'

dynpprog = sy-repid

dynpnr = sy-dynnr

dynprofield = 'S_field'

value_org = 'S'

TABLES

value_tab = itab_field

return_tab = t_return

EXCEPTIONS

parameter_error = 1

no_values_found = 2

OTHERS = 3.

IF sy-subrc EQ 0.

READ TABLE itab_charg INDEX 1. "transporting field

IF sy-subrc EQ 0.

MOVE itab_field-fieldTO s_field-low.

ENDIF.

ENDIF.

ENDFORM.

In this way we can handle the Search Help.

Regards,

kumar

Read only

Former Member
0 Likes
1,594

Hi Lilan ,

If you want to filter the data based in your input you will then have to use SERACH HELP exit ,

Regards

Arun

Read only

0 Likes
1,594

Hi,

I have no knowledge about how to create the Search Help Exit.

Lilan