0% found this document useful (0 votes)
17 views4 pages

Resolución Ejercicio 2

Uploaded by

Bettina Garcia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views4 pages

Resolución Ejercicio 2

Uploaded by

Bettina Garcia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

TYPE-POOLS: slis.

TABLES: spfli, sflight.

DATA: it_spfli LIKE TABLE OF spfli WITH HEADER LINE,


it_sflight LIKE TABLE OF sflight WITH HEADER LINE.

TYPES: BEGIN OF wa_salida,


carrid LIKE spfli-carrid,
connid LIKE spfli-connid,
cant_vue TYPE i,
tot_dist LIKE spfli-distance,
um_dist LIKE spfli-distid,
tipo_vue LIKE spfli-fltime,
fecha_pri LIKE sflight-fldate,
fecha_ult LIKE sflight-fldate,
tdias_pro TYPE i,
END OF wa_salida.

DATA: it_salida TYPE TABLE OF wa_salida WITH HEADER LINE.

"Variables para el ALV.


DATA: o_grid TYPE REF TO cl_salv_table.

PARAMETERS: p_carrid LIKE spfli-carrid.


SELECT-OPTIONS s_fldate FOR sflight-fldate OBLIGATORY.

START-OF-SELECTION.

SELECT * FROM sflight INTO TABLE it_sflight


WHERE fldate IN s_fldate.

IF p_carrid IS NOT INITIAL.


DELETE it_sflight WHERE carrid NE p_carrid.
ENDIF.

IF it_sflight[] IS INITIAL.
MESSAGE 'No existen vuelos en el periodo' TYPE 'I'.
STOP.
ENDIF.

SELECT * FROM spfli


INTO TABLE it_spfli
FOR ALL ENTRIES IN it_sflight
WHERE carrid = it_sflight-carrid
AND connid = it_sflight-connid.

PERFORM armar_salida.

END-OF-SELECTION.

IF NOT it_salida[] IS INITIAL.


PERFORM create_alv.
ENDIF.

*&---------------------------------------------------------------------*
*& Form ARMAR_SALIDA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM armar_salida .

DATA: v_primer_registro TYPE c.


SORT it_sflight BY carrid connid fldate.

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.

READ TABLE it_spfli WITH KEY carrid = it_sflight-carrid


connid = it_sflight-connid.

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.

ENDFORM. " ARMAR_SALIDA


*&---------------------------------------------------------------------*
*& Form CREATE_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_alv .
DATA: lo_functions TYPE REF TO cl_salv_functions_list.

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 ).

DATA: lo_columns TYPE REF TO cl_salv_columns.

"Referencio las Columnas del ALV en un objeto aparte dedicado a


" manejar estas columnas.
lo_columns = o_grid->get_columns( ).
" optimizo el tamaño de las columnas de acuerdo al valor contenido.
lo_columns->set_optimize( ).

"Seteo el nombre de los 2 campos que no están en el DDIC


DATA: lo_column TYPE REF TO cl_Salv_column_table.

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

You might also like