ALV DropdownListBox 로직

1. ALV 관련 데이터 선언

2. Field Catalog에 대상 필드 설정

2. DropdownListBox 테이블 구성

4. Grid 객체 메소드 실행하여 테이블 Assign

5. 필요시 화면 Refresh

1. Data 선언

 – DATA: gs_fcat TYPE LVC_S_FCAT.

 – DATA: gt_listbox TYPE lvc_t_dral,

           gs_listbox TYPE lvc_s_dral,

 –  FIELD-SYMBOLS: <fs_grid>  TYPE REF TO cl_gui_alv_grid.

2. Class Catalog Field 설정

 – gs_fcat-drdn_hndl = ‘1’ or ‘2’ ….

3. DropdownListBox 테이블 구성

[#M_소스코드 보기|접기|

  CLEAR: gt_listbox, gs_listbox.

  LOOP AT gt_zcode.

    gs_listbox-handle = 1.    ” DropdownListBox 유형별로 구분.

    gs_listbox-int_value = gt_zcode-zcode.    ” 코드.

    gs_listbox-value = gt_zcode-zcode.    ” 텍스트.

    APPEND gs_listbox TO gt_listbox.

  ENDLOOP.

_M#]

4. Grid 객체 메소드 실행하여 테이블 Assign

[#M_소스코드 보기|접기|

  CALL METHOD <fs_grid>->set_drop_down_table

    EXPORTING

      it_drop_down_alias = gt_listbox.

_M#]

5. ALV Refresh

[#M_소스보기|접기|

  CLEAR gs_stbl.

  gs_stbl-row = c_check.

  gs_stbl-col = c_check.

  CASE p_value.

    WHEN ‘0100’.

*     refresh 후에 원래대로 Grid 가 표시되도록 하는 처리

      CALL METHOD go_grid1->set_frontend_layout

        EXPORTING

          is_layout = gs_layout.

*     ALV Refresh – Column & line fix

      CALL METHOD go_grid1->refresh_table_display

        EXPORTING

          i_soft_refresh = ‘X’

          is_stable      = gs_stbl.

  ENDCASE.

* Send Buffered Automation Queue to Frontend

  CALL METHOD cl_gui_cfw=>flush.

_M#]