SAP/ABAP

SALV (Simple ABAP List Viewer) 의 Simple 사용법

Buggie 2019. 11. 8. 16:21

레포트 프로그램을 개발할 때 화면에 ALV 형태로 출력하는 경우가 대부분이다.

Class ALV 도 많이 쓰지만 Cell 제어나 ALV 의 이벤트를 태우는 게 아니라면,

즉 단순 조회성이라면 (레포트니까 당연히 조회성이어야지 ㅎㅎㅎ)

Function ALV 만으로도 충분하다.

Function ALV 의 최대 장점인 별도 Screen 생성 없이 출력이 가능하다는 것이다.

 

Function ALV 만큼이나 간단하게 사용할 수 있지만 사실 더 간단한 ALV 가 있다.

그거슨 SALV (Simple ALV) 인데, 이름처럼 간단하게 ALV 를 구성하여 제공한다는 뜻이다.

 

(Source)

선언부

인스턴스 생성 및 출력

6줄이면 된다. 심플하다.

 

Itab 에 담는 조회 쿼리 이외에 단 6줄의 코드로 아래와 같이 간단한 ALV 를 보여줄 수 있다.

(Result)

기본 기능만 사용한 SALV 화면

 

근데.. 이건 뭐 좀 보기가 그렇다.

버튼도 없고, 필드 너비도 자릿수만큼 다 나오는 것 같고,

잉? 헤더에 내역이 없는 것도 있네? ㅎㅎ

 

소스를 보면 알 수 있듯이 SALV 는 클래스로 되어 있고, 객체를 생성하여

속성이나 이벤트들을 제어할 수 있다. Class ALV 와 비슷하게 사용하면 될 것 같다.

 

주로 많이 사용하는 필요한 속성들을 제어해보았다.

 


1) 기능키 세팅

(Source)

기능키세팅에 필요한 변수를 선언하고, get_functions 메소드를 이용하여 할당해준다.

 

위에서 한 것처럼 세팅 시 set_all 로 하면 사용가능한 모든 기능키가 활성화되는 것 같고,

특정 기능키만 선택하는 것도 가능할 것 같으나, 테스트해보지는 않았다.

 

(Result)

 


2) ALV 레이아웃 제어

  2.1) 열 너비 최적화

  레이아웃 중 가장 많이 쓰는 속성으로 데이터 길이에 맞춰서 열 너비를 자동 조정해준다.

(Source)

(Result)

  2.2) 키필드 열고정

  화면에 가로 스크롤바가 생겼을 때, 키필드 속성인 컬럼 기준으로 틀고정이 되는 기능이다. 아직 키필드 속성을 안줬으

  므로, 아무 변화가 없다.

(Source)

(Result)

-

 

  2.3) 헤더 표시 여부

  단 한번도 써본적 없는 기능이지만, 있길래 한번 해봤다.

(Source)

(Result)

Header 가 사라졌다.

 


3) 선택 모드 제어

ALV 를 클릭했을 때 행단위로 선택할지, 열단위로 할지, 셀단위로 할지 세팅하는 결정하는 부분이다.

아래 주석에 각 속성별 값을 정의해놓았다.

 

(Source)

속성의 값을 텍스트로 명시해도 되고, 한자리 숫자로 해도 동일한 결과이다.

(Result)

MULTIPLE 로 세팅했을 경우
CELL 로 세팅했을 경우
ROW_COLUMN 으로 세팅한 경우 - 드래그가 안된다. (물론 Ctrl + Y 하면 다 가능함)

 


4) 컬럼 속성 제어

  4.1) 키필드

  위의 2) 에서 키필드 열고정 레이아웃 세팅을 했었다. 그것과 매칭이 되는 컬럼 속성이다.

(Source)

일자, 시간으로 틀고정하고자 하여 키필드 세팅함

(Result)

스크롤바 위치를 잘 비교해 보자. (맨 왼쪽 끝)

 

스크롤바 위치가 오른쪽 끝까지 갔음에도 불고. 키필드로 세팅한 일자/시간은 틀고정되어 화면에 계속 보인다.

 

  4.2) 헤더텍스트

  헤더 텍스트 내용을 커스터마이징하는 속성이다. (헤더텍스트가 Null 로 보이던 컬럼들에 대하여 세팅해 보겠다)

(Source)

(Result)

(세팅 전) 헤더텍스트가 NULL 인 컬럼이 3개 보인다.
(세팅 후) 채워졌다.

  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' 를 보면 된다.