레포트 프로그램을 개발할 때 화면에 ALV 형태로 출력하는 경우가 대부분이다.
Class ALV 도 많이 쓰지만 Cell 제어나 ALV 의 이벤트를 태우는 게 아니라면,
즉 단순 조회성이라면 (레포트니까 당연히 조회성이어야지 ㅎㅎㅎ)
Function ALV 만으로도 충분하다.
Function ALV 의 최대 장점인 별도 Screen 생성 없이 출력이 가능하다는 것이다.
Function ALV 만큼이나 간단하게 사용할 수 있지만 사실 더 간단한 ALV 가 있다.
그거슨 SALV (Simple ALV) 인데, 이름처럼 간단하게 ALV 를 구성하여 제공한다는 뜻이다.
(Source)
선언부
인스턴스 생성 및 출력
Itab 에 담는 조회 쿼리 이외에 단 6줄의 코드로 아래와 같이 간단한 ALV 를 보여줄 수 있다.
(Result)
근데.. 이건 뭐 좀 보기가 그렇다.
버튼도 없고, 필드 너비도 자릿수만큼 다 나오는 것 같고,
잉? 헤더에 내역이 없는 것도 있네? ㅎㅎ
소스를 보면 알 수 있듯이 SALV 는 클래스로 되어 있고, 객체를 생성하여
속성이나 이벤트들을 제어할 수 있다. Class ALV 와 비슷하게 사용하면 될 것 같다.
주로 많이 사용하는 필요한 속성들을 제어해보았다.
1) 기능키 세팅
(Source)
기능키세팅에 필요한 변수를 선언하고, get_functions 메소드를 이용하여 할당해준다.
위에서 한 것처럼 세팅 시 set_all 로 하면 사용가능한 모든 기능키가 활성화되는 것 같고,
특정 기능키만 선택하는 것도 가능할 것 같으나, 테스트해보지는 않았다.
(Result)
2) ALV 레이아웃 제어
2.1) 열 너비 최적화
레이아웃 중 가장 많이 쓰는 속성으로 데이터 길이에 맞춰서 열 너비를 자동 조정해준다.
(Source)
(Result)
2.2) 키필드 열고정
화면에 가로 스크롤바가 생겼을 때, 키필드 속성인 컬럼 기준으로 틀고정이 되는 기능이다. 아직 키필드 속성을 안줬으
므로, 아무 변화가 없다.
(Source)
(Result)
-
2.3) 헤더 표시 여부
단 한번도 써본적 없는 기능이지만, 있길래 한번 해봤다.
(Source)
(Result)
3) 선택 모드 제어
ALV 를 클릭했을 때 행단위로 선택할지, 열단위로 할지, 셀단위로 할지 세팅하는 결정하는 부분이다.
아래 주석에 각 속성별 값을 정의해놓았다.
(Source)
(Result)
4) 컬럼 속성 제어
4.1) 키필드
위의 2) 에서 키필드 열고정 레이아웃 세팅을 했었다. 그것과 매칭이 되는 컬럼 속성이다.
(Source)
(Result)
4.2) 헤더텍스트
헤더 텍스트 내용을 커스터마이징하는 속성이다. (헤더텍스트가 Null 로 보이던 컬럼들에 대하여 세팅해 보겠다)
(Source)
(Result)
4.3) 색상
지정한 컬럼의 색상을 제어하는 속성이다. 컬럼명 지정하고 COL/INT/INV 속성값을 차례로 세팅하면 된다. 별거없다.
(Source)
(Result)
4.4) EDIT_MASK
화면에 보여줄 때만 마스킹하여 내가 원하는 포맷으로 변경해서 보여주고자 할 때 사용하는 속성이다.
(Source)
(Result)
5. Conclusion
기본적인 속성만 제어를 해봤는데, HOTSPOT 같은 ALV 이벤트나 여러 기능을 다 제어할 수 있다.
결론적으로,
SALV 의 장점은, 단순 조회성으로 보여주고자 할 때 빠르게 구현하여 가볍게 쓸 수 있다는 것이 되겠고,
단점은, Class 로 되어 있다보니, 익숙하지 않다는 것 즉, 객체지향에 대해 좀 알아야 한다는 것 정도가 되겠다.
(사실 이 부분이 치명적이다. 외골수 ABAPer 들에게는 ㅎㅎ)
추가적으로, SAP 에서 기본적으로 제공해주는 Sample Source 를 확인하고자 한다면,
개발패키지 'SALV_OM_OBJECTS' 를 보면 된다.
'SAP > ABAP' 카테고리의 다른 글
문자열에 있는 특수문자 제거 (0) | 2023.01.11 |
---|---|
Select Records between Begin Date/Time and End Date/Time (0) | 2022.12.22 |
맨날 헷갈리는 관계연산자 종류 (0) | 2019.10.17 |
SELECTION-SCREEN 에 ICON 표시하기 (0) | 2017.04.28 |
SE38 에서 편집기 잠금 해제하는 법 (Editor Lock/Unlock) (0) | 2015.08.04 |