目录

ABAP-选择屏幕-搜索帮助

ABAP 选择屏幕 搜索帮助

1. 使用搜索帮助遇到的问题

通过 F4IF_INT_TABLE_VALUE_REQUES T函数实现的搜索帮助,有一个问题,无法将选择屏幕的其他字段带入到选择帮助的限制部分,这个问题折腾了两个小时才搞定,所以记录一下(这里也有一个退而求其次的方案,就是将其他字段的限制写在F4IF_INT_TABLE_VALUE_REQUES选择值表的select中)

https://i-blog.csdnimg.cn/blog_migrate/56dcda8841e97f1596c7918142ce02f3.png

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zzbbh-low.
  SELECT zzbbh zsegment uname datum INTO CORRESPONDING FIELDS OF TABLE gt_sel_zzbbh FROM zppt007.

  SORT gt_sel_zzbbh BY zzbbh.
  DELETE ADJACENT DUPLICATES FROM gt_sel_zzbbh COMPARING ALL FIELDS.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
 1.     DDIC_STRUCTURE   = ' '
      retfield         = 'ZZBBH'
 2.     PVALKEY          = ' '
      dynpprog         = sy-repid
      dynpnr           = sy-dynnr
      dynprofield      = 'S_ZZBBH-LOW'
 3.     STEPL            = 0
 4.     WINDOW_TITLE     =
 5.     VALUE            = ' '
      value_org        = 'S'
 6.     MULTIPLE_CHOICE  = ' '
 7.     DISPLAY          = ' '
      callback_program = sy-repid
      callback_form    = 'CM_FORM'
 8.     CALLBACK_METHOD  =
 9.     MARK_TAB         =
    IMPORTING
      user_reset       = answer
    TABLES
      value_tab        = gt_sel_zzbbh
 10.     FIELD_TAB        =
      return_tab       = out_cassd
 11.     DYNPFLD_MAPPING  =
    EXCEPTIONS
      parameter_error  = 1
      no_values_found  = 2
      OTHERS           = 3.

2. 实现步骤

2.1. 通过T-CODE SE11建立搜索帮助

https://i-blog.csdnimg.cn/blog_migrate/fe6f84c858c0f9d3ea71046f909bea03.png

2.2 搜索帮助说明

  1. 选择方法

    指定命中列表的数据来源,可以是数据库表,视图,CDS.如果指定了搜索帮助出口函数则该字段可以不输,数据来源可以在出口中自行指定

  2. 对话类型: 输入字段的建议搜索

  • 立即值显示: 在调用输入帮助后立即显示命中清单,通常如果命中清单只包含一些条目则建议使用该选项。
  • 带有值限制的对话:立即显示限制值的对话框。如果正常情况下可能条目的清单非常大,则选择该选项。限制即将处理的数据设置会增加命中清单的清楚性,并降低值选择过程中系统的负载。
  • 基于值集的对话:如果命中清单包含的条目小于100个,那么立即显示该命中清单。如果其包含的条目多余100个,那么显示限制值用的对话框。
  1. 对话类型: 输入字段的建议搜索

    输入字段的建议搜索帮助:如果勾选该字段则不需要调用搜索帮助,在输入字段中直接输入与该字段同名的搜索帮助的输入参数的值,系统会根据你输入的内容在下方显示筛选结果.不过只有数据源内容较少时建议使用.

  2. 搜索帮助出口:此处需要填写一个和函数模块 F4IF_SHLP_EXIT_EXAMPLE有一样的参数.使用出口函数可以使搜索帮助更加灵活,这个暂时还没用到.

  3. 搜索帮助参数:如果指定了选择方法,则参数必须是选择方法中的字段.如果使用了出口函数,则随意,但是要指定参数的数据元素

  4. IMP:该参数是否为输入参数,用来筛选命中列表

  5. EXP:该字段是否为输出参数,用来赋值给使用该搜索帮助的输入字段.

  6. LPOS列表:该参数字段在命中列表的位置

  7. SPOS选择列表:该字段在选择屏幕中位置

  8. SDIS选择显示:该参数字段在选择屏幕中仅显示,不可编辑,如果该字段被勾选,则必须指定该参数字段的默认值

  9. 参数字段对应的数据元素,必输项.

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

说明:数据元素绑定字段的时候需要一个一个绑定

https://i-blog.csdnimg.cn/blog_migrate/612829921c3525e1aa0db42793229a87.png

https://i-blog.csdnimg.cn/blog_migrate/9514c1b9bc63a2f4968f47ec781b19fa.png

2.4 创建搜索屏幕

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS: p_syb TYPE zppt007-zsegment OBLIGATORY MATCHCODE OBJECT zsh_md61_syb,
            p_uname TYPE zppt007-uname OBLIGATORY.

SELECT-OPTIONS: s_zzbbh FOR zppt007-zzbbh NO-EXTENSION NO INTERVALS OBLIGATORY,
                s_datum FOR zppt007-datum NO-EXTENSION NO INTERVALS.

SELECTION-SCREEN END OF BLOCK b1.

2.3 实现效果

a. 屏幕上填写的字段会带入到搜索帮助的限制中

b. 选择屏幕选中的数据也会带到选择屏幕中

https://i-blog.csdnimg.cn/blog_migrate/4a94f528c9bcc168a4480eea8e7d8690.png