Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Trafic lights in ALV report

Former Member
0 Kudos

Hi Masters,

i have tried my best to Impliment the TRAFIC LIGHTS in my alv report but i could not succeed.

can i have some input as to how we impliment the TRAFIC LIGHTS CODE in alv report.

your valuble info is highly appriciated.

thank you,

pasala.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Pasala,

check these links

http://wiki.sdn.sap.com/wiki/display/ABAP/ABAP-TrafficSignalsinALVusing+Classes

http://wiki.sdn.sap.com/wiki/display/Snippets/ALVGRIDCOMPLETEEXAMPLEWITHTOOLBARBUTTONSUSINGCLASS.

Thanks

Bala Duvvuri

12 REPLIES 12

Former Member
0 Kudos

Pasala,

check these links

http://wiki.sdn.sap.com/wiki/display/ABAP/ABAP-TrafficSignalsinALVusing+Classes

http://wiki.sdn.sap.com/wiki/display/Snippets/ALVGRIDCOMPLETEEXAMPLEWITHTOOLBARBUTTONSUSINGCLASS.

Thanks

Bala Duvvuri

0 Kudos

there are two ways, if u need only one column with traffic lights then use field catalogue filed LIGHT. else use ICON

Former Member
0 Kudos

Hi Pasala,

Have a look at this thread

I hope it helps...:)

Regards

Amit

JerryWang
Advisor
Advisor
0 Kudos

Hello friend,

try following codes:

TYPES: BEGIN OF ty_data,
   name TYPE string,
   HP TYPE i,
   MP TYPE i,
   DP TYPE i,
   job TYPE string,
   exception                  TYPE c LENGTH 1,
   counter                    TYPE i,
   t_color                    TYPE lvc_t_scol,
  END OF ty_data.

TYPES: tt_data TYPE STANDARD TABLE OF ty_data.

DATA: item TYPE ty_data,
      lt_data TYPE tt_data,
      color TYPE lvc_s_scol.

item-name = 'A1'.
item-HP = 5000.
item-MP = 400.
item-DP = 300.
item-job = 'SOR'.
item-exception = '3'.
color-FNAME = 'HP'.
color-color-col = '4'.
APPEND color TO item-t_color.
APPEND item TO lt_data.

item-HP = 4000.
item-MP = 200.
item-DP = 600.
color-FNAME = 'MP'.
color-color-col = '5'.
APPEND color TO item-t_color.
APPENd item TO lt_data.

item-name = 'A2'.
item-HP = 3000.
item-MP = 600.
item-DP = 200.
item-job = 'NEC'.
item-counter = 2.
item-exception = '1'.
CLEAR: item-t_color.
APPEND item TO lt_data.

item-name = 'A3'.
item-HP = 2000.
item-MP = 800.
item-DP = 1000.
item-job = 'BAR'.
item-counter = 3.
color-FNAME = 'DP'.
color-color-col = '1'.
APPEND color TO item-t_color.
item-exception = '2'.
APPEND item TO lt_data.

DATA:
    lo_salv_table TYPE REF TO cl_salv_table.

  TRY.
      cl_salv_table=>factory(
        EXPORTING
          list_display = sy-batch
        IMPORTING
          r_salv_table = lo_salv_table
        CHANGING
          t_table      = lt_data
      ).
    CATCH cx_salv_msg.
      RETURN.
  ENDTRY.


  DATA:
    lo_functions TYPE REF TO cl_salv_functions_list.

  lo_functions = lo_salv_table->get_functions( ).
  lo_functions->set_all( abap_true ).


  DATA:
    lo_layout     TYPE REF TO cl_salv_layout,
    ls_layout_key TYPE salv_s_layout_key.

  lo_layout = lo_salv_table->get_layout( ).

  ls_layout_key-report = sy-repid.
  lo_layout->set_key( ls_layout_key ).

  lo_layout->set_default( abap_false ).
  lo_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).

  DATA:
    lo_columns    TYPE REF TO cl_salv_columns_table,
    lo_column     TYPE REF TO cl_salv_column_table,
    lt_column_ref TYPE salv_t_column_ref,
    ls_column_ref TYPE salv_s_column_ref,
    lv_column_pos TYPE i.

  lo_columns    = lo_salv_table->get_columns( ).
  lt_column_ref = lo_columns->get( ).

  LOOP AT lt_column_ref INTO ls_column_ref.
    CASE ls_column_ref-columnname.
      WHEN 'JOB'.
        ls_column_ref-r_column->set_visible( if_salv_c_bool_sap=>false ).
      WHEN 'EXCEPTION' OR 'COUNTER' OR 'T_COLOR'.
        ls_column_ref-r_column->set_technical( if_salv_c_bool_sap=>true ).

      WHEN 'COUNTER'.
