Skip to Content
0
Former Member
May 07, 2008 at 04:10 AM

Traffic Lights in ALV

118 Views

Hi experts,

I am using below code to generate the traffic lights but in column header i am getting one button i want to replace that as Traffic lights. how to do this can any body tell me

*&----


"Includes

*&----


INCLUDE <icon>.

INCLUDE <symbol>.

*&----


*& Declaration part

*&----


"Types

TYPES:

BEGIN OF t_lights,

matnr TYPE mard-matnr,

werks TYPE mard-werks,

lgort TYPE mard-lgort,

lights TYPE char4, "Variable is needs to be declared with length 4 char

END OF t_lights.

"Work Areas

DATA:

w_lights TYPE t_lights.

"Internal tables

DATA:

i_lights TYPE STANDARD TABLE OF t_lights.

&----


  • ALV Declarations

----


  • Types Pools

TYPE-POOLS:

slis.

  • Types

TYPES:

t_fieldcat TYPE slis_fieldcat_alv,

t_events TYPE slis_alv_event,

t_layout TYPE slis_layout_alv.

  • Workareas

DATA:

w_fieldcat TYPE t_fieldcat,

w_events TYPE t_events,

w_layout TYPE t_layout.

  • Internal Tables

DATA:

i_fieldcat TYPE STANDARD TABLE OF t_fieldcat,

i_events TYPE STANDARD TABLE OF t_events.

&----


*& start of selection

&----


START-OF-SELECTION.

PERFORM get_data.

&----


*& end-of-selection.

&----


END-OF-SELECTION.

PERFORM build_fieldcatlog.

PERFORM build_layout.

PERFORM list_display.

&----


*& Form get_data

&----


FORM get_data .

SELECT matnr

werks

lgort

FROM mard

INTO CORRESPONDING FIELDS OF TABLE i_lights

UP TO 10 ROWS.

IF i_lights[] IS INITIAL.

"Dummy data

DO 10 TIMES.

w_lights-matnr = sy-index.

w_lights-werks = sy-index + 1.

w_lights-lgort = sy-index + 2.

APPEND w_lights TO i_lights.

CLEAR w_lights.

ENDDO.

ENDIF.

"Just pass 1=red or 2=yellow or 3=green to lights fields

LOOP AT i_lights INTO w_lights .

IF sy-tabix BETWEEN 1 AND 3.

w_lights-lights = '1'.

ELSEIF sy-tabix BETWEEN 4 AND 7.

w_lights-lights = '2'.

ELSEIF sy-tabix BETWEEN 8 AND 10.

w_lights-lights = '3'.

ENDIF.

MODIFY i_lights FROM w_lights INDEX sy-tabix TRANSPORTING lights.

ENDLOOP.

ENDFORM. " get_data

&----


*& Form build_fieldcatlog

&----


FORM build_fieldcatlog .

CLEAR:w_fieldcat,i_fieldcat[].

w_fieldcat-fieldname = 'MATNR'.

w_fieldcat-seltext_m = 'MATNR'.

APPEND w_fieldcat TO i_fieldcat.

CLEAR w_fieldcat.

w_fieldcat-fieldname = 'WERKS'.

w_fieldcat-seltext_m = 'WERKS'.

APPEND w_fieldcat TO i_fieldcat.

CLEAR w_fieldcat.

w_fieldcat-fieldname = 'LGORT'.

w_fieldcat-seltext_m = 'LGORT'.

APPEND w_fieldcat TO i_fieldcat.

CLEAR w_fieldcat.

ENDFORM. " build_fieldcatlog

&----


*& Form build_layout

&----


FORM build_layout .

w_layout-colwidth_optimize = 'X'.

w_layout-zebra = 'X'.

w_layout-lights_fieldname = 'LIGHTS'.

w_layout-lights_tabname = 'I_LIGHTS'.

ENDFORM. " build_layout

&----


*& Form list_display

&----


FORM list_display .

DATA:

l_program TYPE sy-repid.

l_program = sy-repid.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = l_program

is_layout = w_layout

it_fieldcat = i_fieldcat

TABLES

t_outtab = i_lights

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. " list_display

Thanks,

Tharangini