SAP基本搜索帮助及增强出口

se11创建基本搜索帮助时,各个参数的含意

  1. 选择方法   指定命中列表的数据来源,可以是数据库表,视图,CDS.如果指定了搜索帮助出口函数则该字段可以不输,数据来源可以在出口中自行指定
  2. 对话类型: 输入字段的建议搜索:
    1. 立即值显示: 在调用输入帮助后立即显示命中清单,通常如果命中清单只包含一些条目则建议使用该选项。
    2. 带有值限制的对话:立即显示限制值的对话框。如果正常情况下可能条目的清单非常大,则选择该选项。限制即将处理的数据设置会增加命中清单的清楚性,并降低值选择过程中系统的负载。
    3. 基于值集的对话:如果命中清单包含的条目小于100个,那么立即显示该命中清单。如果其包含的条目多余100个,那么显示限制值用的对话框。
  3. 输入字段的建议搜索帮助:如果勾选该字段则不需要调用搜索帮助,在输入字段中直接输入与该字段同名的搜索帮助的输入参数的值,系统会根据你输入的内容在下方显示筛选结果.不过只有数据源内容较少时建议使用.
      • 多列全文搜索(数据库特定):可以在输入字段中输入与搜索帮助所有选择参数相关的内容,系统会进行全文搜索,并将结果显示在输入字段下方.精确度值:此值范围在 0.1 至 1 之间。系统中定义的标准值为 0.8。值 0.1 表示搜索查询允许的最大错误容差。1 表示搜索必须提供精确匹配。换言之,该值越小,搜索中能够容忍且之后显示在结果中的差异越大。
  4. 搜索帮助出口:此处需要填写一个和函数模块 F4IF_SHLP_EXIT_EXAMPLE有一样的参数.使用出口函数可以使搜索帮助更加灵活,具体用法稍后说明
  5. 搜索帮助参数:如果指定了选择方法,则参数必须是选择方法中的字段.如果使用了出口函数,则随意,但是要指定参数的数据元素
  6. IMP:该参数是否为输入参数,用来筛选命中列表
  7. EXP:该字段是否为输出参数,用来赋值给使用该搜索帮助的输入字段.
  8. LPOS列表:该参数字段在命中列表的位置
  9. SPOS选择列表:该字段在选择屏幕中位置
  10. SDIS选择显示:该参数字段在选择屏幕中仅显示,不可编辑,如果该字段被勾选,则必须指定该参数字段的默认值
  11. 参数字段对应的数据元素,必输项.
  12. modifyed 该字段被修改则可以调整参数字段对应的数据元素,但调整的数据元素的数据类型和长度要和选择方法中的数据元素相同.主要用了决定参数字段在命中列表和选择列表中的字段名称
  13. 缺省值:
    • a) 包含在省略号(')中的常数,该常数必须在参量的内部表示中指定,参量的数据类型有一个编辑屏蔽(例如日期和时间)。例如日期1998年3月1日必须定义为 '19980301'。
    • b) 系统字段。这是DDIC结构SYST的字段,其中前缀SY- 可用来代替前缀 SYST-。
    • c)GET 参数的标识。

表或者结构绑定搜索帮助及字段分配与联动搜索帮助

  1. 建立如下搜索帮助
  2. 将搜索帮助绑定到自定义机构或者表的字段上
  3. 以上完成了搜索帮助的绑定及字段分配, 

  4. 定义以下选择屏幕,或者在自定义屏幕中参照结构创建输入字段.
  5. PARAMETERS p_werks TYPE zstest-werks .
    PARAMETERS p_lgort TYPE zstest-lgort.
    PARAMETERS p_lgobe TYPE zstest-lgobe .

     

  6. 提前输入工厂字段的值,对库存地点使用搜索帮助时,工厂字段会自动带入的输入参数werks中,选择命中列表的条目后,会同时填写库存地点及库存地点描述字段.
  7. 以上就实现了输入参数的联动及选择结果填充多个字段.联动搜索帮助

搜索帮助出口的用法

  1. 搜索帮助出口可以使得搜索帮助更加的灵活
  2. 搜索帮助出口函数要求和系统函数F4IF_SHLP_EXIT_EXAMPLE具有相同的参数.
  3. 复制函数F4IF_SHLP_EXIT_EXAMPLE到自定义的函数,参照F4IF_SHLP_EXIT_EXAMPLE的代码根据需求完成自定义函数的代码
  4. 搜索帮助出口函数各个参数的含义

    1. SHLP现在使用的搜索帮助相关信息:参数字段,产生字段描述,输入字段选择条件等
    2. CALLCONTROL:搜索帮助流程控制
    3. SHLP_TAB:集合帮助下的所有简单搜索帮助相关信息
    4. 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.

 

 

原文地址:https://www.cnblogs.com/weixiaopeng/p/seach_help.html