Thursday, June 5, 2008

Interactive ALV and colouring the cells

TYPE-POOLS:slis.

DATA:w_repid LIKE sy-repid.
DATA:fs_layout TYPE slis_layout_alv.

DATA: t_fieldcat TYPE slis_t_fieldcat_alv,
fs_fieldcat TYPE slis_fieldcat_alv,
t_fieldcat1 TYPE slis_t_fieldcat_alv,
fs_fieldcat1 TYPE slis_fieldcat_alv.
DATA:
t_eventcat TYPE slis_t_event,
w_eventcat LIKE LINE OF t_eventcat.

**********Structure and internal table for basic alv*
DATA:BEGIN OF fs_string,
color(3),
checkbox,
cell TYPE slis_t_specialcol_alv,
carrid LIKE spfli-carrid,
connid LIKE spfli-connid,
countryfr LIKE spfli-countryfr,
countryto LIKE spfli-countryto,
END OF fs_string.

DATA:t_spfli LIKE TABLE OF fs_string.
***************************************************
DATA:BEGIN OF fs_string1,
carrid LIKE sflight-carrid,
connid LIKE sflight-connid,
fldate LIKE sflight-fldate,
paymentsum LIKE sflight-paymentsum,
END OF fs_string1.

DATA:t_sflight LIKE TABLE OF fs_string1.

DATA:fs_cell LIKE LINE OF fs_string-cell.

PERFORM get_data.
PERFORM prepare_fieldcatalog.
PERFORM t_eventcat1.
PERFORM display_output.

*&---------------------------------------------------------------------*
*& Form prepare_fieldcatalog
*&---------------------------------------------------------------------*
* Fill the Fieldcatalog
*----------------------------------------------------------------------*
FORM prepare_fieldcatalog .

fs_fieldcat-col_pos = 1.
fs_fieldcat-fieldname = 'CARRID'.
fs_fieldcat-seltext_m = 'Airlinecarrier'.
fs_fieldcat-key = 'X'.
fs_fieldcat-hotspot = 'X'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.

fs_fieldcat-col_pos = 2.
fs_fieldcat-fieldname = 'CONNID'.
fs_fieldcat-seltext_m = 'Connectionid'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.

fs_fieldcat-col_pos = 3.
fs_fieldcat-fieldname = 'COUNTRYFR'.
fs_fieldcat-seltext_m = 'Countryfrom'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.

fs_fieldcat-col_pos = 4.
fs_fieldcat-fieldname = 'COUNTRYTO'.
fs_fieldcat-seltext_m = 'Countryto'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.

LOOP AT t_spfli INTO fs_string WHERE carrid EQ 'AA'.
fs_cell-fieldname = 'CONNID'.
fs_cell-color-col = 5.
fs_cell-nokeycol = 'X'.

APPEND fs_cell TO fs_string-cell.

MODIFY t_spfli FROM fs_string TRANSPORTING cell.
ENDLOOP.

fs_layout-info_fieldname = 'COLOR'.
fs_layout-box_fieldname = 'CHECKBOX'.
fs_layout-coltab_fieldname = 'CELL'.

ENDFORM. " prepare_fieldcatalog
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* get data from database to internal table
*----------------------------------------------------------------------*
FORM get_data .

SELECT carrid
connid
countryfr
countryto
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE t_spfli.

w_repid = sy-repid.

ENDFORM. " get_data

*&---------------------------------------------------------------------*
*& Form DISPLAY_OUTPUT
*----------------------------------------------------------------------*
* Display ALV
*----------------------------------------------------------------------*
FORM display_output .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING

i_callback_program = w_repid
i_callback_user_command = 'PICK'
is_layout = fs_layout
it_fieldcat = t_fieldcat[]
TABLES
t_outtab = t_spfli
* EXCEPTIONS
* PROGRAM_ERROR = 1
.

ENDFORM. " DISPLAY_OUTPUT

*&---------------------------------------------------------------------*
*& Form pick
*----------------------------------------------------------------------*
* -->COMMAND text
* -->ENDFORM text
*----------------------------------------------------------------------*
FORM pick USING command LIKE sy-ucomm
selfield TYPE slis_selfield.

READ TABLE t_spfli INTO fs_string INDEX selfield-tabindex.
CLEAR t_fieldcat1[].

CASE command.

WHEN '&IC1'.
SELECT carrid
connid
fldate
paymentsum
FROM sflight
INTO TABLE t_sflight
WHERE carrid = fs_string-carrid
AND connid = fs_string-connid.

fs_fieldcat1-col_pos = 1.
fs_fieldcat1-fieldname = 'CARRID'.
fs_fieldcat1-seltext_m = 'Airlinecarrier'.
fs_fieldcat1-key = 'X'.
fs_fieldcat1-hotspot = 'X'.
APPEND fs_fieldcat1 TO t_fieldcat1.
CLEAR fs_fieldcat1.

fs_fieldcat1-col_pos = 2.
fs_fieldcat1-fieldname = 'CONNID'.
fs_fieldcat1-seltext_m = 'Connectionid'.
APPEND fs_fieldcat1 TO t_fieldcat1.
CLEAR fs_fieldcat1.

fs_fieldcat1-col_pos = 3.
fs_fieldcat1-fieldname = 'FLDATE'.
fs_fieldcat1-seltext_m = 'Countryfrom'.
APPEND fs_fieldcat1 TO t_fieldcat1.
CLEAR fs_fieldcat1.

fs_fieldcat1-col_pos = 4.
fs_fieldcat1-fieldname = 'PAYMENTSUM'.
fs_fieldcat1-seltext_m = 'Countryto'.
APPEND fs_fieldcat1 TO t_fieldcat1.
CLEAR fs_fieldcat1.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = w_repid
it_fieldcat = t_fieldcat1[]
it_events = t_eventcat
TABLES
t_outtab = t_sflight
* EXCEPTIONS
* PROGRAM_ERROR = 1
.

ENDCASE.

ENDFORM. "pick

*&---------------------------------------------------------------------*
*& Form T_EVENTCAT
*&---------------------------------------------------------------------*
* This subtoutine is which captures the event that is to be triggered
*----------------------------------------------------------------------*
FORM t_eventcat1.

w_eventcat-name = 'TOP_OF_PAGE'.
w_eventcat-form = 'TOP'.
APPEND w_eventcat TO t_eventcat.

ENDFORM. "T_EVENTCAT
*&---------------------------------------------------------------------*
*& Form TOP
*&---------------------------------------------------------------------*
* To display TOP OF PAGE
* it displays the carried id selected to display.
*----------------------------------------------------------------------*
FORM top.

READ TABLE t_sflight INTO fs_string1 INDEX 1.
WRITE:/'CARRIER ID'(001),
30 fs_string-carrid.
EndForm.

No comments: