STYLE 필드는 ALV에서 Cell 개별로 효과를 주기 위해 사용하는 필드 중 하나이다.
Strucutre Type은 "LVC_S_STYLE", Table Type으로는 "LVC_T_STYLE" 를 사용한다.
구현 방법은 다음과 같다.
- ALV output 인터널 테이블에 STYLE 용도로 사용할 필드를 Table Type인 LVC_T_STYLE으로 선언한다.
( 필드이지만 내부적으로는 인터널 테이블 갖는 구조임 ) - ALV output 인터널 테이블에서 효과를 주고 싶은 행의 Style필드에 효과를 주고 싶은 필드명과 그 필드에 주고자 하는 효과 값을 APPEND 한다. ( 한 행에 여러 건 입력 가능 )
- ALV Layout 의 "STYLEFNAME" 필드에 STYLE 필드로 사용될 필드명 반영한다.
이때, Table Type "LVC_T_STYLE" 은 Sorted Table Type 이므로 데이터 입력 시 APPEND 구문은 정렬 문제로 Dump의 우려가 있으니 INSERT 구문으로 데이터를 넣도록 하자. Key Field는 "FIELDNAME"으로 지정되어 있으므로 "FIELDNAME"에는 동일한 데이터 값이 중복되어 존재할 수 없다.
실무에서 주로 Style 필드는 Cell별로 Edit 모드를 제어하거나 Push button을 구현할 때 많이 사용된다.
ALV output 인터널 테이블에 데이터를 다음과 같이 입력했을 경우,
다음과 같은 ALV 결과 화면을 볼 수 있다.
입력 데이터 예제와 같이 "STYLE" 필드에 효과를 줄 수 있는 상수 값들은 ALV CLASS "CL_GUI_ALV_GRID"의 Attribute에 "MC_STYLE_*" 로 정의되어 있어 필요시 찾아서 사용하면 된다.
만약 하나의 필드에 여러 효과를 동시에 주고자 할 때는 다음 예제와 같이 "+" 기호를 이용해 구현이 가능하다.
다음은 예제를 이용해서 Edit모드에서 특정 Cell에 Edit 모드와 기본 F4버튼을 동시에 비활성화한 화면(우측)이다.
하나의 셀에 여러 효과를 반영시 그 효과들이 무조건 다 반영되는 것은 아니며, 논리적으로 맞지 않거나 또는 표준 내부적으로 서로 동시에 허용되지 않은 효과들에 대해서는 일부 구현이 안될 수도 있다.
번외로 혹시나 ALV Cell에 좀 더 투머치(?)한 효과를 주고자 한다면...
INCLUDE <CL_ALV_CONTROL> 선언하여 사전에 정의되어 있는 더 많은 ALV Style 상수들을 활용할 수 있다. ( 폰트의 타입이나 색, 강조 효과, 정렬 등)
ALV Style 상수 값이 정의된 INCLUDE Program <CL_ALV_CONTROL> 을 보면 주석에 "* Style 1" ~ "* Style 4" 까지 나누어져 있는 것을 확인할 수 있는데, 이는 STYLE 구조에서 사용되어야 할 필드명을 가리킨다. STYLE 구조 ( "LVC_S_STYL", "LVC_T_STYL" )의 필드를 보면 "STYLE" 필드 외에도 "STYLE2", "STYLE3", "STYLE 4"필드가 추가로 존재한다. ) 예를 들어 주석 "* Style 2" 하위에 선언된 상수는 Style 구조의 Field "STYLE2"에 반영하면 그 효과를 볼 수 있다. ALV Bolder를 제어하는 "STYLE2" 필드를 활용한다면 다음과 같은 ALV 화면도 구현 가능하다.
'ABAP Working Lv. > ALV' 카테고리의 다른 글
|ALV| Column Optimize ( After ALV Refresh ) (1) | 2023.11.01 |
---|---|
|ALV| Event DATA_CHANGED와 DATA_CHANGED_FINISHED 차이 (3) | 2022.08.09 |
|ALV| EDIT 모드 (0) | 2022.07.25 |
|ALV| Toolbar Button 제어 (Feat. TOOLBAR Event) (0) | 2022.07.19 |
| ALV | GET_SELECTED_ROWS 선택 라인 추출 (Feat. (Sub)Total 라인) (2) | 2022.06.28 |