0% found this document useful (0 votes)
367 views6 pages

Traffic Light in ALV Reports

This document describes how to display traffic light icons in an ALV report to indicate the occupancy status of flights, using a workaround to set a meaningful column header. It involves using a CHAR4 field to store the icon name, marking it as an icon in the field catalog, and populating it conditionally based on the percentage of occupied seats to display green, yellow, or red lights. The code sample shows how to populate and display the data using ALV functions.

Uploaded by

akssriniivassan
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
367 views6 pages

Traffic Light in ALV Reports

This document describes how to display traffic light icons in an ALV report to indicate the occupancy status of flights, using a workaround to set a meaningful column header. It involves using a CHAR4 field to store the icon name, marking it as an icon in the field catalog, and populating it conditionally based on the percentage of occupied seats to display green, yellow, or red lights. The code sample shows how to populate and display the data using ALV functions.

Uploaded by

akssriniivassan
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Traffic Light in ALV Reports

Many a times we have to display a traffic light in ALV report. We can do that easily using
"Exceptions" parameter provided by SAP. But it has one drawback, we cannot change
the column header to something meaningful. It always set as "Exception" in case of ALV
Grid and an icon in case of ALV List.
Here I'll show a workaround to show the traffic lights with a meaningful column header.
The exception display:

The workaround is to use a field of type CHAR4 and display it as Icon.


To display a field as icon, in ALV Field catalog we have to mark ICON field as 'X'. The
icons for traffic lights are : icon_green_light, icon_red_light and icon_yellow_light.

The code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

*&---------------------------------------------------------------------*
*& Report ZTEST_SOURAV_TRAFFIC_LIGHTS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT

ztest_sourav_traffic_lights.
TYPE-POOLS: slis,icon.
TYPES: BEGIN OF x_sflight,
carrid TYPE s_carr_id,
connid TYPE s_conn_id,
fldate TYPE s_date,
price TYPE s_price,
currency TYPE s_currcode,
seatsmax TYPE s_seatsmax,
seatsocc TYPE s_seatsocc,
END OF x_sflight.
TYPES:BEGIN OF x_final,
icon TYPE char4.
INCLUDE TYPE x_sflight.
TYPES: END OF x_final.

DATA: i_sflight TYPE STANDARD TABLE OF x_sflight INITIAL SIZE 0,


i_final
TYPE STANDARD TABLE OF x_final INITIAL SIZE 0,
i_fieldcat TYPE slis_t_fieldcat_alv,
wa_layout TYPE slis_layout_alv.
CONSTANTS: program TYPE syrepid VALUE sy-repid.
START-OF-SELECTION.
SELECT carrid
" Airline Code
connid
" Flight Connection Number
fldate
" Flight date
price
" Airfare
currency " Local currency of airline
seatsmax " Maximum capacity in economy class
seatsocc " Occupied seats in economy class
FROM sflight
" Flight
INTO TABLE i_sflight.
IF sy-subrc <> 0.
MESSAGE i001(00) WITH 'No data found!'.
LEAVE LIST-PROCESSING.

46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101

ENDIF.
END-OF-SELECTION.
PERFORM populate_records.
PERFORM display_records.
*&---------------------------------------------------------------------*
*&
Form populate_records
*&---------------------------------------------------------------------*
*
Populate final table
*----------------------------------------------------------------------*
FORM populate_records .
DATA:
wa_sflight TYPE x_sflight,
wa_final TYPE x_final,
temp TYPE p DECIMALS 2.
LOOP AT i_sflight INTO wa_sflight.
CLEAR temp.
*Calculate Percentage of booked flights
temp = ( wa_sflight-seatsocc / wa_sflight-seatsmax ) .
IF temp > '0.9'.
*If booked more than 90%
wa_final-icon = icon_green_light.
ELSEIF temp < '0.2'.
*If booked less than 20%
wa_final-icon = icon_red_light.
ELSE.
*If its between 20% to 90 %
wa_final-icon = icon_yellow_light.
ENDIF.
wa_final-carrid
wa_final-connid
wa_final-fldate
wa_final-price
wa_final-currency
wa_final-seatsmax
wa_final-seatsocc

=
=
=
=
=
=
=

wa_sflight-carrid.
wa_sflight-connid.
wa_sflight-fldate.
wa_sflight-price.
wa_sflight-currency.
wa_sflight-seatsmax.
wa_sflight-seatsocc.

APPEND wa_final TO i_final.


CLEAR wa_final.
ENDLOOP.
FREE i_sflight.
ENDFORM.
" populate_records
*&---------------------------------------------------------------------*
*&
Form display_records
*&---------------------------------------------------------------------*
*
Subroutines for Display
*----------------------------------------------------------------------*

102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157

FORM display_records .
PERFORM populate_field_catalog.
PERFORM populate_layout.
PERFORM trigger_alv.
ENDFORM.
" display_records
*&---------------------------------------------------------------------*
*&
Form populate_field_catalog
*&---------------------------------------------------------------------*
*
Popualte Field Catalog
*----------------------------------------------------------------------*
FORM populate_field_catalog .
DATA:
wa_fieldcat TYPE slis_fieldcat_alv.
DEFINE fcat_merge.
wa_fieldcat-col_pos
= &1.
wa_fieldcat-fieldname
= &2.
if wa_fieldcat-fieldname
= 'ICON'.
wa_fieldcat-icon
= 'X'. " Display the field as ICON
wa_fieldcat-seltext_m
= 'Occupency Status'.
" Column Header
wa_fieldcat-inttype
= 'C'.
wa_fieldcat-outputlen
= '4'.
endif.
wa_fieldcat-ref_fieldname
wa_fieldcat-ref_tabname

= &3.
= &4.

if wa_fieldcat-fieldname = 'PRICE'.
wa_fieldcat-cfieldname = 'CURRENCY'.
wa_fieldcat-ctabname
= 'I_FINAL'.
endif.
append wa_fieldcat to i_fieldcat.
clear wa_fieldcat.
END-OF-DEFINITION.
fcat_merge: '1' 'ICON'
''
'2' 'CARRID'
'CARRID'
'3' 'CONNID'
'CONNID'
'4' 'FLDATE'
'FLDATE'
'5' 'PRICE'
'PRICE'
'6' 'CURRENCY' 'CURRENCY'
'7' 'SEATSMAX' 'SEATSMAX'
'8' 'SEATSOCC' 'SEATSOCC'
ENDFORM.

'',
'SFLIGHT',
'SFLIGHT',
'SFLIGHT',
'SFLIGHT',
'SFLIGHT',
'SFLIGHT',
'SFLIGHT'.

" populate_field_catalog

*&---------------------------------------------------------------------*
*&
Form populate_layout
*&---------------------------------------------------------------------*
*
Populate LAYOUT Structure for ALV
*----------------------------------------------------------------------*

158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183

FORM populate_layout.
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
ENDFORM.
"populate_layout
*&---------------------------------------------------------------------*
*&
Form trigger_alv
*&---------------------------------------------------------------------*
*
Trigger the ALV API
*----------------------------------------------------------------------*
FORM trigger_alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = program
is_layout
= wa_layout
it_fieldcat
= i_fieldcat
TABLES
t_outtab
= i_final
EXCEPTIONS
program_error
= 1
OTHERS
= 2.
IF sy-subrc <> 0.
MESSAGE i001(00) WITH 'Error while displaing ALV'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM.
" trigger_alv

You might also like