https://zhidao.baidu.com/question/446436722.html html
第一種辦法:對錶中某字段的引用,設置ref_table、ref_field,將自動觸發該字段所帶的搜索幫助。
第二種辦法:就是利用自定義代碼來實現ALV的搜索幫助,顯然它的功能更強大、更靈活。針對在OO ALV中實現搜索幫助,
其主要步驟有:
一、在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。
二、那就是對須要自定義搜索幫助的字段,設置其field catalog時:
ls_fieldcat-f4availabl = 'X'.
三、在建立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.ui