SAP ABAP Custom Search Help (CL_GUI_ALV_GRID)

SAP ABAP Custom Search Help (CL_GUI_ALV_GRID)

Published
2014년 01월 03일
생성자
카테고리
SAP
태그
abap
search help
SAP
cl_gui_alv_grip
Event Handler
하위 카테고리
ABAP
ALV Grid 화면에서, 실제 코딩을 통해 Search Help를 만드는 소스코드를 공유합니다.

1. fieldcatalog 추가

Edit/f4availabl = 'X'

2. Event Definition

CLASS lcl_event_handler DEFINITION . PUBLIC SECTION . METHODS: .... .... on_f4 FOR EVENT onf4 OF cl_gui_alv_grid IMPORTING e_fieldname es_row_no er_event_data et_bad_cells e_display. .... ENDCLASS.

3. Set Event Handler

DATA: go_event_receiver TYPE REF TO lcl_def_receiver. CALL METHOD go_grid->register_edit_event EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_modified. CALL METHOD go_grid->register_edit_event EXPORTING    i_event_id = cl_gui_alv_grid=>mc_evt_enter. * Event Handler 등록 CREATE OBJECT go_event_receiver. SET HANDLER : go_event_receiver->handle_on_f4_1st FOR go_grid. PERFORM register_f4_fields.    "set cells with search help FORM register_f4_fields .   DATA: lt_f4      TYPE lvc_t_f4 WITH HEADER LINE.   DATA: lt_f4_data TYPE lvc_s_f4.   lt_f4_data-fieldname = 'REPGROUP'. <--- Search Help 대상 Itab Field.   lt_f4_data-register = 'X' . *  lt_f4_data-getbefore = 'X' .   lt_f4_data-chngeafter  ='X'.   INSERT lt_f4_data INTO TABLE lt_f4.   CALL METHOD go_grid->register_f4_for_fields     EXPORTING       it_f4 = lt_f4[]. ENDFORM.                    " REGISTER_F4_FIELDS

4. Implementation

    METHOD handle_on_f4_1st.     PERFORM handle_on_f4_1st_part USING e_fieldname                                         e_fieldvalue                                         es_row_no                                         er_event_data                                         et_bad_cells                                         e_display. FORM handle_on_f4_1st_part  USING pv_fieldname                                   pv_fieldvalue                                   ps_row_no     STRUCTURE lvc_s_roid                                   po_event_data TYPE REF TO cl_alv_event_data                                   pt_bad_cells  "STRUCTURE lvc_s_modi                                   p_e_display.   DATA: BEGIN OF lt_rep OCCURS 0,         repgroup  TYPE za_auth_rg,         rg_name   TYPE zb_rgname,         infoarea  TYPE zb_infoarea,         txtlg     TYPE zb_infoareatx,         recommand TYPE zb_recomd,         END OF lt_rep.   DATA: lt_return  TYPE TABLE OF ddshretval WITH HEADER LINE.   DATA: lv_infoarea TYPE zb_infoarea.   CASE pv_fieldname.     WHEN 'REPGROUP'.       READ TABLE gt_disp INDEX ps_row_no-row_id.       CLEAR: lt_rep, lt_rep[].       SELECT a~rg AS repgroup a~rg_text AS rg_name b~infoarea              c~txtlg         FROM zta0bipc3130 AS a INNER JOIN zta0bipc3131 AS b           ON a~rg = b~rg INNER JOIN rsdareat AS c           ON b~infoarea = c~infoarea         INTO CORRESPONDING FIELDS OF TABLE lt_rep        WHERE a~langu   = sy-langu          AND a~del     = ' '          AND b~del     = ' '          AND c~langu   = sy-langu          AND c~objvers = c_a.       LOOP AT lt_rep.         SELECT SINGLE infoarea FROM zta0bipc3520           INTO lv_infoarea          WHERE pgmid    = gt_disp-pgmid            AND bocuid   = gt_disp-bocuid            AND queryid  = gt_disp-queryid            AND infoarea = lt_rep-infoarea.         IF sy-subrc = 0.           lt_rep-recommand = '○'.         ENDIF.         MODIFY lt_rep INDEX sy-tabix TRANSPORTING recommand.       ENDLOOP.       SORT lt_rep DESCENDING BY recommand."ASCENDING repgroup infoarea .       CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'         EXPORTING           retfield        = 'REPGROUP'           value_org       = 'S'         TABLES           value_tab       = lt_rep           return_tab      = lt_return         EXCEPTIONS           parameter_error = 1           no_values_found = 2           OTHERS          = 3.       READ TABLE lt_return INDEX 1.       IF sy-subrc = 0.         gt_disp-repgroup = lt_return-fieldval.       ENDIF.   ENDCASE.  " CASE pv_fieldname. CALL METHOD go_grid->refresh_table_display.
(on_f4 Event 사용시, alv_changed Event는 미발생!)
참고 : 바로가기

댓글

guest