메뉴 건너뛰기

SAP 한국 커뮤니티



ALV Row Color 지정하는 소스.

나침반친구 2007.05.28 14:10 조회 수 : 12855 추천:1

http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_color.htm

 


ALV 화면에서 특정 라인의 색깔을 지정해주고자 하는 방법을 찾다가 찾게된 소스이니


필요하신 분들은 참고하세요.


 


<소스보고 정리한 특정 Row color 변경 방법>


1. 변수선언.


*ALV data declarations


data: gd_layout    type slis_layout_alv.


 


REUSE_ALV_GRID_DISPLAY 함수에서 TABLES 파미터로 넘겨주는 Internal table 선언부분의 마지막에


line_color 필드 추가.


ex).


   TABLES


            t_outtab                = it_02


DATA : BEGIN OF IT_02 OCCURS 0,


    ,


    ,


    line_color(4) type c,     "Used to store row color attributes


       END OF IT_02.


 


2. 특정 열 색깔 지정 코딩.


특정 열 색깔 지정하고 싶은 부분에 색깔지정 코딩.


ex).  


  IT_02-line_color = 'C400'.


  MODIFY IT_02 TRANSPORTING line_color WHERE BELNR =  '0100000951'.


 


3. REUSE_ALV_GRID_DISPLAY 함수 호출해 주기 전에 layout설정 부분의 아래 perform 호출해줌.


perform build_layout.


*&---------------------------------------------------------------------*


*&      Form  BUILD_LAYOUT


*&---------------------------------------------------------------------*


*       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).


* Set layout field for row attributes(i.e. color)


  gd_layout-info_fieldname =      'LINE_COLOR'.


*  gd_layout-totals_only        = 'X'.


*  gd_layout-f2code            = 'DISP'.  "Sets fcode for when double


*                                         "click(press f2)


*  gd_layout-zebra             = 'X'.


*  gd_layout-group_change_edit = 'X'.


*  gd_layout-header_text       = 'helllllo'.


endform.                    " BUILD_LAYOUT


 


4. REUSE_ALV_GRID_DISPLAY 함수 호출시 EXPORTING 부분의 is_layout 부분 추가.


ex).


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


       EXPORTING


          is_layout               = gd_layout


 


아래 링크에 나와있는 소스이니 참고하세요. ^^


 


*&---------------------------------------------------------------------*
*& Report  ZDEMO_ALVGRID                                               *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*& Example of a simple ALV Grid Report                                 *
*& ...................................                                 *
*&                                                                     *
*& The basic ALV grid, Enhanced to display each row in a different     *
*& colour                                                              *
*&---------------------------------------------------------------------*

REPORT  zdemo_alvgrid                 .

TABLES:     ekko.

type-pools: slis.                                 "ALV Declarations
*Data Declaration
*----------------

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,     "Used to store row color attributes
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.

START-OF-SELECTION.

perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform display_alv_report.


*&---------------------------------------------------------------------*
*&      Form  BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*       Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*

form build_fieldcatalog.

* There are a number of ways to create a fieldcat.
* For the purpose of this example i will build the fieldcatalog manualy
* by populating the internal table fields individually and then
* appending the rows. This method can be the most time consuming but can
* also allow you  more control of the final product.

* Beware though, you need to ensure that all fields required are
* populated. When using some of functionality available via ALV, such as
* total. You may need to provide more information than if you were
* simply displaying the result
*               I.e. Field type may be required in-order for
*                    the 'TOTAL' function to work.


  fieldcatalog-fieldname   = 'EBELN'.
  fieldcatalog-seltext_m   = 'Purchase Order'.
  fieldcatalog-col_pos     = 0.
  fieldcatalog-outputlen   = 10.
  fieldcatalog-emphasize   = 'X'.
  fieldcatalog-key         = 'X'.
*  fieldcatalog-do_sum      = 'X'.
*  fieldcatalog-no_zero     = '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.

  fieldcatalog-fieldname   = 'STATU'.
  fieldcatalog-seltext_m   = 'Status'.
  fieldcatalog-col_pos     = 2.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'AEDAT'.
  fieldcatalog-seltext_m   = 'Item change date'.
  fieldcatalog-col_pos     = 3.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'MATNR'.
  fieldcatalog-seltext_m   = 'Material Number'.
  fieldcatalog-col_pos     = 4.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'MENGE'.
  fieldcatalog-seltext_m   = 'PO quantity'.
  fieldcatalog-col_pos     = 5.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'MEINS'.
  fieldcatalog-seltext_m   = 'Order Unit'.
  fieldcatalog-col_pos     = 6.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'NETPR'.
  fieldcatalog-seltext_m   = 'Net Price'.
  fieldcatalog-col_pos     = 7.
  fieldcatalog-outputlen   = 15.
  fieldcatalog-datatype     = 'CURR'.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.

  fieldcatalog-fieldname   = 'PEINH'.
  fieldcatalog-seltext_m   = 'Price Unit'.
  fieldcatalog-col_pos     = 8.
  append fieldcatalog to fieldcatalog.
  clear  fieldcatalog.
