ABAP 개발을 하다 보면 제일 많이 하는게 ALV 리스트 개발을 하는 것일 것이다. ALV 가 워낙 강력한 기능들이 많은데 잘 사용하지 못할 때가 너무 많다. 필요한 그리드의 기능을 다 가지고 있어서 잘 세팅하는 법만 알아도 사용자가 요구하는 조건을 충족 시킬 수가 있다. ( 사용자는 기능을 잘 모르기 때문에 개발자가 잘 가이드를 해야 한다. )
오늘은 Class ALV 의 Cell 별로 색상을 넣는 방법을 포스팅 하려고 한다. ALV 의 필드 카탈로그에서 한 컬럼씩 색상을 줄 수도 있지만 각 셀 별로 색상을 주는 것도 가틍하다. 한 컬럼씩 색상을 넣게 되면 가로의 Row 의 색상을 줄 수가 없는데 Cell 별로 색상을 넣어주면 Row 의 색상을 넣는 것도 가능하다.
위의 레포트에서 보면 가장 아래줄에 녹색으로 색상이 들어 간 것을 확인 할 수 있다. 필드 카탈로그에서 색상을 넣는다면 컬럼으로만 넣을 수 있고 위와 같이 가로로 넣을 수는 없을 것이다. 그리고 예를 들면 특정 값 일 때 색상을 다르게 할 수 도 있는데 필드 카탈로그의 설정만으로는 부족한 부분이 있다.
" 1. CELL 색상을 위한 변수 설정 변수 추가
DATA : BEGIN OF GT_DATA OCCURS 0,
MATNR LIKE MARA-MATNR,
MFRPN LIKE MARA-MFRPN,
CODE(2),
CODE_TEXT(10),
"....
CTAB TYPE LVC_T_SCOL, " CELL 색상 변수
END OF GT_DATA.
" 2. ALV GRID LAYOUT 에 COLOR 필드 설정
FORM GRID_SET_LAYO CHANGING CS_LAYO TYPE LVC_S_LAYO.
CS_LAYO-CWIDTH_OPT = 'X'.
CS_LAYO-SEL_MODE = ''.
CS_LAYO-ZEBRA = 'X'.
* CS_LAYO-BOX_FNAME = 'SELX'.
CS_LAYO-CTAB_FNAME = 'CTAB'. " 이부분을 추가한다.
CS_LAYO-STYLEFNAME = 'STYLE'.
ENDFORM. " GRID_SET_LAYO
" 3. SET ALV 에서 FIELD COLOR 부분 추가
DATA : LT_FCAT TYPE LVC_T_FCAT.
PERFORM GRID_SET_FIELD_COLOR TABLES GT_DATA
USING LT_FCAT.
" 4. SET FIELD COLOR PERFORM 문 추가
*&---------------------------------------------------------------------*
*& Form GRID_SET_FIELD_COLOR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_DATA text
*----------------------------------------------------------------------*
FORM GRID_SET_FIELD_COLOR TABLES PT_DATA STRUCTURE GT_DATA
USING PT_LVC_FCAT TYPE LVC_T_FCAT.
DATA: L_CTAB TYPE LVC_S_SCOL,
LS_FCAT TYPE LVC_S_FCAT,
LV_TABIX TYPE SY-TABIX.
LOOP AT PT_DATA WHERE CODE = 'D'. " 4번째 줄의 CODE 가 D
LV_TABIX = SY-TABIX.
LOOP AT PT_LVC_FCAT INTO LS_FCAT WHERE FIELDNAME NE 'MATNR'.
CLEAR : L_CTAB.
L_CTAB-FNAME = LS_FCAT-FIELDNAME. " 색상을 추가할 CELL FIELD NAME
L_CTAB-COLOR-COL = 5. " 색상은 녹색
L_CTAB-COLOR-INT = 1.
L_CTAB-COLOR-INV = 0.
APPEND L_CTAB TO PT_DATA-CTAB.
ENDLOOP.
MODIFY PT_DATA INDEX LV_TABIX.
ENDLOOP.
ENDFORM. " GRID_SET_FIELD_COLOR
위의 코드는 일부만 발췌한 부분인다. 또한 GT_DATA 부분에 CTAB 이라는 COLOR 를 설정할 수 있는 FIELD 를 추가와 LAYOUT 에 COLOR를 설정하는 필드가 CTAB 이라고 추가를 해야 정상적으로 ALV 에서 해당 필드에 색상이 추가된다.
반응형
'SAP > ABAP' 카테고리의 다른 글
| ABAP Call Screen 100 실행 후 Write 구문 출력하기 (0) | 2015.01.26 |
|---|---|
| ABAP 텍스트 박스 ( Input Box ) Dropdown List 만들기 (0) | 2015.01.20 |
| ABAP Stored Procedure 호출방법 (0) | 2015.01.15 |
| ABAP 스크린 제목에 & 넣는 방법 (0) | 2014.12.16 |
| ABAP Class ALV Checkbox 변경시 Data Changed Event 실행 (0) | 2014.12.15 |
| ABAP 파일 업로드, 다운로드시 파일 선택 팝업 생성 (0) | 2014.11.18 |
| ABAP Report 프로그램 실행시 Tcode 체크 (0) | 2014.11.17 |
| ABAP Parameters 에 소숫점 및 마이너스 금액 입력 (0) | 2014.10.21 |
| ABAP RANGE 변수를 PERFORM 문의 파라메터로 사용하기 (0) | 2014.09.04 |
| ABAP Field Symbol 의 사용 (0) | 2014.09.03 |