이전 글에서는 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 |