SAP/ABAP

ALV 셀별 스타일 지정

znoflo 2013. 3. 25. 18:14

DATA LT_CELLTAB TYPE LVC_T_STYL,
       LS_CELLTAB TYPE LVC_S_STYL.

 

  " 버튼 스타일
CLEAR LS_CELLTAB.
LS_CELLTAB-FIELDNAME 'DETAIL'.
LS_CELLTAB-STYLE     CL_GUI_ALV_GRID=>MC_STYLE_BUTTON.
" LS_CELLTAB-STYLE     = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND LS_CELLTAB TO LT_CELLTAB.


LOOP AT GT_OTAB.

  GT_OTAB-DETAIL ICON_HISTORY.
  CLEAR GT_OTAB-CELLSGT_OTAB-CELLS[].
  INSERT LINES OF LT_CELLTAB_BTN INTO TABLE GT_OTAB-CELLS.

  MODIFY GT_OTAB.

ENDLOOP.
 


ALV 세팅시 레이아웃에 다음과같이 CELL STYLE 필드를 지정해준다.
PS_LAYOUT-STYLEFNAME 'CELLS'.

 

필드 카달록으로 컬럼 전체가 아니라 데이터 확인후 셀별로 스타일 지정할때는 위와 같이 사용한다. CL_BUI_ALV_GRID 클래스에 각각의 다음과 같은 스타일이 정의 되어 있으니 참고.

 

 MC_STYLE4_LINK  Set Link Style '00000004'
 MC_STYLE4_LINK_NO  Remove Link Style '00000008'
 MC_STYLE_BUTTON  Button '20000000'
 MC_STYLE_DISABLED  Not Ready for Input '00100000'
 MC_STYLE_ENABLED  Ready for Input '00080000'
 MC_STYLE_F4  F4 '02000000'
 MC_STYLE_F4_NO  No F4 '04000000'
 MC_STYLE_HOTSPOT  Hotspot '00200000'
 MC_STYLE_HOTSPOT_NO  Disable Hotspot '00400000'
 MC_STYLE_NO_DELETE_ROW  Delete Rows not Enabled '10000000'

 

값을 직접 입력하든 그건 니 맘.

 

아래와 같이 FIELD CATALOG에서 스타일을 지정하면 셀별 스타일은 무시되는 것 같음(?).

 

   GS_FCAT1_LN-COL_POS     13.
  GS_FCAT1_LN-FIELDNAME   'DETAIL'.
  GS_FCAT1_LN-COLTEXT     '변경이력'(018).
  GS_FCAT1_LN-OUTPUTLEN   13.
  GS_FCAT1_LN-DATATYPE    'CHAR'.
  GS_FCAT1_LN-JUST        =  'C'.
  "GS_FCAT1_LN-STYLE       =  CL_GUI_ALV_GRID=>MC_STYLE_BUTTON.
  APPEND GS_FCAT1_LN TO GT_FCAT1.