본문 바로가기

Abap

[ALV-Style] Alv 필드에 Button 만들기.

  FORM set_style .

  DATA ls_fieldcat TYPE lvc_s_fcat.
  DATA lt_cellstyle TYPE lvc_t_styl,
             ls_cellstyle TYPE lvc_s_styl.

  LOOP AT gt_data.

    REFRESHlt_cellstyle.

    LOOP AT gt_fieldcat INTO ls_fieldcat.
      CLEAR ls_cellstyle.

      ls_cellstyle-fieldname ls_fieldcat-fieldname.

      IF ls_cellstyle-fieldname 'EQUNR'.
        ls_cellstyle-style cl_gui_alv_grid=>mc_style_button.
        INSERT ls_cellstyle INTO TABLE lt_cellstyle.
      ENDIF.

    CLEARgt_data-cellstyle.
    INSERT LINES OF lt_cellstyle INTO TABLE gt_data-cellstyle.
    MODIFY gt_data TRANSPORTING cellstyle.

  ENDLOOP
ENDFORM.                    " SET_STYLE

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

Class  정의 추가.

  CLASS lcl_event_receiver DEFINITION.
  PUBLIC SECTION.
    METHODS handle_button_click
                  FOR EVENT button_click OF cl_gui_alv_grid
                  IMPORTING es_col_id
                                   es_row_no.
ENDCLASS.                    "lcl_event_handler DEFINITION

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

Class 구현 추가.

  CLASS lcl_event_receiver IMPLEMENTATION.
  METHOD handle_button_click.
    PERFORM handle_button_click USING es_col_id
                                           es_row_no.

  ENDMETHOD.                    "handle_button_click
ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

Alv event 추가.

    SET HANDLERgr_event->handle_button_click FOR gr_alv.