ALV color

Hi all,
Can anyone tell me how to display different colors on different coloumns of an ALV.
thanks

hi
check this code
An example of using linecolor (ALV).
Here you have a good example of coloring rows, columns and specific cells in alvs. It comes in an example of how to use hashed tables. 
For coloured rows and cols check gp_bymat
for coloured specific rows uncheck gp_bymat.
HTH.
Horacio
ps: code:
report zuseofhashedtables.
Program: ZUseOfHashedTables                                        **
Author: Horacio Zapettini                                          **
Versions: 4.6b - 4.6c                                              **
Notes:                                                             **
    this program shows how we can use hashed tables to improve     **
    the responce time.                                             **
    It shows,                                                      **
       1. how to declare hashed tables                             **
       2. a cache-like technique to improve access to master data  **
       3. how to collect data using hashed tables                  **
       4. how to avoid deletions of unwanted data                  **
Results: the test we run read about 31000 rows from mkpf, 150000   **
         rows from mseg, 500 rows from makt and 400 from lfa1.     **
         it filled ht_lst with 24500 rows and displayed them in    **
         alv grid format.                                          **
         It took about 65 secodns to perform this task (first time **
         we run it when all the db buffers are empty.              **
         The same program with standard tables needed 140 seconds  **
         to run with the same recordset and with buffers filled in **
         A simmilar test over more than a million rows
Objetive: show a list that consists of  all the material movements **
         '101' - '901' for a certain range of dates in mkpf-budat. **
the columns to be displayed are:                                   **
         mkpf-budat,                                               **
         mkpf-mblnr,                                               **
         mseg-lifnr,                                               **
         lfa1-name1,                                               **
         mkpf-xblnr,                                               **
         mseg-zeile                                                **
         mseg-charg,                                               **
         mseg-matnr,                                               **
         makt-maktx,                                               **
         mseg-erfmg,                                               **
         mseg-erfme.                                               **
or show a sumary list by matnr - menge                             **
You'll have to create a pf-status called vista -                   **
See form set_pf_status for details                                 **
tables used -
tables: mkpf,
        mseg,
        lfa1,
        makt.
global hashed tables used
data: begin of wa_mkpf, "header
      mblnr like mkpf-mblnr,
      mjahr like mkpf-mjahr,
      budat like mkpf-budat,
      xblnr like mkpf-xblnr,
      end of wa_mkpf.
data: ht_mkpf like hashed table of wa_mkpf
      with unique key mblnr mjahr
      with header line.
data: st_mkpf like standard table of wa_mkpf
      with header line.
data: begin of wa_mseg, " line items
      mblnr like mseg-mblnr,
      mjahr like mseg-mjahr,
      zeile like mseg-zeile,
      bwart like mseg-bwart,
      charg like mseg-charg,
      matnr like mseg-matnr,
      lifnr like mseg-lifnr,
      erfmg like mseg-erfmg,
      erfme like mseg-erfme,
      end of wa_mseg.
data ht_mseg like hashed table of wa_mseg
      with unique key mblnr mjahr zeile
      with header line.
data st_mseg like standard table of wa_mseg
      with header line.
cache structure for lfa1 records
data: begin of wa_lfa1,
      lifnr like lfa1-lifnr,
      name1 like lfa1-name1,
      end of wa_lfa1.
data ht_lfa1 like hashed table of wa_lfa1
      with unique key lifnr
      with header line.
cache structure for material related data
data: begin of wa_material,
      matnr like makt-matnr,
      maktx like makt-maktx,
      end of wa_material.
data: ht_material like hashed table of wa_material
        with unique key matnr
        with header line.
result table
data: begin of wa_lst, "
      budat like mkpf-budat,
      mblnr like mseg-mblnr,
      lifnr like mseg-lifnr,
      name1 like lfa1-name1,   
      xblnr like mkpf-xblnr,
      zeile like mseg-zeile,
      charg like mseg-charg,
      matnr like mseg-matnr,
      maktx like makt-maktx,
      erfmg like mseg-erfmg,
      erfme like mseg-erfme,
      mjahr like mseg-mjahr,
      end of wa_lst.
data: ht_lst like hashed table of wa_lst
        with unique key mblnr mjahr zeile
        with header line.
data: begin of wa_lst1, " sumary by material
      matnr like mseg-matnr,
      maktx like makt-maktx,
      erfmg like mseg-erfmg,
      erfme like mseg-erfme,
      color_line(4) TYPE c,           " Line color
      color_cell    TYPE lvc_t_scol,  " Cell color
      celltab type LVC_T_STYL,
      end of wa_lst1.
data: ht_lst1 like hashed table of wa_lst1
        with unique key matnr
        with header line.
structures for alv grid display.
itabs
type-pools: slis.
data: it_lst            like standard table of wa_lst with header line,
      it_fieldcat_lst   type slis_t_fieldcat_alv with header line,
      it_sort_lst       type slis_t_sortinfo_alv,
      it_lst1           like standard table of wa_lst1 with header line,
      it_fieldcat_lst1  type slis_t_fieldcat_alv with header line,
      it_sort_lst1      type slis_t_sortinfo_alv.
structures
data: wa_sort         type slis_sortinfo_alv,
      ls_layout       type slis_layout_alv.
color management.
DATA  : wa_color    TYPE lvc_s_scol.
Internal table for color management.
DATA : it_color    TYPE TABLE          OF lvc_s_scol.
itab for input enabling.
DATA: lt_celltab TYPE lvc_t_styl. "
global varialbes
data: g_lines type i.
data: g_repid like sy-repid,
      ok_code       like sy-ucomm.
selection-screen
"text: Dates:
select-options: so_budat for mkpf-budat default sy-datum.
"text: Material numbers.
select-options: so_matnr for mseg-matnr.
selection-screen uline.
selection-screen skip 1.
"Text: show summary by material.
parameters: gp_bymat as checkbox default ''.
parameters: gp_hier  as checkbox default 'X'.
start-of-selection.
  perform get_data.
  perform show_data.
end-of-selection.
      FORM get_data                                                 *
form get_data.
        select mblnr mjahr budat xblnr
            into table ht_mkpf
           from mkpf
          where budat in so_budat. " make use of std index.
have we retrieved data from mkpf?
  describe table ht_mkpf lines g_lines.
  if g_lines > 0.
if true then retrieve all related records from mseg.
Doing this way we make sure that the access is by primary key
of mseg.
The reason is that is faster to filter them in memory
than to allow the db server to do it.
    select mblnr mjahr zeile bwart charg
             matnr lifnr erfmg erfme
      into table ht_mseg
      from mseg
        for all entries in ht_mkpf
     where mblnr = ht_mkpf-mblnr
       and mjahr = ht_mkpf-mjahr.
  endif.
fill t_lst or t_lst1 according to user's choice.
  if gp_bymat = ' '.
    perform fill_ht_lst.
  else.
    perform fill_ht_lst1.
  endif.
endform.
form fill_ht_lst.
  refresh ht_lst.
Example: how to discard unwanted data in an efficient way.
  loop at ht_mseg.
  filter unwanted data
    check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.
    check ht_mseg-matnr in so_matnr.
  read header line.
    read table ht_mkpf with table key mblnr = ht_mseg-mblnr
    mjahr = ht_mseg-mjahr.
    clear ht_lst.
* note : this may be faster if you specify field by field.
    move-corresponding ht_mkpf to ht_lst.
    move-corresponding ht_mseg to ht_lst.
    perform read_lfa1 using ht_mseg-lifnr changing ht_lst-name1.
    perform read_material using ht_mseg-matnr changing ht_lst-maktx.
    insert table ht_lst.
  endloop.
endform.
form fill_ht_lst1.
data: colorear.
  refresh ht_lst1.
Example: how to discard unwanted data in an efficient way.
         hot to simulate a collect in a faster way
  loop at ht_mseg.
  filter unwanted data
    check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.
    check ht_mseg-matnr in so_matnr.
* note : this may be faster if you specify field by field.
    read table ht_lst1 with table key matnr = ht_mseg-matnr
    transporting erfmg.
    if sy-subrc <> 0. " if matnr doesn't exist in sumary table
    " insert a new record
      clear ht_lst1.
      ht_lst1-matnr = ht_mseg-matnr.
      perform read_material using ht_mseg-matnr changing ht_lst1-maktx.
      ht_lst1-erfmg = ht_mseg-erfmg.
      ht_lst1-erfme = ht_mseg-erfme.
      if colorear = ''.
        colorear = 'X'.
        refresh it_color.
        ht_lst1-color_cell[] = it_color[].
        MOVE 'C410' TO ht_lst1-color_line.
      else.
        colorear = ' '.
        refresh it_color. clear it_color.
        MOVE 'MATNR' TO wa_color-fname.
        MOVE '6'         TO wa_color-color-col.
        MOVE '1'         TO wa_color-color-int.
        MOVE '1'         TO wa_color-color-inv.
        APPEND wa_color TO it_color.
        MOVE 'MAKTX' TO wa_color-fname.
        MOVE '3'         TO wa_color-color-col.
        MOVE '1'         TO wa_color-color-int.
        MOVE '1'         TO wa_color-color-inv.
        APPEND wa_color TO it_color.
        MOVE 'ERFMG' TO wa_color-fname.
        MOVE '5'         TO wa_color-color-col.
        MOVE '1'         TO wa_color-color-int.
        MOVE '1'         TO wa_color-color-inv.
        APPEND wa_color TO it_color.
        ht_lst1-color_cell[] = it_color[].
        clear ht_lst1-color_line.
      endif.
      insert table ht_lst1.
    else." a record was found.
    " collect erfmg.  To do so, fill in the unique key and add
    " the numeric fields.
      ht_lst1-matnr = ht_mseg-matnr.
      add ht_mseg-erfmg to ht_lst1-erfmg.
      modify table ht_lst1 transporting erfmg.
    endif.
  endloop.
endform.
implementation of cache for lfa1.
form read_lfa1 using p_lifnr changing p_name1.
        read table ht_lfa1 with table key lifnr = p_lifnr
        transporting name1.
  if sy-subrc <> 0.
    clear ht_lfa1.
    ht_lfa1-lifnr = p_lifnr.
    select single name1
       into ht_lfa1-name1
      from lfa1
    where lifnr = p_lifnr.
    if sy-subrc <> 0. ht_lfa1-name1 = 'n/a in lfa1'. endif.
    insert table ht_lfa1.
  endif.
  p_name1 = ht_lfa1-name1.
endform.
implementation of cache for material data
form read_material using p_matnr changing p_maktx.
  read table ht_material with table key matnr = p_matnr
  transporting maktx.
  if sy-subrc <> 0.
    ht_material-matnr = p_matnr.
    select single maktx into  ht_material-maktx
      from makt
     where spras = sy-langu
       and matnr = p_matnr.
    if sy-subrc <> 0. ht_material-maktx = 'n/a in makt'. endif.
    insert table ht_material.
  endif.
  p_maktx = ht_material-maktx.
endform.
form show_data.
  if gp_hier = 'X'. "no anda.
   perform show_hierarchicalALV.
  else.
    if gp_bymat = ' '.
      perform show_ht_lst.
    else.
      perform show_ht_lst1.
    endif.
  endif.
endform.
form show_hierarchicalALV.
st_mkpf[] = ht_mkpf[].
st_mseg[] = ht_mseg[].
call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
exporting
  I_INTERFACE_CHECK              = ' '
  I_CALLBACK_PROGRAM             =
  I_CALLBACK_PF_STATUS_SET       = ' '
  I_CALLBACK_USER_COMMAND        = ' '
  IS_LAYOUT                      =
  IT_FIELDCAT                    =
  IT_EXCLUDING                   =
  IT_SPECIAL_GROUPS              =
  IT_SORT                        =
  IT_FILTER                      =
  IS_SEL_HIDE                    =
  I_SCREEN_START_COLUMN          = 0
  I_SCREEN_START_LINE            = 0
  I_SCREEN_END_COLUMN            = 0
  I_SCREEN_END_LINE              = 0
  I_DEFAULT                      = 'X'
  I_SAVE                         = ' '
  IS_VARIANT                     =
  IT_EVENTS                      =
  IT_EVENT_EXIT                  =
   i_tabname_header               =
   i_tabname_item                 =
  I_STRUCTURE_NAME_HEADER        =
  I_STRUCTURE_NAME_ITEM          =
   is_keyinfo                     =
  IS_PRINT                       =
  IS_REPREP_ID                   =
  I_BUFFER_ACTIVE                =
  I_BYPASSING_BUFFER             =
IMPORTING
  E_EXIT_CAUSED_BY_CALLER        =
  ES_EXIT_CAUSED_BY_USER         =
  tables
    t_outtab_header                = st_mkpf
    t_outtab_item                  = st_mseg
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.
form show_ht_lst.
  "needed because the FM can't use a hashed table.
  it_lst[] = ht_lst[].
  perform fill_layout using 'full display'
                       changing ls_layout.
  perform fill_columns_lst.
perform sort_lst.
  g_repid = sy-repid.
  call function 'REUSE_ALV_GRID_DISPLAY'
       exporting
            i_callback_program       = g_repid
            i_callback_pf_status_set = 'SET_PF_STATUS'
            is_layout                = ls_layout
            it_fieldcat              = it_fieldcat_lst[]
           it_sort                  = it_sort_lst
       tables
            t_outtab                 = it_lst
       exceptions
            program_error            = 1
            others                   = 2.
endform.
form show_ht_lst1.
  "needed because the FM can't use a hashed table.
  it_lst1[] = ht_lst1[].
  perform fill_layout using 'Sumary by matnr'
                       changing ls_layout.
  perform fill_columns_lst1.
perform sort_lst.
  g_repid = sy-repid.
  call function 'REUSE_ALV_GRID_DISPLAY'
       exporting
            i_callback_program       = g_repid
            i_callback_pf_status_set = 'SET_PF_STATUS'
            is_layout                = ls_layout
            it_fieldcat              = it_fieldcat_lst1[]
           it_sort                  = it_sort_lst
       tables
            t_outtab                 = it_lst1
       exceptions
            program_error            = 1
            others                   = 2.
endform.
form fill_layout using p_window_titlebar
               changing cs_layo type slis_layout_alv.
  clear cs_layo.
  cs_layo-window_titlebar        = p_window_titlebar.
  cs_layo-edit                   = 'X'.
  cs_layo-edit_mode              = space.
  MOVE 'COLOR_LINE' TO cs_layo-info_fieldname.
Field that identify cell color in inetrnal table
  MOVE 'COLOR_CELL' TO cs_layo-coltab_fieldname.
move 'CELLTAB' TO cs_layo-stylefname.
endform.                    " armar_layout_stock
form set_pf_status using rt_extab type slis_t_extab.
create a new status
and then select extras -> adjust template -> listviewer
  set pf-status 'VISTA'.
endform.        "set_pf_status
define add_lst.
  clear it_fieldcat_lst.
  it_fieldcat_lst-fieldname     = &1.
  it_fieldcat_lst-outputlen     = &2.
  it_fieldcat_lst-ddictxt       = 'L'.
  it_fieldcat_lst-seltext_l       = &1.
  it_fieldcat_lst-seltext_m       = &1.
  it_fieldcat_lst-seltext_m       = &1.
  if &1 = 'MATNR'.
    it_fieldcat_lst-emphasize = 'C111'.
  endif.
  append it_fieldcat_lst.
end-of-definition.
define add_lst1.
  clear it_fieldcat_lst.
  it_fieldcat_lst1-fieldname     = &1.
  it_fieldcat_lst1-outputlen     = &2.
  it_fieldcat_lst1-ddictxt       = 'L'.
  it_fieldcat_lst1-seltext_l       = &1.
  it_fieldcat_lst1-seltext_m       = &1.
  it_fieldcat_lst1-seltext_m       = &1.
  append it_fieldcat_lst1.
end-of-definition.
form fill_columns_lst.
set columns for output.
  refresh it_fieldcat_lst.
  add_lst 'BUDAT' 10.
  add_lst   'MBLNR' 10.
  add_lst  'LIFNR' 10.
  add_lst  'NAME1' 35.
  add_lst  'XBLNR' 15.
  add_lst    'ZEILE' 5.
  add_lst    'CHARG' 10.
  add_lst   'MATNR' 18.
  add_lst   'MAKTX' 30.
  add_lst   'ERFMG' 17.
  add_lst   'ERFME' 5.
  add_lst   'MJAHR' 4.
endform.
form fill_columns_lst1.
set columns for output.
  refresh it_fieldcat_lst1.
  add_lst1 'MATNR' 18.
  add_lst1 'MAKTX' 30.
  add_lst1 'ERFMG' 17.
  add_lst1 'ERFME' 5..
endform.
Horacio Zapettini
Program to Calculate FI Opening Balance
How to find the Opening balance for a given period in FI Module for a Particular GL A/c.
I was calculated opening balance, code is below maybe it will be helpful.
*find period.
  CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
    EXPORTING
      i_date         = s_budat-low
      i_periv        = i_tab-periv                          "'K4'
    IMPORTING
      e_buper        = v_donem
      e_gjahr        = v_gjahr
    EXCEPTIONS
      input_false    = 1
      t009_notfound  = 2
      t009b_notfound = 3
      OTHERS         = 4.
*calc opening balance hesabý
  SELECT * FROM knc1 WHERE kunnr = i_tab-kunnr
                     AND bukrs = i_tab-bukrs " s_bukrs
                     AND gjahr EQ v_gjahr.
    v_dnm = v_donem.
opening balance first calc > old year ,
    WHILE v_dnm > 1.
      v_dnm = v_dnm - 1.
      CONCATENATE 'knc1-um' v_dnm 's' INTO v_field_name_borc.
      CONCATENATE 'knc1-um' v_dnm 'h' INTO v_field_name_alacak.
      ASSIGN (v_field_name_borc) TO  old
add days which is from selected date-low month
    IF v_donem > 1.
      v_dnm = v_donem - 1.
    ELSE.
      v_dnm = v_donem.
    ENDIF.
    SELECT SINGLE * FROM t009b WHERE periv = i_tab-periv    "'K4'
                                 AND bdatj = s_budat-low+0(4)
                                 AND poper = v_dnm.
    t009b-butag = t009b-butag + 1.
    IF s_budat-low+6(2) NE t009b-butag.
      v_date_high = s_budat-low - 1.
      IF v_donem = 1.
        v_date_low = s_budat-low.
        v_date_low+4(4)  = '0101'.
      ELSE.
        CONCATENATE t009b-bdatj t009b-bumon t009b-butag INTO
        v_date_low.
      ENDIF.
      SELECT *  FROM bsad WHERE bukrs EQ i_tab-bukrs "IN s_bukrs
                            AND kunnr = i_tab-kunnr
                            AND budat BETWEEN v_date_low AND
                            v_date_high
                            AND umskz = space
                            AND blart IN s_blart.
        IF bsad-shkzg = 'S'.
          i_tab-dmbtr_s = i_tab-dmbtr_s + ( bsad-dmbtr ).
        ELSEIF bsad-shkzg = 'H'.
          i_tab-dmbtr_h = i_tab-dmbtr_h + ( bsad-dmbtr   ).
        ENDIF.
      ENDSELECT.
      SELECT *  FROM bsid WHERE bukrs EQ i_tab-bukrs "IN s_bukrs
                           AND kunnr = i_tab-kunnr
                           AND budat BETWEEN v_date_low AND
                           v_date_high
                           AND umskz = space
                           AND blart IN s_blart.
                             AND gsber IN gsber.
        IF bsid-shkzg = 'S'.
          i_tab-dmbtr_s = i_tab-dmbtr_s + ( bsid-dmbtr   ).
        ELSEIF bsid-shkzg = 'H'.
          i_tab-dmbtr_h = i_tab-dmbtr_h + ( bsid-dmbtr   ).
        ENDIF.
      ENDSELECT.
    ENDIF.
    "opening balance ( þirket bazlý )z1 degeri
   i_tab-z1 = i_tab-z1 + ( knc1-umsav + i_tab-dmbtr_s - i_tab-dmbtr_h ).
for israel
    i_tab-dmbtril_s = i_tab-dmbtr_s .
    i_tab-dmbtril_h = i_tab-dmbtr_h .
  ENDSELECT.
praveen

Similar Messages

  • ALV colors in edit mode

    Hello,
    I have an ALV grid with an editable checkbox column.
    Now I have two problems regarding the colors:
    1. as you know, when in edit mode, the colors change. I overrode them with custom colors, but the editable column's cells have still a white margin which I cannot get rid of
    2. Zebra layout does not work anymore. If I color the rows with a zebra pattern manually, I would have to re-do it everytime the table is resorted.
    Can anyone think of a better way to handle coloring in edit mode?
    Thanks a lot.

    hi,
    Chk this link.
    http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_color.htm
    Regards
    Reshma

  • ALV colors

    Please let me know how to display alternate colors in ALV?
    how to display end of list and top of list in a seperate colour?
    Thanks

    Hello Ramya,
    there is an option for zebra coloring in  layout... use the following statement.
    data:       g_r_layout    type  slis_layout_alv.
      g_r_layout-zebra = 'X'.
    example code is below...
    report z_alv_ex1 .
    *SET TITLEBAR 'T_MATNR'.
    TYPE-POOLS
    type-pools: slis.    " Type pool for ALV
    TABLE USED
    tables: mara,    " General Material Data
            makt,    " Material Descriptions
            mard,    " Storage Location Data for Material
            marc,    " Plant Data for Material
            t001w.   " Plants/Branches
    INTERNAL TABLES
    data: begin of g_t_itab occurs 0,           " TO HOLD
            sel          type c,
            lgort        like mard-lgort,       " storage location
            werks        like marc-werks,       " plant
            labst        like mard-labst,       " stock
            matnr        like mara-matnr,       " material number
            land1        like t001w-land1,      " country i.e. branches
          end of g_t_itab.
    data: begin of g_t_detail occurs 0,         " TO HOLD
             matnr like mara-matnr,             " material number
          end of g_t_detail.
    data: begin of g_t_makt occurs 0,           " TO HOLD
             matnr like makt-matnr,             " material number
             maktx like makt-maktx,             " material description
             spras like makt-spras,             " language key
          end of g_t_makt.
    data: l_t_makt like makt occurs 0           " internal table with
          with header line.                     " same structure like MAKT
    Data Fields used for ALV call - Simple List
    data: g_f_repid     like  sy-repid,
          g_t_fieldcat  type  slis_t_fieldcat_alv,
          g_r_fieldcat  type  slis_fieldcat_alv,
          g_t_events    type  slis_t_event,
          g_r_events    type  slis_alv_event,
          g_r_layout    type  slis_layout_alv.
    data: g_r_x_variant   like  disvariant,
          g_r_variant     like  disvariant.
    data: g_f_exit(1),
          g_f_save(1).
    SELECTION SCREEN
    selection-screen begin of block b1 with frame title text-001.
    select-options:  s_matnr for mara-matnr,
                     s_werks for marc-werks.
    parameter: p_gerplt as checkbox user-command r1.
    selection-screen end of block b1.
    START OF SELECTION
    start-of-selection.
      perform get_data.
    AT SELECTION SCREEN
    at selection-screen on s_matnr.
      if not ( s_werks is initial ).
        perform validation.
      endif.
    at selection-screen output.
      loop at screen.
        if screen-group1 eq 'G' and p_gerplt = 'X'.
          screen-input = 0.
          refresh s_werks.
        endif.
        modify screen.
      endloop.
    INITIALIZATION
    initialization.
      perform initial_selection_screen.
    AT LINE SELECTION
    *AT LINE-SELECTION.
    PERFORM at_line_selection.
    END OF SELECTION
    end-of-selection.
      perform set_alv_parameters.
      perform display_list.
          FORM get_data                                                 *
    form get_data.
      if p_gerplt = 'X'.
        select blgort cwerks blabst amatnr d~land1
            from mara as a
            inner join mard as b
            on amatnr = bmatnr
            inner join marc as c
            on bmatnr = cmatnr
            inner join t001w as d
            on cwerks = dwerks
            into corresponding fields of table g_t_itab
            where
            a~matnr in s_matnr and
            d~land1 eq 'DE'.
      else.
        select blgort cwerks blabst amatnr
            from mara as a
            inner join mard as b
            on amatnr = bmatnr
            inner join marc as c
            on bmatnr = cmatnr
            into corresponding fields of table g_t_itab
            where
            a~matnr in s_matnr and
            c~werks in s_werks.
      endif.
    endform.
          FORM set_alv_parameters                                       *
    form set_alv_parameters.
      perform set_fieldcatlog.
    Events
      refresh : g_t_events.
      clear   : g_r_events.
    TOP OF PAGE event for standard header
      g_r_events-name = 'TOP_OF_PAGE'.
      g_r_events-form = 'TOP_OF_PAGE'.
      append g_r_events to g_t_events.
    Attributes for layout
    <b>  g_r_layout-zebra = 'X'.</b>
      g_r_layout-min_linesize = 119.
      g_r_layout-colwidth_optimize = 'X'.
    Field having checkbox
      g_r_layout-box_fieldname = 'SEL'.
    Field havind checkbox internal table name
      g_r_layout-box_tabname = 'G_T_ITAB'.
    endform.
          FORM display_list                                             *
    form display_list.
      g_f_repid = sy-repid.
      call function 'REUSE_ALV_LIST_DISPLAY'
          exporting
       I_INTERFACE_CHECK              = ' '
       I_BYPASSING_BUFFER             =
       I_BUFFER_ACTIVE                = ' '
                       i_callback_program             = g_f_repid
                        i_callback_pf_status_set       = 'PF_STATUS_SET'
                        i_callback_user_command        = 'USER_COMMAND'
       I_STRUCTURE_NAME               =
                        is_layout                      = g_r_layout
                        it_fieldcat                    = g_t_fieldcat[]
       IT_EXCLUDING                   =
       IT_SPECIAL_GROUPS              =
       IT_SORT                        =
       IT_FILTER                      =
       IS_SEL_HIDE                    =
       I_DEFAULT                      = 'X'
       I_SAVE                         = ' '
                        is_variant                     = g_r_variant
                        it_events                      = g_t_events[]
       IT_EVENT_EXIT                  =
       IS_PRINT                       =
       IS_REPREP_ID                   =
       I_SCREEN_START_COLUMN          = 0
       I_SCREEN_START_LINE            = 0
       I_SCREEN_END_COLUMN            = 0
       I_SCREEN_END_LINE              = 0
       IMPORTING
         E_EXIT_CAUSED_BY_CALLER        =
         ES_EXIT_CAUSED_BY_USER         =
                       tables
                         t_outtab                       = g_t_itab
                       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.
          FORM set_fieldcatlog                                          *
    form set_fieldcatlog.
      data: l_r_fieldcat type slis_fieldcat_alv.
      clear : g_t_fieldcat,
              g_t_fieldcat[].
    Check - box
      l_r_fieldcat-tabname        = 'G_T_ITAB'.
      l_r_fieldcat-fieldname      = 'SEL'.
      l_r_fieldcat-col_pos        = 1.
      l_r_fieldcat-checkbox       = 'X'.
      l_r_fieldcat-input          = 'X'.
      append l_r_fieldcat to g_t_fieldcat.
      clear l_r_fieldcat.
    Plant
      l_r_fieldcat-tabname        = 'G_T_ITAB'.
      l_r_fieldcat-fieldname      = 'WERKS'.
      l_r_fieldcat-ref_tabname    = 'MARC'.
      l_r_fieldcat-ref_fieldname  = 'WERKS'.
    l_r_fieldcat-no_out         = ' '.
    l_r_fieldcat-input          = ' '.
    l_r_fieldcat-key            = 'X'.
      l_r_fieldcat-col_pos        = 2.
      append l_r_fieldcat to g_t_fieldcat.
      clear l_r_fieldcat.
    Storage Location
      l_r_fieldcat-tabname        = 'G_T_ITAB'.
      l_r_fieldcat-fieldname      = 'LGORT'.
      l_r_fieldcat-ref_tabname    = 'MARD'.
      l_r_fieldcat-ref_fieldname  = 'LGORT'.
      l_r_fieldcat-col_pos        = 3.
      append l_r_fieldcat to g_t_fieldcat.
      clear l_r_fieldcat.
    Material Number
      l_r_fieldcat-tabname        = 'G_T_ITAB'.
      l_r_fieldcat-fieldname      = 'MATNR'.
      l_r_fieldcat-ref_tabname    = 'MARA'.
      l_r_fieldcat-ref_fieldname  = 'MATNR'.
      l_r_fieldcat-col_pos        = 4.
      append l_r_fieldcat to g_t_fieldcat.
      clear l_r_fieldcat.
    Stock (Un Restricted)
      l_r_fieldcat-tabname        = 'G_T_ITAB'.
      l_r_fieldcat-fieldname      = 'LABST'.
      l_r_fieldcat-ref_tabname    = 'MARD'.
      l_r_fieldcat-ref_fieldname  = 'LABST'.
      l_r_fieldcat-col_pos        = 5.
      append l_r_fieldcat to g_t_fieldcat.
      clear l_r_fieldcat.
    endform.
          FORM top_of_page                                              *
    form top_of_page.
      write: 'TOP OF PAGE'.
    endform.
          FORM user_command                                             *
    -->  I_F_UCOMM                                                     *
    -->  I_R_SELFIELD                                                  *
    form user_command using i_f_ucomm     like  sy-ucomm
                            i_r_selfield  type  slis_selfield.
      if i_f_ucomm = 'DESCR'.
        perform display_mat_desc.
      endif.
    endform.
          FORM pf_status_set                                            *
    -->  I_T_EXTAB                                                     *
    form pf_status_set using i_t_extab type slis_t_extab.
      set pf-status 'S_MATNR'.
    endform.
          FORM display_mat_desc                                         *
    form display_mat_desc.
      read table g_t_itab with key sel = 'X'.
      if sy-subrc ne 0.
        message e001(00) with text-002.
      endif.
      clear   : g_t_makt.
      refresh : g_t_makt.
      loop at g_t_itab where sel eq 'X'.
        select matnr maktx spras
        from makt
        appending table g_t_makt
        where
        matnr eq g_t_itab-matnr.
      endloop.
      loop at g_t_makt.
        write: / g_t_makt-matnr, g_t_makt-maktx, g_t_makt-spras.
      endloop.
    endform.
          FORM initial_selection_screen                                 *
    form initial_selection_screen.
      s_matnr-sign = 'I'.
      s_matnr-option = 'EQ'.
      s_matnr-low = '000000000000000012'.
      s_matnr-high = ' '.
      append s_matnr.
      clear s_matnr.
      s_matnr-sign = 'I'.
      s_matnr-option = 'NE'.
      s_matnr-low = '000000000000000002'.
      s_matnr-high = ' '.
      append s_matnr.
      clear s_matnr.
      s_matnr-sign = 'I'.
      s_matnr-option = 'EQ'.
      s_matnr-low = '000000000000000015'.
      s_matnr-high ='000000000010000012'.
      append s_matnr.
      clear s_matnr.
    endform.
          FORM validation                                               *
    form validation.
      select single * from marc
                    where matnr in s_matnr and
                          werks in s_werks.
      if sy-subrc ne 0.
        message e047(m3).
      endif.
    endform.
    Reward If Useful
    Sasi.
    Message was edited by:
            Sasidhar Reddy Matli

  • Doubt in ALV coloring

    hai friends,
    i want to give a color for specified line in ALV list or grid.
    How can i give?
    What are the declaration should i do?
    if have, please mail me sample coding .
    thanks,
    Maran

    Here is the sample code.  This program shows how to color a line, column or cell.
    report zrich_0002 .
    * Use of colours in ALV grid (cell, line and column)            *
    * Table
    tables : mara.
    * Type
    types : begin of ty_mara,
              matnr         like mara-matnr,
              matkl         like mara-matkl,
              counter(4)    type n,
              free_text(15) type c,
              color_line(4) type c,           " Line color
              color_cell    type lvc_t_scol,  " Cell color
    end of ty_mara.
    * Structures
    data  : wa_mara     type ty_mara,
            wa_fieldcat type lvc_s_fcat,
            is_layout   type lvc_s_layo,
            wa_color    type lvc_s_scol.
    * Internal table
    data : it_mara     type standard table of ty_mara,
           it_fieldcat type standard table of lvc_s_fcat,
           it_color    type table          of lvc_s_scol.
    * Variables
    data : okcode like sy-ucomm,
           w_alv_grid          type ref to cl_gui_alv_grid,
           w_docking_container type ref to cl_gui_docking_container.
    parameters : p_column as checkbox,
                 p_line   as checkbox,
                 p_cell   as checkbox.
    at selection-screen output.
      perform get_data.
      perform fill_catalog.
      if w_docking_container is initial.
        perform create_objects.
      endif.
    *&      Form  create_objects
    form create_objects.
      create object w_docking_container
        exporting
          ratio                       = 60
        exceptions
          cntl_error                  = 1
          cntl_system_error           = 2
          create_error                = 3
          lifetime_error              = 4
          lifetime_dynpro_dynpro_link = 5
          others                      = 6.
      create object w_alv_grid
        exporting
          i_parent          = w_docking_container.
    * Field that identify color line in internal table
      move 'COLOR_LINE' to is_layout-info_fname.
    * Field that identify cell color in inetrnal table
      move 'COLOR_CELL' to is_layout-ctab_fname.
      call method w_alv_grid->set_table_for_first_display
        exporting
          is_layout                     = is_layout
        changing
          it_outtab                     = it_mara
          it_fieldcatalog               = it_fieldcat
        exceptions
          invalid_parameter_combination = 1
          program_error                 = 2
          too_many_lines                = 3
          others                        = 4.
    endform.
    *&      Form  get_data
    form get_data.
      select * from mara up to 5 rows.
        clear : wa_mara-color_line, wa_mara-color_cell.
        move-corresponding mara to wa_mara.
        add 1                   to wa_mara-counter.
        move 'Blabla'           to wa_mara-free_text.
        if wa_mara-counter = '0002'
        and p_line = 'X'.
    * Color line
          move 'C410' to wa_mara-color_line.
        elseif wa_mara-counter = '0004'
        and p_cell = 'X'.
    * Color cell
          move 'FREE_TEXT' to wa_color-fname.
          move '6'         to wa_color-color-col.
          move '1'         to wa_color-color-int.
          move '1'         to wa_color-color-inv.
          append wa_color to it_color.
          wa_mara-color_cell[] = it_color[].
        endif.
        append wa_mara to it_mara.
      endselect.
    endform.
    *&      Form  fill_catalog
    form fill_catalog.
    * Colour code :                                                 *
    * Colour is a 4-char field where :                              *
    *              - 1st char = C (color property)                  *
    *              - 2nd char = color code (from 0 to 7)            *
    *                                  0 = background color         *
    *                                  1 = blue                     *
    *                                  2 = gray                     *
    *                                  3 = yellow                   *
    *                                  4 = blue/gray                *
    *                                  5 = green                    *
    *                                  6 = red                      *
    *                                  7 = orange                   *
    *              - 3rd char = intensified (0=off, 1=on)           *
    *              - 4th char = inverse display (0=off, 1=on)       *
    * Colour overwriting priority :                                 *
    *   1. Line                                                     *
    *   2. Cell                                                     *
    *   3. Column                                                   *
      data : w_position type i value '1'.
      clear wa_fieldcat.
      move w_position to wa_fieldcat-col_pos.
      move 'MATNR'    to wa_fieldcat-fieldname.
      move 'MARA'     to wa_fieldcat-ref_table.
      move 'MATNR'    to wa_fieldcat-ref_field.
      append wa_fieldcat to it_fieldcat.
      add 1 to w_position.
      clear wa_fieldcat.
      move w_position to wa_fieldcat-col_pos.
      move 'MATKL'    to wa_fieldcat-fieldname.
      move 'MARA'     to wa_fieldcat-ref_table.
      move 'MATKL'    to wa_fieldcat-ref_field.
    * Color column
      if p_column = 'X'.
        move 'C610'     to wa_fieldcat-emphasize.
      endif.
      append wa_fieldcat to it_fieldcat.
      add 1 to w_position.
      clear wa_fieldcat.
      move w_position to wa_fieldcat-col_pos.
      move 'COUNTER'  to wa_fieldcat-fieldname.
      move 'N'        to wa_fieldcat-inttype.
      move '4'        to wa_fieldcat-intlen.
      move 'Counter'  to wa_fieldcat-coltext.
      append wa_fieldcat to it_fieldcat.
      add 1 to w_position.
      clear wa_fieldcat.
      move w_position  to wa_fieldcat-col_pos.
      move 'FREE_TEXT' to wa_fieldcat-fieldname.
      move 'C'         to wa_fieldcat-inttype.
      move '20'        to wa_fieldcat-intlen.
      move 'Text'      to wa_fieldcat-coltext.
      append wa_fieldcat to it_fieldcat.
    endform.
    REgards,
    Rich Heilman

  • ALV: Color cells in subtotals. Is it possible?

    Hi,
    I have an ALV-report which initially shows subtotals only. The users want to see specific colors in specific cells of the subtotals if possible.
    Is it?
    Regards
    Thomas

    Hi Thomas,
    Please check the Demo program ERGP2120.
    It has this feature.
    Step1: define you internal table like below
    DATA: BEGIN OF mylist OCCURS 20,       " Internal table for preparing
            zuordnung(8) TYPE c,
            belegnr(10) TYPE c,
            ba(2) TYPE c,
            bldatum TYPE d,
            bs(2) TYPE c,
            s(4) TYPE c VALUE ' ',
            wrg(4) TYPE c,
            betrag TYPE p DECIMALS 2,
            colinfo TYPE slis_t_specialcol_alv,
          END OF mylist.
    Step2:
      LOOP AT lt_mylist.
        REFRESH gt_color.
        CLEAR   gt_color.
        IF lt_mylist-betrag  > 500000.
          CLEAR gt_color.
          gt_color-fieldname = 'BETRAG'.
          gt_color-color-col = cl_gui_resources=>list_col_positive.
          gt_color-color-int = 0.
          APPEND gt_color.
        ELSEIF lt_mylist-betrag < 100000.
          CLEAR gt_color.
          gt_color-fieldname = 'BETRAG'.
          gt_color-color-col =  cl_gui_resources=>list_col_negative.
          gt_color-color-int = 0.
          APPEND gt_color.
        ENDIF.
        lt_mylist-colinfo[] = gt_color[].
        MODIFY lt_mylist.
      ENDLOOP.
    Thanks,
    Ramakrishna
    Message was edited by: Ramakrishna Prasad

  • ALV color a particular cell on meeting certain condition

    hi all
         i am working with ALV , my requirement is to color a particular cell if condition mate.
    like .
       i have two fields in my ITAB  PlanedCost and ActualCost
    If ACTUALCOST is >= 80% of PLANEDCOST then
    ACTUALCOST cell must come in RED COLOR.
    how to do so .
    please guide me.

    Hi Rock,
            I tried a program to color a cell based on its value, but it is not working. Am pasting the code below and please can u exactly tell me what is the problem it.
    *& Report  ZSAPCOLV
    REPORT  zsapcolv.
    TABLES:mara.
    TYPES:BEGIN OF ty_mara,
          matnr TYPE mara-matnr,
          mtart TYPE mara-mtart,
          color1(4),
         END OF ty_mara.
    DATA:it_mara TYPE STANDARD TABLE OF ty_mara,
         it_color  TYPE TABLE  OF lvc_s_scol,
         wa_mara TYPE ty_mara,
         wa_color    TYPE lvc_s_scol,
         is_layout   TYPE lvc_s_layo.
    DATA: t_newtable TYPE REF TO data,
    t_newline  TYPE REF TO data.
    FIELD-SYMBOLS: <dyntab> TYPE STANDARD TABLE,
                   <wa_dyntab> TYPE ANY,
                   <gfs_wa> TYPE ANY.
    TYPES: BEGIN OF ty_cmara,
        matnr TYPE mara-matnr,
         mtart TYPE mara-mtart,
       tabcolor TYPE lvc_t_scol,
    END OF ty_cmara.   " Cell color
    DATA:it_cmara TYPE STANDARD TABLE OF ty_cmara.
    DATA:
          gr_table     TYPE REF TO cl_salv_table,
          gr_functions TYPE REF TO cl_salv_functions,
          gr_display   TYPE REF TO cl_salv_display_settings.
    DATA:   it_fcat TYPE lvc_t_fcat,
            wa_fcat TYPE lvc_s_fcat.
    DATA:it_fcat1 TYPE lvc_t_fcat, "with cell color
         it_fcat2 TYPE lvc_t_fcat,
    wa_fieldcat LIKE LINE OF it_fcat1,
    wa_cellcolors TYPE lvc_s_scol,
    wa_is_layout TYPE lvc_s_layo.
    FIELD-SYMBOLS:<t_cellcolors> TYPE lvc_t_scol,
    <w_field> TYPE ANY.
    DATA:t_line  TYPE REF TO data .
    *-----design selection screen for plant and material type.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-b01.
    SELECT-OPTIONS:
                     s_matnr     FOR mara-matnr.    "material type
    SELECTION-SCREEN END OF BLOCK b1.
    START-OF-SELECTION.
      PERFORM fetch_data.
      PERFORM display_data.
    *&      Form  fetch_data
    FORM fetch_data .
      DATA:wa_cmara TYPE ty_cmara.
      DATA: ls_tabcolor TYPE lvc_s_scol.
      SELECT
    FROM mara
        INTO CORRESPONDING FIELDS OF TABLE it_mara WHERE matnr IN s_matnr.
      CHECK sy-subrc EQ 0.
      PERFORM build_catalog USING '1' 'MATNR' 'Material number' 'Material Number' ' ' '18'.
      PERFORM build_catalog USING '1' 'MTART' 'Material type' 'Material type' ' ' '10'.
      it_fcat1[] = it_fcat[].
       wa_fieldcat-fieldname = 'T_CELLCOLORS'.
       wa_fieldcat-ref_field = 'COLTAB'.
       wa_fieldcat-ref_table = 'CALENDAR_TYPE'.
      APPEND wa_fieldcat TO it_fcat.
      cl_alv_table_create=>create_dynamic_table( EXPORTING it_fieldcatalog = it_fcat
                                                  IMPORTING ep_table = t_newtable ).
      ASSIGN t_newtable->* TO <dyntab>.
      CREATE DATA t_line LIKE LINE OF <dyntab>.
      ASSIGN t_line->* TO <gfs_wa>.
      PERFORM fill_data.
    ENDFORM.                    " fetch_data
    *&      Form  build_catalog
    FORM build_catalog  USING    p_pos TYPE lvc_colpos
                           p_field TYPE lvc_fname
                           p_reptext TYPE reptext
                           p_coltext TYPE coltext
                           p_check TYPE lvc_checkb
                           p_len TYPE lvc_outlen.
      wa_fcat-col_pos    = p_pos.
      wa_fcat-fieldname  = p_field.
      wa_fcat-reptext    = p_reptext.
      wa_fcat-checkbox   = p_check.
      wa_fcat-outputlen  = p_len.
      wa_fcat-emphasize = '6'.
      IF p_check = 'X'.
        wa_fcat-edit = 'X'.
      ENDIF.
      APPEND wa_fcat TO it_fcat.
      CLEAR wa_fcat.
    ENDFORM.                    " catalog
    *&      Form  fill_data
    FORM fill_data .
      FIELD-SYMBOLS: <wa_tmp> TYPE ANY,
                     <v_fld> TYPE ANY,
                     <color> TYPE ANY,
                     <wa_color> TYPE lvc_s_scol.
      DATA: v_fld(20).
      DATA : lv_cnt TYPE i,
             t_newline1  type ref to data,
             lv_cnt1 TYPE i.
        FIELD-SYMBOLS: <ta_color> TYPE lvc_t_scol.
         DATA : field(15) TYPE c,
             col TYPE lvc_s_scol.
      create data t_newline1 LIKE <wa_color>.
      LOOP AT it_mara INTO wa_mara.
        lv_cnt1 = lv_cnt1 + 1.
        LOOP AT it_fcat INTO wa_fcat.
          UNASSIGN <wa_tmp>.
          ASSIGN COMPONENT wa_fcat-fieldname OF STRUCTURE <gfs_wa> TO <wa_tmp>.
          CONCATENATE 'WA_MARA-' wa_fcat-fieldname INTO v_fld.
          ASSIGN (v_fld) TO <v_fld>.
          CHECK sy-subrc EQ 0.
          IF <v_fld> = '000000000000000004'.
             col-fname = wa_fcat-fieldname.
             col-color-col = '5' .
             col-color-int = '0' .
              "ASSIGN COMPONENT wa_fcat-fieldname OF STRUCTURE <gfs_wa> TO <ta_color>.
               ASSIGN COMPONENT 'T_CELLCOLORS' OF STRUCTURE <gfs_wa> TO <ta_color> .
               APPEND col TO <ta_color>.
            <wa_tmp> = <v_fld>.
            lv_cnt = lv_cnt + 1.
          ENDIF.
          IF lv_cnt = 1.
            APPEND <gfs_wa> TO <dyntab>.
          ELSE.
            MODIFY <dyntab> INDEX lv_cnt1 FROM <gfs_wa>.
          ENDIF.
        ENDLOOP.
        lv_cnt = 0.
        CLEAR wa_mara.
      ENDLOOP.
    ENDFORM.                    " fill_data
    *&      Form  display_data
    FORM display_data .
    IF <dyntab> IS NOT INITIAL.
       LOOP AT <dyntab> INTO <gfs_wa>.
         ASSIGN COMPONENT 'MATNR' OF STRUCTURE <gfs_wa> TO <w_field>.
         ASSIGN COMPONENT 'T_CELLCOLORS' OF STRUCTURE <gfs_wa> TO <t_cellcolors> .
         CLEAR wa_cellcolors.
        "wa_cellcolors-fname = 'MATNR'.
         "IF <w_field> = '000000000000000004'.
           "FORMAT INTENSIFIED COLOR = 6.
           wa_cellcolors-fname = 'MATNR'.
           wa_cellcolors-color-col = '7'.
           wa_cellcolors-color-int = '1'.
           "wa_cellcolors-color-inv = '1'.
           "wa_cellcolors-NOKEYCOL = ''.
          "ELSE.
          "wa_cellcolors-color-col = '5'.
        "ENDIF.
         APPEND wa_cellcolors TO <t_cellcolors>.
         MODIFY <dyntab> FROM <gfs_wa>.
       ENDLOOP.
      cl_salv_table=>factory( IMPORTING r_salv_table = gr_table CHANGING t_table = <dyntab> ).
      gr_functions = gr_table->get_functions( ).
      gr_functions->set_all( abap_true ).
      gr_display = gr_table->get_display_settings( ).
      gr_display->set_striped_pattern( cl_salv_display_settings=>true ).
      gr_display->set_list_header( 'MARA DATA' ).
      gr_table->display( ).
      "ENDIF.
    ENDFORM.                    " display_data

  • Alv color display for a cell

    Hi all,
      I need to display color for a field(cell) in a record.
    is there any events to handle this.
    please help me in this.
    Regards
    Anil Kumar K

    Hi,
    in OO ALV check this code../
    REPORT  ZTEST1234    MESSAGE-ID ZZ                           .
    DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.
    DATA: L_VALID TYPE C,
          V_FLAG,
          V_DATA_CHANGE,
          V_ROW TYPE LVC_S_ROW,
          V_COLUMN TYPE LVC_S_COL,
          V_ROW_NUM TYPE LVC_S_ROID.
    *       CLASS lcl_event_handler DEFINITION
    CLASS LCL_EVENT_HANDLER DEFINITION .
      PUBLIC SECTION .
        METHODS:
    **Hot spot Handler
        HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
                          IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,
    **Double Click Handler
        HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
                                         IMPORTING E_ROW E_COLUMN ES_ROW_NO.
    ENDCLASS.                    "lcl_event_handler DEFINITION
    *       CLASS lcl_event_handler IMPLEMENTATION
    CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
    *Handle Hotspot Click
      METHOD HANDLE_HOTSPOT_CLICK .
        CLEAR: V_ROW,V_COLUMN,V_ROW_NUM.
        V_ROW  = E_ROW_ID.
        V_COLUMN = E_COLUMN_ID.
        V_ROW_NUM = ES_ROW_NO.
        MESSAGE I000 WITH V_ROW 'clicked'.
      ENDMETHOD.                    "lcl_event_handler
    *Handle Double Click
      METHOD  HANDLE_DOUBLE_CLICK.
      ENDMETHOD.                    "handle_double_click
    ENDCLASS.                    "LCL_EVENT_HANDLER IMPLEMENTATION
    *&             Global Definitions
    DATA:      G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Container1
                G_HANDLER TYPE REF TO LCL_EVENT_HANDLER. "handler
    DATA: OK_CODE LIKE SY-UCOMM,
          SAVE_OK LIKE SY-UCOMM,
          G_CONTAINER1 TYPE SCRFNAME VALUE 'TEST',
          GS_LAYOUT TYPE LVC_S_LAYO.
    *- Fieldcatalog for First and second Report
    DATA: IT_FIELDCAT  TYPE  LVC_T_FCAT,
          X_FIELDCAT TYPE LVC_S_FCAT,
          LS_VARI  TYPE DISVARIANT.
    *                START-OF_SELECTION
    START-OF-SELECTION.
      DATA:BEGIN OF  ITAB OCCURS 0,
           VBELN LIKE LIKP-VBELN,
           POSNR LIKE LIPS-POSNR,
           CELLCOLOR TYPE LVC_T_SCOL, "required for color
           DROP(10),
           END OF ITAB.
      SELECT VBELN
             POSNR
             FROM LIPS
             UP TO 20 ROWS
             INTO CORRESPONDING FIELDS OF TABLE ITAB.
    END-OF-SELECTION.
      IF NOT ITAB[] IS INITIAL.
        CALL SCREEN 100.
      ELSE.
        MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'(004).
      ENDIF.
    *&      Form  CREATE_AND_INIT_ALV
    *       text
    FORM CREATE_AND_INIT_ALV .
      DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.
      CREATE OBJECT G_CUSTOM_CONTAINER
             EXPORTING CONTAINER_NAME = G_CONTAINER1.
      CREATE OBJECT G_GRID
             EXPORTING I_PARENT = G_CUSTOM_CONTAINER.
    * Set a titlebar for the grid control
      CLEAR GS_LAYOUT.
      GS_LAYOUT-GRID_TITLE = TEXT-003.
      GS_LAYOUT-ZEBRA = SPACE.
      GS_LAYOUT-CWIDTH_OPT = 'X'.
      GS_LAYOUT-NO_ROWMARK = 'X'.
      GS_LAYOUT-CTAB_FNAME = 'CELLCOLOR'.
      CALL METHOD G_GRID->REGISTER_EDIT_EVENT
        EXPORTING
          I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
      CREATE OBJECT G_HANDLER.
      SET HANDLER G_HANDLER->HANDLE_DOUBLE_CLICK FOR G_GRID.
      SET HANDLER G_HANDLER->HANDLE_HOTSPOT_CLICK FOR G_GRID.
      DATA: LS_CELLCOLOR TYPE LVC_S_SCOL. "required for color
      DATA: L_INDEX TYPE SY-TABIX.
      "Here i am changing the color of line 1,5,10...
      "so you can change the color of font conditionally
      LOOP AT ITAB.
        L_INDEX = SY-TABIX.
        IF L_INDEX = 1 OR L_INDEX = 5 OR L_INDEX = 10.
          LS_CELLCOLOR-FNAME = 'VBELN'.
          LS_CELLCOLOR-COLOR-COL = '6'.
          LS_CELLCOLOR-COLOR-INT = '0'.
          LS_CELLCOLOR-COLOR-INV = '1'.
          APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.
          MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.
          LS_CELLCOLOR-FNAME = 'POSNR'.
          LS_CELLCOLOR-COLOR-COL = '6'.
          LS_CELLCOLOR-COLOR-INT = '0'.
          LS_CELLCOLOR-COLOR-INV = '1'.
          APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.
          MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.
        ENDIF.
      ENDLOOP.
    * setting focus for created grid control
      CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
        EXPORTING
          CONTROL = G_GRID.
    * Build fieldcat and set editable for date and reason code
    * edit enabled. Assign a handle for the dropdown listbox.
      PERFORM BUILD_FIELDCAT.
      PERFORM  SET_DRDN_TABLE.
    * Optionally restrict generic functions to 'change only'.
    *   (The user shall not be able to add new lines).
      PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE.
    **Vaiant to save the layout
      LS_VARI-REPORT      = SY-REPID.
      LS_VARI-HANDLE      = SPACE.
      LS_VARI-LOG_GROUP   = SPACE.
      LS_VARI-USERNAME    = SPACE.
      LS_VARI-VARIANT     = SPACE.
      LS_VARI-TEXT        = SPACE.
      LS_VARI-DEPENDVARS  = SPACE.
    **Calling the Method for ALV output
      CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          IT_TOOLBAR_EXCLUDING = LT_EXCLUDE
          IS_VARIANT           = LS_VARI
          IS_LAYOUT            = GS_LAYOUT
          I_SAVE               = 'A'
        CHANGING
          IT_FIELDCATALOG      = IT_FIELDCAT
          IT_OUTTAB            = ITAB[].
    * Set editable cells to ready for input initially
      CALL METHOD G_GRID->SET_READY_FOR_INPUT
        EXPORTING
          I_READY_FOR_INPUT = 1.
    ENDFORM.                               "CREATE_AND_INIT_ALV
    *&      Form  EXCLUDE_TB_FUNCTIONS
    *       text
    *      -->PT_EXCLUDE text
    FORM EXCLUDE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.
    * Only allow to change data not to create new entries (exclude
    * generic functions).
      DATA LS_EXCLUDE TYPE UI_FUNC.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
    ENDFORM.                               " EXCLUDE_TB_FUNCTIONS
    *&      Form  build_fieldcat
    *       Fieldcatalog
    FORM BUILD_FIELDCAT .
      DATA: L_POS TYPE I.
      L_POS = L_POS + 1.
      X_FIELDCAT-SCRTEXT_M = 'Delivery'(024).
      X_FIELDCAT-FIELDNAME = 'VBELN'.
      X_FIELDCAT-TABNAME = 'IT_FINAL'.
      X_FIELDCAT-COL_POS    = L_POS.
      X_FIELDCAT-NO_ZERO    = 'X'.
      X_FIELDCAT-OUTPUTLEN = '10'.
      X_FIELDCAT-HOTSPOT = 'X'.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
      L_POS = L_POS + 1.
      X_FIELDCAT-SCRTEXT_M = 'Item'(025).
      X_FIELDCAT-FIELDNAME = 'POSNR'.
      X_FIELDCAT-TABNAME = 'IT_FINAL'.
      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-SCRTEXT_M = 'Drop'(025).
      X_FIELDCAT-FIELDNAME = 'DROP'.
      X_FIELDCAT-TABNAME = 'IT_FINAL'.
      X_FIELDCAT-COL_POS    = L_POS.
      X_FIELDCAT-OUTPUTLEN = '5'.
      X_FIELDCAT-EDIT = 'X'.
      X_FIELDCAT-DRDN_HNDL = '1'.
      X_FIELDCAT-DRDN_ALIAS = 'X'.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
    ENDFORM.                    " build_fieldcat
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'MAIN100'.
      SET TITLEBAR 'MAIN100'.
      IF G_CUSTOM_CONTAINER IS INITIAL.
    **Initializing the grid and calling the fm to Display the O/P
        PERFORM CREATE_AND_INIT_ALV.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE USER_COMMAND_0100 INPUT.
      CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  SET_DRDN_TABLE
    *       text
    FORM SET_DRDN_TABLE.
      DATA:LT_DRAL TYPE LVC_T_DRAL,
            LS_DRAL TYPE LVC_S_DRAL.
      LOOP AT ITAB .
    * First listbox (handle '1').
        IF SY-INDEX = 1.
          LS_DRAL-HANDLE = '1'.
          LS_DRAL-VALUE =  ' '.
          LS_DRAL-INT_VALUE =  ' '.
        ELSE.
          LS_DRAL-HANDLE = '1'.
          LS_DRAL-VALUE =  ITAB-POSNR.
          LS_DRAL-INT_VALUE =  ITAB-POSNR.
        ENDIF.
        APPEND LS_DRAL TO LT_DRAL.
      ENDLOOP.
    **Setting the Drop down table for Reason Code
      CALL METHOD G_GRID->SET_DROP_DOWN_TABLE
        EXPORTING
          IT_DROP_DOWN_ALIAS = LT_DRAL.
    ENDFORM.                               " set_drdn_table

  • ALV Coloring

    Hi,
    I have applied the cell coloring in ALV grid.
    Now, requirement is "values with in the colored cell should also have the same color as the cell".
    i.e. If cells are gray colored then values of these particular cells should also be in gray color.
    Please suggest a relevant solution.
    Thanks.

    hi,use this
    lr_column->set_cell_design_fieldname( value = 'COLOR_CELL' ).
    thanks.

  • ALV : color one cell

    Hi all,
    i want to color just only one cell in my ALV report, but i don't know how can i do that.
    Here my code :
    REPORT  ztest_alv_color_cell.
    Used to limit user commands on selection-screen
    INCLUDE rsdbc1xx.
    DATA: BEGIN OF i_alv OCCURS 0,
          connid   TYPE sflight-connid,
          currency TYPE sflight-currency,
          FLDATE   TYPE sflight-fldate,
          END OF i_alv.
    DATA: alv_grid       TYPE REF TO cl_gui_alv_grid.
    DATA: fieldcat  TYPE lvc_t_fcat.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .
    SELECT-OPTIONS: s_matnr FOR i_alv-connid.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF SCREEN 1010.
    SELECTION-SCREEN END OF SCREEN 1010.
    Events
    AT SELECTION-SCREEN OUTPUT.
      IF sy-dynnr = '1010'.
        current_scr-mode = 'S'.
        APPEND 'SPOS' TO current_scr-excl.
        APPEND 'SCRH' TO current_scr-excl.
        APPEND 'ONLI' TO current_scr-excl.
      ENDIF.
    START-OF-SELECTION.
      PERFORM get_data.
      CREATE OBJECT alv_grid
             EXPORTING
                   i_parent           =  cl_gui_container=>screen0.
    Populate Field Catalog
      PERFORM get_fieldcatalog.
      CALL METHOD alv_grid->set_table_for_first_display
        CHANGING
          it_outtab       = i_alv[]
          it_fieldcatalog = fieldcat[].
      CALL SELECTION-SCREEN 1010.
    FORM GET_DATA
    FORM get_data.
      SELECT * INTO CORRESPONDING FIELDS OF TABLE i_alv
            FROM sflight.
      SORT i_alv ASCENDING BY connid.
    ENDFORM.                    "get_data
         Form  Get_Fieldcatalog - Set Up Columns/Headers
    FORM get_fieldcatalog.
      DATA: ls_fcat TYPE lvc_s_fcat.
      REFRESH: fieldcat.
      CLEAR: ls_fcat.
      ls_fcat-reptext    = 'Connid'.
      ls_fcat-coltext    = 'Connid'.
      ls_fcat-fieldname  = 'CONNID'.
      ls_fcat-ref_table  = 'I_ALV'.
      ls_fcat-outputlen  = '10'.
      ls_fcat-col_pos    = 1.
      APPEND ls_fcat TO fieldcat.
      CLEAR: ls_fcat.
      ls_fcat-reptext    = 'Currency'.
      ls_fcat-coltext    = 'Currency'.
      ls_fcat-fieldname  = 'CURRENCY'.
      ls_fcat-ref_table  = 'I_ALV'.
      ls_fcat-outputlen  = '10'.
      ls_fcat-col_pos    = 2.
      APPEND ls_fcat TO fieldcat.
      CLEAR: ls_fcat.
      ls_fcat-reptext    = 'Flight date'.
      ls_fcat-coltext    = 'Flight date'.
      ls_fcat-fieldname  = 'FLDATE'.
      ls_fcat-ref_table  = 'I_ALV'.
      ls_fcat-datatype   = 'DATS'.
      ls_fcat-outputlen  = '10'.
      ls_fcat-col_pos    = 3.
      APPEND ls_fcat TO fieldcat.
    ENDFORM.                    "get_fieldcatalog
    Imagine that i want to color in red line 1 column 1, please tell how can i do this.
    Thanks very much for help.
    Cheers

    Hi,
    Check this code..
    REPORT  ZTEST1234    MESSAGE-ID ZZ                           .
    DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.
    DATA: L_VALID TYPE C,
          V_FLAG,
          V_DATA_CHANGE,
          V_ROW TYPE LVC_S_ROW,
          V_COLUMN TYPE LVC_S_COL,
          V_ROW_NUM TYPE LVC_S_ROID.
    *       CLASS lcl_event_handler DEFINITION
    CLASS LCL_EVENT_HANDLER DEFINITION .
      PUBLIC SECTION .
        METHODS:
    **Hot spot Handler
        HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
                          IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,
    **Double Click Handler
        HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
                                         IMPORTING E_ROW E_COLUMN ES_ROW_NO.
    ENDCLASS.                    "lcl_event_handler DEFINITION
    *       CLASS lcl_event_handler IMPLEMENTATION
    CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
    *Handle Hotspot Click
      METHOD HANDLE_HOTSPOT_CLICK .
        CLEAR: V_ROW,V_COLUMN,V_ROW_NUM.
        V_ROW  = E_ROW_ID.
        V_COLUMN = E_COLUMN_ID.
        V_ROW_NUM = ES_ROW_NO.
        MESSAGE I000 WITH V_ROW 'clicked'.
      ENDMETHOD.                    "lcl_event_handler
    *Handle Double Click
      METHOD  HANDLE_DOUBLE_CLICK.
      ENDMETHOD.                    "handle_double_click
    ENDCLASS.                    "LCL_EVENT_HANDLER IMPLEMENTATION
    *&             Global Definitions
    DATA:      G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Container1
                G_HANDLER TYPE REF TO LCL_EVENT_HANDLER. "handler
    DATA: OK_CODE LIKE SY-UCOMM,
          SAVE_OK LIKE SY-UCOMM,
          G_CONTAINER1 TYPE SCRFNAME VALUE 'TEST',
          GS_LAYOUT TYPE LVC_S_LAYO.
    *- Fieldcatalog for First and second Report
    DATA: IT_FIELDCAT  TYPE  LVC_T_FCAT,
          X_FIELDCAT TYPE LVC_S_FCAT,
          LS_VARI  TYPE DISVARIANT.
    *                START-OF_SELECTION
    START-OF-SELECTION.
      DATA:BEGIN OF  ITAB OCCURS 0,
           VBELN LIKE LIKP-VBELN,
           POSNR LIKE LIPS-POSNR,
           CELLCOLOR TYPE LVC_T_SCOL, "required for color
           DROP(10),
           END OF ITAB.
      SELECT VBELN
             POSNR
             FROM LIPS
             UP TO 20 ROWS
             INTO CORRESPONDING FIELDS OF TABLE ITAB.
    END-OF-SELECTION.
      IF NOT ITAB[] IS INITIAL.
        CALL SCREEN 100.
      ELSE.
        MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'(004).
      ENDIF.
    *&      Form  CREATE_AND_INIT_ALV
    *       text
    FORM CREATE_AND_INIT_ALV .
      DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.
      CREATE OBJECT G_CUSTOM_CONTAINER
             EXPORTING CONTAINER_NAME = G_CONTAINER1.
      CREATE OBJECT G_GRID
             EXPORTING I_PARENT = G_CUSTOM_CONTAINER.
    * Set a titlebar for the grid control
      CLEAR GS_LAYOUT.
      GS_LAYOUT-GRID_TITLE = TEXT-003.
      GS_LAYOUT-ZEBRA = SPACE.
      GS_LAYOUT-CWIDTH_OPT = 'X'.
      GS_LAYOUT-NO_ROWMARK = 'X'.
      GS_LAYOUT-CTAB_FNAME = 'CELLCOLOR'.
      CALL METHOD G_GRID->REGISTER_EDIT_EVENT
        EXPORTING
          I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
      CREATE OBJECT G_HANDLER.
      SET HANDLER G_HANDLER->HANDLE_DOUBLE_CLICK FOR G_GRID.
      SET HANDLER G_HANDLER->HANDLE_HOTSPOT_CLICK FOR G_GRID.
      DATA: LS_CELLCOLOR TYPE LVC_S_SCOL. "required for color
      DATA: L_INDEX TYPE SY-TABIX.
      "Here i am changing the color of line 1,5,10...
      "so you can change the color of font conditionally
      LOOP AT ITAB.
        L_INDEX = SY-TABIX.
        IF L_INDEX = 1 OR L_INDEX = 5 OR L_INDEX = 10.
          LS_CELLCOLOR-FNAME = 'VBELN'.
          LS_CELLCOLOR-COLOR-COL = '6'.
          LS_CELLCOLOR-COLOR-INT = '0'.
          LS_CELLCOLOR-COLOR-INV = '1'.
          APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.
          MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.
          LS_CELLCOLOR-FNAME = 'POSNR'.
          LS_CELLCOLOR-COLOR-COL = '6'.
          LS_CELLCOLOR-COLOR-INT = '0'.
          LS_CELLCOLOR-COLOR-INV = '1'.
          APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.
          MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.
        ENDIF.
      ENDLOOP.
    * setting focus for created grid control
      CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
        EXPORTING
          CONTROL = G_GRID.
    * Build fieldcat and set editable for date and reason code
    * edit enabled. Assign a handle for the dropdown listbox.
      PERFORM BUILD_FIELDCAT.
      PERFORM  SET_DRDN_TABLE.
    * Optionally restrict generic functions to 'change only'.
    *   (The user shall not be able to add new lines).
      PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE.
    **Vaiant to save the layout
      LS_VARI-REPORT      = SY-REPID.
      LS_VARI-HANDLE      = SPACE.
      LS_VARI-LOG_GROUP   = SPACE.
      LS_VARI-USERNAME    = SPACE.
      LS_VARI-VARIANT     = SPACE.
      LS_VARI-TEXT        = SPACE.
      LS_VARI-DEPENDVARS  = SPACE.
    **Calling the Method for ALV output
      CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          IT_TOOLBAR_EXCLUDING = LT_EXCLUDE
          IS_VARIANT           = LS_VARI
          IS_LAYOUT            = GS_LAYOUT
          I_SAVE               = 'A'
        CHANGING
          IT_FIELDCATALOG      = IT_FIELDCAT
          IT_OUTTAB            = ITAB[].
    * Set editable cells to ready for input initially
      CALL METHOD G_GRID->SET_READY_FOR_INPUT
        EXPORTING
          I_READY_FOR_INPUT = 1.
    ENDFORM.                               "CREATE_AND_INIT_ALV
    *&      Form  EXCLUDE_TB_FUNCTIONS
    *       text
    *      -->PT_EXCLUDE text
    FORM EXCLUDE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.
    * Only allow to change data not to create new entries (exclude
    * generic functions).
      DATA LS_EXCLUDE TYPE UI_FUNC.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
    ENDFORM.                               " EXCLUDE_TB_FUNCTIONS
    *&      Form  build_fieldcat
    *       Fieldcatalog
    FORM BUILD_FIELDCAT .
      DATA: L_POS TYPE I.
      L_POS = L_POS + 1.
      X_FIELDCAT-SCRTEXT_M = 'Delivery'(024).
      X_FIELDCAT-FIELDNAME = 'VBELN'.
      X_FIELDCAT-TABNAME = 'IT_FINAL'.
      X_FIELDCAT-COL_POS    = L_POS.
      X_FIELDCAT-NO_ZERO    = 'X'.
      X_FIELDCAT-OUTPUTLEN = '10'.
      X_FIELDCAT-HOTSPOT = 'X'.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
      L_POS = L_POS + 1.
      X_FIELDCAT-SCRTEXT_M = 'Item'(025).
      X_FIELDCAT-FIELDNAME = 'POSNR'.
      X_FIELDCAT-TABNAME = 'IT_FINAL'.
      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-SCRTEXT_M = 'Drop'(025).
      X_FIELDCAT-FIELDNAME = 'DROP'.
      X_FIELDCAT-TABNAME = 'IT_FINAL'.
      X_FIELDCAT-COL_POS    = L_POS.
      X_FIELDCAT-OUTPUTLEN = '5'.
      X_FIELDCAT-EDIT = 'X'.
      X_FIELDCAT-DRDN_HNDL = '1'.
      X_FIELDCAT-DRDN_ALIAS = 'X'.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
    ENDFORM.                    " build_fieldcat
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'MAIN100'.
      SET TITLEBAR 'MAIN100'.
      IF G_CUSTOM_CONTAINER IS INITIAL.
    **Initializing the grid and calling the fm to Display the O/P
        PERFORM CREATE_AND_INIT_ALV.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE USER_COMMAND_0100 INPUT.
      CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  SET_DRDN_TABLE
    *       text
    FORM SET_DRDN_TABLE.
      DATA:LT_DRAL TYPE LVC_T_DRAL,
            LS_DRAL TYPE LVC_S_DRAL.
      LOOP AT ITAB .
    * First listbox (handle '1').
        IF SY-INDEX = 1.
          LS_DRAL-HANDLE = '1'.
          LS_DRAL-VALUE =  ' '.
          LS_DRAL-INT_VALUE =  ' '.
        ELSE.
          LS_DRAL-HANDLE = '1'.
          LS_DRAL-VALUE =  ITAB-POSNR.
          LS_DRAL-INT_VALUE =  ITAB-POSNR.
        ENDIF.
        APPEND LS_DRAL TO LT_DRAL.
      ENDLOOP.
    **Setting the Drop down table for Reason Code
      CALL METHOD G_GRID->SET_DROP_DOWN_TABLE
        EXPORTING
          IT_DROP_DOWN_ALIAS = LT_DRAL.
    ENDFORM.                               " set_drdn_table
    Regards
    vijay

  • ALV color priority:  The layout color or the cell color?

    I'm trying to assign an ALV at the cell level but it is not showing up.  I have specificed the column color at the layout level.  Does the layout level have color priority?

    Hi
    see the doc and do accordingly
    1. add one more field to ur final internal table say COLOR(4)
    2. in layout wa_layout-style_fname = 'COLOR'. " if its grid
    wa_layout-style_fieldname = 'COLOR'. "if its list
    3. read table itab index 3.
    itab-color = 'C410'.
    modify itab index 3
    4. see program SHOWCOLO for all color codes
    1. Add a field of data type CHAR(3) to the internal output table.
    2. Enter the color code in the appropriate field of the row to be colored in the internal
    output table:
    Code: 'Cxy'
    C = Color (all codes begin with 'C')
    x = color number ('1' - '9')
    y = highlight ('0' = off, '1' = on)
    3. Assign the internal output table color code field name to the IS_LAYOUT importing
    structure IS_LAYOUT-INFO_FIELDNAME field and pass this structure in the ALV call
    interface.
    To enable row coloring, you should add an additional field to your list data table. It should be of character type and length at least 4. This field will contain the color code for the row. So, let’s modify declaration of our list data table “gt_list”.
    you should fill the color code to this field. Its format will be the same as explained before at section C.6.3. But how will ALV Grid know that you have loaded the color data for the row to this field. So, you make it know this by passing the name of the field containing color codes to the field “INFO_FNAME” of the layout structure.
    e.g.
    ps_layout-info_fname = <field_name_containing_color_codes>. “e.g. ‘ROWCOLOR’
    You can fill that field anytime during execution. But, of course, due to the flow logic of screens, it will be reflected to your list display as soon as an ALV refresh occurs.
    You can color an entire row as described in the next section. However, this method is less time consuming.
    Coloring Individual Cells
    This is the last point about coloring procedures for the ALV Grid. The procedure is similar to coloring an entire row. However, since an individual cell can be addressed with two parameters we will need something more. What is meant by “more” is a table type structure to be included into the structure of the list data table. It seems strange, because including it will make our list data structure deep. But anyhow ALV Grid control handles this.
    The structure that should be included must be of type “LVC_T_SCOL”. If you want to color the entire row, this inner table should contain only one row with field “fname” is set to space, some color value at field “col”, “0” or “1” at fields “int” (intensified) and “inv” (inverse).
    If you want to color individual cells, then for each cell column, append a line to this inner table which also contains the column name at field “fname”. It is obvious that you can color an entire column by filling this inner table with a row for that column for each row in the list data table.
    Regards
    Anji

  • ALV coloring help

    Hi all,
    Hi I have 2 requirements in ALV.
    1)  my third field is Sales Organisation.I have to make the column  heading of this column intesified.
    2)In the top of page I have to color a particular line.
    Please suggest some solution as soon as possible as I need it very urgently...
    Thanks
    Nazmul

    you can show the color in the Top of  page .
    Check this..
    TOP_OF_PAGE in ALV  Using CL_GUI_ALV_GRID
    and also check this
    report  ztest_page.
    tables: sflight.
    data : it_flight type table of sflight with header line.
    data begin of it_sel_opt occurs 0.
            include structure rsparams.
    data end   of it_sel_opt.
    select-options: s_carrid for sflight-carrid.
    start-of-selection.
      select * from sflight into table it_flight
       where carrid in s_carrid.
    end-of-selection.
      call function 'RS_REFRESH_FROM_SELECTOPTIONS'
        exporting
          curr_report     = sy-repid
        tables
          selection_table = it_sel_opt
        exceptions
          not_found       = 01
          no_report       = 02.
      call function 'REUSE_ALV_GRID_DISPLAY'
        exporting
          i_callback_program          = sy-repid
          i_callback_html_top_of_page = 'TOP_OF_PAGE'
          i_structure_name            = 'SFLIGHT'
        tables
          t_outtab                    = it_flight
        exceptions
          program_error               = 1
          others                      = 2.
    *&      Form  top_of_page
    *       text
    *      -->DOCUMENT   text
    form top_of_page using document type ref to cl_dd_document.
      data : dl_text(255) type c.  "Text
    * Add new-line
      call method document->new_line.
      call method document->new_line.
      clear : dl_text.
    * program ID
      dl_text = 'Program Name :'.
      call method document->add_gap.
      call method document->add_text
        exporting
          text         = dl_text
          sap_emphasis = cl_dd_area=>heading
          sap_color    = cl_dd_area=>list_heading_int.
      clear dl_text.
      dl_text = sy-repid.
      call method document->add_text
        exporting
          text         = dl_text
          sap_emphasis = cl_dd_area=>heading
          sap_color    = cl_dd_area=>list_negative_inv.
    * Add new-line
      call method document->new_line.
      clear : dl_text.
      dl_text = 'Selection Criteria'.
      call method document->add_gap
        exporting
          width = 34.
      call method document->add_text
        exporting
          text         = dl_text
          sap_emphasis = cl_dd_area=>heading
          sap_color    = cl_dd_area=>list_negative_inv.
    * Add new-line
      call method document->new_line.
      clear : dl_text.
      concatenate 'SELECT Option' 'SIGN' 'OPTION' 'LOW' 'HIGH'
      into dl_text separated by cl_abap_char_utilities=>horizontal_tab.
      call method document->add_gap
        exporting
          width = 34.
      call method document->add_text
        exporting
          text         = dl_text
          sap_emphasis = cl_dd_area=>heading
          sap_color    = cl_dd_area=>list_negative_inv.
    * Add new-line
      call method document->new_line.
      loop at it_sel_opt.
        clear : dl_text.
        concatenate it_sel_opt-selname  it_sel_opt-sign
         it_sel_opt-option it_sel_opt-low it_sel_opt-high
        into dl_text separated by cl_abap_char_utilities=>horizontal_tab.
        call method document->add_gap
          exporting
            width = 34.
        call method document->add_text
          exporting
            text         = dl_text
            sap_emphasis = cl_dd_area=>heading
            sap_color    = cl_dd_area=>list_negative_inv.
    * Add new-line
        call method document->new_line.
      endloop.
    endform.                    "top_of_page

  • ALV Color a CELL?

    HI all,
    i need to place a color for a cell.
    color is ORANGE.
    i am passing the code 7 to that field.
    but ia m getting PURPUL Color....
    I ned to make it ORANGE..
              ls_cellcolor-color-col = '7'.
              ls_cellcolor-color-int = '0'.
              ls_cellcolor-color-inv = '0'.
    PLaese help...
    sachin.

    hi  Samarendra
    try like this
    here is code
    TYPE-POOLS:slis.
    TABLES:mara,
           makt,
           marc.
    DATA:BEGIN OF itab OCCURS 0,
          matnr LIKE mara-matnr,
          maktx LIKE makt-maktx,
          werks LIKE marc-werks,
          mtart LIKE mara-mtart,
          matkl LIKE mara-matkl,
          meins LIKE mara-meins,
          ntgew LIKE mara-ntgew,
         rowcolor(4) TYPE c,
          cellcolors TYPE lvc_t_scol,
         END OF itab.
    DATA:t_fcat TYPE slis_t_fieldcat_alv,
         t_eve TYPE slis_t_event.
    DATA : st_layout TYPE slis_layout_alv.
    SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS:mat FOR mara-matnr.  " no intervals no-extension.
    *PARAMETERS:mat LIKE mara-matnr.
    SELECTION-SCREEN:END OF BLOCK blk1.
    INITIALIZATION.
      PERFORM build_cata USING t_fcat.
      PERFORM build_event.
    START-OF-SELECTION.
      PERFORM data_retrieval.
      PERFORM display_data.
    *&      Form  build_cata
          text
         -->TEMP_FCAT  text
    FORM build_cata USING temp_fcat TYPE slis_t_fieldcat_alv.
      sy-tvar0 = sy-uname.
      WRITE sy-datum TO sy-tvar1.
      DATA:wa_fcat TYPE slis_fieldcat_alv.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'MATNR'.
       wa_fcat-ref_tabname = 'MARA'.
    wa_fcat-ref_fieldname = 'MATNR'.
      wa_fcat-col_pos = 1.
      wa_fcat-seltext_m = 'Material'.
    wa_fcat-emphasize = 'C10'.                             "To change ALV Background Color
      APPEND wa_fcat TO temp_fcat.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'MAKTX'.
      wa_fcat-seltext_m = 'Description'.
      wa_fcat-fix_column = 'x'.
      wa_fcat-key = 'X'.                                     "To color a column
      APPEND wa_fcat TO temp_fcat.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'WERKS'.
      wa_fcat-seltext_m = 'Plant'.
      wa_fcat-key = ' '.
      APPEND wa_fcat TO temp_fcat.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'MTART'.
      wa_fcat-ddic_outputlen = 4.
      wa_fcat-row_pos = 2.
    wa_fcat-ref_tabname = 'MARA'.
    wa_fcat-ref_fieldname = 'MTART'.
    wa_fcat-seltext_m = 'Type'.
      APPEND wa_fcat TO temp_fcat.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'MATKL'.
      wa_fcat-ref_tabname = 'MARA'.
      wa_fcat-row_pos = 2.
    wa_fcat-ref_fieldname = 'MATKL'.
      wa_fcat-seltext_m = 'Group'.
      APPEND wa_fcat TO temp_fcat.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'MEINS'.
      wa_fcat-ref_tabname = ' '.
      wa_fcat-ref_fieldname = ' '.
      wa_fcat-row_pos = 2.
      wa_fcat-seltext_m = 'Measurement Unit'.
      APPEND wa_fcat TO temp_fcat.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'NTGEW'.
      wa_fcat-seltext_m = 'Net Value'.
      wa_fcat-row_pos = 2.
      wa_fcat-no_out = ' '.
      APPEND wa_fcat TO temp_fcat.
    ENDFORM.                    "build_cata
    *&      Form  build_event
          text
    FORM build_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = t_eve
        EXCEPTIONS
          list_type_wrong = 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.                    "build_event
    *&      Form  data_retrieval
          text
    FORM data_retrieval.
      SELECT maramatnr  maramtart maramatkl marameins mara~ntgew
       maktmaktx  marcwerks
      INTO CORRESPONDING FIELDS OF TABLE itab
      FROM mara INNER JOIN makt ON
      maramatnr = maktmatnr
      INNER JOIN marc ON
      maramatnr = marcmatnr
      WHERE mara~matnr IN mat.
      SORT itab BY matnr.
      DELETE ADJACENT DUPLICATES FROM itab.
    ENDFORM.                    "data_retrieval
    *&      Form  display_data
          text
    FORM display_data.
    *******************************For setting Cell Color*******************************************
      DATA ls_cellcolor TYPE lvc_s_scol .
      st_layout-coltab_fieldname = 'CELLCOLORS'.
      LOOP AT itab WHERE meins EQ 'KG'.
    READ TABLE itab INDEX 5 .
        ls_cellcolor-fname = 'MEINS' .
        ls_cellcolor-color-col = '7' .
        ls_cellcolor-color-int = '1' .
        APPEND ls_cellcolor TO itab-cellcolors .
        MODIFY itab TRANSPORTING cellcolors .
      ENDLOOP.
    st_layout-colwidth_optimize = 'X'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program       = 'ZALV_DS'
          is_layout                = st_layout
          i_save                   = 'X'
          it_fieldcat              = t_fcat
          it_events                = t_eve
        TABLES
          t_outtab                 = itab
        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_data

  • Alv color changing

    hi
      in alv output i got 10 records i need to change the color of only my 3rd record  (not the field) any one could give me an idea.

    REPORT ZTEST.
    TABLES:
      SPFLI.
    TYPE-POOLS:SLIS.
    DATA:
      T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
      FS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    DATA:
      FS_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA:
      W_COL_POS TYPE I.
    DATA: BEGIN OF FS_SPFLI,
            W_COL  TYPE SLIS_T_SPECIALCOL_ALV,
            CARRID TYPE SPFLI-CARRID,
            CONNID TYPE SPFLI-CONNID,
            COUNTRYFR TYPE SPFLI-COUNTRYFR,
            COUNTRYTO TYPE SPFLI-COUNTRYTO,
            CITYTO TYPE SPFLI-CITYTO,
            DISTANCE TYPE SPFLI-DISTANCE,
            DISTID TYPE SPFLI-DISTID,
            FLTYPE TYPE SPFLI-FLTYPE,
            CHK(1),
            COL(3),
          END OF FS_SPFLI.
    DATA:                                      " Field String for coloring a
      FS_COL TYPE SLIS_SPECIALCOL_ALV.         " cell
    *--For CheckBox--
    FS_LAYOUT-BOX_FIELDNAME = 'CHK'.
    *--For Row color--
    FS_LAYOUT-INFO_FIELDNAME = 'COL'.                 " Row Color
    *--For Coloring a Cell--
    FS_LAYOUT-COLTAB_FIELDNAME = 'W_COL'.
    DATA:
       T_SPFLI LIKE
      STANDARD TABLE
            OF FS_SPFLI.
    DATA:
      T_SORT TYPE SLIS_T_SORTINFO_ALV.
    DATA:
      FS_SORT TYPE SLIS_SORTINFO_ALV.
    FS_SORT-GROUP = 'UL'.
    APPEND FS_SORT TO T_SORT.
    SELECT CARRID
           CONNID
           COUNTRYFR
           FLTYPE
      INTO CORRESPONDING FIELDS OF TABLE T_SPFLI
      FROM SPFLI.
    WHERE CARRID EQ 'AA'.
    *--COLORING A CELL--
    CLEAR FS_SPFLI.
    FS_COL-FIELDNAME = 'CARRID'.
    FS_COL-COLOR-COL = 3.
    APPEND FS_COL TO FS_SPFLI-W_COL.
    MODIFY T_SPFLI FROM  FS_SPFLI INDEX 10 TRANSPORTING W_COL.
    MODIFY T_SPFLI FROM  FS_SPFLI INDEX 11 TRANSPORTING W_COL.
    *--COLORING A CELL--
    CLEAR FS_SPFLI.
    FS_COL-FIELDNAME = 'CONNID'.
    FS_COL-COLOR-COL = 5.
    APPEND FS_COL TO FS_SPFLI-W_COL.
    MODIFY T_SPFLI FROM  FS_SPFLI INDEX 3 TRANSPORTING W_COL.
    *--COLORING A ROW--
    FS_SPFLI-COL = 'C60'.
    MODIFY T_SPFLI INDEX 7 FROM FS_SPFLI TRANSPORTING COL.
    *--FIELD CATALOGUE--
    PERFORM FIELD_FILLING_CARRID.
    PERFORM FIELD_FILLING_CONNID.
    PERFORM FIELD_FILLING_COUNFR.
    PERFORM FIELD_FILLING_FLTYPE.
    PERFORM FIELD_FILL.
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK              = ' '
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                = ' '
      I_CALLBACK_PROGRAM             = ' '
      I_CALLBACK_PF_STATUS_SET       = ' '
      I_CALLBACK_USER_COMMAND        = ' '
       I_STRUCTURE_NAME               =
        IS_LAYOUT                      = FS_LAYOUT
        IT_FIELDCAT                    = T_FIELDCAT
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
        IT_SORT                        = T_SORT
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_DEFAULT                      = 'X'
      I_SAVE                         = ' '
      IS_VARIANT                     =
      IT_EVENTS                      =
      IT_EVENT_EXIT                  =
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
      IR_SALV_LIST_ADAPTER           =
      IT_EXCEPT_QINFO                =
      I_SUPPRESS_EMPTY_DATA          = ABAP_FALSE
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
      TABLES
        T_OUTTAB                       = T_SPFLI
    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.
    *&      Form  FIELD_FILLING_CARRID
          text
    -->  p1        text
    <--  p2        text
    FORM FIELD_FILLING_CARRID .
      ADD 01 TO W_COL_POS.
      FS_FIELDCAT-FIELDNAME = 'CARRID'.
      FS_FIELDCAT-REF_TABNAME = 'SPFLI'.
    FS_FIELDCAT-row_POS = W_COL_POS.
      FS_FIELDCAT-COL_POS = W_COL_POS.
      FS_FIELDCAT-KEY = 'X'.
      FS_FIELDCAT-OUTPUTLEN = 5.
      APPEND FS_FIELDCAT TO T_FIELDCAT.
      CLEAR FS_FIELDCAT.
    ENDFORM.                    " FIELD_FILLING_CARRID
    *&      Form  FIELD_FILLING_CONNID
          text
    -->  p1        text
    <--  p2        text
    FORM FIELD_FILLING_CONNID .
      ADD 01 TO W_COL_POS.
      FS_FIELDCAT-FIELDNAME = 'CONNID'.
      FS_FIELDCAT-REF_TABNAME = 'SPFLI'.
       FS_FIELDCAT-row_POS = W_COL_POS.
      FS_FIELDCAT-COL_POS = W_COL_POS.
      FS_FIELDCAT-KEY = 'X'.
      FS_FIELDCAT-OUTPUTLEN = 6.
      APPEND FS_FIELDCAT TO T_FIELDCAT.
      CLEAR FS_FIELDCAT.
    ENDFORM.                    " FIELD_FILLING_CONNID
    *&      Form  FIELD_FILLING_COUNFR
          text
    -->  p1        text
    <--  p2        text
    FORM FIELD_FILLING_COUNFR .
      ADD 01 TO W_COL_POS.
      FS_FIELDCAT-FIELDNAME = 'COUNTRYFR'.
      FS_FIELDCAT-REF_TABNAME = 'SPFLI'.
       FS_FIELDCAT-row_POS = W_COL_POS.
      FS_FIELDCAT-COL_POS = W_COL_POS.
    *FS_FIELDCAT-ICON = 'X'.
    FS_FIELDCAT-EMPHASIZE = 'X'.
      FS_FIELDCAT-OUTPUTLEN = 10.
      APPEND FS_FIELDCAT TO T_FIELDCAT.
      CLEAR FS_FIELDCAT.
    ENDFORM.                    " FIELD_FILLING_COUNFR
    *&      Form  FIELD_FILLING_FLTYPE
          text
    -->  p1        text
    <--  p2        text
    FORM FIELD_FILLING_FLTYPE .
      ADD 01 TO W_COL_POS.
      FS_FIELDCAT-FIELDNAME = 'FLTYPE'.
      FS_FIELDCAT-REF_TABNAME = 'SPFLI'.
      FS_FIELDCAT-COL_POS = W_COL_POS.
       FS_FIELDCAT-row_POS = W_COL_POS.
      FS_FIELDCAT-EMPHASIZE = 'C610'.                        " Column Color
      FS_FIELDCAT-KEY = SPACE.
    *FS_FIELDCAT-outputlen = 10.
      APPEND FS_FIELDCAT TO T_FIELDCAT.
      CLEAR FS_FIELDCAT.
    ENDFORM.                    " FIELD_FILLING_FLTYPE
    *&      Form  field_fill
          text
    -->  p1        text
    <--  p2        text
    FORM FIELD_FILL .
      ADD 01 TO W_COL_POS.
      FS_FIELDCAT-FIELDNAME = 'W_COL'.
    FS_FIELDCAT-REF_TABNAME = 'SPFLI'.
      FS_FIELDCAT-COL_POS = W_COL_POS.
       FS_FIELDCAT-row_POS = W_COL_POS.
    FS_FIELDCAT-EMPHASIZE = 'C610'.                        " Column Color
      FS_FIELDCAT-KEY = SPACE.
      FS_FIELDCAT-SELTEXT_L = 'NOT FROM DDIC'.
      FS_FIELDCAT-OUTPUTLEN = 20.
      APPEND FS_FIELDCAT TO T_FIELDCAT.
      CLEAR FS_FIELDCAT.
    ENDFORM.                    " field_fill
    Go through the following code.... It will help you in all the aspects...
    Reward if it helps u........

  • ALV COLOR PROGRAM

    Hi,
    Please send me a sample prgm for colouring a single cell in an alv report.

    REPORT  zsd_sales_prodgroup
            LINE-SIZE 351
            NO STANDARD PAGE HEADING
            LINE-COUNT 65
            MESSAGE-ID 00.
    INCLUDE zcommon_part.
           TABLES                                                        *
    TABLES: vbrk, "Billing Document: Header Data
            vbrp, "Billing Document: Item Data
            zsd_national, "Table for National level reports
            mara, "General Material Data
            t179t. "P
           INTERNAL TABLES AND STRUCTURES                                *
    DATA: BEGIN OF it_data OCCURS 0.
            INCLUDE STRUCTURE zsd_national.
           vkbur    like zsd_national-vkbur,
           SUMMERY  like zsd_national-SUMMERY,
           sum_text like zsd_national-sum_text,
           sqno     like zsd_national-sqno,
    DATA:   vbeln    LIKE vbrk-vbeln,
            matnr    LIKE vbrp-matnr,
            q1(20),"       like vbrp-fkimg,
            q2(20),"      like vbrp-fkimg,
            q3(20),"       like vbrp-fkimg,
            q4(20),"       like vbrp-fkimg,
            wk1(20),"     like vbrp-fkimg,
            wk2(20),"     like vbrp-fkimg,
            wk3(20),"      like vbrp-fkimg,
            wk4(20),"      like vbrp-fkimg,
            wk5(20),"      like vbrp-fkimg,
            wk6(20),"      like vbrp-fkimg,
            wk7(20),"      like vbrp-fkimg,
            wk8(20),"      like vbrp-fkimg,
            wk9(20),"      like vbrp-fkimg,
            wk10(20),"     like vbrp-fkimg,
            wk11(20),"     like vbrp-fkimg,
            wk12(20),"     like vbrp-fkimg,
            wk13(20),"     like vbrp-fkimg,
            wk_tot(20),"   like vbrp-fkimg,
            fkimg(20),"    like vbrp-fkimg,
            tot_week(20)," like vbrp-fkimg,
            ason_total(20)," like vbrp-fkimg,
            ly_total(20)," like vbrp-fkimg,
            allindia(20)," like vbrp-fklmg,
            goly TYPE i,
            tons LIKE vbrp-fkimg,
           allindia like vbrp-fkimg,
             color          TYPE lvc_t_scol,
          END OF it_data.
    DATA: BEGIN OF it_vbrp OCCURS 0,
            fkdat LIKE vbrk-fkdat,
            vkorg LIKE vbrk-vkorg,
            vtweg LIKE vbrk-vtweg,
            fkart LIKE vbrk-fkart,
            fkimg LIKE vbrp-fkimg,
            umvkz LIKE vbrp-umvkz,
            umvkn LIKE vbrp-umvkn,
            fklmg LIKE vbrp-fklmg,
            vkbur LIKE vbrp-vkbur,
            vbeln LIKE vbrp-vbeln,
            matnr LIKE vbrp-matnr,
            prodh LIKE vbrp-prodh,
            matkl LIKE vbrp-matkl,
          END OF it_vbrp.
    DATA: BEGIN OF it_vbeln OCCURS 0,
            vbeln LIKE vbrk-vbeln,
            fkart LIKE vbrk-fkart,
            fkdat LIKE vbrk-fkdat,
            vkorg LIKE vbrk-vkorg,
            vtweg LIKE vbrk-vtweg,
          END OF it_vbeln.
    DATA: BEGIN OF it_prmatnr OCCURS 0,
            ntgew LIKE mara-ntgew, "netweight
            matnr LIKE mvke-matnr,
            prodh LIKE mvke-prodh,
            vkorg LIKE mvke-vkorg,
            vtweg LIKE mvke-vtweg,
          END OF it_prmatnr.
    DATA: it_data_temp LIKE it_data OCCURS 0 WITH HEADER LINE.
    DATA: color    TYPE TABLE          OF lvc_s_scol WITH HEADER LINE.
    *ALV VARIABLES AND INTERNAL TABLES                                     *
    TYPE-POOLS: slis.
    DATA: v_repid LIKE sy-repid,
          st_layout TYPE slis_layout_alv,
          it_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
          it_listheader TYPE slis_t_listheader,
          it_event TYPE slis_t_event.
    *VARIABLES                                                            *
    DATA: v_pc           LIKE t009b-periv VALUE 'PC',
          v_wc           LIKE t009b-periv VALUE 'WC',
          v_date         LIKE sy-datum,
          v_ly_date      LIKE sy-datum,
          v_qtr_fir_date LIKE sy-datum,
          v_yr_fir_date  LIKE sy-datum,
          v_yr_last_date LIKE sy-datum,
          v_month        LIKE t009b-poper,
          v_lastmonth    LIKE t009b-poper,
          v_back_months  LIKE t009b-poper,
          v_curweek      LIKE t009b-poper,
          v_fdate        LIKE sy-datum,
          v_cyfd         LIKE sy-datum,
          v_lyfd         LIKE sy-datum,
          v_ldate        LIKE sy-datum,
          v_year         LIKE t009b-bdatj,
          v_last_year    LIKE t009b-bdatj,
          v_fkimg(20), "  like vbrp-fkimg ,
          v_fkimg1(20) ,
          v_goly_lyfkimg LIKE vbrp-fkimg ,
          v_goly_cyfkimg LIKE vbrp-fkimg ,
          vtext LIKE t179t-vtext,
          v_cnt(2)       TYPE  c,          "For Counter
          v_fld(6)       TYPE  c,          " For Field name
          v_qtr          LIKE t009b-poper,
          l_pos          TYPE i VALUE 1,  "Position indicator for
          v_wk(4),
          v_fldtxt(15)   TYPE  c,          "fieldcatalog
          v_last_qtr     LIKE t009b-poper,
          v_curpc        TYPE n,
          v_colposi(2)   TYPE n,
          v_currqtr      LIKE t009b-poper,
          v_next_qtr     LIKE t009b-poper,
          v_fpc          LIKE t009b-poper,
          v_lpc          LIKE t009b-poper,
          v_unit         LIKE mara-meins.
    INITIALIZATION.
      v_repid = sy-repid.
    *SELECTION SCREEN DEFINITIONS                                         *
      SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-000.
      SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
      PARAMETERS: p_date  TYPE sy-datum OBLIGATORY.
      SELECT-OPTIONS: s_prodh FOR mara-prdha OBLIGATORY.
      SELECTION-SCREEN END OF BLOCK b1.
            selection-screen skip.
      SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
      SELECT-OPTIONS: s_vkorg FOR vbrk-vkorg,
                      s_vtweg FOR vbrk-vtweg.
      PARAMETERS :  p_spart TYPE vbrk-spart.
      SELECTION-SCREEN END OF BLOCK b2.
      SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
      SELECT-OPTIONS : so_rev   FOR vbrk-fkart NO INTERVALS.
      SELECTION-SCREEN END OF BLOCK b3.
      SELECTION-SCREEN END OF BLOCK b.
    *START-OF-SELECTION
    START-OF-SELECTION.
      perform check_background using sy-batch sy-uname.
      PERFORM find_qtr.
      PERFORM get_vbrk-vbrp.
      PERFORM get_data.
      PERFORM get_ly_data.
      PERFORM add_data.
    *TO add the Speciality details in the speciality sales total column.
      perform add_data_speciality.
    PERFORM delete_data.
      PERFORM color_data.
      IF it_data[] IS NOT INITIAL.
        PERFORM output_data.
      ELSE.
        MESSAGE i012(zmsg).
      ENDIF.
    END-OF-SELECTION.
    TOP-OF-PAGE.
      PERFORM alv_events USING it_event.
    *END-OF-SELECTION
    *&      Form  find_qtr
    FORM find_qtr .
      CLEAR v_date.
      CLEAR v_month.
      CLEAR v_date.
      v_date = p_date.
    *Finding the period from selected date.
      PERFORM get_period USING v_date v_pc CHANGING v_month v_year .
      IF v_month >= '001' AND v_month     <= '003'.
        v_qtr = 1.
        v_month = '001'.
        PERFORM get_first_day
                           USING v_date v_pc v_month
                           CHANGING v_qtr_fir_date.
      ELSEIF v_month >= '004' AND v_month <= '006'.
        v_qtr = 2.
        v_month = '004'.
        PERFORM get_first_day
                           USING v_date v_pc v_month
                           CHANGING v_qtr_fir_date.
      ELSEIF v_month >= '007' AND v_month <= '009'.
        v_qtr = 3.
        v_month = '007'.
        PERFORM get_first_day
                           USING v_date v_pc v_month
                           CHANGING v_qtr_fir_date.
      ELSEIF v_month >= '010' AND v_month <= '012'.
        v_qtr = 4.
        v_month = '010'.
        PERFORM get_first_day
                           USING v_date v_pc v_month
                           CHANGING v_qtr_fir_date.
      ENDIF.
    *Getting data for  2 years(present and previous).
      v_ly_date = v_date.
      v_back_months = 12.
      PERFORM go_months_back USING v_date v_back_months CHANGING v_ly_date.
      v_month = '001'.
      PERFORM get_first_day
                         USING v_ly_date v_pc v_month
                         CHANGING v_yr_fir_date.
      v_month = '012'.
      PERFORM get_last_day
                           USING v_date v_pc v_month
                           CHANGING v_yr_last_date.
    ENDFORM.                    " find_qtr
    *&      Form  get_vbrk-vbrp
    FORM get_vbrk-vbrp .
      SELECT * FROM zsd_national
               INTO CORRESPONDING FIELDS OF TABLE it_data .
      SORT it_data BY sqno.
    SELECT *  INTO CORRESPONDING FIELDS OF TABLE it_vbeln
                              FROM vbrk
                              WHERE fkdat >= v_yr_fir_date AND
                                    fkdat <= v_yr_last_date AND
                                    vkorg IN s_vkorg  AND
                                    vtweg IN s_vtweg  AND
                                    spart = p_spart   AND
                                 fkart NOT IN ('G2','ZG2','F8','ZF8').
    IF it_vbeln[] IS NOT INITIAL.
       SELECT * INTO CORRESPONDING FIELDS OF TABLE it_vbrp FROM vbrp
                               FOR ALL ENTRIES IN it_vbeln  WHERE
                               vbeln = it_vbeln-vbeln
                               AND vkbur <> '    '
                               AND prodh IN s_prodh
                         AND pstyv NOT IN  ('TANN','RENN','ZENN', 'ZRNN' ) .
                             and matnr = p_matnr.
    ENDIF.
    SORT it_vbeln BY vbeln.
    SORT it_vbrp BY vbeln.
    LOOP AT it_vbeln.
       LOOP AT it_vbrp WHERE vbeln = it_vbeln-vbeln.
         MOVE-CORRESPONDING  it_vbeln TO it_vbrp.
         MODIFY it_vbrp.
         CLEAR it_vbrp.
       ENDLOOP.
    ENDLOOP.
    *Selecting Product Heirarchy Materials.
    SELECT * INTO CORRESPONDING FIELDS OF TABLE it_prmatnr FROM mvke AS a
                           INNER JOIN mara AS b ON amatnr = bmatnr WHERE
                                      a~prodh IN s_prodh AND
                                      a~vkorg IN s_vkorg AND
                                      a~vtweg IN s_vtweg.
    *Get billing doc's for last year first day to current year last day
      SELECT Avbeln Afkdat Avkorg Avtweg A~fkart
             Bfkimg Bumvkz Bumvkn Bfklmg Bvkbur Bmatnr Bprodh Bmatkl
                               INTO CORRESPONDING FIELDS OF TABLE it_VBRP
                               FROM vbrk AS A
                               INNER JOIN VBRP AS B ON Avbeln = Bvbeln
                               WHERE A~fkdat >= v_yr_fir_date AND
                                     A~fkdat <= v_yr_last_date AND
                                     A~vkorg IN s_vkorg  AND
                                     A~vtweg IN s_vtweg  AND
                                     A~spart = p_spart   AND
                                     A~fkart NOT IN ('G2','ZG2','F8','ZF8') AND
                                     B~vkbur <> '    ' AND
                                     B~prodh IN s_prodh AND
                                     B~pstyv NOT IN  ('TANN','RENN','ZENN', 'ZRNN' ) .
    *Get materials for sales area and product hier
      SELECT matnr prodh vkorg vtweg
                                INTO CORRESPONDING FIELDS OF TABLE it_prmatnr
                                FROM mvke
                                WHERE prodh IN s_prodh AND
                                       vkorg IN s_vkorg AND
                                       vtweg IN s_vtweg.
      LOOP AT it_prmatnr.
    *Get material net weight
        SELECT SINGLE ntgew INTO it_prmatnr-ntgew
                            FROM mara
                            WHERE matnr = it_prmatnr-matnr.
        MODIFY it_prmatnr.
        CLEAR it_prmatnr.
      ENDLOOP.
      SORT it_vbrp BY matnr.
      SORT it_prmatnr BY matnr.
      LOOP AT it_vbrp.
        clear it_prmatnr.
        READ TABLE it_prmatnr WITH KEY matnr = it_vbrp-matnr
                                       vkorg = it_vbrp-vkorg
                                       vtweg = it_vbrp-vtweg.
        IF sy-subrc <> 0.
          DELETE it_vbrp.
          CONTINUE.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " get_vbrk-vbrp
    *&      Form  get_data
    FORM get_data .
      LOOP AT it_data WHERE vkbur <> '    '.
        DO 4 TIMES.
          CLEAR it_data-fkimg.
    *Finding current quarter to get first and last day of this quarter
          CLEAR v_fkimg.
          IF sy-index = 1 AND v_qtr <> sy-index.
            v_fpc = 001.
            v_lpc = 003.
            CLEAR v_fkimg.
            CLEAR v_fdate.
            CLEAR v_ldate.
            PERFORM get_first_last_date.
            PERFORM get_fkimg.
            PERFORM fill_week USING 'QTR'.
          ELSEIF sy-index = 2 AND v_qtr <> sy-index.
            v_fpc = 004.
            v_lpc = 006.
            CLEAR v_fkimg.
            CLEAR v_ldate.
            CLEAR v_fdate.
            PERFORM get_first_last_date.
            PERFORM get_fkimg.
            PERFORM fill_week USING 'QTR'.
          ELSEIF sy-index = 3 AND v_qtr <> sy-index.
            v_fpc = 007.
            v_lpc = 009.
            CLEAR v_ldate.
            CLEAR v_fdate.
            CLEAR v_fkimg.
            PERFORM get_first_last_date.
            PERFORM get_fkimg.
            PERFORM fill_week USING 'QTR'.
          ELSEIF sy-index = 4 AND v_qtr <> sy-index.
            v_fpc = 010.
            v_lpc = 012.
            CLEAR v_ldate.
            CLEAR v_fdate.
            CLEAR v_fkimg.
            PERFORM get_first_last_date.
            PERFORM get_fkimg.
            PERFORM fill_week USING 'QTR'.
          ENDIF.
    Get the value for fkimg (Invoiced Quantity).
         perform get_fkimg.
         perform fill_week using 'WK'.
    Moving value for fkimg
        ENDDO.
        PERFORM get_period
                          USING v_qtr_fir_date v_wc
                          CHANGING v_curweek v_year.
    *Calling subroutines to create fieldcatalog,fill fieldcatalog and
    *intenal table dynamicaly based on user selected date(Quarter).
        DO 13 TIMES.
    Calling subroutine to get first date of current week
          CLEAR v_fkimg.
          PERFORM get_first_day
                      USING v_date v_wc v_curweek
                      CHANGING v_fdate.
    Calling subroutine to get last date of current week
          PERFORM get_last_day
                      USING v_date v_wc v_curweek
                      CHANGING v_ldate.
          PERFORM get_fkimg.
          PERFORM fill_week USING 'WK'.
          v_curweek = v_curweek + 1.
          CLEAR v_fkimg.
        ENDDO.
    CALCULATE TOTAL FOR AS ON DATE YEAR
        v_fdate = v_cyfd.
        v_ldate = sy-datum.
        PERFORM get_fkimg.
        it_data-ason_total = v_fkimg.
    CALCULATE TOTAL FOR PREVIOUS YEAR
        PERFORM get_first_day
                         USING v_date v_pc '001'
                         CHANGING v_fdate.
        v_cyfd = v_fdate. "current year first day
        "(will be used in as on date)
        v_back_months = 12.
        PERFORM go_months_back USING v_fdate v_back_months CHANGING v_fdate.
        v_lyfd = v_fdate. "last year first day(will be used in goly).
        PERFORM get_last_day
                         USING  v_lyfd v_pc '012'
                         CHANGING v_ldate.
    To be checked
       v_yr_fir_date     = v_lyfd.
       v_yr_last_date    = v_ldate.
       perform get_vbrk-vbrp.
        CLEAR v_fkimg.
        PERFORM get_fkimg.
        it_data-ly_total = v_fkimg.
    CALCULATION FOR GOLY
    *Calculating fkimg for last year.
    *Dates passed are last year first date and 12 months back from present
    *date.
        v_fdate = v_lyfd.
        v_ldate = sy-datum.
        v_back_months = 12.
        PERFORM go_months_back USING v_ldate v_back_months CHANGING v_ldate.
        PERFORM get_fkimg.
        v_goly_lyfkimg = v_fkimg.
        IF v_goly_lyfkimg <> 0 .
    *Calculating fkimg for present year (this will be same as 'As On
    *Total')
          v_goly_cyfkimg = it_data-ason_total.
          it_data-goly   =
        (  (  v_goly_cyfkimg  - v_goly_lyfkimg ) / v_goly_lyfkimg ) * 100.
        ELSEIF v_goly_lyfkimg = 0 .
          it_data-goly = 100.
        ENDIF.
        MODIFY it_data.
        CLEAR it_data.
      ENDLOOP.
    ENDFORM.                    " get_data
    *&      Form  get_first_last_date
          text
    FORM get_first_last_date .
    *Calling inlude prog subroutine to get first date of Quarter
      PERFORM get_first_day
                        USING v_date v_pc v_fpc
                        CHANGING v_fdate.
       Calling inlude prog subroutine to get last date of month
      PERFORM get_last_day
                        USING v_date v_pc v_lpc
                        CHANGING v_ldate.
    ENDFORM.                    " get_first_last_date
    *&      Form  get_fkimg
    FORM get_fkimg  .
      SORT it_vbrp BY vkbur.
      CLEAR v_fkimg.
      LOOP AT it_vbrp WHERE fkdat >= v_fdate  AND fkdat  <= v_ldate
                            AND vkbur = it_data-vkbur.
        PERFORM get_unit USING it_vbrp-matkl CHANGING v_unit.
        READ TABLE it_prmatnr WITH KEY matnr = it_vbrp-matnr.
        if sy-subrc <> 0.
         it_vbrp-fkimg =  it_vbrp-fkimg * ( it_vbrp-umvkz   /
                                    it_vbrp-umvkn ).
        IF v_unit = 'CV'.
          PERFORM convert_to_cv USING it_vbrp-matnr
                                      it_vbrp-fklmg
                                      'CS'
                             CHANGING it_vbrp-fklmg.
        ELSEIF v_unit = 'PAC'.
          PERFORM convert_to_cv USING it_vbrp-matnr
                                      it_vbrp-fklmg
                                      'PAK'
                             CHANGING it_vbrp-fklmg.
    added on 12.03.2007 as per the requirement.
        ELSEIF v_unit = 'TAB'.
          PERFORM convert_to_cv USING it_vbrp-matnr
                                       it_vbrp-fklmg
                                       'TAB'
                              CHANGING it_vbrp-fklmg.
    *AS PER THE REQUIREMENT THE QTY IS DIVIDED BY 1000
          it_vbrp-fklmg = it_vbrp-fklmg / 1000.
        ELSEIF v_unit = 'TON'.
          it_vbrp-fklmg = ( it_vbrp-fklmg * it_prmatnr-ntgew ) /
                                                  1000000.
        ENDIF.
    *Deducting sales return invoice quantity
       IF ( it_vbrp-fkart = 'RE'   OR
            it_vbrp-fkart = 'ZRE'  OR
            it_vbrp-fkart = 'ZRE1' OR
            it_vbrp-fkart = 'ZFR'  OR
            it_vbrp-fkart = 'S1' ).
        IF it_vbrp-fkart IN so_rev.
          v_fkimg =  v_fkimg - it_vbrp-fklmg.
        ELSE.
          v_fkimg =  v_fkimg + it_vbrp-fklmg.
        ENDIF.
      ENDLOOP.
      IF v_unit = 'EA'.
        WRITE v_fkimg TO v_fkimg1 DECIMALS 0.
      ELSE.
        v_fkimg1 = v_fkimg.
      ENDIF.
    ENDFORM. " get_fkimg
    *&      Form  fill_week
    FORM fill_week  USING    value(v_wkqc).
      IF v_wkqc = 'WK'.
        CASE sy-index.
          WHEN 1.
            it_data-wk1 = v_fkimg1.
            it_data-tot_week = it_data-tot_week + v_fkimg1.
          WHEN 2.
            it_data-wk2 = v_fkimg1.
            it_data-tot_week = it_data-tot_week + v_fkimg1.
          WHEN 3.
            it_data-wk3 = v_fkimg1.
            it_data-tot_week = it_data-tot_week + v_fkimg1.
          WHEN 4.
            it_data-wk4 = v_fkimg1.
            it_data-tot_week = it_data-tot_week + v_fkimg1.
          WHEN 5.
            it_data-wk5 = v_fkimg1.
            it_data-tot_week = it_data-tot_week + v_fkimg1.
          WHEN 6.
            it_data-wk6 = v_fkimg1.
            it_data-tot_week = it_data-tot_week + v_fkimg1.
          WHEN 7.
            it_data-wk7 = v_fkimg1.
            it_data-tot_week = it_data-tot_week + v_fkimg1.
          WHEN 8.
            it_data-wk8 = v_fkimg1.
            it_data-tot_week = it_data-tot_week + v_fkimg1.
          WHEN 9.
            it_data-wk9 = v_fkimg1.
            it_data-tot_week = it_data-tot_week + v_fkimg1.
          WHEN 10.
            it_data-wk10 = v_fkimg1.
            it_data-tot_week = it_data-tot_week + v_fkimg1.
          WHEN 11.
            it_data-wk11 = v_fkimg1.
            it_data-tot_week = it_data-tot_week + v_fkimg1.
          WHEN 12.
            it_data-wk12 = v_fkimg1.
            it_data-tot_week = it_data-tot_week + v_fkimg1.
          WHEN 13.
            it_data-wk13 = v_fkimg1.
            it_data-tot_week = it_data-tot_week + v_fkimg1.
        ENDCASE.
      ELSEIF v_wkqc = 'QTR'.
        CASE sy-index.
          WHEN 1.
             if sy-index = 1 and v_qtr <> sy-index.
             elseif sy-index = 2 and v_qtr <> sy-index.
             elseif sy-index = 3 and v_qtr <> sy-index.
             elseif sy-index = 4 and v_qtr <> sy-index.
             endif.
            it_data-q1 = v_fkimg1.
          WHEN 2.
            it_data-q2 = v_fkimg1.
          WHEN 3.
            it_data-q3 = v_fkimg1.
          WHEN 4.
            it_data-q4 = v_fkimg1.
        ENDCASE.
      ENDIF.
    ENDFORM.                    " fill_week
    *&      Form  add_data
    FORM add_data .
      MOVE it_data[] TO it_data_temp[].
      SORT it_data BY sqno.
      SORT it_data_temp BY sqno.
      LOOP AT it_data WHERE summery <> ' ' AND summery <> 'N'.
        IF it_data-summery = 'X' .
          LOOP AT it_data_temp
                  WHERE sqno >= it_data-fr AND sqno <= it_data-upto.
            PERFORM add_fields.
          ENDLOOP.
        ENDIF.
    *if it_data-ason_total = 0 .
    delete it_data.
    continue.
    *endif.
        MODIFY it_data.
        CLEAR  it_data.
      ENDLOOP.
      MOVE it_data[] TO it_data_temp[].
      LOOP AT it_data WHERE summery <> ' ' AND summery <> 'N'.
        IF it_data-summery = 'A'.
          READ TABLE it_data_temp WITH KEY sqno = it_data-fr.
          IF sy-subrc = 0.
            PERFORM add_fields.
          ENDIF.
          READ TABLE it_data_temp WITH KEY sqno = it_data-upto.
          IF sy-subrc = 0.
            PERFORM add_fields.
          ENDIF.
        ENDIF.
        MODIFY it_data.
        CLEAR  it_data.
      ENDLOOP.
    ENDFORM.                    " add_data
    *&      Form  add_fields
    FORM add_fields .
      it_data-q1 = it_data-q1 + it_data_temp-q1.
      it_data-q2 = it_data-q2 + it_data_temp-q2.
      it_data-q3 = it_data-q3 + it_data_temp-q3.
      it_data-q4 = it_data-q4 + it_data_temp-q4.
      it_data-wk1 = it_data-wk1 + it_data_temp-wk1.
      it_data-wk2 = it_data-wk2 + it_data_temp-wk2.
      it_data-wk3 = it_data-wk3 + it_data_temp-wk3.
      it_data-wk4 = it_data-wk4 + it_data_temp-wk4.
      it_data-wk5 = it_data-wk5 + it_data_temp-wk5.
      it_data-wk6 = it_data-wk6 + it_data_temp-wk6.
      it_data-wk7 = it_data-wk7 + it_data_temp-wk7.
      it_data-wk8 = it_data-wk8 + it_data_temp-wk8.
      it_data-wk9 = it_data-wk9 + it_data_temp-wk9.
      it_data-wk10 = it_data-wk10 + it_data_temp-wk10.
      it_data-wk11 = it_data-wk11 + it_data_temp-wk11.
      it_data-wk12 = it_data-wk12 + it_data_temp-wk12.
      it_data-wk13 = it_data-wk13 + it_data_temp-wk13.
      it_data-tot_week = it_data-tot_week + it_data_temp-tot_week.
      it_data-ly_total = it_data-ly_total + it_data_temp-ly_total.
      it_data-ason_total = it_data-ason_total + it_data_temp-ason_total.
      it_data-allindia = it_data-allindia + it_data_temp-allindia.
    ENDFORM.                    " add_fields
    *&      Form  color_data
          text
    FORM color_data.
      LOOP AT it_data.
      Color
        CLEAR   color.
        REFRESH color.
       IF NOT it_data-summery IS INITIAL.
         IF it_data-summery <> ' ' and it_data-summery <> 'N'.
          color-color-col = '5'.
          color-color-int = '1'.
          color-color-inv = '1'.
         color-nokeycol = 'X'.
          color-fname = 'Q1'. APPEND color.
          color-fname = 'Q2'. APPEND color.
          color-fname = 'Q3'. APPEND color.
          color-fname = 'Q4'. APPEND color.
          color-fname = 'TOT_WEEK'. APPEND color.
          color-fname = 'WK1'.  APPEND color.
          color-fname = 'WK2'.  APPEND color.
          color-fname = 'WK3'.   APPEND color.
          color-fname = 'WK4'.  APPEND color.
          color-fname = 'WK5'.  APPEND color.
          color-fname = 'WK6'.  APPEND color.
          color-fname = 'WK7'.  APPEND color.
          color-fname = 'WK8'.  APPEND color.
          color-fname = 'WK9'.  APPEND color.
          color-fname = 'WK10'. APPEND color.
          color-fname = 'WK11'. APPEND color.
          color-fname = 'WK12'. APPEND color.
          color-fname = 'WK13'. APPEND color.
          color-fname = 'SUM_TEXT'. APPEND color.
          color-fname = 'LY_TOTAL'. APPEND color.
          color-fname = 'ASON_TOTAL'. APPEND color.
          color-fname = 'GOLY'. APPEND color.
          it_data-color = color[].
          MODIFY it_data.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    "color_data
    *&      Form  output_data
    FORM output_data .
    *To delete the GR Punjab And UP West
      loop at it_data.
        if it_data-SQNO = '3' or it_data-SQNO = '6'.
          delete it_data.
        endif.
      endloop.
      PERFORM fill_layout_structure.
      PERFORM fill_listheader USING it_listheader.
      PERFORM fill_fieldcatalog USING 'SUM_TEXT' 'Sales Office' 10
    'IT_DATA' .
      IF v_qtr = 1.
        PERFORM fill_fieldcatalog  USING :
         'WK1'       'WK1'    10  'IT_DATA' ,
         'WK2'       'WK2'    10  'IT_DATA' ,
         'WK3'       'WK3'    10  'IT_DATA' ,
         'WK4'       'WK4'    10  'IT_DATA' ,
         'WK5'       'WK5'    10  'IT_DATA' ,
         'WK6'       'WK6'    10  'IT_DATA' ,
         'WK7'       'WK7'    10  'IT_DATA' ,
         'WK8'       'WK8'    10  'IT_DATA',
         'WK9'       'WK9'    10  'IT_DATA' ,
         'WK10'      'WK10'   10  'IT_DATA' ,
         'WK11'      'WK11'   10  'IT_DATA' ,
         'WK12'      'WK12'   10  'IT_DATA' ,
         'WK13'      'WK13'   10  'IT_DATA' ,
         'TOT_WEEK'  'Weekly Total' 10 'IT_DATA' ,
         'Q2'        'Q2 CY'     10  'IT_DATA' ,
         'Q3'        'Q3 CY'     10  'IT_DATA' ,
         'Q4'        'Q4 CY'     10  'IT_DATA' .
      ELSEIF v_qtr = 2.
        PERFORM fill_fieldcatalog  USING :
          'Q1'     'Q1 CY'    10 'IT_DATA' ,
         'WK1'       'WK1'    10  'IT_DATA' ,
         'WK2'       'WK2'    10  'IT_DATA' ,
         'WK3'       'WK3'    10  'IT_DATA' ,
         'WK4'       'WK4'    10  'IT_DATA' ,
         'WK5'       'WK5'    10  'IT_DATA' ,
         'WK6'       'WK6'    10 'IT_DATA' ,
         'WK7'       'WK7'    10  'IT_DATA' ,
         'WK8'       'WK8'    10  'IT_DATA' ,
         'WK9'       'WK9'    10  'IT_DATA',
         'WK10'      'WK10'   10 'IT_DATA' ,
         'WK11'      'WK11'   10  'IT_DATA' ,
         'WK12'      'WK12'   10 'IT_DATA' ,
         'WK13'      'WK13'   10  'IT_DATA' ,
         'TOT_WEEK'  'Weekly Total' 10 'IT_DATA' ,
         'Q3'        'Q3 CY'     10  'IT_DATA' ,
         'Q4'        'Q4 CY'     10 'IT_DATA' .
      ELSEIF v_qtr = 3.
        PERFORM fill_fieldcatalog USING :
         'Q1'     'Q1 CY'     10  'IT_DATA' ,
         'Q2'     'Q2 CY'     10  'IT_DATA' ,
         'WK1'       'WK1'    10  'IT_DATA' ,
         'WK2'       'WK2'    10  'IT_DATA' ,
         'WK3'       'WK3'    10  'IT_DATA' ,
         'WK4'       'WK4'    10  'IT_DATA' ,
         'WK5'       'WK5'    10  'IT_DATA' ,
         'WK6'       'WK6'    10  'IT_DATA' ,
         'WK7'       'WK7'    10  'IT_DATA' ,
         'WK8'       'WK8'    10  'IT_DATA' ,
         'WK9'       'WK9'    10  'IT_DATA' ,
         'WK10'      'WK10'   10  'IT_DATA' ,
         'WK11'      'WK11'   10  'IT_DATA' ,
         'WK12'      'WK12'   10  'IT_DATA' ,
         'WK13'      'WK13'   10  'IT_DATA' ,
         'TOT_WEEK'  'Weekly Total' 10 'IT_DATA' ,
         'Q4'        'Q4 CY'  10  'IT_DATA' .
      ELSEIF v_qtr = 4.
        PERFORM fill_fieldcatalog USING :
        'Q1'     'Q1 CY'     10 'IT_DATA' ,
        'Q2'     'Q2 CY'     10 'IT_DATA' ,
        'Q3'     'Q3 CY'     10 'IT_DATA' ,
        'WK1'       'WK1'    10 'IT_DATA' ,
        'WK2'       'WK2'    10 'IT_DATA' ,
        'WK3'       'WK3'    10 'IT_DATA' ,
        'WK4'       'WK4'    10 'IT_DATA' ,
        'WK5'       'WK5'    10 'IT_DATA' ,
        'WK6'       'WK6'    10 'IT_DATA' ,
        'WK7'       'WK7'    10 'IT_DATA' ,
        'WK8'       'WK8'    10 'IT_DATA' ,
        'WK9'       'WK9'    10 'IT_DATA' ,
        'WK10'      'WK10'   10 'IT_DATA' ,
        'WK11'      'WK11'   10 'IT_DATA' ,
        'WK12'      'WK12'   10 'IT_DATA' ,
        'WK13'      'WK13'   10  'IT_DATA' ,
        'TOT_WEEK'  'Weekly Total' 10 'IT_DATA' .
      ENDIF.
      PERFORM fill_fieldcatalog USING :
                 'LY_TOTAL' 'LY TOTAL' 10 'IT_DATA' ,
                 'ASON_TOTAL' 'AS ON TOTAL' 10 'IT_DATA',
                 'GOLY'        'GOLY %'  10 'IT_DATA'.
      PERFORM alv_list_display.
    ENDFORM.                    "output_data
    *FORM TO FILL FIELDCATALOG                                             *
    FORM fill_fieldcatalog USING  f d o t .
      DATA wa_fieldcat TYPE slis_fieldcat_alv.
      STATICS pos LIKE sy-index VALUE 1.
      pos = pos + 1.
      CLEAR wa_fieldcat.
      MOVE : 1     TO   wa_fieldcat-row_pos,
             pos   TO   wa_fieldcat-col_pos,
             f     TO   wa_fieldcat-fieldname,
             d     TO   wa_fieldcat-seltext_l,
             o     TO   wa_fieldcat-outputlen,
             t     TO   wa_fieldcat-tabname.
      APPEND wa_fieldcat TO it_fieldcat.
    ENDFORM.                    "FILL_FIELDCATALOG
    *FORM FOR FILLING LISTHEADER
    FORM fill_listheader USING it_listheader TYPE slis_t_listheader.
      SELECT SINGLE vtext INTO vtext FROM t179t WHERE prodh IN s_prodh.
      DATA : wa_listheader TYPE slis_listheader,
             v_variantname LIKE  varit-vtext.
      CLEAR wa_listheader.
      wa_listheader-typ  = 'H'.
      wa_listheader-info ='Quarter Sales Product Group Report'.
      APPEND wa_listheader TO it_listheader.
         CLEAR wa_listheader.
         wa_listheader-typ  = 'S'.
         wa_listheader-key  = 'Date:'.
         write v_date to wa_listheader-info.
         APPEND wa_listheader to it_listheader.
      CLEAR wa_listheader.
      wa_listheader-typ  = 'S'.
      wa_listheader-key  = 'Product Heirarchy'.
      WRITE vtext TO wa_listheader-info.
      APPEND wa_listheader TO it_listheader.
    *To print the variantname as the report header
      PERFORM get_variant_name USING sy-repid sy-slset
                              CHANGING v_variantname.
      IF NOT v_variantname IS INITIAL.
        CLEAR wa_listheader.
        wa_listheader-typ  = 'S'.
        wa_listheader-key  = 'Variant '.
        wa_listheader-info = v_variantname.
        APPEND wa_listheader TO it_listheader.
      ENDIF.
    **Displaying Sales Organisation
       IF  s_vkorg-low IS NOT INITIAL AND s_vkorg-high IS NOT INITIAL.
         CLEAR wa_listheader.
         wa_listheader-typ = 'S '.
         wa_listheader-key = 'Sales Organisation:'.
         CONCATENATE '' s_vkorg-low 'To'
    *s_vkorg-high
         INTO
         wa_listheader-info SEPARATED BY space.
         APPEND wa_listheader TO it_listheader.
      ELSEIF  s_vkorg-low IS NOT INITIAL .
         CLEAR wa_listheader.
         wa_listheader-typ = 'S'.
         wa_listheader-key = 'Sales Organisation:'.
         CONCATENATE '' s_vkorg-low INTO
         wa_listheader-info.
         APPEND wa_listheader TO it_listheader.
    ELSEIF  s_vkorg-low IS INITIAL AND s_vkorg-high IS  INITIAL.
         CLEAR wa_listheader.
         wa_listheader-typ = 'S'.
         wa_listheader-info  = 'Sales Organisation: *'.
         APPEND wa_listheader TO it_listheader.
    ENDIF.
    **Displaying Distribution Channel
       IF  s_vtweg-low IS NOT INITIAL AND s_vtweg-high IS NOT INITIAL.
         CLEAR wa_listheader.
         wa_listheader-typ = 'S '.

  • ALV color codes

    Hi all,
    I understand that the ALV grid color codes consists of the following format:
    CXYZ
    X = 0 - 7
    Y,Z = 0 - 1
    Is there any way to display color other than the above? I need a dark grey color (the color when the grid is set to not editable). Is there anywhere to do that? The intensity option is not helping much.
    Thanks in advance.

    Hi,
    Herewith i am sending for the sample code with alv grid report.
    REPORT  YMS_COLOURALV NO STANDARD PAGE HEADING.
    TYPE-POOLS: SLIS, ICON.
    DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    DATA: BEGIN OF IMARA OCCURS 0,
              LIGHT(4) TYPE C,
              MATNR TYPE MARA-MATNR,
              MTART TYPE MARA-MTART,
              MAKTX TYPE MAKT-MAKTX,
              COLOR_LINE(4) TYPE C,
              TCOLOR TYPE SLIS_T_SPECIALCOL_ALV,  "cell
          END OF IMARA.
    DATA: XCOLOR TYPE SLIS_SPECIALCOL_ALV.
    START-OF-SELECTION.
      PERFORM GET_DATA.
      PERFORM WRITE_REPORT.
    Get_Data
    FORM GET_DATA.
      WRITE ICON_GREEN_LIGHT AS ICON TO IMARA-LIGHT.
          IMARA-MATNR = 'ABC'.
          IMARA-MTART = 'ZCFG'.
          IMARA-MAKTX = 'This is description for ABC'.
      APPEND IMARA.
      WRITE ICON_YELLOW_LIGHT AS ICON TO IMARA-LIGHT.
          IMARA-MATNR = 'DEF'.
          IMARA-MTART = 'ZCFG'.
          IMARA-MAKTX = 'This is description for DEF'.
      APPEND IMARA.
      WRITE ICON_RED_LIGHT AS ICON TO IMARA-LIGHT.
          IMARA-MATNR = 'GHI'.
          IMARA-MTART = 'ZCFG'.
          IMARA-MAKTX = 'This is description for GHI'.
      APPEND IMARA.
      LOOP AT IMARA.
        IF SY-TABIX = 1.
          IMARA-COLOR_LINE = 'C410'.     " color line
        ENDIF.
        IF SY-TABIX = 2.                "  color CELL
          CLEAR XCOLOR.
          XCOLOR-FIELDNAME = 'MTART'.
          XCOLOR-COLOR-COL = '3'.
          XCOLOR-COLOR-INT = '1'.       " Intensified on/off
          XCOLOR-COLOR-INV = '0'.
          APPEND XCOLOR TO IMARA-TCOLOR.
        ENDIF.
        MODIFY IMARA.
      ENDLOOP.
    ENDFORM.                    "get_data
    WRITE_REPORT
    FORM WRITE_REPORT.
      DATA: LAYOUT TYPE  SLIS_LAYOUT_ALV.
      LAYOUT-COLTAB_FIELDNAME = 'TCOLOR'.
      LAYOUT-INFO_FIELDNAME = 'COLOR_LINE'.
      PERFORM BUILD_FIELD_CATALOG.
    CALL ABAP LIST VIEWER (ALV)
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          IS_LAYOUT   = LAYOUT
          IT_FIELDCAT = FIELDCAT
        TABLES
          T_OUTTAB    = IMARA.
    ENDFORM.                    "write_report
    BUILD_FIELD_CATALOG
    FORM BUILD_FIELD_CATALOG.
      DATA: FC_TMP TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
      CLEAR: FIELDCAT. REFRESH: FIELDCAT.
      CLEAR: FC_TMP.
      FC_TMP-REPTEXT_DDIC    = 'Status'.
      FC_TMP-FIELDNAME  = 'LIGHT'.
      FC_TMP-TABNAME   = 'IMARA'.
      FC_TMP-OUTPUTLEN  = '4'.
      FC_TMP-ICON       = 'X'.
      APPEND FC_TMP TO FIELDCAT.
      CLEAR: FC_TMP.
      FC_TMP-REPTEXT_DDIC    = 'Material Number'.
      FC_TMP-FIELDNAME  = 'MATNR'.
      FC_TMP-TABNAME   = 'IMARA'.
      FC_TMP-OUTPUTLEN  = '18'.
      APPEND FC_TMP TO FIELDCAT.
      CLEAR: FC_TMP.
      FC_TMP-REPTEXT_DDIC    = 'Material Type'.
      FC_TMP-FIELDNAME  = 'MTART'.
      FC_TMP-TABNAME   = 'IMARA'.
      FC_TMP-OUTPUTLEN  = '10'.
      APPEND FC_TMP TO FIELDCAT.
      CLEAR: FC_TMP.
      FC_TMP-REPTEXT_DDIC    = 'Material'.
      FC_TMP-FIELDNAME  = 'MAKTX'.
      FC_TMP-TABNAME   = 'IMARA'.
      FC_TMP-OUTPUTLEN  = '40'.
      FC_TMP-EMPHASIZE = 'C610'.   " color column
      APPEND FC_TMP TO FIELDCAT.
    ENDFORM.                    "build_field_catalog
    Thanks,
    Shankar

Maybe you are looking for

  • Can't delete access point on e5

    i tried many times to delete unused access point from connection>destination it ashed me to delete and i confirmed but it still their plz help...

  • DATA ARCHIVING JOB Error

    Hi All, I am getting below bold highlighted error for the monthly scheduled write job for the Object SD_VBRK. I am trying to run the job by spliiting variant but still the same error getting repeatedly. All available file names are already being used

  • Is there any way to fix the window screen grab in 10.5?

    For whatever reason, the window capture function (CMD-SHIFT-4, then SPACE) in OS X 10.5 now insists on including the shadow of the window being captured. Given how much documentation I write this is a HUGE setback for me; what used to take a few seco

  • Integration Services OLAP Model Upgrade

    Hi, We have installed EIS 716 on new server and needs to upgrade it. i have followed this approach until now.. Suppose i have catalog as "catalog1" getting connected with "A" on old box 7.1.2. Now we got this "A" schema copied into new server from ba

  • Programmicly rename a file not made by Labview

    I'd like to create a VI to generate a filename and the rename an existing file created by another application.  Is this possible? Solved! Go to Solution.