Professional Documents
Culture Documents
Resolución Ejercicio 2
Resolución Ejercicio 2
START-OF-SELECTION.
IF it_sflight[] IS INITIAL.
MESSAGE 'No existen vuelos en el periodo' TYPE 'I'.
STOP.
ENDIF.
PERFORM armar_salida.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form ARMAR_SALIDA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM armar_salida .
LOOP AT it_sflight.
CLEAR v_primer_registro.
AT NEW connid.
CLEAR it_salida.
it_salida-connid = it_sflight-connid.
it_salida-carrid = it_sflight-carrid.
v_primer_registro = 'X'.
ENDAT.
IF v_primer_registro = 'X'.
it_salida-fecha_pri = it_sflight-fldate.
ENDIF.
it_salida-fecha_ult = it_sflight-fldate.
CHECK sy-subrc EQ 0.
ADD it_spfli-fltime TO it_salida-tipo_vue.
ADD 1 TO it_salida-cant_vue.
IF it_spfli-distid NE 'KM'.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
EXPORTING
input = it_spfli-distance
no_type_check = 'X'
* ROUND_SIGN = ' '
unit_in = it_spfli-distid
unit_out = 'KM'
IMPORTING
* ADD_CONST =
* DECIMALS =
* DENOMINATOR =
* NUMERATOR =
output = it_spfli-distance
* EXCEPTIONS
* CONVERSION_NOT_FOUND = 1
* DIVISION_BY_ZERO = 2
* INPUT_INVALID = 3
* OUTPUT_INVALID = 4
* OVERFLOW = 5
* TYPE_INVALID = 6
* UNITS_MISSING = 7
* UNIT_IN_NOT_FOUND = 8
* UNIT_OUT_NOT_FOUND = 9
* OTHERS = 10
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ADD it_spfli-distance TO it_salida-tot_dist.
AT END OF connid.
it_salida-tdias_pro = it_salida-fecha_ult - it_salida-fecha_pri.
APPEND it_salida.
ENDAT.
ENDLOOP.
IF o_grid IS INITIAL.
TRY.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = o_grid
CHANGING
t_table = it_salida[].
CATCH cx_salv_msg.
RETURN.
ENDTRY.
ENDIF.
" Funciones
lo_functions = o_grid->get_functions( ).
"Habilitar Todas
lo_functions->set_all( abap_true ).
TRY.
lo_column ?= lo_columns->get_column( 'CANT_VUE' ).
CATCH cx_salv_not_found.
RETURN.
ENDTRY.
CHECK sy-subrc EQ 0.
lo_column->set_long_text( 'Cantidad de vuelos').
lo_column->set_short_text( 'Cant. vue').
lo_column->set_medium_text( 'Cant. de vuelos').
TRY.
lo_column ?= lo_columns->get_column( 'TDIAS_PRO' ).
CATCH cx_salv_not_found.
RETURN.
ENDTRY.
CHECK sy-subrc EQ 0.
lo_column->set_long_text( 'Total días de producción').
lo_column->set_short_text( 'Tot. dias').
lo_column->set_medium_text( 'Total días prod.').
"Muestro el alv.
o_grid->display( ).
ENDFORM. " CREATE_ALV