SAP ABAP에서 ALV Grid Control은 사용하기 쉽고, 강력한 기능을 제공하는 대표적인 ABAP 컨트롤입니다.
따라서 ABAP으로 리포트(Report) 프로그램을 개발할 때 ALV로 개발하는 경우가 많습니다.
이전 포스팅 글에서 ABAP ALV Report에서 조건에 따라 필드에 서로 다른 색상을 지정하는 방법에 대해 설명한 적이 있습니다.
이번 글에서는 ABAP에서 ALV Grid의 Row Color(행 색상)를 지정 하는 방법에 대해 설명해 보겠습니다.
조건에 따라 ALV Grid Report의 행 색상(Row Color)을 달리 지정해서 표시하면 사용자가 리포트를 이해하는데 좀 더 나은 효과를 줄 수 있습니다. 뿐만 아니라 특정 행의 색을 부각시켜 줌으로써 오류나 문제를 확인하는데 도움을 줄 수도 있습니다.
ABAP에서 ALV Grid의 Row Color(행 색상)를 지정 하는 방법 예제
▼ 아래 ABAP 프로그램은 ALV에서 행의 색상을 지정하는 예제 입니다.
- 빨간색으로 강조 표시한 부분을 참고하시면 쉽게 행의 색상을 지정할 수 있게 됩니다.
REPORT ymm0001 .
TABLES: ekko.
TYPE-POOLS: slis.
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
line_color(4) TYPE c, “Row Color 속성을 지정하기 위해 필드 추가
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
*— ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid.
*———————————————————————-*
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_alv_report.
*&———————————————————————*
* Build Fieldcatalog for ALV Report
*———————————————————————-*
FORM build_fieldcatalog.
fieldcatalog-fieldname = ‘EBELN’.
fieldcatalog-seltext_m = ‘Purchase Order’.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = ‘X’.
fieldcatalog-key = ‘X’.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = ‘EBELP’.
fieldcatalog-seltext_m = ‘PO Item’.
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
” 내용 생략
ENDFORM. ” BUILD_FIELDCATALOG
*&———————————————————————*
* Build layout for ALV grid report
*———————————————————————-*
FORM build_layout.
gd_layout-no_input = ‘X’.
gd_layout-colwidth_optimize = ‘X’.
gd_layout-totals_text = ‘Totals'(201).
” Row의 속성이 들어 있는 레이아웃 필드 설정(여기서는 Color 속성)
gd_layout-info_fieldname = ‘LINE_COLOR’.
ENDFORM. ” BUILD_LAYOUT
*&———————————————————————*
* Display report using ALV grid
*———————————————————————-*
FORM display_alv_report.
gd_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = gd_repid
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
i_save = ‘X’
TABLES
t_outtab = it_ekko
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. ” DISPLAY_ALV_REPORT
*&———————————————————————*
* Retrieve data form EKPO table and populate itab it_ekko
*———————————————————————-*
FORM data_retrieval.
DATA: ld_color(1) TYPE c.
* EKPO 테이블에서 15개의 Row를 가져옴
SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
UP TO 15 ROWS
FROM ekpo
INTO TABLE it_ekko.
LOOP AT it_ekko INTO wa_ekko.
ld_color = ld_color + 1.
” 색상 특성을 사용하여 색상 변수 채우기 (‘LINE-COLOR’)
” Char 1 = C (This is a color property)
” Char 2 = 3 (Color codes: 1 – 7)
” Char 3 = Intensified on/off ( 1 or 0 )
” Char 4 = Inverse display on/off ( 1 or 0 )
IF ld_color = 8. ” 색상은 7가지 종류가 있으므로 7가지 색상을 반복 지정
ld_color = 1.
ENDIF.
” ‘C110’, ‘C210’, ‘C310’….. 이런식으로 Row 색상 지정 예
CONCATENATE ‘C’ ld_color ’10’ INTO wa_ekko-line_color.
MODIFY it_ekko FROM wa_ekko.
ENDLOOP.
ENDFORM. ” DATA_RETRIEVAL
|
ABAP에서 ALV Grid의 Row Color(행 색상)를 지정 하는 방법 예제 실행 화면
▼ 아래는 앞 단락의 ABAP 프로그램 실행 결과 화면입니다.
- ABAP 색상표에서 제공하는 7가지 색상을 번갈아 표시해 주고 있습니다.
▼ SAP ABAP에서 Color 지정을 위한 색상표
※ 색상을 지정할 때 No의 숫자를 입력하거나 Color의 고유 이름을 입력해도 동일한 색이 표시됩니다.
(예를 들어 색을 지정할 때 ‘0‘을 입력하거나 ‘COL_BACKGROUND‘를 입력해도 동일한 색으로 나타납니다)
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^