"        ls_column_ref-r_column->set_technical( if_salv_c_bool_sap=>true ).
        ls_column_ref-r_column->set_visible( if_salv_c_bool_sap=>false ).
*
*      WHEN OTHERS.
*        ls_column_ref-r_column->set_visible( if_salv_c_bool_sap=>false ).

    ENDCASE.
  ENDLOOP.

  LOOP AT lt_column_ref INTO ls_column_ref.
    lo_column ?= ls_column_ref-r_column.
    CASE ls_column_ref-columnname.

      WHEN 'HP'.
        lo_column->set_short_text( space ).
        lo_column->set_medium_text( space ).
        lo_column->set_long_text( 'Player Life' ).
        lo_column->set_tooltip( 'Player Life' ).

      WHEN 'NAME'.
        lo_column->set_short_text( space ).
        lo_column->set_medium_text( space ).
        lo_column->set_long_text( 'Name' ).
        lo_column->set_tooltip( 'Name' ).

      WHEN 'MP'.
        lo_column->set_short_text( space ).
        lo_column->set_medium_text( space ).
        lo_column->set_long_text( 'Player Magic Point' ).
        lo_column->set_tooltip( 'Player Magic Point' ).

      WHEN 'DP'.
        lo_column->set_short_text( space ).
        lo_column->set_medium_text( space ).
        lo_column->set_long_text( 'Player Duration Point' ).
        lo_column->set_tooltip( 'Player Duration Point' ).

    ENDCASE.
  ENDLOOP.

  TRY.
      lo_columns->set_exception_column( 'EXCEPTION' ).
      lo_columns->set_count_column( 'COUNTER' ).
      lo_columns->set_color_column( 'T_COLOR' ).
    CATCH cx_salv_data_error.                           "#EC NO_HANDLER
  ENDTRY.

  lo_columns->set_key_fixation( abap_true ).
  lo_columns->set_optimize( abap_true ).

  DATA:
    lo_sort TYPE REF TO cl_salv_sorts.

  lo_sort = lo_salv_table->get_sorts( ).

  TRY.
      lo_sort->add_sort( columnname = 'NAME' ).
    CATCH cx_salv_not_found
          cx_salv_existing
          cx_salv_data_error.                           "#EC NO_HANDLER
  ENDTRY.

  lo_salv_table->display( ).

JerryWang
Advisor
Advisor
0 Kudos

the previous post is the sample code if you want to use ALV via cl_salv_table, but if you want to build ALV using function module REUSE_ALV_GRID_DISPLAY, please try following sample code. It works in my computer. Hope it helps.

types: begin of gs_outtab.

types: lights type char1,

color type i,

tabcol type lvc_t_scol,

id type char25, " Already exist in ICON, Flat Structure

name type icon-name,

symbol type icon-id,

end of gs_outtab.

data: gt_outtab type standard table of gs_outtab.

data: gr_grid type ref to cl_gui_alv_grid.

data: gr_container type ref to cl_gui_custom_container,

gs_layout type lvc_s_layo,

gt_fieldcat type lvc_t_fcat.

