se11創建基本搜索幫助時,各個參數的含意
- 選擇方法 指定命中列表的數據來源,可以是數據庫表,視圖,CDS.如果指定了搜索幫助出口函數則該字段可以不輸,數據來源可以在出口中自行指定
- 對話類型: 輸入字段的建議搜索:
- 立即值顯示: 在調用輸入幫助后立即顯示命中清單,通常如果命中清單只包含一些條目則建議使用該選項。
- 帶有值限制的對話:立即顯示限制值的對話框。如果正常情況下可能條目的清單非常大,則選擇該選項。限制即將處理的數據設置會增加命中清單的清楚性,並降低值選擇過程中系統的負載。
- 基於值集的對話:如果命中清單包含的條目小於100個,那么立即顯示該命中清單。如果其包含的條目多余100個,那么顯示限制值用的對話框。
- 輸入字段的建議搜索幫助:如果勾選該字段則不需要調用搜索幫助,在輸入字段中直接輸入與該字段同名的搜索幫助的輸入參數的值,系統會根據你輸入的內容在下方顯示篩選結果.不過只有數據源內容較少時建議使用.
-
- 多列全文搜索(數據庫特定):可以在輸入字段中輸入與搜索幫助所有選擇參數相關的內容,系統會進行全文搜索,並將結果顯示在輸入字段下方.精確度值:此值范圍在 0.1 至 1 之間。系統中定義的標准值為 0.8。值 0.1 表示搜索查詢允許的最大錯誤容差。1 表示搜索必須提供精確匹配。換言之,該值越小,搜索中能夠容忍且之后顯示在結果中的差異越大。
-
- 搜索幫助出口:此處需要填寫一個和函數模塊 F4IF_SHLP_EXIT_EXAMPLE有一樣的參數.使用出口函數可以使搜索幫助更加靈活,具體用法稍后說明
- 搜索幫助參數:如果指定了選擇方法,則參數必須是選擇方法中的字段.如果使用了出口函數,則隨意,但是要指定參數的數據元素
- IMP:該參數是否為輸入參數,用來篩選命中列表
- EXP:該字段是否為輸出參數,用來賦值給使用該搜索幫助的輸入字段.
- LPOS列表:該參數字段在命中列表的位置
- SPOS選擇列表:該字段在選擇屏幕中位置
- SDIS選擇顯示:該參數字段在選擇屏幕中僅顯示,不可編輯,如果該字段被勾選,則必須指定該參數字段的默認值
- 參數字段對應的數據元素,必輸項.
- modifyed 該字段被修改則可以調整參數字段對應的數據元素,但調整的數據元素的數據類型和長度要和選擇方法中的數據元素相同.主要用了決定參數字段在命中列表和選擇列表中的字段名稱
- 缺省值:
- a) 包含在省略號(')中的常數,該常數必須在參量的內部表示中指定,參量的數據類型有一個編輯屏蔽(例如日期和時間)。例如日期1998年3月1日必須定義為 '19980301'。
- b) 系統字段。這是DDIC結構SYST的字段,其中前綴SY- 可用來代替前綴 SYST-。
- c)GET 參數的標識。
表或者結構綁定搜索幫助及字段分配與聯動搜索幫助
- 建立如下搜索幫助
- 將搜索幫助綁定到自定義機構或者表的字段上
-
以上完成了搜索幫助的綁定及字段分配,
- 定義以下選擇屏幕,或者在自定義屏幕中參照結構創建輸入字段.
-
PARAMETERS p_werks TYPE zstest-werks . PARAMETERS p_lgort TYPE zstest-lgort. PARAMETERS p_lgobe TYPE zstest-lgobe .
- 提前輸入工廠字段的值,對庫存地點使用搜索幫助時,工廠字段會自動帶入的輸入參數werks中,選擇命中列表的條目后,會同時填寫庫存地點及庫存地點描述字段.
- 以上就實現了輸入參數的聯動及選擇結果填充多個字段.聯動搜索幫助
搜索幫助出口的用法
- 搜索幫助出口可以使得搜索幫助更加的靈活
- 搜索幫助出口函數要求和系統函數F4IF_SHLP_EXIT_EXAMPLE具有相同的參數.
- 復制函數F4IF_SHLP_EXIT_EXAMPLE到自定義的函數,參照F4IF_SHLP_EXIT_EXAMPLE的代碼根據需求完成自定義函數的代碼
- 搜索幫助出口函數各個參數的含義
-
- SHLP現在使用的搜索幫助相關信息:參數字段,產生字段描述,輸入字段選擇條件等
- CALLCONTROL:搜索幫助流程控制
- SHLP_TAB:集合幫助下的所有簡單搜索幫助相關信息
- RECORD_TAB:命中清單
搜索幫助增強出口使用方法
*"*"本地接口: *" TABLES *" SHLP_TAB TYPE SHLP_DESCT *" RECORD_TAB STRUCTURE SEAHLPRES *" CHANGING *" VALUE(SHLP) TYPE SHLP_DESCR *" VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL *"---------------------------------------------------------------------- * EXIT immediately, if you do not want to handle this step IF callcontrol-step <> 'SELONE' AND callcontrol-step <> 'SELECT' AND " AND SO ON callcontrol-step <> 'DISP'. EXIT. ENDIF. *"---------------------------------------------------------------------- * STEP SELONE (Select one of the elementary searchhelps) *"---------------------------------------------------------------------- * This step is only called for collective searchhelps. It may be used * to reduce the amount of elementary searchhelps given in SHLP_TAB. * The compound searchhelp is given in SHLP. * If you do not change CALLCONTROL-STEP, the next step is the * dialog, to select one of the elementary searchhelps. * If you want to skip this dialog, you have to return the selected * elementary searchhelp in SHLP and to change CALLCONTROL-STEP to * either to 'PRESEL' or to 'SELECT'. IF callcontrol-step = 'SELONE'. * PERFORM SELONE ......... EXIT. ENDIF. *"---------------------------------------------------------------------- * STEP PRESEL (Enter selection conditions) *"---------------------------------------------------------------------- * This step allows you, to influence the selection conditions either * before they are displayed or in order to skip the dialog completely. * If you want to skip the dialog, you should change CALLCONTROL-STEP * to 'SELECT'. * Normaly only SHLP-SELOPT should be changed in this step. IF callcontrol-step = 'PRESEL'. * PERFORM PRESEL .......... EXIT. ENDIF. *"---------------------------------------------------------------------- * 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. * Standard function module F4UT_RESULTS_MAP may be very helpfull in this * step. IF callcontrol-step = 'SELECT'. IF sy-uname = 'PLM-SEAN'. BREAK-POINT. ENDIF. "RECORD_TAB表的string字段里邊包含了三位的空位及按照搜索幫助輸出字段位置lpos順序排列的各個輸出字段的合並 SELECT FROM t001l FIELDS concat( concat( concat( mandt ,werks ), lgort ),lgobe ) AS string INTO TABLE @record_tab. SELECT * FROM t001l INTO TABLE @DATA(lt_t001l). "也可以使用系統標准函數F4UT_RESULTS_MAP將源數據綁定到recordtab CALL FUNCTION 'F4UT_RESULTS_MAP' * EXPORTING * SOURCE_STRUCTURE = * APPLY_RESTRICTIONS = ' ' TABLES shlp_tab = shlp_tab record_tab = record_tab source_tab = lt_t001l CHANGING shlp = shlp callcontrol = callcontrol * EXCEPTIONS * ILLEGAL_STRUCTURE = 1 * OTHERS = 2 . IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. callcontrol-step = 'DISP'. * IF RC = 0. * CALLCONTROL-STEP = 'DISP'. * ELSE. * CALLCONTROL-STEP = 'EXIT'. * ENDIF. EXIT. "Don't process STEP DISP additionally in this call. ENDIF. *"---------------------------------------------------------------------- * STEP DISP (Display values) *"---------------------------------------------------------------------- * This step is called, before the selected data is displayed. * You can e.g. modify or reduce the data in RECORD_TAB * according to the users authority. * If you want to get the standard display dialog afterwards, you * should not change CALLCONTROL-STEP. * If you want to overtake the dialog on you own, you must return * the following values in CALLCONTROL-STEP: * - "RETURN" if one line was selected. The selected line must be * the only record left in RECORD_TAB. The corresponding fields of * this line are entered into the screen. * - "EXIT" if the values request should be aborted * - "PRESEL" if you want to return to the selection dialog * Standard function modules F4UT_PARAMETER_VALUE_GET and * F4UT_PARAMETER_RESULTS_PUT may be very helpfull in this step. IF callcontrol-step = 'DISP'. * PERFORM AUTHORITY_CHECK TABLES RECORD_TAB SHLP_TAB * CHANGING SHLP CALLCONTROL. EXIT. ENDIF.