endform.                    " BUILD_FIELDCATALOG


*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       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).
* Set layout field for row attributes(i.e. color)
  gd_layout-info_fieldname =      'LINE_COLOR'.
*  gd_layout-totals_only        = 'X'.
*  gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
*                                         "click(press f2)
*  gd_layout-zebra             = 'X'.
*  gd_layout-group_change_edit = 'X'.
*  gd_layout-header_text       = 'helllllo'.

endform.                    " BUILD_LAYOUT


*&---------------------------------------------------------------------*
*&      Form  DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*       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
*            i_callback_top_of_page   = 'TOP-OF-PAGE'  "see FORM
*            i_callback_user_command = 'USER_COMMAND'
*            i_grid_title           = outtext

            is_layout               = gd_layout
            it_fieldcat             = fieldcatalog[]
*            it_special_groups       = gd_tabgroup
*            IT_EVENTS                = GT_XEVENTS

            i_save                  = 'X'
*            is_variant              = z_template

       tables
            t_outtab                = it_ekko
       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.
endform.                    " DISPLAY_ALV_REPORT


*&---------------------------------------------------------------------*
*&      Form  DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*       Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*

form data_retrieval.
data: ld_color(1) type c.

select ebeln ebelp statu aedat matnr menge meins netpr peinh
up to 10 rows
  from ekpo
  into table it_ekko.

*Populate field with color attributes
loop at it_ekko into wa_ekko.
* Populate color variable with colour properties
* 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 )
*           i.e. wa_ekko-line_color = 'C410'

  ld_color = ld_color + 1.

* Only 7 colours so need to reset color value
  if ld_color = 8.
    ld_color = 1.
  endif.
  concatenate 'C' ld_color '10' into wa_ekko-line_color.

*  wa_ekko-line_color = 'C410'.
  modify it_ekko from wa_ekko.
endloop.

endform.                    " DATA_RETRIEVAL


번호 제목 글쓴이 날짜 조회 수
107 Dynamic Select 소스 [5] 떡밥 2011.06.03 17769
106 스크린에서 버튼을 tree 처럼 만들기. [32] file Jenny 2011.08.11 17655
105 Mass Download [5] file 소주와 막걸리 2009.11.13 17363
104 셀(cell) 레벨의 ALV EDIT(편집) 가능 소스 [5] sapjoy 2008.09.25 17241
103 통화단위, krw, usd 일반 필드에 변환시 로직(소수점, 자리수) [4] sapjoy 2011.07.19 15561
102 REPORT z_alv_list_block_2 [1] 노름마치 2007.11.05 15184
101 4.6c 에서 Xml 파일을 읽어오는 로직 예제 입니다. [2] woong 2009.05.11 14803
100 금액을 한글로(수표)표기 [17] file STARFISH 2009.03.17 14644
99 인터널 테이블을 사용한 구구단 출력 두가지 입니다 - WRITE, ALV 이용 [1] kofnhuge 2012.10.10 14009
98 Text(Description) 빠르게 반영하기,,, 속도개선을 위주로 [5] file 노름마치 2010.12.07 13907
97 [onepaper] 참고자료 Archiving 세팅에 필요한 파일소스입니다. [7] file 원니컴 2011.03.22 13798
96 Syntax Checker [4] file 소주와 막걸리 2009.11.13 13764
» ALV Row Color 지정하는 소스. [3] 나침반친구 2007.05.28 12855
94 금액을 영문으로 [4] file 쥬앙 2009.04.06 12366
93 Transport Trace [4] file 소주와 막걸리 2009.11.13 12140
92 멀 어떻게 해야 하는건질 몰라 질문 드립니다 [5] 쏠라맨 2012.10.12 11662
91 [Module pool] Container에 webpage 넣기. [2] 냥냥 2013.03.19 11196
90 nugg 프로그램을 sap 에 생성하기.. [3] file MadMax 2012.10.11 10825
89 Select-Options 의 Extension 에 제한을 주는 방법 [5] icarus 2007.11.15 10824
88 Split 의 사용 [1] 양키(이경환) 2014.02.05 10665