data: ls_vari type disvariant.

data: g_okcode type syucomm.

data: gt_exc type table of ALV_S_QINF.

data: text type string.

selection-screen begin of block gen with frame.

parameters:

p_amount type i default 20.

selection-screen end of block gen.

selection-screen begin of block dsp with frame.

parameters:

p_full radiobutton group dsp,

p_grid radiobutton group dsp.

selection-screen end of block dsp.

START-OF-SELECTION.

END-OF-SELECTION.

perform select_data.

IF p_full = 'X'.

perform display_fullscreen.

ELSE.

perform display_grid.

ENDIF.

                                                                                                                • STEP 1: load data *******************************************

form select_data.

select * from icon into corresponding fields of table gt_outtab

up to p_amount rows.

endform.

                                                                                                                  • STEP2: build full screen **************************************

form display_fullscreen .

data: ls_layout type slis_layout_alv,

lt_fcat type slis_t_fieldcat_alv,

ls_fcat type slis_fieldcat_alv.

ls_layout-lights_tabname = '1'.

ls_layout-lights_fieldname = 'LIGHTS'.

ls_layout-coltab_fieldname = 'TABCOL'.

clear ls_fcat.

ls_fcat-fieldname = 'LIGHTS'.

ls_fcat-inttype = 'C'.

ls_fcat-seltext_l = ls_fcat-seltext_m = ls_fcat-seltext_s = 'Lights'.

append ls_fcat to lt_fcat.

clear ls_fcat.

ls_fcat-fieldname = 'COLOR'.

ls_fcat-inttype = 'I'.

ls_fcat-seltext_l = ls_fcat-seltext_m = ls_fcat-seltext_s = 'Color'.

append ls_fcat to lt_fcat.

clear ls_fcat.

ls_fcat-fieldname = 'ID'.

ls_fcat-inttype = 'C'.

ls_fcat-seltext_l = ls_fcat-seltext_m = ls_fcat-seltext_s = 'Icon'.

ls_fcat-icon = abap_true.

append ls_fcat to lt_fcat.

clear ls_fcat.

ls_fcat-fieldname = 'SYMBOL'.

ls_fcat-inttype = 'C'.

ls_fcat-seltext_l = ls_fcat-seltext_m = ls_fcat-seltext_s = 'Symbol'.

ls_fcat-symbol = abap_true.

append ls_fcat to lt_fcat.

clear ls_fcat.

ls_fcat-fieldname = 'NAME'.

ls_fcat-tech = abap_true.

append ls_fcat to lt_fcat.

perform select_data.

perform set_tooltips.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

IS_LAYOUT = ls_layout

IT_FIELDCAT = lt_fcat

IT_EXCEPT_QINFO = gt_exc

TABLES

T_OUTTAB = gt_outtab

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

ASSERT sy-subrc = 0.

endform.

                                                                                                                            • STEP3: display grid ******************************************

form display_grid.

call screen 100.

endform.

                                                                                                                              • STEP4: PBO ***************************************************

module d0100_pbo output.

perform d0100_pbo.

endmodule.

                                                                                                                                • STEP5: PAI ***************************************************

module d0100_pai input.

perform d0100_pai.

endmodule.

                                                                                                                                    • STEP6: PBO form ***********************************************

form d0100_pbo .

set pf-status 'D0100'.

if gr_container is not bound.

create object gr_container

exporting

container_name = 'CONTAINER'.

create object gr_grid

exporting i_parent = gr_container.

data: ls_layout type lvc_s_layo,

lt_fcat type lvc_t_fcat,

ls_fcat type lvc_s_fcat.

ls_layout-excp_fname = 'LIGHTS'.

ls_layout-ctab_fname = 'TABCOL'.

clear ls_fcat.

ls_fcat-fieldname = 'LIGHTS'.

ls_fcat-inttype = 'C'.

ls_fcat-scrtext_l = ls_fcat-scrtext_m = ls_fcat-scrtext_s = 'Lights'.

