如果希望ALV中某字段具有搜索帮助,第一种办法当然是对表中某字段的引用,设置ref_table、ref_field,将自动触发该字段所带的搜索帮助。
可不可以直接设置Searh Help呢?应该不可以,找遍了field catalog的结构也没发现有可以设置的字段。
第二种办法就是利用自定义代码来实现ALV的搜索帮助,显然它的功能更强大、更灵活。针对在OO ALV中实现搜索帮助,其主要步骤有:
1,在ALV的事件处理类中添加个Method,其DEFINITION如下:
handle_onf4 FOR EVENT onf4 OF cl_gui_alv_grid
      IMPORTING e_fieldname es_row_no er_event_data.
其IMPLEMENTATION中就是我们希望执行的代码,用来弹出可选择对话框。e_fieldname代表用户点击了ALV的哪个字段来触发搜索帮助,es_row_no代表了当前行信息,
es_row_no-row_id就是ALV中内表记录的INDEX。er_event_data代表了当前用户对ALV进行了哪些编辑的信息。在Method的最后,记得加上
er_event_data->m_event_handled = 'X'.
通知系统搜索事件处理完毕,这样就不会调用系统标准的Search Help。
2,那就是对需要自定义搜索帮助的字段,设置其field catalog时:
ls_fieldcat-f4availabl = 'X'.
这一步往往容易被忽略。
3,在创建ALV对象之后,要对需要自定义搜索帮助的字段进行注册。
DATA: lt_f4 TYPE lvc_t_f4 WITH HEADER LINE.
CLEAR lt_f4.
    lt_f4-fieldname = 'FIELD_NAME'.
    lt_f4-register = 'X'.
    lt_f4-chngeafter = 'X'.
    APPEND lt_f4.
    CALL METHOD mygrid->register_f4_for_fields
      EXPORTING
        it_f4 = lt_f4[].
lvc_s_f4中的字段getbefore和changeafter应该代表是否触发data_changed事件。
然后我们为其指定事件处理类(假设go_evt_receiver是自定义事件处理类的一个对象):
CREATE OBJECT go_evt_receiver.
SET HANDLER go_evt_receiver->handle_onf4 FOR go_alv_grid.
至此,主要的设置步骤都介绍完毕。
下面贴一段Handle_onf4的代码供参考:
METHOD handle_onf4.
    DATA: ls_modi TYPE lvc_s_modi,
lt_ret_tab TYPE TABLE OF ddshretval WITH HEADER LINE.
FIELD-SYMBOLS <modtab> TYPE lvc_t_modi.
IF e_fieldname = 'FIELD_NAME'. "我们自定义搜索的字段名
      READ TABLE gt_alv_data INDEX es_row_no-row_id.
      CHECK sy-subrc = 0.
**  这里可以添加代码以对lt_hitlist内表进行填充
      CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
        EXPORTING
          retfield        = 'HIT_FIELD'
          value_org       = 'S'
        TABLES
          value_tab       = lt_hitlist
          return_tab      = lt_ret_tab
        EXCEPTIONS
          parameter_error = 1
          no_values_found = 2
          OTHERS          = 3.
      IF sy-subrc = 0.
**  Update the value in ALV cell
        READ TABLE lt_ret_tab INDEX 1.
        IF sy-subrc = 0. " User didn't cancel
          ls_modi-row_id = es_row_no-row_id.
          ls_modi-fieldname = e_fieldname.
          ls_modi-value = lt_ret_tab-fieldval.
          ASSIGN er_event_data->m_data->* TO <modtab>.
          APPEND ls_modi TO <modtab>.
        ENDIF.
      ENDIF.
**  Inform ALV Grid that event 'onf4' has been processed
      er_event_data->m_event_handled = 'X'.
    ENDIF.
  ENDMETHOD.                    "handle_onf4

