ALV自定义搜索
来源:互联网 发布:知行论坛 编辑:程序博客网 时间:2024/06/02 02:48
ABAP:ALV中自定义搜索帮助
如果希望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
阅读全文
0 0
- ALV自定义搜索
- ABAP:ALV中自定义搜索帮助
- abap:alv (oo)自定义搜索帮助
- ALV通过F4事件,实现自定义搜索帮助F4
- ALV自定义工具栏按钮
- 自定义输出字段ALV实例
- ALV响应自定义function code
- ALV控件的简单案例之二:自定义ALV…
- ALV OO: 最简单的ALV OO实例-自定义容器
- FUN ALV TOOLBAR 增加自定义按钮
- FUN ALV TOOLBAR 增加自定义按钮
- ALV
- alv
- ALV
- alv
- 在ALV中添加搜索帮助并返回多列值
- ABAP--通过自定义类使用ALV(相应事件)的代码
- ABAP--通过自定义类使用ALV(相应事件)的代码
- Java开发达人必备的11个技术网站
- PAT乙级1056. 组合数的和(15)
- 用户鼠标点击屏幕一个链接后发生了什么
- c语言文本文件操作
- CPU 与 GPU 的介绍
- ALV自定义搜索
- 1069: 向Z同学学习
- 序列的获取
- 一位资深程序员大牛给予Java初学者的学习路线建议
- leetcode 37. Sudoku Solver
- CodeForces 133 A.HQ9+(水~)
- 在ubuntu中更新cmake与curl
- Spring MVC
- tablayout头部