append ls_fcat to lt_fcat.

clear ls_fcat.

ls_fcat-fieldname = 'COLOR'.

ls_fcat-inttype = 'I'.

ls_fcat-scrtext_l = ls_fcat-scrtext_m = ls_fcat-scrtext_s = 'Color'.

append ls_fcat to lt_fcat.

clear ls_fcat.

ls_fcat-fieldname = 'ID'.

ls_fcat-inttype = 'C'.

ls_fcat-scrtext_l = ls_fcat-scrtext_m = ls_fcat-scrtext_s = 'Icon'.

ls_fcat-icon = abap_true.

append ls_fcat to lt_fcat.

clear ls_fcat.

ls_fcat-fieldname = 'SYMBOL'.

ls_fcat-inttype = 'C'.

ls_fcat-scrtext_l = ls_fcat-scrtext_m = ls_fcat-scrtext_s = 'Symbol'.

ls_fcat-symbol = abap_true.

append ls_fcat to lt_fcat.

clear ls_fcat.

ls_fcat-fieldname = 'NAME'.

ls_fcat-tech = abap_true.

append ls_fcat to lt_fcat.

perform select_data.

perform set_tooltips.

data: lt_tooltips type lvc_t_qinf,

lt_toolb type ui_functions,

ls_toolb type UI_FUNC.

ls_toolb = CL_GUI_ALV_GRID=>mc_fc_call_crbatch.

append ls_toolb to lt_toolb.

lt_tooltips = gt_exc.

call method gr_grid->set_table_for_first_display

exporting is_layout = ls_layout

it_except_qinfo = lt_tooltips

it_toolbar_excluding = lt_toolb

changing

it_fieldcatalog = lt_fcat

it_outtab = gt_outtab.

endif.

endform.

                                                                                                        • STEP7: PAI form ******************************************************

form d0100_pai .

case g_okcode.

when 'BACK' or 'EXIT' or 'CANC'.

set screen 0.

leave screen.

endcase.

endform.

                                                                                                        • STEP8: Set Tooltip *************************************************

FORM set_tooltips .

field-symbols: <outtab> type gs_outtab.

data: tooltips type ref to cl_salv_tooltips,

settings type ref to cl_salv_functional_settings,

ls_styl type lvc_s_styl,

value type char128,

text type char40,

ls_symbol type icon,

lt_symbol type standard table of icon,

ls_exc type ALV_S_QINF,

tabix type sy-tabix,

col type lvc_s_scol.

loop at gt_outtab assigning <outtab>.

tabix = sy-tabix.

read table lt_symbol index sy-tabix into ls_symbol.

<outtab>-symbol = ls_symbol-id.

value = <outtab>-id(3).

text = <outtab>-name.

concatenate value '\Q' text '@' into value.

<outtab>-id = value.

value = ls_symbol-id.

text = ls_symbol-name.

ls_exc-type = cl_salv_tooltip=>c_type_symbol.

ls_exc-value = value.

ls_exc-text = text.

append ls_exc to gt_exc.

<outtab>-color = tabix mod 7 + 1.

<outtab>-lights = tabix mod 3 + 1.

col-fname = 'COLOR'.

col-color-col = tabix mod 7 + 1.

if tabix ge 7.

col-color-inv = 1.

endif.

if tabix ge 14.

col-color-int = 1.

endif.

append col to <outtab>-tabcol.

endloop.

ENDFORM.

Former Member
0 Kudos

hi Jerry,

thank you so much for the response... however i have done me report where i get the trafic lights at the output...

but the PROBLEM is i dont the the selection screen instead i get the output directly... i have tried to rectify but i dint get where the problem is... can you please tell as where is the problem.. below is my code.

*---> Types

TYPE-POOLS :slis, icon.

*---> Tables

TABLES : zmesg_xml_exept.

*---> Selection Screen

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.

SELECT-OPTIONS: so_work FOR zxml_in_store-cont_work_order.

