Documentos de Académico
Documentos de Profesional
Documentos de Cultura
"ZRFSFLIGHT
CLASS cls_vuelo DEFINITION.
PUBLIC SECTION.
TYPES: BEGIN OF gty_sflight,
carrid TYPE sflight-carrid, "Compañia aerea
connid TYPE sflight-connid, "Numero de vuelo
fldate TYPE sflight-fldate, "Fecha de vuelo
price TYPE sflight-price, "Precio de vuelo
currency TYPE sflight-currency, "Tipo de moneda
seatsmax TYPE sflight-seatsmax, "Capacidad Maxima clase
econimica
seatsocc TYPE sflight-seatsocc, "Asientos ocupados clase
economica
seatsmax_b TYPE sflight-seatsmax_b, "Capacidad Maxima clase business
seatsocc_b TYPE sflight-seatsocc_b, "Asientos ocupados clase
business
seatsmax_f TYPE sflight-seatsmax_f, "Capacidad Maxima primera clase
seatsocc_f TYPE sflight-seatsocc_f, "Asientos ocupados primera clase
END OF gty_sflight.
*----------------------------------------------------------------------*
* WORK AREAS
*----------------------------------------------------------------------*
DATA: lwa_alv TYPE gty_sflight, "Work
area para ir guardando cada dato del tipo de la tabla ty_sflight
lwa_salida TYPE zrfsflight.
PRIVATE SECTION.
METHODS: getdata RETURNING VALUE(re_ti_vuelo) TYPE tty_sflight, """""""El
parametro re_ti_vuelos
"lo
lleno en el metodo getdato
calcular_ocupacion IMPORTING im_ti_vuelo TYPE tty_sflight """"""""Importo
el parametro im_ti_vuelo y
ENDCLASS.
CLASS cls_vuelo IMPLEMENTATION.
METHOD start_of_selection.
*METODO PARA BUSCAR DATOS lti_vuelo retorna los datos del parametro re_ti_vuelo.
DATA(lti_vuelo) = getdata( ).
IF lti_vuelo IS INITIAL.
""""""Valido si se consiguen datos
MESSAGE s000(z_semillero) DISPLAY LIKE 'E'.
ELSE.
ENDMETHOD.
METHOD getdata.
SELECT carrid connid fldate price currency seatsmax
seatsocc seatsmax_b seatsocc_b seatsmax_f seatsocc_f
FROM sflight
INTO TABLE re_ti_vuelo "LLeno el parametro enviado desde el returnin
de getdato
WHERE carrid EQ p_aerel
AND connid IN s_vuelo
AND fldate IN s_fecha.
ENDMETHOD.
METHOD calcular_ocupacion.
* LOOP AT im_ti_vuelo INTO lwa_alv.
"Extraigo datos de la tabla interna para la tabla de salida del ALV
* MOVE-CORRESPONDING lwa_alv TO lwa_salida.
* lv_cap = lwa_alv-seatsmax + lwa_alv-seatsmax_b + lwa_alv-seatsmax_f.
* lv_ocup = lwa_alv-seatsocc + lwa_alv-seatsocc_b + lwa_alv-seatsocc_f.
*
* IF lv_cap IS NOT INITIAL.
"Verifico que exista valor y calculo el promedio
* lv_prom = ( lv_ocup * 100 ) / lv_cap.
* ENDIF.
* IF lv_prom < lcte_60.
* lwa_salida-ocupa = text-002.
"Ocupación BAJA
* ELSEIF lv_prom >= lcte_60 AND lv_prom < lcte_80.
"Detalle para el porcentaje = 60%
* lwa_salida-ocupa = text-003.
"Ocupación MEDIA
* ELSEIF lv_prom >= lcte_80. "Detalle
para el porcentaje = 80%
* lwa_salida-ocupa = text-004.
* ENDIF.
* APPEND lwa_salida TO re_ti_ocupa.
* CLEAR lwa_salida.
* ENDLOOP.
* FIELD-SYMBOLS:<fs_vuelo> TYPE gty_sflight,
* <fs_vuelos> TYPE tty_alv.
data lti_aux TYPE tty_alv .
lti_aux = im_ti_vuelo .
ENDIF.
APPEND <fs_vuelos> to re_ti_ocupa.
ENDLOOP.
ENDMETHOD.
METHOD show_alv.
"---------------- ALV objetos----------------------------
DATA: lr_content TYPE REF TO cl_salv_form_element,
DATA: lr_content TYPE REF TO cl_salv_form_element,
* gr_table TYPE REF TO cl_salv_table, "Objeto del factory
lr_selections TYPE REF TO cl_salv_selections.
lr_selections = gr_table->get_selections( ).
lr_selections->set_selection_mode( if_salv_c_selection_mode=>row_column ).
gr_table->display( ).
ENDMETHOD.
ENDCLASS.