*&---------------------------------------------------------------------*
*& Report  ZANMA_EJERCICIO4
*&
*&---------------------------------------------------------------------*

REPORT  zanma_ejercicio4.

*inicio de definicion de variables
DATA: it_vuelos TYPE TABLE OF spfli WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK block WITH FRAME TITLE text-000.
  SELECT-OPTIONS scompany FOR it_vuelos-carrid.
  SELECT-OPTIONS s_pais1 FOR it_vuelos-countryfr NO INTERVALS.
  SELECT-OPTIONS s_paisto FOR it_vuelos-countryto NO INTERVALS.
SELECTION-SCREEN END OF BLOCK block.

*end of page
END-OF-PAGE.
  WRITE: / text-003.

* inicio del start of selection
START-OF-SELECTION.

*inicio de los performs
*"imprime los datos informativos
  PERFORM info
        TABLES scompany
               s_pais1
               s_paisto.

*"busca los datos en la tabla de la base de datos
  PERFORM search
        TABLES scompany
               s_pais1
               s_paisto.
  SKIP.

*"imprime los resultado encontrados
  PERFORM datos
          TABLES it_vuelos.
  SKIP.

*"imprime datos extras de los resultados
  PERFORM datos2
          TABLES it_vuelos.

**inicio de los codigos de los form
*"imprime los datos informativos
FORM info
   TABLES pcompany2 LIKE scompany[]
          paisfrom2 LIKE s_pais1[]
          paisto2 LIKE s_paisto[].

  WRITE: / '¿Qué Vamos a hacer?'.
  WRITE: / sy-uline(25).

  LOOP AT pcompany2.
    WRITE: / 'Voy a hacer la busqueda desde la compañia',
              pcompany2-low ,'hasta la compañia',pcompany2-high,
              'con salida en el pais', paisfrom2-low ,'y llegada en el pais',
              paisto2-low.
  ENDLOOP.

*  IF pcompany2-low = ''.
   IF pcompany2[] IS INITIAL.
    WRITE: / 'Se van a buscar todos los registros de la Tabla'.
  ENDIF.
ENDFORM.                    "info

*&---------------------------------------------------------------------*
*&      Form  search
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->PCOMPANY   text
*      -->PAISFROM   text
*      -->PAISTO     text
*----------------------------------------------------------------------*

*"busca los datos en la tabla de la base de datos
FORM search
     TABLES scompany
            s_pais1
            s_paisto.

  SELECT * FROM spfli
            INTO TABLE it_vuelos
            WHERE carrid IN scompany
            AND countryfr IN s_pais1
            AND countryto IN s_paisto.

ENDFORM.                    "search

*&---------------------------------------------------------------------*
*&      Form  datos
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->it_vuelos  text
*----------------------------------------------------------------------*

*"imprime los resultado encontrados
FORM datos
      TABLES it_vuelos STRUCTURE spfli.

  DATA: cont(2) TYPE n VALUE 0.

  WRITE: / 'Resultados Encontrados'.
  WRITE: / sy-uline(25).
  SKIP.

  LOOP AT it_vuelos.

*    cont = cont + 1.

*    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
*      EXPORTING
*        input  = cont
*      IMPORTING
*        output = cont.

*    WRITE: / 'Resultado ', cont.
*    WRITE: / sy-uline(20).
*    WRITE: / 'Compañia Aerea: ',it_vuelos-carrid,
*           / 'Pais de Salida: ',it_vuelos-countryfr,
*           / 'Ciudad de Salida: ',it_vuelos-cityfrom,
*           / 'Pais de Llegada: ',it_vuelos-countryto,
*           / 'Ciudad de Llegada: ',it_vuelos-cityto,
*           / 'Hora de Salida: ',it_vuelos-deptime,
*           / 'Hora de Llegada  : ',it_vuelos-arrtime,
*           / 'Distancia: ',it_vuelos-distance,it_vuelos-distid.
*    SKIP.

    write: / it_vuelos-carrid,
             it_vuelos-connid,
             it_vuelos-countryfr,
             it_vuelos-cityfrom,
             it_vuelos-airpfrom,
             it_vuelos-countryto,
             it_vuelos-cityto,
             it_vuelos-airpto,
             it_vuelos-fltime,
             it_vuelos-deptime,
             it_vuelos-arrtime,
             it_vuelos-distance,
             it_vuelos-distid.

  ENDLOOP.

ENDFORM.                    "datos

*&---------------------------------------------------------------------*
*&      Form  datos2
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->it_vuelos  text
*----------------------------------------------------------------------*

*"imprime datos extras de los resultados
FORM datos2
      TABLES it_vuelos STRUCTURE spfli.

  DATA: km TYPE i VALUE 0.

  LOOP AT it_vuelos.

    km = km + it_vuelos-distance.

  ENDLOOP.

  WRITE: / 'Datos Complementarios'.
  WRITE: / sy-uline(25).
  WRITE: / 'La Distancia Recorrida entre todos lo vuelos encontrados es de',km,
           'Kilometros'.

ENDFORM.                                                    "datos2