https://zhidao.baidu.com/question/446436722.html
第一種辦法:對表中某字段的引用,設置ref_table、ref_field,將自動觸發該字段所帶的搜索幫助。
第二種辦法:就是利用自定義代碼來實現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事件。
4、然后我們為其指定事件處理類(假設go_evt_receiver是自定義事件處理類的一個對象):
CREATE OBJECT go_evt_receiver.
SET HANDLER go_evt_receiver->handle_onf4 FOR go_alv_grid.