REPORT zoops6.
TABLES: sflight.
PARAMETERS: p_carrid TYPE sflight-carrid,p_connid TYPE sflight-connid.
DATA:count TYPE i,str1 TYPE c LENGTH 50,str2 TYPE c LENGTH 20.
*----------------------------------------------------------------------*
* CLASS LCL_sflight_DETAILS DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_sflight_details DEFINITION.
PUBLIC SECTION.
CLASS-DATA: itab TYPE TABLE OF sflight,count TYPE i,
wa LIKE LINE OF itab,
freeseats TYPE sflight-seatsmax.
CLASS-METHODS: m_get
IMPORTING
p_airline TYPE sflight-carrid
p_connection TYPE sflight-connid
EXCEPTIONS data_found no_data,
m_free
IMPORTING
p_seatsmax TYPE sflight-seatsmax
p_seatsocc TYPE sflight-seatsocc
EXPORTING
p_freeseats TYPE sflight-seatsmax,
m_set.
ENDCLASS.
*----------------------------------------------------------------------*
* CLASS lcl_sflight_details IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_sflight_details IMPLEMENTATION.
METHOD m_get.
SELECT * FROM sflight
INTO CORRESPONDING FIELDS OF TABLE itab
WHERE carrid = p_airline AND connid = p_connection.
IF sy-subrc NE 0.
RAISE no_data.
ELSEIF sy-subrc EQ 0.
RAISE data_found.
ENDIF.
ENDMETHOD.
METHOD m_free.
freeseats = p_seatsmax - p_seatsocc.
ENDMETHOD.
METHOD m_set.
LOOP AT itab INTO wa.
CALL METHOD lcl_sflight_details=>m_free
EXPORTING
p_seatsmax = wa-seatsmax
p_seatsocc = wa-seatsocc
IMPORTING
p_freeseats = freeseats.
WRITE:/ wa-carrid,wa-connid,wa-seatsmax,wa-seatsocc,freeseats.
ENDLOOP.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
CALL METHOD lcl_sflight_details=>m_get
EXPORTING
p_airline = p_carrid
p_connection = p_connid
EXCEPTIONS
data_found = 1
no_data = 2.
CASE sy-subrc.
WHEN 1.
CALL METHOD lcl_sflight_details=>m_set.
WHEN 2.
MESSAGE 'NO RECORDS FOUND' TYPE 'E'.
ENDCASE.
END-OF-SELECTION.
No comments:
Post a Comment