05-16-2006 5:31 AM
Hi,
How can i color one cell in alv grid (reuse_alv_grid_display) .
thanks
ofer
05-16-2006 5:35 AM
Hi,
Check this sample program from
..
TABLES: lips.
TYPE-POOLS: slis.
INCLUDE <icon>.
DATA: it_fieldcat TYPE lvc_t_fcat,
it_fieldcat1 TYPE slis_t_fieldcat_alv..
DATA:it_events TYPE slis_t_event.
DATA: x_fieldcat TYPE lvc_s_fcat,
x_fieldcat1 TYPE slis_fieldcat_alv.
DATA:x_layout TYPE lvc_s_layo.
DATA: BEGIN OF it_vbap OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
cellcolor TYPE lvc_t_scol,
END OF it_vbap.
SELECT vbeln
posnr
UP TO 20 ROWS
INTO CORRESPONDING FIELDS OF TABLE it_vbap
FROM vbap.
DATA:l_pos TYPE i VALUE 1.
CLEAR: l_pos.
l_pos = l_pos + 1.
x_fieldcat-seltext = 'VBELN'.
x_fieldcat-fieldname = 'VBELN'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = l_pos.
x_fieldcat-outputlen = '10'.
APPEND x_fieldcat TO it_fieldcat.
CLEAR x_fieldcat.
l_pos = l_pos + 1.
x_fieldcat-seltext = 'POSNR'.
x_fieldcat-fieldname = 'POSNR'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = l_pos.
x_fieldcat-outputlen = '5'.
APPEND x_fieldcat TO it_fieldcat.
CLEAR x_fieldcat.
l_pos = l_pos + 1.
x_layout-ctab_fname = 'CELLCOLOR'.
DATA: ls_cellcolor TYPE lvc_s_scol.
DATA: l_index TYPE sy-tabix.
LOOP AT it_vbap.
l_index = sy-tabix.
IF l_index = 1 OR l_index = 10.
ls_cellcolor-fname = 'VBELN'.
ls_cellcolor-color-col = '6'.
ls_cellcolor-color-int = '1'.
APPEND ls_cellcolor TO it_vbap-cellcolor.
MODIFY it_vbap INDEX l_index TRANSPORTING cellcolor.
ENDIF.
IF l_index = 5 OR l_index = 20.
ls_cellcolor-fname = 'VBELN'.
ls_cellcolor-color-col = '4'.
ls_cellcolor-color-int = '1'.
APPEND ls_cellcolor TO it_vbap-cellcolor.
MODIFY it_vbap INDEX l_index TRANSPORTING cellcolor.
ENDIF.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
is_layout_lvc = x_layout
it_fieldcat_lvc = it_fieldcat
TABLES
t_outtab = it_vbap[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
05-16-2006 5:35 AM
same thread...
also see...........
Plz Refer this link..
http://www.geocities.com/mpioud/Z_ALV_CELL_COLOR.html
http://www.sap-img.com/abap/line-color-in-alv-example.htm
http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_color.htm
05-16-2006 5:35 AM
Hi,
Check this sample program from
..
TABLES: lips.
TYPE-POOLS: slis.
INCLUDE <icon>.
DATA: it_fieldcat TYPE lvc_t_fcat,
it_fieldcat1 TYPE slis_t_fieldcat_alv..
DATA:it_events TYPE slis_t_event.
DATA: x_fieldcat TYPE lvc_s_fcat,
x_fieldcat1 TYPE slis_fieldcat_alv.
DATA:x_layout TYPE lvc_s_layo.
DATA: BEGIN OF it_vbap OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-posnr,
cellcolor TYPE lvc_t_scol,
END OF it_vbap.
SELECT vbeln
posnr
UP TO 20 ROWS
INTO CORRESPONDING FIELDS OF TABLE it_vbap
FROM vbap.
DATA:l_pos TYPE i VALUE 1.
CLEAR: l_pos.
l_pos = l_pos + 1.
x_fieldcat-seltext = 'VBELN'.
x_fieldcat-fieldname = 'VBELN'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = l_pos.
x_fieldcat-outputlen = '10'.
APPEND x_fieldcat TO it_fieldcat.
CLEAR x_fieldcat.
l_pos = l_pos + 1.
x_fieldcat-seltext = 'POSNR'.
x_fieldcat-fieldname = 'POSNR'.
x_fieldcat-tabname = 'ITAB'.
x_fieldcat-col_pos = l_pos.
x_fieldcat-outputlen = '5'.
APPEND x_fieldcat TO it_fieldcat.
CLEAR x_fieldcat.
l_pos = l_pos + 1.
x_layout-ctab_fname = 'CELLCOLOR'.
DATA: ls_cellcolor TYPE lvc_s_scol.
DATA: l_index TYPE sy-tabix.
LOOP AT it_vbap.
l_index = sy-tabix.
IF l_index = 1 OR l_index = 10.
ls_cellcolor-fname = 'VBELN'.
ls_cellcolor-color-col = '6'.
ls_cellcolor-color-int = '1'.
APPEND ls_cellcolor TO it_vbap-cellcolor.
MODIFY it_vbap INDEX l_index TRANSPORTING cellcolor.
ENDIF.
IF l_index = 5 OR l_index = 20.
ls_cellcolor-fname = 'VBELN'.
ls_cellcolor-color-col = '4'.
ls_cellcolor-color-int = '1'.
APPEND ls_cellcolor TO it_vbap-cellcolor.
MODIFY it_vbap INDEX l_index TRANSPORTING cellcolor.
ENDIF.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
is_layout_lvc = x_layout
it_fieldcat_lvc = it_fieldcat
TABLES
t_outtab = it_vbap[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
05-16-2006 8:24 AM
05-16-2006 8:37 AM
Hi Vijay,
It's true that it is your code.
But I had tried it in my system and provided it as a means of solving the problem.
I hope the forum is to solve the problems more than getting points. I'm really sorry if it hurts you...
Regards,
Wenceslaus.
05-16-2006 8:49 AM
Hi,
i do understand,let them give points, i'm not bothering about points. but if you don't want to obey the SDN Forum guidelines i can't help it,you can very well copy paste. i never mind. but you have ways to solve the problem by referring the threads also(other than copy+pasting).
i think there is no need of forum guidelines in this case.
regards
vijay
05-16-2006 9:08 AM
Hi Vijay,
What I mean to say is that I had just copied the program earlier in my own system and I just Copied it from there instead of Googling in the Internet.
Had I done it I would have given the forum link too...
I have too done another program for the same cell coloring but this code had too much Lines of Code for another person to review it and get the basic solution.
Then, I dont mean to be here in SDN for gaining points. I have even solved the problems for the questions that aren't being asked in the SDN forum for the other people who contacted me directly by mail to me.
However I'm sorry that I didnt give the link in the post.
I'll corect that too...
Regards,
Wenceslaus.
05-16-2006 9:19 AM
Sorry, and i don't want to drag it . it is up to you to mention the link or not.(it is a guide line from SDN).
Regards
vijay
05-16-2006 5:39 AM
Hi,
Refer the following code.
REPORT ZTESTALV.
TYPE-POOLS: SLIS.
INCLUDE <ICON>.
*- Fieldcatalog
DATA: IT_FIELDCAT TYPE LVC_T_FCAT,
IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV..
*- For Events
DATA:IT_EVENTS TYPE SLIS_T_EVENT.
DATA: X_FIELDCAT TYPE LVC_S_FCAT,
X_FIELDCAT1 TYPE SLIS_FIELDCAT_ALV.
DATA:X_LAYOUT TYPE LVC_S_LAYO.
TABLES: LIPS.
DATA: BEGIN OF IT_VBAP OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
CELLCOLOR TYPE LVC_T_SCOL,
END OF IT_VBAP.
SELECT VBELN
POSNR
UP TO 10 ROWS
INTO CORRESPONDING FIELDS OF TABLE IT_VBAP
FROM VBAP.
DATA:L_POS TYPE I VALUE 1.
CLEAR: L_POS.
L_POS = L_POS + 1.
X_FIELDCAT-SELTEXT = 'VBELN'.
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '10'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SELTEXT = 'POSNR'.
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '5'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_LAYOUT-CTAB_FNAME = 'CELLCOLOR'.
DATA: LS_CELLCOLOR TYPE LVC_S_SCOL.
DATA: L_INDEX TYPE SY-TABIX.
LOOP AT IT_VBAP.
L_INDEX = SY-TABIX.
LS_CELLCOLOR-FNAME = 'VBELN'.
LS_CELLCOLOR-COLOR-COL = '6'.
LS_CELLCOLOR-COLOR-INT = '1'.
APPEND LS_CELLCOLOR TO IT_VBAP-CELLCOLOR.
MODIFY IT_VBAP INDEX L_INDEX TRANSPORTING CELLCOLOR.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT_LVC = X_LAYOUT
IT_FIELDCAT_LVC = IT_FIELDCAT
TABLES
T_OUTTAB = IT_VBAP[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
<b>Please reward points if it helps.</b>
Regards,
Amit Mishra
Message was edited by: Amit Mishra
05-16-2006 7:43 AM
Hai Ofer Melnik
Go through the following Code
REPORT z_alv_dynamic_data_v3.
----
DATA : mara TYPE mara. " General Material Data
TYPE-POOLS: slis. " ALV Global types
FIELD-SYMBOLS :
<data> TYPE table. " Data to display
SELECT-OPTIONS :
s_matnr FOR mara-matnr. " Material number
SELECTION-SCREEN :
SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED
PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
----
INITIALIZATION.
v_1 = 'Maximum of lines to display'.
----
START-OF-SELECTION.
PERFORM f_read_data.
PERFORM f_display_data.
----
Form f_read_data
----
FORM f_read_data.
FIELD-SYMBOLS :
<field> TYPE ANY,
<field2> TYPE ANY,
<header> TYPE ANY,
<header2> TYPE ANY,
<lt_data> TYPE table. " Data read from DB
DATA:
lp_struct TYPE REF TO data,
lp_struct2 TYPE REF TO data,
lp_table TYPE REF TO data, " Pointer to dynamic table
lp_table2 TYPE REF TO data, " Pointer to dynamic table
ls_lvc_cat TYPE lvc_s_fcat,
lt_lvc_cat TYPE lvc_t_fcat. " Field catalog
First column
CLEAR ls_lvc_cat.
ls_lvc_cat-fieldname = 'MATNR'.
ls_lvc_cat-ref_table = 'MARA'.
APPEND ls_lvc_cat TO lt_lvc_cat.
2nd column
CLEAR ls_lvc_cat.
ls_lvc_cat-fieldname = 'MAKTX'.
ls_lvc_cat-ref_table = 'MAKT'.
APPEND ls_lvc_cat TO lt_lvc_cat.
3rd column
CLEAR ls_lvc_cat.
ls_lvc_cat-fieldname = 'MATKL'.
ls_lvc_cat-ref_table = 'MARA'.
APPEND ls_lvc_cat TO lt_lvc_cat.
Create 1st internal table
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING it_fieldcatalog = lt_lvc_cat
IMPORTING ep_table = lp_table.
ASSIGN lp_table->* TO <lt_data>.
Read data into 1st internal table
SELECT matnr maktx matkl
INTO TABLE <lt_data>
FROM v_matnr
UP TO p_max ROWS
WHERE matnr IN s_matnr.
Create 2nd internal table
Checkbox
CLEAR ls_lvc_cat.
ls_lvc_cat-fieldname = 'CHECKBOX'.
APPEND ls_lvc_cat TO lt_lvc_cat.
Table color
CLEAR ls_lvc_cat.
ls_lvc_cat-fieldname = 'TABCOLOR'.
ls_lvc_cat-ref_table = 'CALENDAR_TYPE'.
ls_lvc_cat-ref_field = 'COLTAB'.
APPEND ls_lvc_cat TO lt_lvc_cat.
Create 2nd internal table
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING it_fieldcatalog = lt_lvc_cat
IMPORTING ep_table = lp_table2.
ASSIGN lp_table2->* TO <data>.
Create structure = structure of the 1st internal table
CREATE DATA lp_struct LIKE LINE OF <lt_data>.
ASSIGN lp_struct->* TO <header>.
Create structure = structure of the 2nd internal table
CREATE DATA lp_struct2 LIKE LINE OF <data>.
ASSIGN lp_struct2->* TO <header2>.
Move data from 1st internal table --> 2nd internal table
LOOP AT <lt_data> ASSIGNING <header>.
DESCRIBE TABLE lt_lvc_cat.
CLEAR <header2>.
Fill the internal to display <data>
DO sy-tfill TIMES.
READ TABLE lt_lvc_cat INTO ls_lvc_cat INDEX sy-index.
For each field of lt_lvc_cat.
ASSIGN COMPONENT ls_lvc_cat-fieldname OF STRUCTURE <header>
TO <field>.
IF sy-subrc NE 0. EXIT .ENDIF.
ASSIGN COMPONENT ls_lvc_cat-fieldname OF STRUCTURE <header2>
TO <field2>.
IF sy-subrc NE 0. EXIT .ENDIF.
<field2> = <field>.
ENDDO.
Modify color
ASSIGN COMPONENT 'TABCOLOR' OF STRUCTURE <header2>
TO <field2>.
IF sy-subrc EQ 0.
PERFORM f_modify_color USING 'MAKTX' <field2>.
PERFORM f_modify_color USING 'MATKL' <field2>.
ENDIF.
APPEND <header2> TO <data> .
ENDLOOP.
ENDFORM. " f_read_data
----
Form F_DISPLAY_DATA
----
FORM f_display_data.
Macro definition
DEFINE m_sort.
add 1 to ls_sort-spos.
ls_sort-fieldname = &1.
ls_sort-down = 'X'.
append ls_sort to lt_sort.
END-OF-DEFINITION.
DATA:
ls_layout TYPE slis_layout_alv,
lt_sort TYPE slis_t_sortinfo_alv,
ls_sort TYPE slis_sortinfo_alv,
ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv. " Field catalog
Build Fieldcatalog - First column
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-ref_tabname = 'MARA'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO lt_fieldcat.
Build Fieldcatalog - 2nd column
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MAKTX'.
ls_fieldcat-ref_tabname = 'MAKT'.
APPEND ls_fieldcat TO lt_fieldcat.
Build Fieldcatalog - 3rd column
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'MATKL'.
ls_fieldcat-ref_tabname = 'MARA'.
APPEND ls_fieldcat TO lt_fieldcat.
Layout
ls_layout-zebra = 'X'.
ls_layout-colwidth_optimize = 'X'.
ls_layout-box_fieldname = 'CHECKBOX'.
ls_layout-coltab_fieldname = 'TABCOLOR'.
m_sort 'MATNR'. " Sort by creation date
Display data
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = ls_layout
it_fieldcat = lt_fieldcat
it_sort = lt_sort
TABLES
t_outtab = <data>.
ENDFORM. " F_DISPLAY_DATA
----
Form F_modify_color
----
FORM f_modify_color USING u_fieldname TYPE lvc_fname
ut_tabcolor TYPE table.
DATA:
l_rnd_value TYPE datatype-integer2,
ls_tabcolor TYPE lvc_s_scol.
Random value
CALL FUNCTION 'RANDOM_I2'
EXPORTING
rnd_min = 0
rnd_max = 3
IMPORTING
rnd_value = l_rnd_value.
CLEAR ls_tabcolor.
ls_tabcolor-fname = u_fieldname.
CASE l_rnd_value.
WHEN 0.
ls_tabcolor-color-col = 1. " Blue.
ls_tabcolor-color-int = 0.
ls_tabcolor-color-inv = 0.
WHEN 1.
ls_tabcolor-color-col = 3. " Yellow.
ls_tabcolor-color-int = 0.
ls_tabcolor-color-inv = 0.
WHEN 2.
ls_tabcolor-color-col = 5. " Green.
ls_tabcolor-color-int = 0.
ls_tabcolor-color-inv = 0.
WHEN 3.
ls_tabcolor-color-col = 6. " Red.
ls_tabcolor-color-int = 0.
ls_tabcolor-color-inv = 0.
ENDCASE.
INSERT ls_tabcolor INTO TABLE ut_tabcolor.
ENDFORM. " F_MODIFY_COLOR
END OF PROGRAM Z_ALV_DYNAMIC_DATA_V3 *********************
Thanks & Regards
Sreenivasulu P
05-16-2006 8:55 AM
chk this code
*&---------------------------------------------------------------------*
*& Report ZCHA_ALV_GRID_CELL_COLOR *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ZCHA_ALV_GRID_CELL_COLOR .
TABLES:MARA.
DATA: W_CONTAINER TYPE SCRFNAME VALUE 'ALV_CONTAINER',
W_GRID TYPE REF TO CL_GUI_ALV_GRID,
W_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
* W_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
*layout
DATA: WA_LAYOUT TYPE LVC_S_LAYO.
*field catalog
DATA: IT_FIELDCAT_WRT_OFF TYPE LVC_T_FCAT,
WA_FIELDCAT_WRT_OFF TYPE LVC_S_FCAT.
DATA:BEGIN OF IT_MARA OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MAKT-MAKTX,
CELLCOLORS TYPE LVC_T_SCOL,
END OF IT_MARA.
SELECT P~MATNR
Q~MAKTX
INTO CORRESPONDING FIELDS OF TABLE IT_MARA
FROM MARA AS P INNER JOIN
MAKT AS Q ON
P~MATNR = Q~MATNR.
CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STATUS'.
* SET TITLEBAR 'xxx'.
IF NOT W_CONTAINER IS INITIAL.
CREATE OBJECT W_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = W_CONTAINER.
CREATE OBJECT W_GRID
EXPORTING I_PARENT = W_CUSTOM_CONTAINER.
ENDIF.
CLEAR IT_FIELDCAT_WRT_OFF.
REFRESH IT_FIELDCAT_WRT_OFF.
WA_FIELDCAT_WRT_OFF-FIELDNAME = 'MATNR'.
WA_FIELDCAT_WRT_OFF-COL_POS = '1'.
WA_FIELDCAT_WRT_OFF-OUTPUTLEN = '35'.
WA_FIELDCAT_WRT_OFF-SCRTEXT_L = 'Material No'.
APPEND WA_FIELDCAT_WRT_OFF TO IT_FIELDCAT_WRT_OFF.
CLEAR WA_FIELDCAT_WRT_OFF.
WA_FIELDCAT_WRT_OFF-FIELDNAME = 'MAKTX'.
WA_FIELDCAT_WRT_OFF-COL_POS = '2'.
WA_FIELDCAT_WRT_OFF-OUTPUTLEN = '45'.
WA_FIELDCAT_WRT_OFF-SCRTEXT_L = 'Material Desc'.
APPEND WA_FIELDCAT_WRT_OFF TO IT_FIELDCAT_WRT_OFF.
CLEAR WA_FIELDCAT_WRT_OFF.
DATA LS_CELLCOLOR TYPE LVC_S_SCOL.
READ TABLE IT_MARA INDEX 5 .
LS_CELLCOLOR-FNAME = 'MATNR'.
LS_CELLCOLOR-COLOR-COL = '3'.
LS_CELLCOLOR-COLOR-INT = '1'.
APPEND LS_CELLCOLOR TO IT_MARA-CELLCOLORS.
MODIFY IT_MARA INDEX 5.
WA_LAYOUT-CTAB_FNAME = 'CELLCOLORS'.
CALL METHOD W_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = WA_LAYOUT
CHANGING
IT_FIELDCATALOG = IT_FIELDCAT_WRT_OFF
IT_OUTTAB = IT_MARA[].
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