Steps for Traffic
Light in ALV Report.
1. Add a column for traffic light.
TYPES: BEGIN OF ty_mara.
INCLUDE STRUCTURE mara.
TYPES: icon TYPE c, " Add field to
hold traffic light value
END OF ty_mara.
2. Fetch data using select query and build a field catalog.
3. Assign traffic light as per your requirement
IF wa_mara-ersda < '01.01.2020'.
wa_mara-icon = 1. " Red Traffic Light.
Endif
4. To display traffic lights in the ALV, fill the
lights field name in the LIGHTS_FIELDNAME of ALV layout.
5. Pass field catalog to function module
‘REUSE_ALV_GRID_DISPLAY’.
SAMPLE CODE :
REPORT ZTRAFFIC_LIGHT.
TYPE-POOLS: slis. " SLIS contains all the ALV data types
*&---------------------------------------------------------------------*
*& Data Types
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_mara.
INCLUDE STRUCTURE mara.
TYPES: icon TYPE c, " Add field to hold traffic light value
END OF ty_mara.
*&---------------------------------------------------------------------*
*& Data Declaration
*&---------------------------------------------------------------------*
DATA: it_mara TYPE TABLE OF ty_mara.
DATA: wa_mara TYPE ty_mara.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv.
DATA: is_layout TYPE slis_layout_alv.
DATA: g_repid TYPE sy-repid.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
g_repid = sy-repid.
*Fetch data from the database
SELECT * UP TO 100 ROWS FROM mara INTO TABLE it_mara.
*Assign different traffic lights to each row based on condition
LOOP AT it_mara INTO wa_mara.
IF wa_mara-ersda < '01.01.2020'.
wa_mara-icon = 1. " Red Traffic Light
ELSEIF wa_mara-ersda = '01.01.2020'.
wa_mara-icon = 2. " Yellow Traffic Light
ELSE.
wa_mara-icon = 3. " Green Traffic Light
ENDIF.
MODIFY it_mara FROM wa_mara TRANSPORTING icon.
CLEAR: wa_mara.
ENDLOOP.
*Build field catalog
wa_fieldcat-fieldname = 'MATNR'. " Fieldname in the data table
wa_fieldcat-seltext_m = 'MATNR'. " Column description in the output
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'ERSDA'.
wa_fieldcat-seltext_m = 'Created On'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*Fill layout info.
*Fill traffic lights field name in the ALV layout
is_layout-lights_fieldname = 'ICON'.
*Pass data and field catalog to ALV function module to display ALV list
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
is_layout = is_layout
it_fieldcat = it_fieldcat
TABLES
t_outtab = it_mara
EXCEPTIONS
program_error = 1
OTHERS = 2.
No comments:
Post a Comment