[ABAP] ALV GRID를 사용하여 셀에 색상 지정(Indivisual Cell Color Settings For ALV GRID)
이번은 ALV의 셀에 색을 붙이기 위한 샘플 코드입니다.
"Excel의 조건부 서식처럼 조건을 충족하는 경우에만 색상을 변경하고 싶습니다."
「담당자가 일람을 보고, 요 대응・주의의 내용이 있는 개소에 색칠하고 싶다」
라고 하는 요건이 있었을 경우의 대응 사례가 될까 생각합니다.
아래의 SAP COMMUNITY 등 사이트의 샘플 코드를 수정한 것을 게재합니다.
누군가의 참고가 되면 다행입니다.
참고 링크처
htps : // 안수 rs. 음 p. 코 m / 쿠에 s 치온 s / 5936331 / 세루 - 코 r - 인 - 아 lvg 리 d ぢ sp ぁ y. HTML
※ABAP OO에서의 ALV 작성의 기사는 이쪽에 정리하고 있습니다.
[ABAP] ABAP OO에서 ALV 만들기 (Let's try codeing ALV in ABAP OO) (1/N)
[ABAP] ABAP OO에서 ALV 만들기 (Let's try codeing ALV in ABAP OO) (2/N)
사양
프로그램: SHOWCOLO 실행 결과는 다음과 같습니다.
이 중 "INTENSIFIED""INTENSIFIED OFF"의 16색만 사용할 수 있습니다.
처리 흐름
샘플 코드
YTEST_ALV_CELL_COLOR
*&---------------------------------------------------------------------*
*& Report YTEST_ALV_CELL_COLOR
*&---------------------------------------------------------------------*
REPORT ytest_ALV_CELL_COLOR.
TYPE-POOLS: slis.
INCLUDE <icon>.
*- Fieldcatalog
DATA: it_fieldcat TYPE lvc_t_fcat,
it_fieldcat1 TYPE slis_t_fieldcat_alv..
DATA: x_fieldcat TYPE lvc_s_fcat.
DATA: x_layout TYPE lvc_s_layo.
DATA: ls_cellcolor TYPE lvc_s_scol.
DATA: l_index TYPE sy-tabix.
DATA: l_pos TYPE i VALUE 1.
TYPES: BEGIN OF typ_it_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
pstyv TYPE vbap-pstyv,
cellcolor TYPE lvc_t_scol, "セルの色情報用項目
END OF typ_it_vbap,
ttyp_it_vbap TYPE STANDARD TABLE OF typ_it_vbap.
DATA: it_vbap TYPE ttyp_it_vbap.
* 一覧データ抽出
SELECT vbeln
posnr
matnr
pstyv
FROM vbap
UP TO 20000 ROWS
INTO CORRESPONDING FIELDS OF TABLE it_vbap. "CELLCOLORがあるためCORRESPONDING
* FIELD CATALOG 作成
CLEAR: l_pos.
l_pos = l_pos + 1.
x_fieldcat-seltext = 'VBELN'.
x_fieldcat-fieldname = 'VBELN'.
*x_fieldcat-tabname = 'ITAB'. "?
x_fieldcat-col_pos = l_pos.
x_fieldcat-outputlen = '10'.
APPEND x_fieldcat TO it_fieldcat.
CLEAR x_fieldcat.
l_pos = l_pos + 1.
x_fieldcat-seltext = 'POSNR'.
x_fieldcat-fieldname = 'POSNR'.
*x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = l_pos.
x_fieldcat-outputlen = '5'.
APPEND x_fieldcat TO it_fieldcat.
CLEAR x_fieldcat.
l_pos = l_pos + 1.
x_fieldcat-seltext = 'MATNR'.
x_fieldcat-fieldname = 'MATNR'.
*x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = l_pos.
x_fieldcat-outputlen = '18'.
APPEND x_fieldcat TO it_fieldcat.
CLEAR x_fieldcat.
l_pos = l_pos + 1.
x_fieldcat-seltext = 'PSTYV'.
x_fieldcat-fieldname = 'PSTYV'.
*x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = l_pos.
x_fieldcat-outputlen = '4'.
APPEND x_fieldcat TO it_fieldcat.
CLEAR x_fieldcat.
* 一覧データテーブルにある、色情報を格納している項目名を指定
x_layout-ctab_fname = 'CELLCOLOR'.
* 条件を満たす行のセルに色付け
LOOP AT it_vbap ASSIGNING FIELD-SYMBOL(<fs_vbap>) .
CLEAR ls_cellcolor.
IF <fs_vbap>-pstyv = 'XXXX'. "色を変える条件
ls_cellcolor-fname = 'PSTYV'. "色を変えたい項目
ls_cellcolor-color-col = '6'. "色
ls_cellcolor-color-int = '1'. "強調表示有無
APPEND ls_cellcolor TO <fs_vbap>-cellcolor.
ENDIF.
ENDLOOP.
* ALV DISPLAY
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
is_layout_lvc = x_layout
it_fieldcat_lvc = it_fieldcat
TABLES
t_outtab = it_vbap[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Reference
이 문제에 관하여([ABAP] ALV GRID를 사용하여 셀에 색상 지정(Indivisual Cell Color Settings For ALV GRID)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Go_Ohta/items/19a9e23ec18127778997텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)