반응형

SAP에서 프로그램을 개발할 때 가장 많이 쓰는 ALV Class 에대해서 알아보자.

 

SAP에서 제공하는 ALV Class는 바로 CL_GUI_ALV_GRID .

 

ALV란 Report 프로그램에서 데이터를 조회하거나 조회된 데이터를 가공하는데 사용되는 

ABAP List Viewer.

 

아래 그림과 같이 하나의 테이블로 구성되어 화면에 나타나는 것을 ALV라고 한다.

ALV 화면

 

기본적으로 ALV Class인 CL_GUI_ALV_GRID 클래스를 사용하기 위해서는 

 

하기와 같이 DATA 타입을 선언이 필요하다. 

 

Data 타입 선언 후 생성

 

인라인 방법으로는 다음과 같다.

Inline 선언 (New Syntax)

 

container_name에는 스크린의 Custom Control Name에 넣어준 이름을 넣어주시면 됩니다.

 

그러면 CL_GUI_ALV_GIRD에서 자주 사용하는 메서드를 알아보자.

 

1. GET_SELECTED_ROWS

 

ALV에 선택된 행에 대한 정보를 받아오는 Method다.

.

 

해당 Method는 CL_GUI_ALV_GRID 를 참조하는 객체를 생성한 go_alv를 이용하여 호출.

 

'BACK' (뒤로가기) 버튼을 눌렀을 때 선택된 라인에 대한 정보를 얻기위해 아래와 같이 코드를 작성 후

 

디버깅을 위한 User command에 코드 작성

 

디버깅을 걸고 2개 선택을 한 후 lt_rows에 어떤 정보가 오는지 확인해보겠습니다.

2라인 선택 후 'BACK' 버튼 실행

 

하기와 같이 2번째와 4번째 선택된 행의 Index 정보를 얻을 수 있습니다.

해당 기능을 통해 Add버튼 혹은 Del 버튼 등 로직을 작성하는데 사용할 수 있습니다.

 

2. GET_CURRENT_CELL.

 

AVL에서 커서가 놓은 위치의 값과 속성들을 반환하는 메소드입니다.

 

호출 방법은 동일

 

해당 메소드는 2개의 라인과 컬럼의 인덱스 번호를 반환한다.

 

하나는 현재 선택된 셀의 라인과 컬럼을 반환하고 

 

다른 하나는 필터링을 통해 설정하거나 숨기기 했을 때 실제로 보이는 값과

 

인터널 데이블의 순서가 다르기 때문에 인터널 테이블의 라인과 칼럼을 반환한다.

 

 

다음과 같이 ALV에서 Over Days 컬럽에 5번째 라인 30을 선택하고 디버깅을 진행해보면

특정 셀 선택 후 실행

 

해당 셀에 몇번째 컬럼인지 , 라인의 인덱스 정보, 값 등 선택된 행에 대한 정보를 얻을 수 있다. 

해당 셀에 대한 세부 정보

 

3. CHECK_CHANGED_DATA.

 

ALV 내에서 변경된 데이터를 확인하는 Method입니다.

동일 방법으로 'BACK'시 디버깅을 위해 해당 위치에 코드 작성

 

위에서 확인했던 Over Days 30의 값을 40으로 변경해서 디버깅 진행해보겠습니다.

 

그러면 lv_valid 값이 변경되어서 'X'를 받아옵니다.

 

만약 alv에 아무것도 변경하지 않았다면 lv_valid 값은 빈값으로 반환 .

 

해당 기능을 이용하여 alv에 변경사항이 있을 시 언급해주는 로직을 작성 가능.

 

4. REFRESH_TABLE_DISPLAY

 

조회된 화면에 ALV 인터널 테이블을 다시 조회할 때 사용하는 메소드로,

 

데이터가 변경되거나 SELECT문을 다시 수행할 때 새로고침 해주는 메소드

 

해당 메소드는 아래와 같은 방법으로 호출 할 수 있다.

 

is_stable : 라인의 컬럼 위치를 기억하여 재조회 하고 이전의 위치에 화면을 보이게 하는 역할.

 

i_soft_refresh : 'X'를 주었을 때 sort, filter, sum 등 현재 alv의 layout 세팅을 그대로 유지한 상태로 refresh 진행.

 

i_soft_refresh에 빈값을 넣으면 alv sort등이 유지가 안되어 원하는 위치에 라인을 추가할 경우 

 

원하는 위치에 반영이 되지않을 수 있으니 참고하세요.

반응형

'SAP > ABAP' 카테고리의 다른 글

[ABAP] ALV Grid Event Handler - 2편  (0) 2024.06.11
[ABAP] ALV Grid Event Handler - 1편  (0) 2024.06.10
[ABAP] Search Help 초기 필드값 세팅  (0) 2024.05.28
[ABAP] Table 생성  (0) 2024.05.25
[ABAP] Class Method 정리  (0) 2024.05.23

+ Recent posts