Colour a particular cell dynamically in ALV
Hi,
What class and method to be used to colour a particular cell dynamically in ALV?
Thanks,
Ronita.
U can use the below class to colour a particular cell dynamically in ALV:
class:cl_gui_alv_grid
See below code. It definitely helps u.
Provide Reward Points...:-)
types : begin of ty. include structure MARA.
types : rowcolor(4) TYPE c,
end of ty.
data : itab type standard table of ty,"Output Internal table
i_fieldcat type standard table of lvc_s_fcat,"Field catalog
wa type ty,
w_variant type disvariant,
w_layout TYPE lvc_s_layo,"Layout structure
o_docking type ref to cl_gui_docking_container,"Docking Container
o_grid type ref to cl_gui_alv_grid."Grid
select * from mara into corresponding fields of table itab up to 10 rows.
call screen 9000.
*& Module STATUS_9000 OUTPUT
text
module STATUS_9000 output. if o_docking is initial.
SET PF-STATUS 'ZSTATUS'. "GUI Status
SET TITLEBAR 'ZTITLE'. "TitleCreating Docking Container
CREATE OBJECT o_docking
EXPORTING
RATIO = '95'.
IF sy-subrc eq 0.Creating Grid
CREATE OBJECT o_grid
EXPORTING
i_parent = o_docking.
ENDIF.Filling the fieldcatalog table
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = 'MARA'
CHANGING
ct_fieldcat = i_fieldcat
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
w_variant-report = sy-repid.Setting layout
w_layout-info_fname = 'ROWCOLOR'."For row coloringColouring a row
CLEAR wa.
READ TABLE itab INTO wa INDEX 3.
IF sy-subrc EQ 0.
wa-rowcolor = 'C311'.
MODIFY itab FROM wa TRANSPORTING rowcolor WHERE matnr = wa-matnr.
ENDIF.Displaying the output
CALL METHOD o_grid->set_table_for_first_display
EXPORTING
IS_VARIANT = w_variant
I_SAVE = 'A'
is_layout = w_layout
CHANGING
it_outtab = itab
IT_FIELDCATALOG = i_fieldcat
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
others = 4.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.endif.endmodule. " STATUS_9000 OUTPUT
*& Module USER_COMMAND_9000 INPUT
PAI
module USER_COMMAND_9000 input.
data lv_ucomm type sy-ucomm.
lv_ucomm = sy-ucomm.
CASE lv_ucomm.
WHEN 'CANCEl' OR 'EXIT'.
perform free_objects.
LEAVE PROGRAM.
when 'BACK'.
perform free_objects.
set screen '0'.
leave screen.
ENDCASE.
endmodule. " USER_COMMAND_9000 INPUT
*& Form free_objects
Free Objects
form free_objects .
CALL METHOD o_grid->free
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
others = 3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD o_docking->free
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
others = 3.
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. " free_objects
Provide Reward Points...:-)
Similar Messages
-
Colouring one particular cell in ALV
Hi All,
I have one requirement where I have to colour one particular cell in the ALV report.Can any one help me in this regard.
Waiting for your response.
RajCLEAR FS_FIELDCAT .
FS_FIELDCAT-FIELDNAME = 'CONNID'.
FS_FIELDCAT-REF_TABNAME = 'SPFLI'.
FS_FIELDCAT-COL_POS = 2.
FS_FIELDCAT-KEY = 'X'.
FS_FIELDCAT-HOTSPOT = 'X'.
APPEND FS_FIELDCAT TO T_FIELDCAT.
CLEAR FS_FIELDCAT .
FS_FIELDCAT-FIELDNAME = 'DISTANCE'.
FS_FIELDCAT-REF_TABNAME = 'SPFLI'.
FS_FIELDCAT-COL_POS = 3.
FS_FIELDCAT-KEY = ' '.
FS_FIELDCAT-EDIT = 'X'.
APPEND FS_FIELDCAT TO T_FIELDCAT.
CLEAR FS_FIELDCAT.
FS_FIELDCAT-FIELDNAME = 'CITYFROM'.
FS_FIELDCAT-REF_TABNAME = 'SPFLI'.
FS_FIELDCAT-COL_POS = 4.
FS_FIELDCAT-KEY = ' '.
APPEND FS_FIELDCAT TO T_FIELDCAT.
LOOP AT T_FIELDCAT INTO FS_FIELDCAT.
IF FS_FIELDCAT-COL_POS EQ P_COL.
FS_FIELDCAT-EMPHASIZE = P_COLOR.
W_FIELDNAME = FS_FIELDCAT-FIELDNAME.
IF P_ROW IS INITIAL AND P_COL GT 0.
MODIFY T_FIELDCAT FROM FS_FIELDCAT TRANSPORTING EMPHASIZE.
ENDIF.
ENDIF.
ENDLOOP.
FS_CELL-FIELDNAME = W_FIELDNAME .
FS_CELL-COLOR-COL = 6.
FS_CELL-NOKEYCOL = 'X'.
APPEND FS_CELL TO T_SPFLI-CELL.
IF P_ROW IS NOT INITIAL AND P_COL IS NOT INITIAL.
MODIFY T_SPFLI INDEX P_ROW TRANSPORTING CELL.
ENDIF.
FS_LAYOUT-INFO_FIELDNAME = 'COLOR'.
FS_LAYOUT-BOX_FIELDNAME = 'CHECKBOX'.
FS_LAYOUT-COLTAB_FIELDNAME = 'CELL'.
FS_LAYOUT-F2CODE = '&ETA'.
W_PROG = SY-REPID.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = W_PROG
IS_LAYOUT = FS_LAYOUT
IT_FIELDCAT = T_FIELDCAT
TABLES
T_OUTTAB = T_SPFLI
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
Regards,
Pravin -
Method for colouring particular cell
Hello friends,
I displayed the output in grid using the class "CL_GUI_ALV_GRID".
Now i need to colour the particular cell with different colours based on the condition.What is the method used for that. If possible give an example code.
Thanks in advance.Hello Siva
All details can be found in the excellent tutorial
<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e8a1d690-0201-0010-b7ad-d9719a415907">An Easy Reference For ALV Grid Control</a>
-> see pages 28+
Briefly, here is the crucial coding part:
*--- Internal table holding list data
DATA BEGIN OF gt_list OCCURS 0 .
INCLUDE STRUCTURE SFLIGHT .
DATA rowcolor(4) TYPE c .
DATA cellcolors TYPE lvc_t_scol .
DATA END OF gt_list .
DATA ls_cellcolor TYPE lvc_s_scol .
READ TABLE gt_list INDEX 5 .
ls_cellcolor-fname = 'SEATSOCC' .
ls_cellcolor-color-col = '7' .
ls_cellcolor-color-int = '1' .
APPEND ls_cellcolor TO gt_list-cellcolors .
MODIFY gt_list INDEX 5 .
Regards
Uwe -
How to give color of particular cell in alv list display for dynamic table
Dear Experts,
i want to give color of a particular cell in alv list display (reuse_alv_list_display). Here i am passing data through dynamic table?Hi,
Se this:
DATA: lt_color TYPE lvc_t_scol WITH HEADER LINE.
DATA: BEGIN OF data_tab OCCURS 0.
tabcolor TYPE lvc_t_scol,
END OF data_tab.
* Befone ALV call
alv_layout-coltab_fieldname = 'TABCOLOR'.
* For each row in data_tab
REFRESH: lt_color.
CLEAR: lt_color.
lt_color-color-col = 6.
lt_color-color-int = 1.
lt_color-fname = FIELD1'.
APPEND lt_color.
lt_color-color-col = 2.
lt_color-color-int = 0.
lt_color-fname = 'FIELD2'.
APPEND lt_color.
data_tab-tabcolor[] = lt_color[].
append data_tab.
Best regards,
Leandro Mengue -
To change the colour of the particular cell of ALV report in Grid display.
Hai Friends,
I have created an Alv report in grid display .In that i want to change the colour of the particular cell.Plz provide the answer with a solved example.
Thank u.This works for a Custom Control and OO ALV in a Dialog Module
TABLES: kna1.
* Data (for the ALV Grid)
TYPES:
BEGIN OF t_alv_data,
cust_id TYPE kunnr, "Customer Number
cust_name TYPE name1_gp, "Customer Name
cust_color TYPE i,
* cell coloring field
color TYPE lvc_t_scol, "Cell coloring
END OF t_alv_data.
DATA:
v_alv_data TYPE t_alv_data,
i_alv_data TYPE STANDARD TABLE OF t_alv_data.
* ALV grid containers and objects
DATA:
o_alv_grid TYPE REF TO cl_gui_alv_grid,
o_alv_cont TYPE REF TO cl_gui_custom_container.
* ALV field catalog
DATA:
i_alv_fc TYPE lvc_t_fcat,
v_alv_fc LIKE lvc_s_fcat.
* ALV Layout (colors)
DATA:
v_alv_layout TYPE lvc_s_layo,
i_alv_color TYPE lvc_t_scol,
v_alv_color TYPE lvc_s_scol,
v_alv_color_cell TYPE lvc_s_colo.
* ALV variant
DATA:
v_alv_variant TYPE disvariant.
PARAMETERS:
p_alvvar TYPE disvariant-variant DEFAULT 'DEFAULT'.
DATA: ok_code LIKE sy-ucomm.
* Class for event handling
* CLASS lcl_event_receiver DEFINITION
* [+] Event listener for the ALV grid
* [+] Handles hotspots and data changes
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
* Hotspot clicking
hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id
e_column_id
es_row_no,
* Data changed (such as checkbox clicking)
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.
ENDCLASS. "lcl_event_receiver DEFINITION
* CLASS lcl_event_receiver IMPLEMENTATION
* [+] Implementation of the ALV Grid event handler class
CLASS lcl_event_receiver IMPLEMENTATION.
* METHOD hotspot_click *
* [+] Calls evvent_hotspot_click when a hotspot is clicked in the ALV
METHOD hotspot_click.
PERFORM event_hotspot_click
USING e_row_id
e_column_id.
ENDMETHOD. "hotspot_click
* METHOD handle_data_changed *
* [+] Updates the source data when the data in the ALV display has
* been changed, such as by clicking a checkbox.
METHOD handle_data_changed.
DATA: lv_changed TYPE lvc_s_modi.
LOOP AT er_data_changed->mt_good_cells INTO lv_changed
WHERE fieldname = 'CUST_NAME'.
READ TABLE i_alv_data INTO v_alv_data INDEX lv_changed-row_id.
IF sy-subrc = 0.
MOVE lv_changed-value TO v_alv_data-cust_name.
MODIFY i_alv_data FROM v_alv_data INDEX lv_changed-row_id.
ENDIF.
ENDLOOP.
ENDMETHOD. "handle_data_changed
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
* Reference to the event listener class
DATA: event_receiver TYPE REF TO lcl_event_receiver.
* FORM build_event_listener
* [+] Set the event handler on the ALV Grid
FORM build_event_listener.
* Assigning the event listener to the ALV
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_data_changed FOR o_alv_grid.
SET HANDLER event_receiver->hotspot_click FOR o_alv_grid.
ENDFORM. "build_event_listener
* AT SELECTION-SCREEN
* ON VALUE-REQUEST FOR p_alvvar
* [+] Calls choose_alv_variant to ask the user to select an alv grid
* layout variant
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_alvvar.
PERFORM choose_alv_variant
CHANGING
p_alvvar
v_alv_variant.
* START_OF_SELECTION
START-OF-SELECTION.
PERFORM get_data.
SET PF-STATUS 'ALVSCREEN' IMMEDIATELY.
CALL SCREEN 2000.
* FORM get_data
* [+] Gets the data for the ALV grid
FORM get_data.
SELECT kunnr name1
INTO (v_alv_data-cust_id,
v_alv_data-cust_name)
FROM kna1.
APPEND v_alv_data TO i_alv_data.
ENDSELECT.
ENDFORM. "get_data
* MODULE build_alv_grid
* THIS SHOULD BE IN THE "PROCESS BEFORE OUTPUT" OF THE ALV SCREEN
* [+] Builds the ALV Grid objects
* [+] Calls to build the field catalog table
* [+] Loads the field catalog table into the ALV Grid
* [+] Loads the table data into the ALV Grid
MODULE build_alv_grid OUTPUT.
SET TITLEBAR '2000'.
* Also enables layout saving
PERFORM set_alv_variant
USING
p_alvvar
CHANGING
v_alv_variant.
* Building the grid and container on the screen
* NOTE: the container name MUST be upper-case
* Also, we don't want the objects to be created if in batch mode!
IF sy-batch IS INITIAL.
CREATE OBJECT o_alv_cont
EXPORTING
container_name = 'O_ALV_TABLE'.
ENDIF.
CREATE OBJECT o_alv_grid
EXPORTING
i_parent = o_alv_cont.
* builds the event listener
PERFORM build_event_listener.
* Color the cells
PERFORM color_cells.
* Build the field catalog
PERFORM build_alv_fc.
* Loads the data into the grid
CALL METHOD o_alv_grid->set_table_for_first_display
EXPORTING
i_save = 'A'
i_default = 'X'
is_variant = v_alv_variant
is_layout = v_alv_layout
CHANGING
it_outtab = i_alv_data
it_fieldcatalog = i_alv_fc.
ENDMODULE. "build_alv_grid OUTPUT
* FORM build_alv_fc
* [+] Constructs the ALV Grid field catalog table
FORM build_alv_fc.
CLEAR i_alv_fc.
REFRESH i_alv_fc.
* NOTE: the field name MUST be upper-case
* field heading hide hot
* name zero spot just
PERFORM:
alv_field USING 'CUST_ID' 'Cust ID' ' ' 'X' 'R',
alv_field USING 'CUST_NAME' 'Customer Name' ' ' ' ' 'L',
alv_field USING 'CUST_COLOR' 'Color' ' ' ' ' 'R'.
ENDFORM. "build_alv_fc
* FORM alv_field
* [+] Describes and constructs a single field for the ALV Grid field
* catalog. The field length and type are both obtained from the
* actual field passed in to this method.
* [+] Adds the constructed field to the ALV Grid field catalog table
FORM alv_field
USING
p_field_name TYPE c
p_heading TYPE c
p_hide_zeros TYPE c
p_hotspot TYPE c
p_justify TYPE c.
CLEAR v_alv_fc.
DATA:
lv_type(1) TYPE c,
lv_length TYPE i,
lv_heading_length TYPE i.
* get the type and length of this field
FIELD-SYMBOLS <field>.
ASSIGN p_field_name TO <field>.
DESCRIBE FIELD <field> TYPE lv_type OUTPUT-LENGTH lv_length.
* re-adjust the length to the length of the header, if too short
lv_heading_length = strlen( p_heading ).
IF lv_length < lv_heading_length.
lv_length = lv_heading_length.
ENDIF.
* NOTE: the field name MUST be upper-case
v_alv_fc-fieldname = p_field_name.
TRANSLATE v_alv_fc-fieldname TO UPPER CASE.
v_alv_fc-inttype = lv_type.
v_alv_fc-outputlen = lv_length.
v_alv_fc-coltext = p_heading.
v_alv_fc-seltext = p_heading.
v_alv_fc-hotspot = p_hotspot.
* Determining which fields should show zeros
IF p_hide_zeros = 'X'.
v_alv_fc-no_zero = 'X'.
v_alv_fc-lzero = ' '.
ELSE.
v_alv_fc-no_zero = ' '.
v_alv_fc-lzero = 'X'.
ENDIF.
v_alv_fc-just = p_justify.
* Add the field to the field catalog
APPEND v_alv_fc TO i_alv_fc.
ENDFORM. "alv_field
* FORM choose_alv_variant
* [+] Shows a popup that allows the user to choose the layout variant
* for the alv grid of the current program
* [+] Usually called by an AT SELECTION-SCREEN method.
FORM choose_alv_variant
CHANGING
p_variant_name TYPE disvariant-variant
p_variant TYPE disvariant.
CLEAR p_variant.
DATA:
p_exit_check(1) TYPE c.
MOVE sy-repid TO p_variant-report.
CALL FUNCTION 'LVC_VARIANT_F4'
EXPORTING
is_variant = p_variant
i_save = 'A'
IMPORTING
e_exit = p_exit_check
es_variant = p_variant
EXCEPTIONS
not_found = 1
OTHERS = 99.
IF sy-subrc = 0.
IF p_exit_check <> 'X'.
p_variant_name = p_variant-variant.
ENDIF.
ENDIF.
ENDFORM. "choose_alv_variant
* FORM set_alv_variant
* [+] Sets the alv grid layout variant. Used for setting the variant
* when its name is entered in a parameter rather than by using the
* popup, or when loading the variant from a variable of type C
FORM set_alv_variant
USING
p_variant_name TYPE disvariant-variant
CHANGING
p_variant TYPE disvariant.
MOVE sy-repid TO p_variant-report.
p_variant-variant = p_variant_name.
ENDFORM. "set_alv_variant
* FORM color_cells
* [+] Loop through the data and apply coloring
FORM color_cells.
DATA:
my_color TYPE i.
* tell the ALV grid what field in v_alv_data contains color information
v_alv_layout-ctab_fname = 'COLOR'.
my_color = 0.
* loop through each row of the table
LOOP AT i_alv_data INTO v_alv_data.
* clear the variables
CLEAR:
v_alv_color,
v_alv_color_cell,
i_alv_color.
REFRESH:
i_alv_color.
v_alv_data-cust_color = my_color.
PERFORM color_cell USING 'CUST_COLOR' my_color. "negative
* apply the colors
* IF v_alv_data-cust_name = 'Testing Credit'.
* PERFORM color_cell USING 'CUST_NAME' 6. "negative
* ELSEIF v_alv_data-cust_name = 'Goober Goober Also'.
* PERFORM color_cell USING 'CUST_NAME' 5. "positive
* ENDIF.
* set the color data for this table row
v_alv_data-color = i_alv_color.
MODIFY i_alv_data FROM v_alv_data.
my_color = my_color + 1.
IF my_color GT 7.
CLEAR my_color.
ENDIF.
ENDLOOP.
ENDFORM. "color_cells
* FORM color_cell
* [+] Colors a cell in the ALV grid
FORM color_cell
USING
p_cellname TYPE c
p_color TYPE i.
CLEAR:
v_alv_color_cell,
v_alv_color.
* set the color for the cell
* IF p_color = 0.
* v_alv_color_cell-col = 0. "cl_gui_resources=>list_col_background.
* ELSEIF p_color = 1.
* v_alv_color_cell-col = 1. "cl_gui_resources=>list_col_heading.
* ELSEIF p_color = 2.
* v_alv_color_cell-col = 2. "cl_gui_resources=>list_col_normal.
* ELSEIF p_color = 3.
* v_alv_color_cell-col = 3. "cl_gui_resources=>list_col_total.
* ELSEIF p_color = 4.
* v_alv_color_cell-col = 4. "cl_gui_resources=>list_col_key.
* ELSEIF p_color = 5.
* v_alv_color_cell-col = 5. "cl_gui_resources=>list_col_positive.
* ELSEIF p_color = 6.
* v_alv_color_cell-col = 6. "cl_gui_resources=>list_col_negative.
* ELSEIF p_color = 7.
* v_alv_color_cell-col = 7. "cl_gui_resources=>list_col_group.
* ENDIF.
v_alv_color_cell-col = p_color.
v_alv_color-nokeycol = 'X'.
v_alv_color-fname = p_cellname.
* v_alv_color-color = p_color.
v_alv_color-color = v_alv_color_cell.
APPEND v_alv_color TO i_alv_color.
ENDFORM. "color_cell
* FORM event_hotspot_click
* [+] What to do when clicking on a hotspot in the ALV Grid
FORM event_hotspot_click
USING
p_row TYPE lvc_s_row
p_column TYPE lvc_s_col.
DATA:
lv_docnum TYPE kunnr.
READ TABLE i_alv_data INTO v_alv_data INDEX p_row-index.
IF p_column = 'CUST_ID'.
* call a transaction when the cust_id is clicked
SET PARAMETER ID 'AUN' FIELD v_alv_data-cust_id.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
ENDFORM. "event_hotspot_click
*& Module USER_COMMAND_2000 INPUT
* text
MODULE user_command_2000 INPUT.
CASE ok_code.
WHEN 'BACK'
OR 'STOP'
OR 'CANCEL'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_2000 INPUT -
Coloring of Particular Cells in a dynamic internal table(field symbols)
Hi,
I have a requirement to introduce color into some particular cells in a dynamic internal table(Field symbol) based on some conditions.I know that color can be introduced at cell level in the case of static internal table.But, can anybody tell me whether it is possible to introduce color to particular cells in the dynamic internal table(Field Symbol) .Please suggest me on this issue.
Thanks in advance,
RajeshHi,
This is the sample coding for the colour cell report.
Kindly go through it. It will helps u.
REPORT YMS_COLOURTEST .
DATA: BEGIN OF TP OCCURS 10, ID, NR(8), TEXT(255), END OF TP.
DATA: LENGTH TYPE I VALUE 8, " Length of list
TESTSTRING(15) TYPE C VALUE '012345678901234',
WIDTH TYPE I. " Width of list
DATA: TXT_REPORT LIKE DOKHL-OBJECT.
START-OF-SELECTION.
PERFORM HEADING.
PERFORM OUTPUT_BODY.
FORM HEADING.
FORMAT INTENSIFIED OFF. " Remove any INTENSIFIED
ULINE AT (WIDTH). " Upper frame border
FORMAT COLOR COL_HEADING INTENSIFIED." Title color
WRITE: / SY-VLINE. " Left border
WRITE: 'No |Colour |intensified |intensified off|',
'inverse' NO-GAP.
WRITE: AT WIDTH SY-VLINE. " Right border
ULINE AT (WIDTH). " Line below titles
FORMAT COLOR OFF.
ENDFORM.
FORM OUTPUT_BODY.
DO LENGTH TIMES.
PERFORM WRITE_LINE USING SY-INDEX.
ENDDO.
ENDFORM.
FORM WRITE_LINE USING COUNT TYPE I.
DATA: HELP(14) TYPE C,
COUNT1 TYPE I.
COUNT1 = SY-INDEX - 1.
WRITE: / SY-VLINE NO-GAP.
WRITE: (4) COUNT1 COLOR COL_KEY INTENSIFIED NO-GAP.
WRITE: SY-VLINE NO-GAP.
CASE COUNT1.
WHEN '0'.
HELP = 'COL_BACKGROUND'.
WHEN '1'.
HELP = 'COL_HEADING'.
WHEN '2'.
HELP = 'COL_NORMAL'.
WHEN '3'.
HELP = 'COL_TOTAL'.
WHEN '4'.
HELP = 'COL_KEY'.
WHEN '5'.
HELP = 'COL_POSITIVE'.
WHEN '6'.
HELP = 'COL_NEGATIVE'.
WHEN '7'.
HELP = 'COL_GROUP'.
ENDCASE.
WRITE: HELP COLOR COL_KEY INTENSIFIED NO-GAP.
WRITE: SY-VLINE NO-GAP.
WRITE: TESTSTRING COLOR = COUNT1 INTENSIFIED NO-GAP.
WRITE: SY-VLINE NO-GAP.
WRITE: TESTSTRING COLOR = COUNT1 INTENSIFIED OFF NO-GAP.
WRITE: SY-VLINE NO-GAP.
WRITE: TESTSTRING COLOR = COUNT1 INVERSE NO-GAP.
WRITE AT WIDTH SY-VLINE NO-GAP.
ENDFORM.
Thanks,
Shankar -
hi,
am suing the following code snippet to colour the cell of a table dynamically.
it throws no error at all , however the end result shows no colour for the particular cell.
i have no clue what the problem is.
design_attr = 'CPEARNEDFOL_DESIGN'.
condense design_attr.
assign component design_attr of STRUCTURE line to <design>.
<design> = cl_wd_table_column=>e_cell_design-positive.
line-CPEARNEDFOL_DESIGN = cl_wd_table_column=>e_cell_design-positive.
append line to tab.
insert line into table tab.
lo_nd_design->bind_table( tab ).
where:
design is the name of the context node
design_attr is just a string holding the name of the attribute of the node of type WDUI_TABLE_CELL_DESIGN which is mapped to the tableSingleMarkabeCell of the column data.
line is a structure,
tab is internal table.
Thanks & regards,
Ronitahi,
am suing the following code snippet to colour the cell of a table dynamically.
it throws no error at all , however the end result shows no colour for the particular cell.
i have no clue what the problem is.
design_attr = 'CPEARNEDFOL_DESIGN'.
condense design_attr.
assign component design_attr of STRUCTURE line to <design>.
<design> = cl_wd_table_column=>e_cell_design-positive.
line-CPEARNEDFOL_DESIGN = cl_wd_table_column=>e_cell_design-positive.
append line to tab.
insert line into table tab.
lo_nd_design->bind_table( tab ).
where:
design is the name of the context node
design_attr is just a string holding the name of the attribute of the node of type WDUI_TABLE_CELL_DESIGN which is mapped to the tableSingleMarkabeCell of the column data.
line is a structure,
tab is internal table.
Thanks & regards,
Ronita -
HOW TO GET VALUE OF A PARTICULAR CELL IN ALV GRID
I HAVE 2 ALV GRID. IWANT WHEN I DOUBLE CLICK ON ANY PARTICULAR CELL OF FIRST GRID I WILL GET THE VALUE DISPLAYED ON THAT PARTICULAR CELL.
THANKS IN ADVANCEHi,
If you are using a class alv, you only need to create a local class to control event and, before setting the screen to present the alv, you need to assign the class as a handler, like this:
CREATE OBJECT event_handler.
SET HANDLER event_handler->double_click FOR alv_grid.
This event handler was defined before like below and a object was created for it:
CLASS cl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column.
ENDCLASS. "cl_event_handler DEFINITION
Then you need to implement this class, creating the method double click and do a READ TABLE to the itab you presented in the alv to recover the data, like this:
READ TABLE itab INTO wk_itab
INDEX e_row-index.
The e_row structure was sent to the method by the handler, setting it with the line index that you double clicked in the alv. After that, you can manipulate the data that you selected in your internal table to generate the data to the other ALV.
Best Regards,
-h -
How to color a particular cell in ALV.
hi,
I have a requirement where i need to select a particular cell of a column in ALV and upon selection , i need to change the color of the selected cell. I choose the color from the dropdown toolbar created by me.
plz help, thanks.REPORT ZTEST_DHR.
TYPE-POOLS : SLIS.
TYPES: BEGIN OF TY_MARA,
FLAG TYPE CHAR1,
MATNR TYPE MARA-MATNR,
ERSDA TYPE MARA-ERSDA,
ERNAM TYPE MARA-ERNAM,
WESCH TYPE MARA-WESCH,
STYLE TYPE LVC_T_STYL,
CELLCOLR TYPE LVC_T_SCOL,
END OF TY_MARA.
DATA : IT_MARA TYPE STANDARD TABLE OF TY_MARA.
DATA : IT_MARA1 TYPE STANDARD TABLE OF TY_MARA,
WA_MARA TYPE TY_MARA,
WA_MARA1 TYPE TY_MARA.
* for reuse alv grid display
*DATA : IT_FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV,
* WA_FIELDCATALOG TYPE SLIS_FIELDCAT_ALV,
* WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
* GV_REPID TYPE SY-REPID.
*for LVC Display
DATA : WA_SETTINGS TYPE LVC_S_GLAY.
DATA : WA_LAYOUT TYPE LVC_S_LAYO.
DATA : IT_FIELDCATALOG TYPE LVC_T_FCAT,
WA_FIELDCATALOG TYPE LVC_S_FCAT.
DATA REF1 TYPE REF TO CL_GUI_ALV_GRID.
DATA: LS_EDIT TYPE LVC_S_STYL,
LT_EDIT TYPE LVC_T_STYL.
DATA : LS_CELL_COLOR TYPE LVC_S_SCOL.
DATA : LT_CELL_COLOR TYPE LVC_T_SCOL.
START-OF-SELECTION.
SELECT MATNR ERSDA ERNAM WESCH
FROM MARA INTO CORRESPONDING FIELDS OF TABLE IT_MARA
UP TO 10 ROWS.
END-OF-SELECTION.
PERFORM BUILD_FIELDCATALOG.
PERFORM BUILD_LAYOUT.
PERFORM DISPLAY_ALV_REPORT.
*& Form BUILD_FIELDCATALOG
* text
FORM BUILD_FIELDCATALOG .
WA_FIELDCATALOG-FIELDNAME = 'FLAG'.
WA_FIELDCATALOG-OUTPUTLEN = 6.
WA_FIELDCATALOG-CHECKBOX = 'X'. "as checkbox
WA_FIELDCATALOG-EDIT = 'X'.
WA_FIELDCATALOG-SELTEXT = 'Check box'.
APPEND WA_FIELDCATALOG TO IT_FIELDCATALOG.
CLEAR WA_FIELDCATALOG.
WA_FIELDCATALOG-FIELDNAME = 'MATNR'.
WA_FIELDCATALOG-OUTPUTLEN = 20.
WA_FIELDCATALOG-SELTEXT = 'Mat no'.
* wa_fieldcatalog-input = 'X'.
wa_fieldcatalog-edit = 'X'.
APPEND WA_FIELDCATALOG TO IT_FIELDCATALOG.
CLEAR WA_FIELDCATALOG.
WA_FIELDCATALOG-FIELDNAME = 'ERSDA'.
WA_FIELDCATALOG-OUTPUTLEN = 15.
WA_FIELDCATALOG-SELTEXT = 'Creation Date'.
* wa_fieldcatalog-input = 'X'.
* wa_fieldcatalog-edit = 'X'.
APPEND WA_FIELDCATALOG TO IT_FIELDCATALOG.
CLEAR WA_FIELDCATALOG.
WA_FIELDCATALOG-FIELDNAME = 'ERNAM'.
WA_FIELDCATALOG-OUTPUTLEN = 20.
WA_FIELDCATALOG-SELTEXT = 'Creation Time'.
* wa_fieldcatalog-input = 'X'.
* wa_fieldcatalog-edit = 'X'.
APPEND WA_FIELDCATALOG TO IT_FIELDCATALOG.
CLEAR WA_FIELDCATALOG.
WA_FIELDCATALOG-FIELDNAME = 'WESCH'.
WA_FIELDCATALOG-OUTPUTLEN = 20.
WA_FIELDCATALOG-SELTEXT = 'Quantity'.
* wa_fieldcatalog-input = 'X'.
* wa_fieldcatalog-edit = 'X'.
APPEND WA_FIELDCATALOG TO IT_FIELDCATALOG.
CLEAR WA_FIELDCATALOG.
ENDFORM. "build_fieldcatalog
*& Form BUILD_LAYOUT
* text
FORM BUILD_LAYOUT .
CONSTANTS : LC_X TYPE CHAR1 VALUE 'X'.
* WA_LAYOUT-NO_INPUT = LC_X.
WA_LAYOUT-CWIDTH_OPT = LC_X.
WA_LAYOUT-ZEBRA = LC_X.
WA_LAYOUT-STYLEFNAME = 'STYLE'.
WA_LAYOUT-CTAB_FNAME = 'CELLCOLR'.
ENDFORM. " BUILD_LAYOUT
*& Form DISPLAY_ALV_REPORT
* text
FORM DISPLAY_ALV_REPORT .
LS_EDIT-FIELDNAME = 'FLAG'.
LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
INSERT LS_EDIT INTO TABLE LT_EDIT.
INSERT LINES OF LT_EDIT INTO TABLE WA_MARA1-STYLE.
LS_CELL_COLOR-FNAME = 'MATNR'.
LS_CELL_COLOR-COLOR-COL = '7'.
LS_CELL_COLOR-COLOR-INT = '1'.
INSERT LS_CELL_COLOR into table LT_CELL_COLOR.
INSERT LINES OF LT_CELL_COLOR into TABLE WA_MARA1-CELLCOLR.
LOOP AT IT_MARA INTO WA_MARA.
IF WA_MARA-ERSDA EQ '20080625'.
MODIFY IT_MARA INDEX SY-TABIX FROM WA_MARA1 TRANSPORTING STYLE CELLCOLR.
ENDIF.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'F_SET_STATUS'
I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'Example of select and deselect'
* I_GRID_SETTINGS =
IS_LAYOUT_LVC = WA_LAYOUT
IT_FIELDCAT_LVC = IT_FIELDCATALOG
TABLES
T_OUTTAB = IT_MARA
* 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.
* CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
* EXPORTING
* I_CALLBACK_PROGRAM = GV_REPID
* I_CALLBACK_PF_STATUS_SET = 'F_SET_STATUS'
* I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
* I_GRID_TITLE = 'Example of select and deselect'
* I_GRID_SETTINGS = WA_SETTINGS
* IS_LAYOUT = WA_LAYOUT
* IT_FIELDCAT = IT_FIELDCATALOG[]
* TABLES
* T_OUTTAB = IT_MARA.
* IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
ENDFORM. " DISPLAY_ALV_REPORT
*& Form f_set_status
* text
FORM F_SET_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STATUS1'.
ENDFORM. " f_set_status
*& Form f_user_command
* text
FORM F_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
* BREAK-POINT.
CASE R_UCOMM.
WHEN 'ASEL'.
LOOP AT IT_MARA INTO WA_MARA.
WA_MARA-FLAG = 'X'.
MODIFY IT_MARA FROM WA_MARA.
ENDLOOP.
RS_SELFIELD-REFRESH = 'X'.
WHEN 'DSEL'.
LOOP AT IT_MARA INTO WA_MARA.
WA_MARA-FLAG = ' '.
MODIFY IT_MARA FROM WA_MARA.
ENDLOOP.
RS_SELFIELD-REFRESH = 'X'.
WHEN 'DELETE'.
* BREAK-POINT.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF1.
CALL METHOD REF1->CHECK_CHANGED_DATA.
DELETE IT_MARA
WHERE FLAG = 'X'.
RS_SELFIELD-REFRESH = 'X'.
WHEN 'INSERT'.
CLEAR WA_MARA.
APPEND WA_MARA TO IT_MARA.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF1.
CALL METHOD REF1->REFRESH_TABLE_DISPLAY.
WHEN 'SAVEDB'.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF1.
CALL METHOD REF1->CHECK_CHANGED_DATA.
* CODE TO BE WRITTEN TO SAVE in DB just an insert statement
*ENDLOOP.
ENDCASE.
ENDFORM.
REPORT ZTEST_DHR.
TYPE-POOLS : SLIS.
TYPES: BEGIN OF TY_MARA,
FLAG TYPE CHAR1,
MATNR TYPE MARA-MATNR,
ERSDA TYPE MARA-ERSDA,
ERNAM TYPE MARA-ERNAM,
WESCH TYPE MARA-WESCH,
STYLE TYPE LVC_T_STYL,
CELLCOLR TYPE LVC_T_SCOL,
END OF TY_MARA.
DATA : IT_MARA TYPE STANDARD TABLE OF TY_MARA.
DATA : IT_MARA1 TYPE STANDARD TABLE OF TY_MARA,
WA_MARA TYPE TY_MARA,
WA_MARA1 TYPE TY_MARA.
* for reuse alv grid display
*DATA : IT_FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV,
* WA_FIELDCATALOG TYPE SLIS_FIELDCAT_ALV,
* WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
* GV_REPID TYPE SY-REPID.
*for LVC Display
DATA : WA_SETTINGS TYPE LVC_S_GLAY.
DATA : WA_LAYOUT TYPE LVC_S_LAYO.
DATA : IT_FIELDCATALOG TYPE LVC_T_FCAT,
WA_FIELDCATALOG TYPE LVC_S_FCAT.
DATA REF1 TYPE REF TO CL_GUI_ALV_GRID.
DATA: LS_EDIT TYPE LVC_S_STYL,
LT_EDIT TYPE LVC_T_STYL.
DATA : LS_CELL_COLOR TYPE LVC_S_SCOL.
DATA : LT_CELL_COLOR TYPE LVC_T_SCOL.
START-OF-SELECTION.
SELECT MATNR ERSDA ERNAM WESCH
FROM MARA INTO CORRESPONDING FIELDS OF TABLE IT_MARA
UP TO 10 ROWS.
END-OF-SELECTION.
PERFORM BUILD_FIELDCATALOG.
PERFORM BUILD_LAYOUT.
PERFORM DISPLAY_ALV_REPORT.
*& Form BUILD_FIELDCATALOG
* text
FORM BUILD_FIELDCATALOG .
WA_FIELDCATALOG-FIELDNAME = 'FLAG'.
WA_FIELDCATALOG-OUTPUTLEN = 6.
WA_FIELDCATALOG-CHECKBOX = 'X'. "as checkbox
WA_FIELDCATALOG-EDIT = 'X'.
WA_FIELDCATALOG-SELTEXT = 'Check box'.
APPEND WA_FIELDCATALOG TO IT_FIELDCATALOG.
CLEAR WA_FIELDCATALOG.
WA_FIELDCATALOG-FIELDNAME = 'MATNR'.
WA_FIELDCATALOG-OUTPUTLEN = 20.
WA_FIELDCATALOG-SELTEXT = 'Mat no'.
* wa_fieldcatalog-input = 'X'.
wa_fieldcatalog-edit = 'X'.
APPEND WA_FIELDCATALOG TO IT_FIELDCATALOG.
CLEAR WA_FIELDCATALOG.
WA_FIELDCATALOG-FIELDNAME = 'ERSDA'.
WA_FIELDCATALOG-OUTPUTLEN = 15.
WA_FIELDCATALOG-SELTEXT = 'Creation Date'.
* wa_fieldcatalog-input = 'X'.
* wa_fieldcatalog-edit = 'X'.
APPEND WA_FIELDCATALOG TO IT_FIELDCATALOG.
CLEAR WA_FIELDCATALOG.
WA_FIELDCATALOG-FIELDNAME = 'ERNAM'.
WA_FIELDCATALOG-OUTPUTLEN = 20.
WA_FIELDCATALOG-SELTEXT = 'Creation Time'.
* wa_fieldcatalog-input = 'X'.
* wa_fieldcatalog-edit = 'X'.
APPEND WA_FIELDCATALOG TO IT_FIELDCATALOG.
CLEAR WA_FIELDCATALOG.
WA_FIELDCATALOG-FIELDNAME = 'WESCH'.
WA_FIELDCATALOG-OUTPUTLEN = 20.
WA_FIELDCATALOG-SELTEXT = 'Quantity'.
* wa_fieldcatalog-input = 'X'.
* wa_fieldcatalog-edit = 'X'.
APPEND WA_FIELDCATALOG TO IT_FIELDCATALOG.
CLEAR WA_FIELDCATALOG.
ENDFORM. "build_fieldcatalog
*& Form BUILD_LAYOUT
* text
FORM BUILD_LAYOUT .
CONSTANTS : LC_X TYPE CHAR1 VALUE 'X'.
* WA_LAYOUT-NO_INPUT = LC_X.
WA_LAYOUT-CWIDTH_OPT = LC_X.
WA_LAYOUT-ZEBRA = LC_X.
WA_LAYOUT-STYLEFNAME = 'STYLE'.
WA_LAYOUT-CTAB_FNAME = 'CELLCOLR'.
ENDFORM. " BUILD_LAYOUT
*& Form DISPLAY_ALV_REPORT
* text
FORM DISPLAY_ALV_REPORT .
LS_EDIT-FIELDNAME = 'FLAG'.
LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
INSERT LS_EDIT INTO TABLE LT_EDIT.
INSERT LINES OF LT_EDIT INTO TABLE WA_MARA1-STYLE.
LS_CELL_COLOR-FNAME = 'MATNR'.
LS_CELL_COLOR-COLOR-COL = '7'.
LS_CELL_COLOR-COLOR-INT = '1'.
INSERT LS_CELL_COLOR into table LT_CELL_COLOR.
INSERT LINES OF LT_CELL_COLOR into TABLE WA_MARA1-CELLCOLR.
LOOP AT IT_MARA INTO WA_MARA.
IF WA_MARA-ERSDA EQ '20080625'.
MODIFY IT_MARA INDEX SY-TABIX FROM WA_MARA1 TRANSPORTING STYLE CELLCOLR.
ENDIF.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'F_SET_STATUS'
I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'Example of select and deselect'
* I_GRID_SETTINGS =
IS_LAYOUT_LVC = WA_LAYOUT
IT_FIELDCAT_LVC = IT_FIELDCATALOG
TABLES
T_OUTTAB = IT_MARA
* 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.
* CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
* EXPORTING
* I_CALLBACK_PROGRAM = GV_REPID
* I_CALLBACK_PF_STATUS_SET = 'F_SET_STATUS'
* I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
* I_GRID_TITLE = 'Example of select and deselect'
* I_GRID_SETTINGS = WA_SETTINGS
* IS_LAYOUT = WA_LAYOUT
* IT_FIELDCAT = IT_FIELDCATALOG[]
* TABLES
* T_OUTTAB = IT_MARA.
* IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
ENDFORM. " DISPLAY_ALV_REPORT
*& Form f_set_status
* text
FORM F_SET_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STATUS1'.
ENDFORM. " f_set_status
*& Form f_user_command
* text
FORM F_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
* BREAK-POINT.
CASE R_UCOMM.
WHEN 'ASEL'.
LOOP AT IT_MARA INTO WA_MARA.
WA_MARA-FLAG = 'X'.
MODIFY IT_MARA FROM WA_MARA.
ENDLOOP.
RS_SELFIELD-REFRESH = 'X'.
WHEN 'DSEL'.
LOOP AT IT_MARA INTO WA_MARA.
WA_MARA-FLAG = ' '.
MODIFY IT_MARA FROM WA_MARA.
ENDLOOP.
RS_SELFIELD-REFRESH = 'X'.
WHEN 'DELETE'.
* BREAK-POINT.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF1.
CALL METHOD REF1->CHECK_CHANGED_DATA.
DELETE IT_MARA
WHERE FLAG = 'X'.
RS_SELFIELD-REFRESH = 'X'.
WHEN 'INSERT'.
CLEAR WA_MARA.
APPEND WA_MARA TO IT_MARA.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF1.
CALL METHOD REF1->REFRESH_TABLE_DISPLAY.
WHEN 'SAVEDB'.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF1.
CALL METHOD REF1->CHECK_CHANGED_DATA.
* CODE TO BE WRITTEN TO SAVE in DB just an insert statement
*ENDLOOP.
ENDCASE.
ENDFORM.
About Selecting a Color From Dropdown? even i need to check for now this is the how u do cell color in alv -
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 -
Regarding increasing width of particular cell in alv
hi,
i have created a simple ALV program. it is working properly but i want to increase size of a particular cell in this.pls tell me how can i do this.
Thanx/Regards,
Vaneet ThakurHi ,
You need to specify outputlen field of the field catalog and you need to pass the same
field catalog in the Function Module .
Please check the code - -
fs_fcat-fieldname = 'FIELD_NAME'.
fs_fcat-seltext_l = text-126.
fs_fcat-outputlen = '35'. " Output lenth according to ur Requirement
fs_fcat-edit = 'X'.
fs_fcat-input = 'X'.
fs_fcat-col_pos = 3.
APPEND fs_fcat TO t_fcat.
CLEAR fs_fcat.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'STATUS'
i_callback_user_command = 'UCOMMAND'
i_structure_name = 'FS_ITAB1'
it_fieldcat = t_fcat " Pass the table populated all the information
i_screen_start_column = 2
i_screen_start_line = 5
i_screen_end_column = 70
i_screen_end_line = 20
TABLES
t_outtab = t_itab1
EXCEPTIONS
program_error = 1.
Regards
Pinaki -
Make particular cell as mandatory(not complete column) in ALV
hello experts,
i have a requirement to make particular cell as mandatory(not complete column) in ALV .
could any body tel me how to acheive this functionality.
Thanks in adv!!Hi Rakshar,
inside the loop write your condition and then call
CALL METHOD lr_column->set_cell_editor
EXPORTING
value = lr_input.
*Now loop the columns table and change the cell editor of a column
LOOP AT lt_columns INTO ls_columns.
lr_column = ls_columns-r_column.
lv_tabix = sy-tabix.
READ TABLE lt_name INTO ls_name INDEX lv_tabix.
CREATE OBJECT lr_input
EXPORTING
value_fieldname = ls_name-name.
CALL METHOD lr_column->set_cell_editor
EXPORTING
value = lr_input.
And go through the bellow link..
link : http://wiki.sdn.sap.com/wiki/display/WDABAP/HowtoeditconditionallyrowofaALVtableinWebDynprofor+ABAP -
How to colour specific rows within an WebDynpro ALV
Hi everyone,
I need to colour only specific rows of an ALV. I've already scoured sdn and implemented the solutions that I found but none of them seems to be working okay.
I have an ALV table and I want to highlight only a few rows based on a certain logic.
I've defined a context node that defines 2 attributes: textview_design and cell_design.
LOOP AT ft_out_purchase_order_temp INTO ls_out_purchase_order_temp.
if ....
ls_out_purchase_order_temp-textview_design = cl_wd_text_view=>e_design-standard.
ls_out_purchase_order_temp-cell_design = cl_wd_table_column=>e_cell_design-standard.
else.
ls_out_purchase_order_temp-cell_design = cl_wd_table_column=>e_cell_design-total.
ls_out_purchase_order_temp-textview_design = cl_wd_text_view=>e_design-emphasized.
endif.
ENDLOOP.
lr_column_settings ?= po_alv_config_table.
lr_column = lr_column_settings->get_column( 'EBELN' ).
lr_column = po_alv_config_table->if_salv_wd_column_settings~get_column( 'EBELN' ).
lr_column->set_cell_design_fieldname( value = 'CELL_DESIGN' ).
This code works but the thing is that the whole column named 'EBELN' is coloured light green. This is strange because I've instructed the system that the design of the column EBELN is controlled by the field CELL_DESIGN and this field has the following values:
10 (light green)
33 (light blue)
10
10
10
33
10
33
Any ideas?Hii,
To color a particular row you need to follow two things.
1. Specify condition based on which the row will be colored i.e. set the value for the attribute 'CELL_DESIGN'.
2. Get all column references and set the cell design field name with 'CELL_DESIGN'.
Get all column reference.
DATA : LT_COLUMNS TYPE SALV_WD_T_COLUMN_REF,
LS_COLUMNS TYPE SALV_WD_S_COLUMN_REF.
LT_COLUMNS = LR_COLUMN_SETTINGS->GET_COLUMNS( ).
configure column
LR_COLUMN_SETTINGS ?= LV_VALUE. " column functions
LT_COLUMNS = LR_COLUMN_SETTINGS->GET_COLUMNS( ).
set cell design for all.
In your case if a single column is getting colored the then the reason might be
1.every record satisfying your if condition specified.
2.you have set cell design in that particular field name.
Regards,
Monishankar C -
Hi All,
I am working with REUSE_ALV_HIERSEQ_LIST_DISPLAY function module to diaplay hierarchial list. Now my requirement is to color particular cells in the output based on condition. Can any one help me in this regard.
Thanks and Regards,
Srinadh.hi ,
try this..
* FIELD CATALOG
DATA : it_field TYPE slis_t_fieldcat_alv, "internal table for field catalog
wa_field TYPE slis_fieldcat_alv. "work area for field catalog
* FOR LAYOUT OF ALV GRID
DATA : wa_layout TYPE slis_layout_alv. "work area for layout design
*& Form SET_LAYOUT
* SUB-ROUTINE SET_LAYOUT IS USED TO SET THE DISPLAY OF THE
* ALV GRID LINES IN ALTERNATIVE COLOURS
FORM set_layout .
wa_layout-zebra = 'X'.
ENDFORM. " SET_LAYOUT
*& Form ALV_DISPLAY
* SUB-ROUTINE ALV_DISPLAY IS USED TO SET THE PARAMETERS
* FOR THE FUNCTION MODULE REUSE_ALV_GRID_DISPLAY
* AND PASS THE INTERNAL TABLE EXISTING THE RECORDS TO BE
* DISPLAYED IN THE GRID FORMAT
FORM alv_display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = 'SY-REPID '
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
is_layout = wa_layout
it_fieldcat = it_field
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_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
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_final
* 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. "alv_display
regards
Ritesh J -
Is there any way to tell which formulas a particular cell is in, reverse look-up style? That is, is there a way to search somehow for which formulas in a sheet contain a particular cell in them without opening all of them up? If not, it would be nice.
I'm fixing a Numbers document that I use in business daily that's become overly complicated, but while I want to clear/delete a number of cells in it to clean it up, I'm not sure if those cells are being used as source for other formulas on the page. I don't have to open all my formulas one by one to see if that cell is in there, do I?! That'd be a huge amount of work if I wanted to eliminate say 10 cells to search each formula on the page to see if it is in there or watch all the cells when I delete that cell to see if the numbers change! There's got to be an easier way! Right click doesn't seem to be any help.
I don't want to damage my daily tool to make it cleaner and reorganize it. Is there really no way to do a reverse look-up of which formulas a particular cell is in?! Any time I click on a formula it highlights all the CELLS in that formula. Why can't I (or can I?) do the reverse and see all the FORMULAS that contain a particular cell?
As a Numbers document ages or gets used frequently, you can sometimes forget which cells are tied to which formulas. You just look for the results of your formulas. Would be a nice thing to be able to do. Thoughts? Work-arounds? Answers?Answer would be no unless application provided such feature. Numbers does not as far as I know.
Note that even if you have complete list of formulae used in a table, identifying formulae referencing any given cell is not simple.
E.g., cell T20 is referenced not only in
=T20+1
but also in
=SUM(T)
=SUM(20:20)
=SUM(S19:U22)
=OFFSET(S1,19,1,1,1)
=INDIRECT("T"&(10*2))
In order to identify such formula, we have to actually evaluate it to see if it references the given cell. Especially such formula as OFFSET() and INDIRECT() may not be found by static parser because their parameters can be dynamic.
Sorry to be the bearer of bad tidings.
H
Maybe you are looking for
-
The web has truly made products world-wide the instant they appear - but supporting the many, many languages and character sets of the world takes a bit longer. Today, Buzzword is US English based only. Buzzword will support languages other than US E
-
I remotely wiped my iPhone on Saturday night...Sunday afternoon I restored my iPhone to settings from a while ago. I was not near a wifi to connect my phone to icloud. I noticed on icloud that there are contacts on the cloud that i would like to add
-
Want to flatten my parent-child hierarchy into an level-based hierarchy.
Hi Expert, Can anyone let me know how I can convert my parent-child hierarchy into an LEVEL-based hierarchy. Thanks in Advance S
-
EBS form cannot enter , please help me
EBS 11.5.10.2 Database 10.2.3 OS - AIX 5.31 WHEN after clone dev, IT HAPPEN My dev instance having one issue If i am trying with http:/hostname:port/oa_servlets/AppsLogin input user and password it is ok but i can not Cannot Launch Forms From The Res
-
Hi friends if requirements are coming from external planning system(NON-SAP) to SRM system via XI. what settings need to be done in order to send requirements from non-sap planning system to srm system regards Yshnavi