Tuesday, 1 January 2013

Static Class with Parameters and Structures



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