SELECTION-SCREEN END OF BLOCK blk1.

data: alv_container type ref to cl_gui_docking_container.

data: alv_grid type ref to cl_gui_alv_grid.

data: layout type lvc_s_layo.

data: fieldcat type lvc_t_fcat.

types: begin of ty_cust,

error type zmesg_xml_exept-error,

mess_timing type zmesg_xml_exept-mess_timing, "Message creation

cont_work_order type zmesg_xml_exept-cont_work_order,

process_ind type zmesg_xml_exept-process_ind,

lights(1) type c,

end of ty_cust.

data: wt_cust type standard table of ty_cust,

wa_cust type ty_cust.

data: variant type disvariant.

data: repid type sy-repid. repid = sy-repid.

initialization.

start-of-selection.

perform get_details.

form GET_DETAILS .

SELECT mess_timing

process_ind

cont_work_order

error

FROM zmesg_xml_exept

INTO CORRESPONDING FIELDS OF TABLE wt_cust

WHERE process_ind EQ 'D'

OR process_ind EQ 'A'.

endform

Former Member
0 Kudos

rest of the code ...

perform layout.

form LAYOUT .

loop at wt_cust into wa_cust.

if wa_cust-process_ind = 'D'.

wa_cust-lights = '2'.

elseif wa_cust-process_ind = 'A'.

wa_cust-lights = '1'.

endif.

modify wt_cust from wa_cust transporting lights.

endloop.

layout-excp_fname = 'LIGHTS'.

endform.

perform alvcontainer.

form ALVCONTAINER .

**********************************************************

***Create object alv container

**********************************************************

check alv_container is initial.

create object alv_container

exporting

repid = sy-repid

dynnr = sy-dynnr

side = alv_container->dock_at_left

extension = 1550

exceptions

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

lifetime_dynpro_dynpro_link = 5

others = 6.

if sy-subrc <> 0.

message id sy-msgid type sy-msgty number sy-msgno

with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

endif.

*********************************************************

**Create object alv Grid

*********************************************************

create object alv_grid

exporting

i_parent = alv_container.

***Perform to d3esign field catalog

perform fieldcatatalog.

*********************************************************

**Call method set table for first display

*********************************************************

call method alv_grid->set_table_for_first_display

exporting

i_structure_name = 'WT_CUST'

is_variant = variant

i_save = 'U'

is_layout = layout

changing

it_outtab = wt_cust

it_fieldcatalog = 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.

endform. " ALVCONTAINER

****Perform to d3esign field catalog

Former Member
0 Kudos

rest of the code...

perform fieldcatatalog.

form FIELDCATATALOG .

data: ls_fcat type lvc_s_fcat.

refresh: fieldcat.

clear: ls_fcat.

ls_fcat-reptext = 'Signal'.

ls_fcat-fieldname = 'LIGHTS'.

ls_fcat-ref_table = 'WT_CUST'.

ls_fcat-outputlen = '4'.

ls_fcat-col_pos = '1'.

append ls_fcat to fieldcat.

clear: ls_fcat.

clear: ls_fcat.

ls_fcat-reptext = 'Error'.

ls_fcat-fieldname = 'Error'.

ls_fcat-ref_table = 'WT_CUST'.

ls_fcat-outputlen = '4'.

ls_fcat-col_pos = '2'.

append ls_fcat to fieldcat.

clear: ls_fcat.

endform. " FIELDCATATALOG

Former Member
0 Kudos

hi,

give the code for dispalying screen in PBO of screen.

and call screen in START-OF-SELECTION event this will solve your problem of not displaying selection screen.

Revert for further queries.

Thanks,

Gaurav.

Former Member
0 Kudos

thank you all

0 Kudos

Hi,

I am also find the report if any update please share with me.

moshenaveh
Community Manager
Community Manager
0 Kudos

Hello,

Please click on the "I have a similar question" link.

Regards,

Moshe