CLASS lcl_alv DEFINITION FINAL.
PUBLIC SECTION.
CONSTANTS :
information TYPE sy-msgty VALUE 'I'.
TYPES :
tt_flights TYPE STANDARD TABLE OF sflight
WITH EMPTY KEY.
"... add more types here
METHODS :
constructor IMPORTING i_carrier TYPE sflight-carrid
i_connection TYPE sflight-connid,
start_report_process RETURNING VALUE(r_error) TYPE char1.
"... add more public methods here
PROTECTED SECTION.
"Add protected data/methods if needed
PRIVATE SECTION.
DATA :
carrier TYPE sflight-carrid,
connection TYPE sflight-connid,
flights TYPE tt_flights.
"... add more data declarations here
METHODS :
get_flights RETURNING VALUE(rt_flights) TYPE tt_flights,
display_flights RETURNING VALUE(r_error) TYPE char1.
"... add more private methods here
ENDCLASS.
CLASS lcl_alv IMPLEMENTATION.
METHOD constructor.
"Set variables based on called parameters
carrier = i_carrier.
connection = i_connection.
"Initialize attributes
CLEAR flights.
ENDMETHOD.
METHOD start_report_process.
CLEAR r_error.
flights = get_flights( ).
IF flights IS INITIAL.
MESSAGE e001(00) WITH 'No data found'(002) INTO DATA(lv_error).
r_error = abap_true.
ELSE.
r_error = display_flights( ).
ENDIF.
ENDMETHOD.
METHOD get_flights.
CLEAR rt_flights.
SELECT * FROM sflight INTO TABLE @rt_flights
WHERE carrid = @carrier
AND connid = @connection.
ENDMETHOD.
METHOD display_flights.
CLEAR r_error.
TRY.
"Create ALV table object for the output data table
cl_salv_table=>factory(
IMPORTING r_salv_table = DATA(lo_table)
CHANGING t_table = flights ).
lo_table->get_functions( )->set_all( ).
lo_table->get_columns( )->set_optimize( ).
lo_table->display( ).
CATCH cx_root.
MESSAGE e001(00) WITH 'Error in ALV creation'(003)
INTO DATA(lv_error).
r_error = abap_true.
ENDTRY.
ENDMETHOD.
"... add more methods implementation here
ENDCLASS.
*-----------------------------------------------------*
"... build selection screen here or in another include
SELECTION-SCREEN BEGIN OF BLOCK main_block
WITH FRAME TITLE TEXT-001.
PARAMETERS : carrid TYPE sflight-carrid,
connid TYPE sflight-connid.
SELECTION-SCREEN END OF BLOCK main_block.
*-----------------------------------------------------*
START-OF-SELECTION.
"Create object for the class
DATA(o_alv) = NEW lcl_alv( i_carrier = carrid
i_connection = connid ).
"Start the main process
DATA(lv_error) = o_alv->start_report_process( ).
* Below code issues error & goes back to selection screen
* This is better implemented with exceptions, though
IF lv_error IS NOT INITIAL.
MESSAGE ID sy-msgid
TYPE lcl_alv=>information
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
DISPLAY LIKE sy-msgty.
LEAVE LIST-PROCESSING.
ENDIF.
Serkan AKKAVAK
Computer Engineer BSc
Head of SAP & Software Department
Contact : serkurumsal@yandex.com
0 Comments