ABAP:ALV中自定义搜索帮助相关推荐

  1. ABAP ALV中自定义搜索帮助

    一.干货: 在fieldcat-ref_table 和 fieldcat-ref_field 填入参考表和参考字段,搜索帮助就自动出来了. 想要选择屏幕添加自定义搜索帮助-转到这里 ALV自定义搜索帮 ...

  2. 77 行代码实现 ABAP ALV 中的双击事件处理试读版

    零基础 ABAP 学习教程系列文章的目录 ABAP 标准培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍 ABAP 标准培训教程 BC400 学习笔记之二 ...

  3. ABAP ALV中的字段目录fieldcat_lvc

    ABAP ALV报表中fieldcat_lvc 我一般会用到的写fieldcat的方式有两种,第一种是用FORM 和 PERFORM的子程序调用方式,另一种是用宏. 1. FORM的方式写field_ ...

  4. ABAP ALV OO 自定义Toolbar 和Command及listmenu按钮

    ALV OO 自定义Toolbar 和Command及listmenu按钮 前言 OOALV容器 OOALV 工具栏 1.定义OO 对象及字段 2.OO ALV FIELDCAT 字段定义 3.定义类 ...

  5. 77 行代码实现 ABAP ALV 中的双击事件处理

    我们在 ALV 开发专题的第二步骤里,为 ALV 输出的数据行,增添了颜色显示的功能: ALV 开发专题 27 行代码开发一个最简单的 SAP ALV 报表 给 ABAP ALV 报表的数据行增添颜色 ...

  6. 如何在ABAP ALV中具体的控制每个格子中的编辑属性

    代码如下:具体说明参见红色说明(本例子是从订单明细提取两个字段的数据到内表) REPORT ZALV_EDIT. TYPE-POOLS: SLIS. *- Fieldcatalog DATA: IT_ ...

  7. SAP ABAP alv中设置回车事件

    * 添加这段刷新代码   READ TABLE t_data_hz INDEX rs_selfield-tabindex.    " 将变动内容更新到内表   DATA: lr_grid T ...

  8. abap alv中设置数量(QUAN)字段输出时不要有小数位

    注意在做数据编辑的时候,必须要找出要出力的数量(QUAN)字段 对应的单位字段(UNIT),然后对于此字段的fieldcat中设置: fieldcat-fieldname      =  QUAN(数 ...

  9. ABAP ALV 总结

    ABAP ALV 总结整理 目录 一.ALV简介 1.简介 2.ALV_GRID介绍 3.其它描述 二.开发ALV的基本流程 三.ALV相关开发细节 1.标准ALV与对象ALV的共同开发细节 2.标准 ...

最新文章

  1. js实现禁止右键 禁止f12 查看源代码
  2. 设计时数据源:在PostgreSql 数据查询中使用参数过滤
  3. Application ProvidedAar 完结篇
  4. 攻防世界-web-ics-04-从0到1的解题历程writeup
  5. Python基础语法学习整理
  6. 【Matlab】Matlab 读写TIFF图像
  7. java中拦截器 过滤器 监听器都有什么区别
  8. 三星数据被黑客泄露、罗马尼亚加油站网络遭勒索攻击|3月8日全球网络安全热点
  9. 作业(数组)---运行环境winTC(二)
  10. vc 写一个计算机功能,VC++的一个实例
  11. 解决 fxp/composer-asset-plugin 包报错问题
  12. android和ios手机换行,ios label中文与数字混合导致换行解决
  13. bilibili缓存文件在哪里_64G手机总提示空间不足?清理这4个文件夹,内存立马空出十几G...
  14. 常常反思,让你变成更好的自己
  15. Android的六大进程
  16. web前端培训靠谱吗,收费怎么样?
  17. CFG与PCFGs算法详解
  18. 关于 @EnableConfigurationProperties 注解
  19. php模拟登陆正方教务系统(2018年)
  20. 计算机事业单位结构化面试的专业题,事业单位结构化面试出题规律:组织活动类问题...

热门文章

  1. Webpack 4x 之路 ( 五 )
  2. NEO从源码分析看网络通信
  3. MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解
  4. VBA学习笔记(一):自动添加代码VBA修改注册表
  5. ESFramework介绍之(16)―― Tcp数据自动发送器ITcpAutoSender
  6. 由电脑黑屏问题引发的探讨计算机底层原理
  7. [阿里云Java Web环境搭建]二、Ubuntu安装JDK
  8. PXE自动化部署vsphere esxi6.5
  9. centos6.5安装maven
  10. 转:从零开始开发一款Android App (from 简书)