Showing posts with label STRUCTURES. Show all posts
Showing posts with label STRUCTURES. Show all posts

Friday, 4 January 2013

DEMO: Data transfer between Structures


REPORT  zabc.

DATA : BEGIN OF emp,
         empno TYPE i,
         ename(20) TYPE c,
       END OF emp.

emp-empno = 1.
emp-ename = 'raju'.

WRITE :/ 'EMP structure: EMPNO, ENAME'.
WRITE :/ 'EMPNO:', emp-empno,
       / 'ENAME:', emp-ename.

DATA : BEGIN OF emp1,
         deptno TYPE i,
         empno TYPE i,
         ename(20) TYPE c,
       END OF emp1.

emp1-deptno = 20.
WRITE:/ ,
      / 'MOVING EMP TO EMP1',
      /.

MOVE-CORRESPONDING emp TO emp1.
WRITE :/ 'EMP1 structure: DEPNO, EMPNO, ENAME'.
WRITE :/ 'DEPTNO', emp1-deptno,
       / 'EMPNO', emp1-empno,
       /  'ENAME',emp1-ename.

WRITE: /,
       / 'MODIFYING EMP1'.

EMP1-EMPNO = 2.
EMP1-ENAME = 'SAM'.
EMP1-DEPTNO = 50.

WRITE :/ 'DEPTNO', emp1-deptno,
       / 'EMPNO', emp1-empno,
       / 'ENAME',emp1-ename.


WRITE:/ ,
      / 'MOVING EMP1 TO EMP',
      /.

MOVE-CORRESPONDING emp1 TO emp.

*EMP-EMPNO = EMP1-EMPNO.
*EMP-ENAME = EMP1-ENAME.

WRITE :/ 'EMPNO', emp1-empno,
       /  'ENAME',emp1-ename.

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.

Structures with Internal Tables

REPORT    zstr4_09  MESSAGE-ID  zstr_msg_09.
TABLES:spfli,  sflight.
TYPES:  BEGIN  OF  ty_spfli,
                carrid  TYPE  spfli-carrid,
                connid  TYPE  spfli-connid,
                cityfrom  TYPE  spfli-cityfrom,
                cityfto  TYPE  spfli-cityfrom,
            END  OF  ty_spfli.

TYPES:  BEGIN  OF  ty_sfli,
                carrid  TYPE  sflight-carrid,
                connid  TYPE  sflight-connid,
                fldate  TYPE  sflight-fldate,
                seatsmax  TYPE  sflight-seatsmax,
                seatsocc  TYPE  sflight-seatsocc,
            END  OF  ty_sfli.

DATA:  it_spfli  TYPE  TABLE  OF  ty_spfli,
            wa_spfli  LIKE  LINE  OF  it_spfli,
            it_sfli  TYPE  TABLE  OF  ty_sfli,
            wa_sflight  LIKE  LINE  OF  it_sfli,
            seatsfree  TYPE  i.

SELECTION-SCREEN  BEGIN  OF  BLOCK  b1  WITH  FRAME  TITLE  text-001.
SELECT-OPTIONS:  p_carrid  FOR  spfli-carrid.
SELECTION-SCREEN  END  OF  BLOCK  b1.
SELECTION-SCREEN  BEGIN  OF  BLOCK    b2  WITH  FRAME  TITLE  text-002.
PARAMETERS:  p_spfli  RADIOBUTTON  GROUP  g1  DEFAULT  'X',
                        p_sflig  RADIOBUTTON  GROUP  g1.
SELECTION-SCREEN  END  OF  BLOCK  b2.
CONSTANTS  mark  VALUE  'X'.

IF  mark  =  p_spfli.
    SELECT  carrid  connid  cityfrom  cityto  FROM  spfli  INTO  TABLE  it_spfli  WHERE  carrid  IN  p_carrid.
    IF  sy-subrc  =  0.
        MESSAGE  i002.
        LOOP  AT  it_spfli  INTO  wa_spfli.
            WRITE:/  wa_spfli-carrid,wa_spfli-connid.
        ENDLOOP.
    ELSE.
        MESSAGE  'No  Records  Found!'  TYPE  'I'.
        MESSAGE  s001.
    ENDIF.
ELSEIF  mark  =  p_sflig.
    SELECT  *  FROM  sflight  INTO  CORRESPONDING  FIELDS  OF  TABLE  it_sfli  WHERE  carrid  IN  p_carrid.
    IF  sy-subrc  =  0.
        MESSAGE  'Records  are  being  fetced...  PLz.  click  continue'  TYPE  'i'.
        LOOP  AT  it_sfli  INTO  wa_sflight.
            seatsfree  =  wa_sflight-seatsmax  -  wa_sflight-seatsocc.
            WRITE:/  wa_sflight-carrid,wa_sflight-connid,wa_sflight-fldate,
                            wa_sflight-seatsmax,wa_sflight-seatsocc,seatsfree.
        ENDLOOP.
    ELSE.
        MESSAGE  'No  Records  Found!'  TYPE  'I'.
        MESSAGE  s001.
    ENDIF.
ENDIF.

Basic Structure Demo

REPORT    zstr3_09.
TYPES:  BEGIN  OF  ty_sfli,
                carrid  TYPE  sflight-carrid,
                connid  TYPE  sflight-connid,
                fldate  TYPE  sflight-fldate,
                seatsmax  TYPE  sflight-seatsmax,
                seatsocc  TYPE  sflight-seatsocc,
            end  of  ty_sfli.
DATA:  itab  TYPE  TABLE  OF  ty_sfli,    seatsfree  TYPE  i,
            wa  LIKE  LINE  OF  itab.
SELECT  carrid  connid  fldate  seatsmax  seatsocc  FROM  sflight  INTO  CORRESPONDING  FIELDS  OF  TABLE  itab.
    if  sy-subrc  <>  0.
MESSAGE  'No  Records  Found'  TYPE  'I'.
ELSE.
LOOP  AT  itab  INTO  wa.
    seatsfree  =  wa-seatsmax  -  wa-seatsocc.
    WRITE:/  wa-carrid,
    wa-connid,
    wa-fldate,
    wa-seatsmax,
    wa-seatsocc,
    seatsfree.
ENDLOOP.
ENDIF.