ABAP 选择屏幕 搜索帮助

本文详细讲述了如何在使用F4IF_INT_TABLE_VALUE_REQUEST进行搜索帮助时,遇到的问题及解决过程,包括如何将选择屏幕字段带入限制,以及搜索帮助的实现步骤、表绑定和对话类型设置。重点在于实现屏幕联动和搜索条件的传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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建立搜索帮助

在这里插入图片描述

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 表或者结构绑定搜索帮助及字段分配与联动搜索帮助

说明:数据元素绑定字段的时候需要一个一个绑定
在这里插入图片描述
在这里插入图片描述

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. 选择屏幕选中的数据也会带到选择屏幕中
在这里插入图片描述

ABAP中的自定义屏幕搜索帮助可以从字典中获得。 在ABAP中,字典是一个用于管理和维护数据库对象的中心存储库。字典是一种集成的数据结构,可以用于存储表、视图、数据元素、域和其他数据库对象的定义。 要创建自定义屏幕搜索帮助,我们首先需要在字典中创建一个数据元素。数据元素定义了一个可重用的数据类型,可以用于在屏幕对话框中输入、输出和处理数据。在创建数据元素时,我们需要指定其数据类型、长度和其他属性。 接下来,在字典中创建一个域。域是数据元素的基本单位,它定义了一个数据元素的具体值范围、输入帮助和默认值等。在域定义中,我们可以指定一个搜索帮助,该搜索帮助将在屏幕对话框中提供数据输入帮助。 创建菜单路径:工具->ABAP字典,在打开的字典事务中,选择创建和编辑数据元素(SE11)。在创建数据元素时,我们可以指定数据类型(如CHAR、STRING、NUMC等)、长度、小数点位数和其他属性。 创建数据元素后,我们可以选择创建和编辑域(SE11)。在域定义中,我们可以指定值范围、输入帮助和默认值等。在输入帮助选项中,我们可以选择一个搜索帮助程序,该程序将在屏幕对话框中提供数据输入帮助。 通过将搜索帮助与数据元素和域相结合,我们可以在ABAP屏幕对话框中实现自定义屏幕搜索帮助。当用户在屏幕上输入数据时,他们可以通过搜索帮助选择合适的值,并将其自动填充到相关字段中。 总之,ABAP中的自定义屏幕搜索帮助可以通过在字典中创建数据元素和域来实现。通过指定搜索帮助程序,我们可以在屏幕对话框中为用户提供数据输入帮助,并提高数据输入的准确性和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值