*&---------------------------------------------------------------------* *& Report ZANMA_ALV *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT zanma_alv LINE-SIZE 300. "el line report aumenta la linea de pantalla *definicion de todas la variables y tipos que se van a usar TYPE-POOLS: slis. DATA tfielcat TYPE slis_t_fieldcat_alv. TYPES: BEGIN OF ty_estructura, carrid LIKE scarr-carrid, connid LIKE spfli-connid, paymentsum LIKE sflight-paymentsum, distance LIKE spfli-distance, url LIKE scarr-url. TYPES END OF ty_estructura. DATA it_datos TYPE TABLE OF ty_estructura WITH HEADER LINE. **comienzo del bloque de la pantalla de seleccion SELECTION-SCREEN BEGIN OF BLOCK b_bloque_datos WITH FRAME TITLE text-000. SELECT-OPTIONS s_ident FOR it_datos-carrid OBLIGATORY NO INTERVALS. SELECT-OPTIONS s_vuelo FOR it_datos-connid NO INTERVALS. SELECTION-SCREEN END OF BLOCK b_bloque_datos. *comienzo del programa con el evento start of seleccion START-OF-SELECTION. **Comienzo de la llamadas a los form que contienen los codigos PERFORM busqueda TABLES it_datos. "busca los datos en las tablas correspondientes IF it_datos[] IS INITIAL. MESSAGE e008(zanma_msg). * ERROR!! No se han encontrados datos segun su seleccion ELSE. PERFORM comprueba TABLES s_vuelo. "comprueba que datos se han introducido en el inicio PERFORM imprimir TABLES it_datos. "imprime los datos encontrados con alv ENDIF. **COMIENZO DE LA DEFINCION DE LOS CODIGOS EN LOS CORRESPONDIENTES FORMS *&---------------------------------------------------------------------* *& Form comprueba *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->LV_VUELO text *----------------------------------------------------------------------* ***COMPRUEBA LOS DATOS QUE SE INTRODUJERON EN LA PANTALLA DE SELECCION FORM comprueba TABLES lv_vuelo STRUCTURE s_vuelo. IF lv_vuelo IS INITIAL. * WRITE:/ text-001. MESSAGE i006(zanma_msg). * Se Buscaran todos los vuelos de la compaņia seleccionada ELSE. * WRITE:/ text-002 , lv_vuelo-low, text-003. MESSAGE i007(zanma_msg) WITH lv_vuelo-low. * Se buscaran los vuelos &1 de la compaņia seleccionada ENDIF. ENDFORM. "comprueba *&---------------------------------------------------------------------* *& Form busqueda *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->LV_DATOS text *----------------------------------------------------------------------* ***BUSCA LOS DATOS EN LAS TABLAS CORRESPONDIENTES FORM busqueda TABLES lv_datos STRUCTURE it_datos. SELECT carrid url FROM scarr INTO CORRESPONDING FIELDS OF lv_datos WHERE carrid IN s_ident. SELECT connid distance FROM spfli INTO CORRESPONDING FIELDS OF lv_datos WHERE carrid IN s_ident AND connid IN s_vuelo. SELECT paymentsum FROM sflight INTO CORRESPONDING FIELDS OF lv_datos WHERE carrid IN s_ident AND connid IN s_vuelo. . APPEND lv_datos. ENDSELECT. ENDSELECT. ENDSELECT. *prueba de ompresion de los datos * LOOP AT lv_datos. * WRITE:/ lv_datos-carrid, * lv_datos-connid, * lv_datos-paymentsum, * lv_datos-distance, * lv_datos-url. * ENDLOOP. ENDFORM. "busqueda *&---------------------------------------------------------------------* *& Form imprimir *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->LV_IMPRIME text *----------------------------------------------------------------------* ***IMPRIME LOS DATOS CON ALV QUE SELECCIONAMOS ANTERIORMENTE FORM imprimir TABLES lv_imprime STRUCTURE it_datos. **definicion de variables locales del form DATA lv_cont TYPE i VALUE 0. DATA lv_wa LIKE LINE OF tfielcat. * funcion que importa la estructura identica de la tabla interna a una tabla que * se usa luego en la siguiente funcion CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING * I_PROGRAM_NAME = * I_INTERNAL_TABNAME = i_structure_name = 'ZANMA_TYPE_VUELOS_ALV' * I_CLIENT_NEVER_DISPLAY = 'X' * I_INCLNAME = * I_BYPASSING_BUFFER = * I_BUFFER_ACTIVE = CHANGING ct_fieldcat = tfielcat EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3 . IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. *data lv_wa like LINE OF tfielcat. LOOP AT tfielcat INTO lv_wa. IF lv_cont < 2. lv_wa-key = 'X'. ENDIF. MODIFY tfielcat FROM lv_wa. lv_cont = lv_cont + 1. IF lv_cont = 2. EXIT. ENDIF. ENDLOOP. * esta funcion muestra la tabla hay que pasarle la tabla que se creo antes y nuestra * tabla interna con todos los datos CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING * I_INTERFACE_CHECK = ' ' * I_BYPASSING_BUFFER = ' ' * I_BUFFER_ACTIVE = ' ' * I_CALLBACK_PROGRAM = ' ' * I_CALLBACK_PF_STATUS_SET = ' ' * I_CALLBACK_USER_COMMAND = ' ' * I_CALLBACK_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_TOP_OF_PAGE = ' ' * I_CALLBACK_HTML_END_OF_LIST = ' ' * I_STRUCTURE_NAME = * I_BACKGROUND_ID = ' ' * I_GRID_TITLE = * I_GRID_SETTINGS = * IS_LAYOUT = it_fieldcat = tfielcat * IT_EXCLUDING = * IT_SPECIAL_GROUPS = * IT_SORT = * IT_FILTER = * IS_SEL_HIDE = * I_DEFAULT = 'X' * I_SAVE = ' ' * IS_VARIANT = * IT_EVENTS = * IT_EVENT_EXIT = * IS_PRINT = * IS_REPREP_ID = * I_SCREEN_START_COLUMN = 0 * I_SCREEN_START_LINE = 0 * I_SCREEN_END_COLUMN = 0 * I_SCREEN_END_LINE = 0 * I_HTML_HEIGHT_TOP = 0 * I_HTML_HEIGHT_END = 0 * IT_ALV_GRAPHICS = * IT_HYPERLINK = * IT_ADD_FIELDCAT = * IT_EXCEPT_QINFO = * IR_SALV_FULLSCREEN_ADAPTER = * IMPORTING * E_EXIT_CAUSED_BY_CALLER = * ES_EXIT_CAUSED_BY_USER = TABLES t_outtab = lv_imprime EXCEPTIONS program_error = 1 OTHERS = 2 . IF sy-subrc <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. ENDFORM. "imprimir