06-06-2008 2:27 PM
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.
06-06-2008 2:30 PM
Hello,
Please read this:https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e8a1d690-0201-0010-b7ad-d9719a415907. At page 27.
Regards.
06-06-2008 2:34 PM
hi check this..
REPORT ztest.
TYPE-POOLS:SLIS.
TABLES:VBAK.
SELECT-OPTIONS:S_VBELN FOR VBAK-VBELN.
DATA:BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
ERNAM LIKE VBAK-ERNAM,
ERDAT LIKE VBAK-ERDAT,
NETWR LIKE VBAK-NETWR,
END OF ITAB.
DATA:IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT LIKE LINE OF IT_FIELDCAT,
WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
START-OF-SELECTION.
PERFORM IT_POPULATE .
sort itab by vbeln descending.
PERFORM ALV_GENERATE.
PERFORM ALV_DISPLAY.
&----
*& Form it_populate
&----
text
----
--> p1 text
<-- p2 text
----
FORM IT_POPULATE .
SELECT VBELN ERNAM ERDAT NETWR FROM VBAK INTO TABLE ITAB WHERE VBELN IN S_VBELN.
ENDFORM. " it_populate
&----
*& Form alv_display
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_GENERATE .
WA_FIELDCAT-FIELDNAME = 'VBELN'.
WA_FIELDCAT-tabname = 'ITAB'.
WA_FIELDCAT-SELTEXT_L = 'sales doc. no'.
WA_FIELDCAT-emphasize = 'C111'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ERNAM'.
WA_FIELDCAT-tabname = 'ITAB'.
WA_FIELDCAT-SELTEXT_L = 'Name'.
WA_FIELDCAT-emphasize = 'C211'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ERDAT'.
WA_FIELDCAT-tabname = 'ITAB'.
WA_FIELDCAT-SELTEXT_L = 'Name'.
WA_FIELDCAT-emphasize = 'C311'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'NETWR'.
WA_FIELDCAT-emphasize = 'C411'.
WA_FIELDCAT-SELTEXT_L = 'sales doc.amt'.
WA_FIELDCAT-tabname = 'ITAB'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
ENDFORM. " alv_display
&----
*& Form alv_display
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_DISPLAY .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IT_FIELDCAT = IT_FIELDCAT
TABLES
T_OUTTAB = ITAB.
ENDFORM. " alv_display
regards,
venkat
06-06-2008 2:41 PM
This is for the non OO ALV
TABLES: zlmlead.
DATA ls_cellcolor TYPE lvc_s_scol .
*---------------------------------------------------------------*
* ALV Related Fields & Tables
*---------------------------------------------------------------*
TYPE-POOLS: slis.
CONSTANTS:
gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',
gc_formname_user_command TYPE slis_formname VALUE 'USER_COMMAND'.
DATA: g_fieldcat TYPE slis_t_fieldcat_alv,
g_extab TYPE slis_t_extab,
g_layout TYPE slis_layout_alv,
g_keyinfo TYPE slis_keyinfo_alv,
g_print TYPE slis_print_alv,
g_sort TYPE slis_t_sortinfo_alv,
g_sp_group TYPE slis_t_sp_group_alv,
g_events TYPE slis_t_event,
g_events_ex TYPE slis_t_event_exit,
g_repid LIKE sy-repid,
g_list_top_of_page TYPE slis_t_listheader,
g_save TYPE c.
* g_exit TYPE c.
* g_variant LIKE disvariant,
DATA: ls_line TYPE slis_listheader.
DATA:
col_rec TYPE lvc_s_scol.
DATA:
BEGIN OF out_rec,
leadid TYPE zleadid,
ltype TYPE zlmltype,
status TYPE zlmstatus,
ct TYPE lvc_t_scol,
END OF out_rec,
it_out LIKE STANDARD TABLE OF out_rec.
*______________________________________ Initialization
INITIALIZATION.
* Check authority for ALV Standard layout save option
AUTHORITY-CHECK OBJECT 'ZALV_STD'
ID 'ACTVT' FIELD '02'.
IF sy-subrc = 0.
g_save = 'A'.
ELSE.
g_save = 'U'.
ENDIF.
START-OF-SELECTION.
SELECT leadid ltype status
INTO (out_rec-leadid,
out_rec-ltype,
out_rec-status)
FROM zlmlead.
CLEAR ls_cellcolor.
ls_cellcolor-fname = 'STATUS' .
REFRESH out_rec-ct.
CASE out_rec-status.
WHEN 'CA001'.
ls_cellcolor-color-col = '1' .
ls_cellcolor-color-int = '0' .
WHEN OTHERS.
ls_cellcolor-color-col = '6' .
ls_cellcolor-color-int = '1' .
ENDCASE.
APPEND ls_cellcolor TO out_rec-ct.
APPEND out_rec TO it_out.
ENDSELECT.
PERFORM display_alv_report.
*---------------------------------------------------------------------*
* FORM display_alv_report *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM display_alv_report.
PERFORM fieldcat_init USING g_fieldcat[].
PERFORM build_sort_fields USING g_sort[].
PERFORM eventtab_build USING g_events[]
g_events_ex[].
PERFORM layout_build USING g_layout.
*
PERFORM list_view.
*
ENDFORM. " display_alv_report.
*---------------------------------------------------------------------*
* FORM eventtab_build *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> E03_LT_EVENTS *
* --> E03_LT_EVENTS_EX *
*---------------------------------------------------------------------*
FORM eventtab_build
USING e03_lt_events TYPE slis_t_event
e03_lt_events_ex TYPE slis_t_event_exit.
DATA: ls_event TYPE slis_alv_event,
ls_event_exit LIKE LINE OF e03_lt_events_ex.
*
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 1
IMPORTING
et_events = e03_lt_events.
READ TABLE e03_lt_events
WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE gc_formname_top_of_page TO ls_event-form.
APPEND ls_event TO e03_lt_events.
ENDIF.
READ TABLE e03_lt_events
WITH KEY name = 'USER_COMMAND'
INTO ls_event.
IF sy-subrc = 0.
MOVE gc_formname_user_command TO ls_event-form.
APPEND ls_event TO e03_lt_events.
ENDIF.
ls_event_exit-ucomm = 'DISP'.
APPEND ls_event_exit TO e03_lt_events_ex.
ENDFORM. " build_events_table
*====> End of the Build Events section
*====> This section builds the Layout Record
FORM layout_build
USING e05_ls_layout TYPE slis_layout_alv.
*
CLEAR e05_ls_layout.
*
e05_ls_layout-f2code = 'DISP'.
e05_ls_layout-colwidth_optimize = 'X'.
e05_ls_layout-zebra = 'X'.
e05_ls_layout-detail_popup = 'X'.
e05_ls_layout-detail_initial_lines = 'X'.
e05_ls_layout-detail_titlebar = 'Demo for Coloring ALV Cells'.
e05_ls_layout-coltab_fieldname = 'CT'.
*
* e05_ls_layout-min_linesize = 125.
* gs_print-no_print_listinfos = 'X'.
*
ENDFORM. " layout_build
*====> End of the Build for Layout Record
*====> This section builds the Actual Display Routine
FORM list_view.
*
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
is_layout = g_layout
it_sort = g_sort[]
it_events = g_events[]
it_fieldcat = g_fieldcat[]
i_save = g_save
TABLES
t_outtab = it_out
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE e208(00) WITH 'Error: ALV Grid'.
ENDIF.
*
ENDFORM. " layout_build
*====> End of Actual Display Routine
*====> This section builds the Top of Page Routine
FORM top_of_page.
*
DATA: ls_line TYPE slis_listheader.
*
CLEAR g_list_top_of_page[].
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = 'Demo for Coloring ALV Cells'.
APPEND ls_line TO g_list_top_of_page.
PERFORM build_sub_headings
USING g_list_top_of_page.
*
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = g_list_top_of_page[].
*
ENDFORM. " top_of_page
*
FORM build_sub_headings
USING e07_top_of_page TYPE slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
*
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Run Info'.
CONCATENATE sy-sysid sy-uname sy-mandt
INTO ls_line-info
SEPARATED BY space.
APPEND ls_line TO e07_top_of_page.
*
ENDFORM. "build_sub_headings
*====> End of top_of_page
*====> This section builds the User Command Routine
FORM user_command
USING p_ucomm LIKE sy-ucomm
p_selfield TYPE slis_selfield.
*
IF p_selfield-value NE space.
CASE p_selfield-tabname.
WHEN 'IT_OUT'.
READ TABLE it_out INDEX p_selfield-tabindex
INTO out_rec.
WHEN OTHERS.
EXIT.
ENDCASE.
ELSE.
EXIT.
ENDIF.
*
CHECK sy-subrc = 0.
*
CASE p_selfield-fieldname.
* WHEN 'QUOTE'.
* SET PARAMETER ID 'AGN' FIELD p_selfield-value.
* CALL TRANSACTION 'VA23' AND SKIP FIRST SCREEN.
* WHEN 'SALESORD'.
* SET PARAMETER ID 'AUN' FIELD p_selfield-value.
* CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
* WHEN 'NAME1'.
* SET PARAMETER ID 'KUN' FIELD OUT_REC-kunnr.
* CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
* WHEN 'LOTEVAL'.
* SET PARAMETER ID 'ZLOTNUM' FIELD p_selfield-value.
* SET PARAMETER ID 'KUN' FIELD OUT_REC-kunnr.
* CALL TRANSACTION 'ZLOT' AND SKIP FIRST SCREEN.
* WHEN 'CREDITAPP'.
* SET PARAMETER ID 'ZCRDNUM' FIELD p_selfield-value.
* SET PARAMETER ID 'KUN' FIELD OUT_REC-kunnr.
* CALL TRANSACTION 'ZCRD' AND SKIP FIRST SCREEN.
* WHEN 'PROJECT'.
* SET PARAMETER ID 'PSP' FIELD OUT_REC-project.
* CALL TRANSACTION 'CJ20N' AND SKIP FIRST SCREEN.
* WHEN 'ACCNO'.
* SET PARAMETER ID 'ZREO' FIELD p_selfield-value.
* CALL TRANSACTION 'ZREO' AND SKIP FIRST SCREEN.
* WHEN 'LEADID'.
* SET PARAMETER ID 'LEAD' FIELD rpt_rec-leadid.
* SET PARAMETER ID 'LMSMENU' FIELD 'N'.
* CALL TRANSACTION 'ZLM02' AND SKIP FIRST SCREEN.
*
WHEN OTHERS.
EXIT.
ENDCASE.
*
ENDFORM. "user_command
*====> End of user_command
*&--------------------------------------------------
*& Form build_sort_fields
*&--------------------------------------------------
FORM build_sort_fields
USING p_sort TYPE slis_t_sortinfo_alv..
*----------------------> ALV Build Sort Table
DATA: ls_sort LIKE LINE OF p_sort.
REFRESH p_sort.
ENDFORM. " build_sort_fields
*&--------------------------------------------------
*& Form fieldcat_init
*&--------------------------------------------------
FORM fieldcat_init
USING e01_lt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
CLEAR: e01_lt_fieldcat[], e01_lt_fieldcat.
*
CLEAR ls_fieldcat.
ls_fieldcat-tabname = 'IT_OUT'.
ls_fieldcat-fieldname = 'LEADID'.
ls_fieldcat-reptext_ddic =
'Lead Nbr.'.
ls_fieldcat-ddictxt = 'S'.
ls_fieldcat-seltext_s = 'Lead Nbr.'.
ls_fieldcat-seltext_m = 'Lead Number'.
ls_fieldcat-seltext_l =
'Lead Number'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
*
CLEAR ls_fieldcat.
ls_fieldcat-tabname = 'IT_OUT'.
ls_fieldcat-fieldname = 'LTYPE'.
ls_fieldcat-reptext_ddic =
'Lead Type'.
ls_fieldcat-ddictxt = 'S'.
ls_fieldcat-seltext_s = 'Lead Type'.
ls_fieldcat-seltext_m = 'Lead Type'.
ls_fieldcat-seltext_l =
'Lead Type'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
*
CLEAR ls_fieldcat.
ls_fieldcat-tabname = 'IT_OUT'.
ls_fieldcat-fieldname = 'STATUS'.
ls_fieldcat-reptext_ddic =
'Status'.
ls_fieldcat-ddictxt = 'S'.
ls_fieldcat-seltext_s = 'Status'.
ls_fieldcat-seltext_m = 'Status'.
ls_fieldcat-seltext_l =
'Status'.
APPEND ls_fieldcat TO e01_lt_fieldcat.
ENDFORM. " fieldcat_init
06-06-2008 2:44 PM
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