색상은 LVC_S_COLO라는 구조에 따라 표현되며, SE11
에서 스트럭처를 검색하면 구조를 볼 수 있다.
예를 들어서, C600 컬러코드가 의미하는 것은 아래와 같다.
6 | 0 | 0 |
---|---|---|
COL | INT | INV |
color | intensified | inverse |
색깔 | 강조색 | 배경색 |
0~7까지 색상 | ON(1) / OFF(0) | ON(1) / OFF(0) |
이미지 출처 : https://www.like2party.net/45
gs_fcat-emphasize = '컬러코드'
필드카탈로그 코드에 추가.
ALV에서 필드와 컬러코드를 매칭시키기 위한 스트럭처이며, SE11에서 LVC_S_SCOL를 조회하면 구조를 볼 수 있다.
LVC_T_SCOL은 이 스트럭처를 가진 테이블이다.
DATA : BEGIN OF gs_spfli,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
cityfrom TYPE spfli-cityfrom,
airpfrom TYPE spfli-airpfrom,
countryto TYPE spfli-countryto,
cityto TYPE spfli-cityto,
airpto TYPE spfli-airpto,
fltime TYPE spfli-fltime,
deptime TYPE spfli-deptime,
arrtime TYPE spfli-arrtime,
distance TYPE spfli-distance,
distid TYPE spfli-distid,
fltype TYPE spfli-fltype,
period TYPE spfli-period,
color TYPE lvc_t_scol, "<--- 테이블 자체가 필드 안에 들어간다 --->"
END OF gs_spfli,
gt_spfil LIKE TABLE OF gt_spfli.
LOOP AT 인터널테이블 INTO 스트럭처. "<--- 스트럭처 안에 --->"
lv_tabix = sy-tabix. "<--- MODIFY 할 인덱스 고정 --->"
ls_color-fname = 'AIRPTO'. "<--- 필드명 --->"
ls_color-color-col = 0. "<--- ls_color라는 스트럭처 ⊃ color라는 스트럭처 ⊃ col 필드--->"
ls_color-color-int = 1.
ls_color-color-inv = 0. "<--- 컬러코드 C010 --->
APPEND ls_color TO gs_spfli-color.
MODIFY gt_spfli FROM gs_sofli INDEX lv_tabix TRANSPORTING color.
ls_color-fname = 'COUNTRYFR'. "<--- 필드명 --->"
ls_color-color-col = 3. "<--- ls_color라는 스트럭처 ⊃ color라는 스트럭처 ⊃ col 필드--->"
ls_color-color-int = 0.
ls_color-color-inv = 0. "<--- 컬러코드 C010 --->
APPEND ls_color TO gs_spfli-color.
MODIFY gt_spfli FROM gs_sofli INDEX lv_tabix TRANSPORTING color.
ENDLOOP.
LOOP AT gt_spfli INTO gs_spfli.
lv_tabix = sy-tabix.
IF gs_spfli-airpto = 'JFK'.
PERFORM set_color USING 'AIRPTO' 7 1 0 "<--- set_color라는 로직을 재사용 --->"
CHANGING gs_spfli-color.
ELSEIF gs_spfli-countryfr = 'DE'.
PERFORM set_color USING 'COUNTRYFR' 5 1 1
CHANGING gs_spfli-color.
ELSEIF gs_spfli-countryfr = 'IT'.
PERFORM set_color USING 'COUNTRYFR' 6 1 0
CHANGING gs_spfli-color.
ENDIF.
MODIFY gt_spfli FROM gs_spfli INDEX lv_tavbix TRANSPORTING color.
ENDLOOP.
FORM set_color USING pv_fieldname "<--- USING, CHANGING과 파라메터 순서 일치해야 한다 --->"
pv_col TYPE i
pv_int TYPE i
pv_inv TYPE i
CHANGING pt_color TYPE lvc_t_scol.
DATA : ls_color TYPE lvc_s_scol.
CLEAR : ls_color.
ls_color-fname = pv-fieldname.
ls_color-color-col = pv_col.
ls_color-color-int = pv_int.
ls_color-color-inv = pv_inv.
APPEND ls_color TO pt_color.
ENDFORM.