쌓고 쌓다
[ABAP] Layout Structure 본문
Layout Structure
ALV의 Layout을 변경할때 LVC_S_LAYO 타입의 변수를 사용하여 변경이 가능하다.
메소드 SET_TABLE_FOR_FIRST_DISPLAY 호출 이전에
Layout Structure의 컴포넌트 값을 변경하여 설정하고
메소드 호출의 파라미터 IS_LAYOUT의 값에 Layout Structure를 넣어주면 된다.
LVC_S_LAYO 타입의 몇가지 컴포넌트를 보면
GRID_TITLE : 제목
ZEBRA : 홀 짝 ROW의 색깔 달리
CWIDTH_OPT : 컬럼 Width 자동 조정
NO_TOOLBAR : 툴자 제거
NO_HEADERS : 컬럼 헤더 제거
TOTALS_BEF : 토탈을 맨 위 ROW에 표시
SEL_MODE : Select Mode로 Cell의 선택 옵션 설정
info_fname : 특정 로우에 색을 넣는다. 색을 지정을 위한 필드 이름이 들어감.
ctab_fname : 특정 셀에 색 추가.
SEL_MODE
아무것도 설정하지 않는 space 값은 'B' 와 동일한 설정이다.
Multiple Rows 또는 Columns는 여러개의 Row 또는 Column을 선택 가능한 설정이다.
Selection Column의 No, Yes는 컬럼의 맨 위 또는 ROW의 맨 왼쪽에 뜨는 Selection Button의 유무이다.
ROW의 맨 왼쪽에 보이는 저곳이 Selection Button이다.
Structure 타입인 LVC_S_LAYO로 선언한 변수를
SET_TABLE_FOR_FIRST_DISPLAY의 IS_LAYOUT 부분에 넣어줬으니
이제 넣어준 LVC_S_LAYO 변수의 컴포넌트 값을 변경하여 LAYOUT을 변경할 수 있다.
위와 같이 제목, ROW 색, Total 표시 위치 등을 변경할 수 있다.
SET_TABLE_FOR_FIRST_DISPLAY 호출이전에 설정해주자.
Line Color 설정 (Row Color)
INCLUDE TYPE <타입>을 사용하여 Local Structure Type안에
Structure 타입의 컴포넌트들을 포함할 수 있다.
색상을 넣기위해 색상을 위한 필드가 추가되어야한다.
특정 ROW에 색상을 추가를 위해 COLOR 라는 이름으로 Char 4자리를 넣어줬다.
색상을 위한 필드의 데이터 타입은 Char로 4자리여야한다.
위처럼 Char 4자리를 포함한 컴포넌트를 추가한 타이블 가지고 이제
변수를 선언해보자.
색상을 위한 컴포넌트를 포함한 Structure 변수와
ALV에 표시할 데이터를 담은 Internal Table 변수를 선언한다.
ABAP Report 프로그램은 크게
INITIALIZATION, AT SELECTION-SCREEN, START-OF-SELECTION 부분으로 나뉜다.
START-OF-SELECTION 부분에서 데이터 취득 및 조작 + 출력이 이뤄진다.
ALV에 표시할 데이터를 담은 Internal Table에 담긴 값들의 컴포넌트중
색상 표시를 위한 COLOR 값을 조작해야한다.
(1) : COLOR 필드가 포함된 Structure로 만들어진 Internal Table에 ALV에 표시하고자하는 데이터를 넣는다.
(2) : Internal Table로 ALV에 표시하는데. 이때 색상을 넣고자하는 데이터를 찾아서
COLOR 컴포넌트에 4자리 값을 할당한다. ( 4자리 값에 대한 설명은 아래에 설명한다. )
(3) : ALV 화면을 호출한다.
색을 표시하고자하는 컴포넌트에는 4자리 문자열이 들어가야한다.
COLOR 컴포넌트에 && 연산자로 값을 할당하고 있다.
위의 예시에서 첫번째 문자 부분에 'C'가 왔다.
첫번째 부분에는 무조건 'C'가 온다.
두번째 부분의 문자 부분에 COL_NEGATIVE가 왔다.
COL_NEGATIVE는 색상을 표시하는 상수이다.
두번째 자리에는 0~7번까지 해서 8가지 색이 존재한다. 그 중 한 번호가 온다.
세번째 네번째 문자 값으로 0과 1이 각각 왔다.
세번째 자리에는 색 강조
네번째 자리에는 Inverse 자리로 셀의 배경 또는 셀의 글자에 색을 칠할지 결정한다. (1은 글자, 0은 배경)
세번째 자리와 네번째 자리에 같은 값이 온다면
먼저 오는 세번째 자리의 값만 적용됨을 주의하자.
세번째, 네번째 자리에 11을 넣었다면 진한 강조로 글자에 색을 칠하는 것이 아닌
진한 강조만 적용되고 뒤의 배경에 칠하는 1은 적용이 안먹힌다.
SET_TABLE_FOR_FIRST_DISPLAY의 호출 이전에
LVC_S_LAYO 타입의 변수 값을 설정하는데
이때 INFO_FNAME 컴포넌트의 값에 색상 표시를 위해 추가한 필드명이 와야한다.
이전에 "COLOR" 필드명으로 색상을 표시하기로 했으니 'COLOR'를 작성해준 것이다.
위와 같이 특정 ROW에 색상을 넣을 수 있다.
Exception Column
특정 컬럼의 값을 통해 경고와 같은 아이콘을 함께 출력하는 방법이 있다.
Local Type 선언에 Char 1자리 타입인 LIGHT를 추가 선언해주자.
이 Char 1자리로 값에 따라 빨강, 노랑, 초록 아이콘을 표시할 수 있다.
조건에 따라 LIGHT 필드의 값을 1(빨간색), 2(노란색), 3(초록색)으로
설정해주자.
SET_TABLE_FOR_FRIST_DISPLAY 메소드 호출 이전에
EXCP_FNAME 컴포넌트에 아이콘 표시를 위해 Char 1자리 타입을 선언한 필드명
LIGHT를 작성해주자.
아이콘 삽입이 된다.
위의 아이콘을 사용하고자 한다면
EXCP_LED의 값에 'X'를 넣어주자.
Cell Color
특정 셀에 색상을 추가하기 위해서는 필드가 추가되어야 한다.
그 필드는 Internal Table이여야 한다.
LVC_T_SCOL 타입으로 필드를 추가해주자.
이 필드는 Internal Table 타입이다.
Internal Table에 값을 넣기 위해서 Work Area가 필요하기에 위와 같이
Work Area도 선언하자.
Internal Table 선언시 사용한 LVC_T_SCOL의 Line Type이 LVC_S_SCOL이다.
색상을 입히고자하는 데이터를 조건문으로 찾고
이전에 셀 색상을 위해 선언한 Work Area의
FNAME에 필드명
COLOR-COL에 색상 0~7 ( 현재 프로그램의 TOP에 아래의 코드를 추가했기에 색상 상수를 사용 )
COLOR-INT에 색상 진하게 할것인지 아닌지
COLOR-INV에 Foreground, Background Color 반전 시킬 것인지
코드를 작성하고, Work Area를 해당 ROW 데이터의 셀 색상을 위한 Internal Table에 넣어준다.
현재 ROW 데이터의 Internal Table은 GS_FLIGHT-IT_FIELD_COLORS이다.
마지막으로 SET_TABLE_FOR_FIRST_DISPLAY 이전에
Layout Structure의 CTAB_FNAME 필드의 값을
셀 색상 표시를 위해 추가한 필드명을 작성해주자.
특정 셀에 색상을 추가할 수 있다.
'SAP > ABAP' 카테고리의 다른 글
[ABAP] Foreign Key, Value Table (0) | 2025.02.02 |
---|---|
[ABAP] Subroutines (0) | 2025.01.31 |
[ABAP] ALV Variant (0) | 2025.01.24 |
[ABAP] ALV 생성 (Container Control, ALV Grid Control) (2) | 2025.01.22 |
[ABAP] Selection Screen Block, Comment, Line, Tabbed Block (0) | 2025.01.21 |