안녕하세요 .. 점점 날씨가 더워지네요..
지금 ALV로 프로그램을 거의 다 짜고 마지막 마무리에서 어찌할바를 몰라서 이렇게 질문 드립니다.
만약 ALV의 여러개의 필드중 체크 필드 값이 S가 나온 값은 그 행 전체에 색을 넣어 주고 싶은데
어덯게 해야 될지 모르겠어요..
| VENDOR | PURCH.DOC.| ITEM | Material | CHECK |
123123 1231231231 10 ABCD S
231231 1231231312 20 DSDE
234243 1231231233 30 ADFA S
123123 1231231313 40 ADFD
댓글 12
-
bd
2008.05.23 18:58
-
bd
2008.05.23 19:03
아... CLASS ALV를 사용하실때는
DATA 선언을
TYPE LVC_S_LAYO 으로 해주시고
CALL METHOD LCL_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = GS_LVC_LAYO <- 이부분에 추가 하시면 됨니다. ^^
-
ABAP짱!
2008.05.23 19:45
전 CHECK이 필드에 S 값이 있을때 만 색상을 넣어야 하는건데 ZEBRA인건 S값이 들어가든 안들어가든 다 색을 넣어주는거
아닌가요??
-
초보아밥퍼
2008.05.23 20:15
흠... 시간이 좀 있어서 올려드릴께용 헤~
우선 셀속성쪽에서 수정을 하게 되구요. 저같은경우는 SET_CELL_ATTRIBUTE 이걸쓰지요
FORM SET_CELL_ATTRIBUTE .
*& 각 Cell의 특성 제어
DATA : LT_CELLTAB TYPE LVC_T_STYL,
LT_COLOR TYPE LVC_T_SCOL,
INDEX TYPE I.
*& 사용될 인터널 테이블의 이름
LOOP AT GT_DATA WHERE CHECK = 'S'.
CLEAR : LT_CELLTAB[], LT_COLOR[].
INDEX = SY-TABIX.
PERFORM FILL_COLOR CHANGING LT_COLOR. <- 이부분이거든요 색상주는것이...
CLEAR : GT_DATA-T_STYL[], "스타일
GT_DATA-T_SCOL[]. "속성에 대한 정의가 저장되는 부분
INSERT LINES OF LT_CELLTAB INTO TABLE GT_DATA-T_STYL.
INSERT LINES OF LT_COLOR INTO TABLE GT_DATA-T_SCOL.
MODIFY GT_DATA INDEX INDEX.
CLEAR GT_DATA.
ENDLOOP.
ENDFORM. " SET_CELL_ATTRIBUTE
FORM FILL_COLOR CHANGING PT_COLOR TYPE LVC_T_SCOL.
DATA : LS_CELLTAB TYPE LVC_S_STYL,
LS_COLOR TYPE LVC_S_SCOL,
L_MODE TYPE RAW4.
DATA : L_FIELDCAT TYPE LVC_S_FCAT.
LOOP AT GT_FIELDCAT INTO L_FIELDCAT.
*& 1:파랑, 2:하늘, 3:노랑, 4:군청, 5:녹, 6:빨강, 7:주황
LS_COLOR-COLOR-COL = 7. "군청
LS_COLOR-COLOR-INT = 1. "진하게
INSERT LS_COLOR INTO TABLE PT_COLOR.
ENDLOOP.
ENDFORM. " FILL_COLOR
이렇게 주시면 해당 S에 해당하는 필드들의 값에 색을 넣으실수 있습니다.
수고하세용 ^^
-
ABAP짱!
2008.05.23 20:32
초보아밥퍼님 CLEAR : GT_DATA-T_STYL[], "스타일
GT_DATA-T_SCOL[]. "속성에 대한 정의가 저장되는 부분
이부분에서 GT_DATA 이건 인터널테이블이고 뒤에 SCOL과 STYL 스타일 이부분은 따로 선언해줘야 하는건가요??
-
초보아밥퍼
2008.05.23 20:35
네 맞습니다 따로 선언을 해주셔야됩니다.
DATA : BEGIN OF GT_DATA OCCURS 0.
INCLUDE STRUCTURE MARA.
DATA : T_STYL TYPE LVC_T_STYL, "셀단위 수정 스타일
T_SCOL TYPE LVC_T_SCOL, "셀색깔
END OF GT_DATA.
성공하세요 ^^
-
activeman
2008.05.23 21:12
zebra(얼룩말)는 한열 전체가 색이 들어가서 열 구분을 위한 옵션이구요.
초보아밥퍼님께서 말씀하신것 같이 하시되 layout 설정하는 부분에서 INFO_FNAME = 'T_SCOL'.을 설정해 주셔야 색상이
제대로 먹게 됩니다.
자료실에 보시면 alv grid control에 대한 자료가 있습니다..
이것을 참고하세요..
즐밥하세요.
-
ABAP짱!
2008.05.23 22:28
감사합니다 초보아밥퍼님.. 해결했습니다 ^^
하나 또 새로운거 배웠네요~
-
초보아밥퍼
2008.05.23 22:28
*& GRID 속성 지정(Display): Display시 옵션 지정
PERFORM DISPLAY_LAYOUT_ATTRIBUTE USING GS_LAYOCAT. 뺴먹었네요
FORM DISPLAY_LAYOUT_ATTRIBUTE USING PS_LAYOCAT TYPE LVC_S_LAYO.
*&General display options
PS_LAYOCAT-CWIDTH_OPT = 'X'. "셀너비를 자동으로 조정
PS_LAYOCAT-ZEBRA = 'X'. "한줄 하얗게 한줄 파랗게
PS_LAYOCAT-SEL_MODE = 'B'. "셀 선택시 어떻게 보여줄지
PS_LAYOCAT-EDIT = 'E'. "편집가능하도록
PS_LAYOCAT-NO_ROWMARK = ' '. "선택버튼 비활성
PS_LAYOCAT-STYLEFNAME = 'T_STYL'. "셀스타일
PS_LAYOCAT-CTAB_FNAME = 'T_SCOL'. "셀색상
*& ps_layocat-smalltitle = 'X'. "작은타이틀.
ENDFORM. " DISPLAY_LAYOUT_ATTRIBUTE
activeman 님 말씀데로... 항상 같은 템플릿만쓰다보니 ㅋ ㅅㄱ
-
ABAP짱!
2008.05.23 22:29
네 activeman님 감사합니다 ^^ -
CoolGuy
2008.05.23 22:37
좋은거 배워가요^^ 감사합니다!!
-
mm_dsshin
2009.03.04 19:04
유용한 정보 감사합니다.
LAYOUT 관련 '
SLIS_LAYOUT_ALV ' 을 선언하신후 'ZEBRA' 옵션에 'X'를 체크 하시고
ALV 뿌려 주실때 LAYOUT 부분에 추가해 주시면 되겠네요 ^^
EX]
DATA: GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
......
GS_LAYOUT-ZEBRA = 'X'.
......
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
...
IS_LAYOUT = GS_LAYOUT
....