본문 바로가기

SAP ABAP 개발 및 설명/ALV GRID

ALV GRID 레이아웃

CL_GUI_ALV_GRID 클래스의 ALV를 만드는 메소드인 set_table_for_first_display에서

 

IS_LAYOUT 파라미터를 이용하여 합계 금액을 보여주거나 줄무늬 패턴으로 조회되도록 하는 등 ALV GRID 컨트롤의 화면 속성을 정의할 수 있다.

 

레이아웃은 LVC_S_LAYO 타입의 STRUCTURE이며 SE11에서 조회할 수 있다.

 

아래 표는 ls_layout의 파라미터이며 어떠한 역할을 할 수 있는지 알아보자.

필드 설명 목적
CTAB_FNAME 필드 셀의 색상을 지정하다 색상
CWIDTH_OPT 컬럼 길이를 지정한다. GRID 속성
DETAILINIT 상세 화면에서 기본 값을 보여줄 것인지 결정한다. Interaction
DETAILTITL 상세 화면의 타이틀 바를 보여준다 . Interaction
EXCP_CONDS 예외 사항의 필드 Sub Total을 보여준다. Exceptions
EXCP_FNAME 예외 사항 필드를 지정한다. Exceptions
EXCP_LED 예외 사항 필드를 신호등 표시가, 아니라 LED로 보여준다. Exceptions
EXCP_ROLLN 예외 사항 필드에 대한 도움말을 표시한다. Exceptions
GRID_TITLE 타이틀 바의 내역을 지정한다. GRID 속성 
INFO_FNAME 라인의 색상을 지정한다. 색상
KEYHOT HOTSPOT으로 지정할 KEY 필드를 지정한다. Interaction 
NO_HEADERS 칼럼 헤더가 보이지 않는다. GRID 속성 
NO_HGRIDLN GRID의 수평선이 보이지 않는다. GRID 속성 
NO_MERGING 칼럼을 정렬할 때, 같은 값의 셀 합침을 막는다. GRID 속성
NO_ROWMARK GRID의 라인을 선택할 수 있는 버튼을 없앤다.
SEL_MODE = ‘D’ 이면 라인 버튼을 없앰.
SEL_MODE = ‘A’ 이면 칼럼/라인 버튼을 없앰.
GRID 속성
NO_TOOLBAR 툴바를 보이지 않는다. GRID 속성
NO_TOTLONE Total 라인을 보이지 않는다. Total 옵션
NO_VGRIDLN GRID의 수직선을 보이지 않는다. GRID 속성 
NUMC_TOTAL NUMC 필드의 합계 금액을 보여준다. Totals 옵션 
S_DRAGDROP DRAG & DROP 컨트롤을 세팅한다.
(라인의 복사, 이동 등의 기능)
Interaction
SEL_MODE Selection Mode를 세팅한다.(A, B, C, D, SPACE) GRID 속성
SGL_CLK_HD 칼럼 헤더를 클릭했을 때 SORT를 수행한다. Interaction
SMALLTITLE Title Size를 결정한다. GRID 속성
TOTALS_BEF 합계 금액을 맨 위의 라인에 보여준다. Total 옵션 
ZEBRA 라인 단위별로 줄무늬(Stripped) 패턴을 세팅한다. 색상

레이아웃 속성은 파라미터를 직접 세팅하면서 실습하면 어렵지 않게 적용할 수 있다.

 

먼저 TOP문에 LVC_S_LAYO 타입의 변수를 생성하여 템플릿의 PBO의 SETTING_ALV부분의 서브루틴에서 레이아웃 속성을 세팅할 수 있다.

 

그리고 ALV 화면을 보여주는 메서드의 파라미터에서 LS_LAYOUT을 추가해주면 내가 지정한 세팅을 GRID ALV에서 보여줄 수 있다.


예시 1.

 

GS_LAYOUT-cwidth_opt = 'X'.  //칼럼 길이 자동조절
GS_LAYOUT-grid_title = 'LAYOUT TEST'.  //타이틀 바
GS_LAYOUT-sel_mode = 'D'.  //선택모드 : 멀티 선택 가능
GS_LAYOUT-zebra      = 'X'.  //Sripe 속성 지정

 

예시 2.

 

GS_LAYOUT-cwidth_opt = ''.  //칼럼 길이 자동조절
GS_LAYOUT-grid_title = 'LAYOUT TEST'.  //타이틀 바
GS_LAYOUT-sel_mode = 'B'.  //선택모드 : 멀티 선택 가능
GS_LAYOUT-zebra      = ''.  //Sripe 속성 지정

 

알아두어야 할 것은 LAYOUT이 화면의 속성을 정의하는 것은 맞지만 이 레이아웃 자체에서의 데이터 바꾸거나 제공되는 버튼을 누르는 것의 행위는 GRID 상에서만 이루어지는 것이지 SCREEN의 PBO나 PAI를 타는 것이 아니다.

 

▪그렇기 때문에 CLASS를 선언해주어서 TOOLBAR에서 버튼을 만들어준다던가 USER_COMMAND에서 버튼에 대한 역할을 주어야지 GRID 상에서 변화나 버튼에 대해서 TABLE이나 DB에 반영시킬 수 있다.

반응형