본문 바로가기

SAP ABAP 개발 및 설명/ALV GRID

CL_GUI_ALV_GRID 기타 메소드

이전 글에서는 ALV에서 가장 중요한 역할을 하는 set_table_for_first_display의 메서드의 기능과 파라미터에 대해서 알아보았다.

 

이후 ALV에서 자주 사용되는 메서드에 대해서 학습해보자.


1) get_current_cell


get_current_cell 메서드는 ALV GRID 컨트롤에 커서가 놓은 위치의 값과 속성들을 반환한다.

 

선택된 셀이 존재하지 않으면 라인의 Row 값은 0을 반환한다. ALV GRID 컨트롤은 두 개의 라인과 칼럼의 인덱스 번호를 반환하는데, 하나는 현재 선택된 셀의 라인과 칼럼이고 다른 하나는 아웃풋 테이블(인터널 테이블) 라인과 칼럼의 인덱스이다.

 

이것은 필터링을 설정하거나 숨기기를 하였을 때 실제 화면에 보이는 값과 인터널 테이블의 순서가 다를 수 있기 때문이다.

 

CTRL + F6 : 인스턴스  G_GRID / 클래스 Cl_GUI_ALV_GRID METHOD GET_CURRENT_CELL

CALL METHOD g_grid->get_current_cell
IMPORTING
    e_row     =
    e_value   =
    e_col     =
    es_row_id =
    es_col_id =
    es_row_no =
    .

 

 

 

파라미터 TYPE 의미
E_ROW var. of type I ALV GRID 컨트롤의 현재 라인 인덱스
E_VALUE var. of type c ALV GRID 컨트롤의 현재 셀의 값
E_COL var. of. type I ALV GRID 컨트롤의 현재 칼럼 이름
ES_ROW_ID structure of type LVC_S_ROW 아웃풋 테이블의 현재 라인 타입과 인덱스에 대한 정보 구조
ES_COL_ID structure of type LVC_S_COL  아웃풋 테이블의 현재 칼럼과 필드명에 대한 정보 구조

 

ALV GRID에서 사용자가 화면을 종료하기 위해 PBO의 STATUS에 BACK 버튼을 추가하고 이 버튼을 눌렸을 때 선택 셀 정보를 가져오도록 로직을 추가해보자.

->버튼을 눌렀을 때 역할이 수행되는 것이므로 PAI의 USER_COMMAND에서 정해주도록 하자.

 

MODULE user_command_0100 INPUT.
  IF ok_code = 'BACK'.
    DATA:  l_row    TYPE i,
          l_value  TYPE c,
          l_col    TYPE i,
          ls_row   TYPE lvc_s_row,
          ls_col   TYPE lvc_s_col,
          ls_roid  TYPE lvc_s_roid.

    CALL METHOD g_grid->get_current_cell
       IMPORTING
        e_row = l_row
        e_value = l_value
        e_col = l_col
        es_row_id = ls_row
        es_col_id = ls_col
        es_row_no = ls_roid.

 

    LEAVE PROGRAM.
  ENDIF.

 

 

디버깅을 통해 누른 get_current_cell 메서드의 파라미터가 반환하는 값을 확인할 수 있다.

 


2) get_fronted_layout


현재 설정된 ALV GRID레이아웃 정보를 가져온다.

 

CTRL + F6 : 인스턴스  G_GRID / 클래스 Cl_GUI_ALV_GRID METHOD GET_FRONTED_LAYOUT

 

CALL METHOD g_grid->get_fronted_layout
	IMPORTING
		ES_LAYOUT = < structure of type LCV_S_LAYO >.

3) get_selected_columns


선택된 칼럼들의 정보를 LVC_T_COL 타입의 테이블로 반환한다.

 

CTRL + F6 : 인스턴스  G_GRID / 클래스 Cl_GUI_ALV_GRID METHOD GET_SELECTED_COLUMNS

 

CALL METHOD <g_grid>-> get_selected_columns
	IMPORTING
		ES_INDEX_COLUMNS = < Internal table of type LVC_T_COL >

 


4)get_selected_cells


현재 선택된 복수의 셀 정보를 LVC_T_CELL 타입의 테이블로 반환한다. 즉 현재 선택된 셀들의 필드명, 인덱스 등의 정보를 가지고 온다.

 

CTRL + F6 : 인스턴스  G_GRID / 클래스 Cl_GUI_ALV_GRID METHOD GET_SELECTED_CELLS

 

CALL METHOD g_grid->get_selected_cells
	IMPORTING
		ET_CELL = < Internal table of type LVC_T_CELL >.

5) get_selected_rows


선택된 멀티 라인의 정보를 LVC_T_ROW 타입의 테이블로 반환한다.

 

CTRL + F6 : 인스턴스  G_GRID / 클래스 Cl_GUI_ALV_GRID METHOD GET_SELECTED_ROWS

 

CALL METHOD g_grid->get_selected_rows
	IMPORTING
		ES_INDEX_ROWS = < Internal table of type LVC_T_ROW >.

6) refresh_table_display


이미 화면에 조회된 ALV의 아웃풋 테이블을 다시 조회할 때 사용하는 메서드이다. 데이터가 변경되거나 다시 SELECT 구문을 수행한 경우 ALV 오브젝트를 생성하지 않고 데이터만 다시 보여준다.

 

맨 처음 만든 템플릿에 IF G_GRID IS INITIAL일때는 set_table_for_first_display를

ELSE일떄는 refresh_table_display로 넘어가도록 세팅을 해주었는데 이는 ALV 상에서 변화가 있을 때 바로 화면에서 반응할 수 있도록 설정해준 것이다.

 

CTRL + F6 : 인스턴스  G_GRID / 클래스 Cl_GUI_ALV_GRID METHOD REFRESH_TABLE_DISPLAY

 

CALL METHOD g_grid->refresh_table_display
	EXPORTING
		IS_STABLE = <  Internal table of type LVC_T_ROW >.
		I_SOFT_REFRESH = < variable of TYPE cHAR01 >

 

파라미터 의미
IS_STABLE 라인과 칼럼 위치를 기억하여 재조회하고 이전의 위치에 화면을 보이게 한다.
I_SOFT_REFRESH Sort, Filter, Sum 등 현 ALV GRID의 레이아웃 세팅을 그대로 유지하면서 refresh를 실행한다.

7) set_frontend_layout


ALV GRID 레이아웃을 변경한다. 이 메서드를 호출하고 REFRESH_TABLE_DISPLAY 메서드를 호출하면 변경된 레이아웃이 적용된다.

 

CTRL + F6 : 인스턴스  G_GRID / 클래스 Cl_GUI_ALV_GRID METHOD GET_FRONTED_LAYOUT

 

CALL METHOD g_grid-> set_frontend_layout
	EXPORTING
		IS_LAYOUT = <  structure of type LVC_T_LAYO >.
반응형

'SAP ABAP 개발 및 설명 > ALV GRID' 카테고리의 다른 글

ALV GRID 이벤트  (1) 2020.08.26
ALV GRID - 기타 파라미터  (0) 2020.08.24
ALV GRID 레이아웃  (0) 2020.08.23
ALV GRID 필드 카탈로그  (0) 2020.08.23
필드 카탈로그 - lvc_s_fcat 역할정리  (0) 2020.08.22