dt reto 15 días sistema de gestión de vuelosaprendeabap.com/wp-content/uploads/2017/05/dt... ·...

27
RETO DE 15 DÍAS 1 DT – Reto 15 días Sistema de Gestión de Vuelos Proyecto Reto de 15 Días Desarrollado por AprendeABAP Fecha

Upload: others

Post on 11-Mar-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

1

DT – Reto 15 días Sistema de Gestión de Vuelos

Proyecto

Reto de 15 Días

Desarrollado por

AprendeABAP

Fecha

Page 2: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

2

Page 3: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

3

Índice

2 Objetos creados en el sistema .................................................... 5

3 Detalle técnico ........................................................................... 6

3.1 Lógica del programa ..................................................................................... 6

Page 4: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

4

Page 5: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

5

2 Objetos creados en el sistema

Objeto Descripción Tipo de objeto

ZAA_P_PANEL_AGENCIA Panel de Control General de Vuelos Programa

ZAA_PANEL_AGENCIA Panel de Control General de Vuelos Transacción

ZAA_ED_ACCION Acciones del Sistema Elemento de Datos

ZAA_T_LOG Tabla Log de Mensajes Tabla

ZAA_LOG Log de Mensajes Transacción

ZAA_FG_LOG Función de Carga del Log Grupo de Funciones

ZAA_FM_LOG Función de Carga de Log Módulo de Función

ZAA_P_CARGAS Carga de Datos Básicos Programa

ZAA_CARGAS Carga de Datos Básicos Transacción

ZAA_P_REPORTE01 Lista de Ciudades por País Programa

ZAA_INFORME01 Lista de Ciudades por País Transacción

ZAA_P_REPORTE02 Lista de Clientes por Vuelo Programa

ZAA_INFORME02 Lista de Clientes por Vuelo Transacción

ZAA_P_REPORTE03 Lista de Menú por Aerolínea Programa

ZAA_INFORME03 Lista de Menú por Aerolínea Transacción

ZAA_P_BOOKING Gestión de Reservas Programa

ZAA_RESERVAS Gestión de Reservas Transacción

ZAA_P_VUELOS Gestión de Vuelos Programa

ZAA_VUELOS Gestión de Vuelos Transacción

ZAA_SF_BOOKING Formulario de Reserva Smartforms

ZAA Clase de Mensajes Gestión de Vuelos Clase de Mensajes Tabla 1. Objetos creados en el sistema

Page 6: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

6

3 Detalle técnico

Se requiere crear un aplicación para la Gestión de Vuelos, así como la Gestión de Aeropuertos, Líneas Aéreas y Reservas de Vuelos. Se requiere crear un contenedor único, estilo Panel de Control, que permita centralizar una serie de Programas y Tablas para el tratamiento de los datos, desde donde el usuario final pueda todas las operaciones disponibles, las cuales son las siguientes:

Carga de datos: Aeropuertos, Aerolíneas y Aviones.

Gestión de Vuelos e Itinerarios.

Gestión de Reservas de Vuelos.

Generación de Informes de control.

Gestión de Panel centralizado de mensajes de las operaciones realizadas por usuario.

La herramienta debe ser multi-idioma, y en esta fase, todos los textos deben estar en Inglés y en Español.

3.1 Lógica del programa

El requerimiento consiste en crear una serie de programas, que realizarán las funciones arriba descritas, para los cuales existirá un Panel de Control central en el que el usuario podrá navegar a cada uno de los programas según lo requiera. Este Panel de Control será la pantalla principal de la aplicación, y tendrá un aspecto similar al siguiente:

3.1.1 Pantalla de selección

El programa contará con una pantalla de selección principal eminentemente gráfica, ya que solo contendrá enlaces (llamadas) a otros programas, quienes serán los que ejecutarán las funciones requeridas.

Page 7: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

7

Esta pantalla de selección estará agrupada en 4 bloques, tal como se observa en la imagen del punto anterior, los cuales estarán definidos técnicamente como se indica a continuación:

3.1.2 Ejecución y selección de datos

El usuario seleccionará unas de las opciones disponibles de la pantalla de selección,

identificando de esta manera cuál de los 4 procesos se ha de realizar, por lo tanto se debe

condicionar que cada una de estas opciones se ejecute únicamente cuando su

correspondiente opción haya sido seleccionada en el radiobutton/enlace en la pantalla

principal.

Los eventos posibles serán los siguientes:

Carga de Datos Básicos: Esta sección se utilizará para la carga inicial de datos en el

sistema; permitirá al usuario indicar que tabla del Diccionario de Datos quiere

tratar, y para ello, ha de seleccionar cualquiera de las 3 opciones disponibles (son

excluyentes), y al pulsar el botón de ejecución, el Panel llamará, vía SUBMIT

PROGRAM, al programa ZAA_P_CARGAS, la cual se detallará más adelante en este

documento, siendo la encargada de realizar el proceso de carga de la opción

seleccionada.

Page 8: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

8

Generador de Informes: Esta sección le permitirá al usuario visualizar alguno de los

informes/reportes disponibles para evaluar los datos del sistema para la toma de

decisiones. Al igual que el proceso anterior, el usuario podrá seleccionar uno de los

tres informes disponibles (son excluyentes), y al pulsar el botón de ejecución, se

llamará, vía CALL TRANSACTION, a la transacción correspondiente según el informe

seleccionado. Los Informes de Ciudades, Clientes y Menú llamarán a las

transacciones ZAA_INFORME01, ZAA_INFORME02 y ZAA_INFORME03,

respectivamente, siendo éstas quienes realizarán los procesos lógicos

correspondientes.

Gestión de Viajes: En este bloque, el usuario dispondrá de dos botones, el cual cada

uno tendrá su propio código de acción (SY-UCOMM), con el cual, a través de una

sentencia CASE-ENDCASE (ver capítulo X del libro “AprendeABAP en 7 días”), se

realizará un CALL TRANSACTION a las transacciones ZAA_VUELOS y ZAA_RESERVAS

respectivamente.

Log de Mensajes: Este bloque tendrá un único botón de acción, el cual, aplicando la

misma lógica del punto anterior, tendrá un código único con el cual, al ser pulsado,

realizará automáticamente un CALL TRANSACTION a la transacción ZAA_LOG.

Cada transacción llamada, invoca por detrás a su propio programa ABAP, en el cual se

desarrollará la lógica correspondiente según cada caso.

Veamos en detalle cada uno de los procesos:

3.1.2.1 Carga de Datos Básicos.

Objeto Descripción Tipo de objeto

ZAA_P_CARGAS Carga de Datos Básicos Programa

ZAA_CARGAS Carga de Datos Básicos Transacción

Para el proceso de Carga de Datos Básicos, se creará el programa ZAA_P_CARGAS, en el cual se leerá un archivo de carga de una ruta indicada por pantalla, permitiendo seleccionar también los tipos de datos que se quieran cargar.

El programa podrá realizar cargas de datos para los siguientes procesos:

Datos de Aeropuertos.

Datos de Aerolíneas.

Datos de Aviones.

Page 9: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

9

La pantalla de selección del programa será la siguiente:

El campo P_RUTA será obligatorio, indicando la ruta local desde donde el usuario cargará el archivo. Los campos P_APORT, P_ALINE y P_PLANE serán del tipo radiobuttons, dándole al usuario la opción de seleccionar una de las tres opciones para la carga de datos. Si se selecciona la carga de aeropuertos, la misma se realizará en la Tabla SAIRPORT, si se selecciona la carga de aerolíneas, la Tabla a utilizar será SCARR, y para el caso de aviones, la Tabla será SAPLANE. Estas Tablas forman parte del Diccionario de Datos, conocidas comúnmente como Tablas Estándar o Transparentes.

Cada una de estas opciones tendrá un formato propio para el archivo de carga correspondiente, para adaptarse al tipo de datos requeridos en cada Tabla; estos formatos serán los siguientes:

Anexo a este documento se enviarán los archivos de cargas que se utilizarán en el programa.

El campo P_TEST determinará el tipo de procesamiento que se realizará, su funcionalidad es que el usuario pueda visualizar en pantalla, los datos a cargar provenientes del archivo, antes de realizar la carga propiamente dicha. Este campo será de tipo CHECKBOX, en caso de ser tildado por el usuario, los datos leídos del archivo se mostrarán en un reporte ALV, pero no se cargarán en la Tabla correspondiente. Las columnas a mostrar en este reporte serán las mismas contenidas en el archivo de carga.

Page 10: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

10

Esto solo ocurrirá, cuando el programa se ejecute sin estar este campo P_TEST marcado, proceso en el cual, se debe recoger el resultado del procesamiento de cada línea del archivo, para mostrar su resultado en un reporte tipo WRITE. Este reporte tendrá únicamente 4 campos a mostrar:

Código Identificador del Aeropuerto, Aerolínea o Avión.

Nombre o Descripción.

Tipo de Mensaje (OK o Error).

Descripción del Mensaje. Ante cada nueva carga de datos correcta, se insertará un registro en el Log de Mensajes (Tabla ZAA_T_LOG), este proceso será detallado en el punto 3.1.2.4.

3.1.2.2 Generador de Informes.

El Panel principal contará con una sección en la que el usuario podrá seleccionar alguno de los tres reportes disponibles, los cuales están agrupados por RADIOBUTTONS, y llamará a 3 transacciones/programas independientes, vía CALL TRANSACTION. Los reportes que estarán disponibles en el Panel serán los siguientes:

Lista de Ciudades por País.

Lista de Clientes por Vuelo.

Lista de Menú por Aerolíneas. Cada uno de los reportes, se realizará con un tipo de ALV diferente.

3.1.2.2.1 Lista de Ciudades por País.

Objeto Descripción Tipo de objeto

ZAA_REPORTE01 Lista de Ciudades por País Programa

ZAA_INFORME01 Lista de Ciudades por País Transacción El objetivo de este reporte es mostrar, para un país indicado por el usuario, una lista de ciudades que tienen aeropuerto en el sistema. Para ello, se creará un reporte que lea el código del país por pantalla, filtre los datos de la Tabla transparente SCITAIRP y muestre los resultados en un reporte ALV de tipo LIST. Este programa tendrá una sencilla pantalla de selección con el código de país como único campo:

Page 11: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

11

El programa deberá filtrar en la tabla SCITAIRP (Asignación ciudad-aeropuerto), por el país indicado por pantalla, a través del campo COUNTRY, y extraer los campos Población, País y Código de Aeropuerto, siendo estos 3 campos parte del reporte ALV final.

Adicionalmente, se quiere que se muestre el nombre del aeropuerto encontrado, ya que el código del mismo no representa la información completa que quiere visualizar el usuario. Para ello, con el valor encontrado en el campo AIRPORT, se filtrará en la tabla SAIRPORT, (Aeropuertos), para obtener el campo NAME, añadiéndolo a los otros tres campos que se mostrarán por pantalla en el reporte final.

La estructura final que tendrá el ALV LIST para este reporte será la siguiente:

Page 12: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

12

3.1.2.2.2 Lista de Clientes por Vuelo.

Objeto Descripción Tipo de objeto

ZAA_REPORTE02 Lista de Clientes por Vuelo Programa

ZAA_INFORME02 Lista de Clientes por Vuelo Transacción

El objetivo de este reporte es mostrar, para un vuelo indicado por el usuario, la lista de pasajeros que tienen reserva hecha para una fecha dada. Para ello, se creará un reporte que cuente con el código de la aerolínea, el número de vuelo y la fecha de viaje como parámetros de entrada por pantalla, y filtre los datos de las Tablas transparentes SBOOK y SCUSTOM , mostrando los resultados en un reporte ALV de tipo GRID. Este programa tendrá la siguiente pantalla de selección: con los campos Aerolínea y Vuelo como obligatorios, siendo la Fecha un parámetro opcional.

Si el usuario no indica ninguna fecha en la pantalla de selección, el reporte deberá mostrar todos los vuelos que coincidan con los dos campos obligatorios, en caso de indicarse la fecha, se mostrará la información de ese vuelo en concreto. El programa deberá, con estos 3 campos de entrada, filtrar en la tabla SBOOK (Reservación de vuelo directo), y obtener los campos CARRID (ID Aerolínea), CONNID (ID Vuelo), FLDATE (Fecha del Vuelo), BOOKID (ID Reserva) y CUSTOMID (ID Pasajero), mostrando estos 5 campos en el reporte ALV final.

Page 13: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

13

Adicionalmente, se quiere que se muestre información detallada de cada cliente. Para ello, con el valor encontrado en el campo CUSTOMID, se filtrará en la tabla SCUSTOM, (Clientes vuelo), para obtener los campos NAME (Nombre), STREET (Calle), POSTCODE (Código Postal), CITY (Ciudad) y COUNTRY (País), añadiéndolos a los anteriores que se mostrarán por pantalla en el reporte final.

La estructura final que tendrá el ALV de tipo GRID para este reporte será la siguiente:

Page 14: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

14

3.1.2.2.3 Lista de Menú por Aerolíneas.

Objeto Descripción Tipo de objeto

ZAA_REPORTE03 Lista de Menú por Aerolíneas Programa

ZAA_INFORME03 Lista de Menú por Aerolíneas Transacción

El objetivo de este reporte es mostrar todos los Menús que ofrece cada una de las Aerolíneas seleccionadas por pantalla. Para lograr esto, el reporte tendrá un único parámetro, que a diferencia de los reportes anteriores, será del tipo SELECT-OPTIONS, para permitirle al usuario la opción de seleccionar un rango de varias aerolíneas.

En este caso se utilizará el ALV tipo TREE o Jerárquico para mostrar la información de la siguiente manera:

Para ello, con el conjunto de aerolíneas indicadas por pantalla, se filtrará en la tabla SMENU, (Menú), obteniendo los datos CARRID (Aerolínea), MENUNUMBER (ID Menú), STARTER (ID primer plato), MAINCOURSE (ID segundo plato) y DESSERT (ID postre), donde el campo CARRID corresponda con el rango de aerolíneas introducidos por pantalla.

Page 15: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

15

Los 3 últimos campos representan el código interno de cada comida, y lo que se quiere es que el reporte muestre la descripción de cada plato, en lugar de sus códigos. Para ello, para cada código de comida, se obtendrá su descripción en la tabla SMEALT (Comida en vuelo/descripción), filtrando por el campo MEALNUMBER con cada código de comida, además del campo CARRID (Aerolínea) con el campo homónimo de la tabla SMENU, y el campo SPRACHE = ‘D’ (Idioma). De esta tabla, se obtendrán los campos CARRID (Aerolínea), MEALNUMBER (ID plato) y TEXT (Descripción del plato).

Aún resta obtener el texto descriptivo para cada código de aerolínea indicado por pantalla, para ello se accede a la tabla SCARR, filtrando por el campo CARRID (Aerolínea), para obtener el campo CARRNAME (Nombre de Aerolínea). Como resultado, tendremos todas las comidas que ofrece una aerolínea, ahora debemos agrupar los datos en dos Tablas Internas para poder mostrar la información completa en un ALV Jerárquico. Este tipo de ALV consta de dos Tablas Internas anidadas, estas dos tablas se enlazarán a través del campo CARRID.

Page 16: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

16

La estructura final de estas dos Tablas Internas será la siguiente:

3.1.2.3 Gestión de Viajes.

El Panel principal contará con una sección para la gestión y reservas de vuelos en el sistema. Serán dos procesos/programas independientes:

Gestión de Vuelos: Programa que permite crear o visualizar la lista de vuelos entre dos ciudades para determinada aerolínea.

Gestión de Reserva: Programa que permite realizar una reserva válida en el sistema, e imprimir el comprobante en un formulario.

3.1.2.3.1 Gestión de Vuelos.

Objeto Descripción Tipo de objeto

ZAA_P_VUELOS Gestión de Vuelos Programa

ZAA_VUELOS Gestión de Vuelos Transacción Este programa permitirá al usuario, mediante una interfaz gráfica, realizar acciones sobre la lista de vuelos en el sistema, interactuando internamente con la Tabla transparente SPFLI (Itinerario de vuelos). Este programa no tendrá pantalla de selección como el resto, sino que todo se desarrollará en una pantalla hecha a medida (Dynpro), la cual tendrá una estructuración gráfica parecida a la siguiente imagen:

Page 17: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

17

El programa mostrará una Dynpro que contendrá 4 Table Controls, como se muestra en la imagen anterior. Los 3 primeros (Aerolíneas, Ciudades Origen y Destino), serán de solo lectura y permitirán seleccionar líneas/registros de sus contenidos. El primero de ellos contendrá información de las Aerolíneas del sistema, obtenidas a través de la Tabla SCARR (Compañía aérea). Este bloque mostrará una tabla con los siguientes campos:

Los siguientes dos bloques contendrán información de las Ciudades del sistema, obtenidas a través de la tabla SPFLI (Itinerario de vuelos). El primero de estos bloques representarán las posibles Ciudades Origen de un itinerario de Vuelo y se mostrará en una tabla con los siguientes campos:

Page 18: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

18

El segundo de estos bloques representarán las posibles Ciudades Destino de un itinerario de Vuelo y se mostrará en una tabla con los siguientes campos:

Esta sección de 3 bloques contará con dos botones/funciones de acción, cuyos resultados se verán reflejados en el 4to Table Control. Función VER VUELOS: El primero de estos botones se llamará “Ver Vuelos”, al pulsarse este botón, el programa realizará un filtro por la Tabla SPFLI, tomando en cuenta aquellas líneas seleccionadas de los 3 bloques anteriores. En caso de no haber nada seleccionado en dichos bloques, se extraerá todo el contenido de la Tabla SPFLI para mostrarse en el 4to Table Control. En resumen, el criterio para filtrar por la Tabla SPFLI será el siguiente:

Función AGREGAR VUELOS: El objetivo de este botón es permitirle al usuario añadir itinerarios de vuelos al sistema. Si recordamos, al principio de todo se detallaron los programas de carga a crear, para la carga de datos de Aerolíneas, Aviones y Aeropuertos. Ahora, se utilizará esa información para crear, desde este apartado, nuevos itinerarios de vuelos, conectando dos ciudades a través de una aerolínea. Para ello, esta vez sí que debe existir al menos una línea seleccionada en cada uno de los bloques anteriores, en caso contrario, el proceso se detendrá, indicando el mensaje de error 005, 006 o 007 correspondiente, basándonos en la Clase de Mensajes ZAA creada al comienzo. Luego de validar que cada bloque tiene al menos una línea seleccionada, se juntan estas líneas y se muestran en el cuarto Table Control, que contendrá la siguiente estructura de datos:

Page 19: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

19

Este 4to Table Control tendrá otro botón/función, llamado “Añadir Vuelo”, cuyo objetivo será insertar los datos contenidos en el mismo, en la Tabla SPFLI, generando así un nuevo Itinerario de Vuelo en el sistema. Para ello, el programa verificará en primer lugar, que no existe en la Tabla SPFLI un registro con la misma combinación CARRID-CONNID (ID Aerolínea – Nº Vuelo), mostrando el Mensaje 008 de la Clase de Mensajes ZAA en ese caso, impidiendo la creación del nuevo Vuelo. Luego de validarse de que no existe un registro con la misma clave (CARRID-CONNID), se insertará el contenido del Table Control en la Tabla SPFLI, indicando el mensaje 003 o 004 según el resultado de la operación. Siendo este el proceso final de este programa. Este proceso creará tanto un Itinerario (ejemplo: Nuevo Vuelo México-Panamá para la compañía COPA), como vuelos propiamente dichos (ejemplo: Vuelo CO-01 México-Panamá para el 14 de Abril a las 19:35). Estos dos procesos deben quedar registrados en el Log de Mensajes del Panel, por lo que, al momento de crearse nuevos registros en la Tabla SPFLI, deberá llamarse a la Función ZAA_FM_LOG para registrar el movimiento en la Tabla ZAA_T_LOG. (Movimientos 04 y 05).

Page 20: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

20

3.1.2.3.2 Gestión de Reserva.

Objeto Descripción Tipo de objeto

ZAA_P_BOOKING Gestión de Reservas Programa

ZAA_RESERVAS Gestión de Reservas Transacción

ZAA_SF_BOOKING Formulario de Reserva Smartforms

El otro programa a crearse en esta sección se encargará de la Gestión de Reservas, el programa leerá la tabla SFLIGHT (Vuelos) y SPFLI (Itinerario de vuelos) filtrando por los parámetros de selección, para mostrar la lista de vuelos disponibles en un ALV editable, en el cual el usuario podrá completar la información con los datos del pasajero y realizar la reserva, actualizándose los datos correspondientes en la Tabla SBOOK (Reservación de vuelo directo), así como en la Tabla de Log del Panel. Este programa tendrá la siguiente pantalla de selección:

Los campos Fecha, Ciudad Origen y Destino serán campos obligatorios, los otros dos serán opcionales. El primer paso será realizar una consulta sobre las Tablas SFLIGHT y SPFLI, filtrando por los parámetros indicados en la pantalla de selección, mostrando los resultados en un ALV de tipo GRID editable, que representarán los vuelos disponibles encontrados de acuerdo a los parámetros de búsqueda. Estas dos Tablas se enlazarán entre sí a través de los campos CARRID (ID Aerolínea) y CONNID (Nº Vuelo). El ALV final contendrá la siguiente estructura de datos:

Page 21: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

21

Campos Disponibilidad Este ALV final tendrá una serie de consideraciones a tener en cuenta, ya que los campos relativos a la Disponibilidad (SEATSOCC_B, SEATSOCC_F y SEATSOCC) no es un dato que exista exactamente en la Tabla SFLIGHT, sino que debe ser calculado. Como podemos ver en la siguiente imagen, en la Tabla SFLIGHT existen dos campos que muestran la información por cada Clase de asientos. (Económica, Business y Primera Clase). El campo SEATSMAX respectivo, representa la OCUPACIÓN MÁXIMA para cada Clase, mientras que el campo SEATSOCC representa las PLAZAS OCUPADAS, y lo que nos interesa mostrar en el ALV final no es ni un dato ni el otro, sino la DISPONIBILIDAD para cada Clase. Para ello, debemos obtener ambos campos de la Tabla, y posteriormente realizar la operación aritmética (resta) para obtener la disponibilidad real de cada Clase, siendo esto lo que se mostrará en los campos correspondientes del ALV final.

Page 22: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

22

Adicionalmente, tenemos que tener en cuenta el parámetro de entrada “Clase”, el cual es opcional. Dicho parámetro le permitirá al usuario filtrar los resultados por la Clase que le interese, esto es, de estar informado este campo, en el ALV final solo se mostrará el campo correspondiente a dicha Clase, de no estar informado, se mostrará la disponibilidad en las tres Clases del sistema. Ejemplo: Si el usuario indica que solo le interesa ver la disponibilidad en Clase Económica, en el ALV final solo se mostrará el campo SEATSOCC (Disponibilidad – Clase Económica), mientras que los campos SEATSOCC_B (Business) y SEATSOCC_F (Primera) se ocultarán, y no se mostrarán en el ALV final. Si por el contrario, el usuario no indica ninguna Clase en particular, en el ALV final se mostrarán los 3 campos disponibles. Adicionalmente, no se mostrarán en el ALV final aquellos vuelos que NO TENGAN DISPONIBILIDAD para la Clase seleccionada (en caso de haberse seleccionado alguna), o no tengan disponibilidad en ninguna de las 3 clases. La idea es mostrar los vuelos disponibles entre dos ciudades y no los vuelos llenos. Edición de Vuelos. Este ALV GRID deberá permitir seleccionar vuelos específicos (líneas del reporte), para eso debe contar con la columna CHECK al principio de cada línea, y además, debe permitir editar los datos en sus últimos 5 campos (PASAJERO, CLASE, EQUIPAJE, RESERVA y OBSERVACIONES). Información de Cabecera. Se deberá mostrar en la cabecera del reporte un bloque de datos con el Título del Reporte, la Fecha de ejecución del mismo y los Datos del usuario que está ejecutando el reporte. Se deberá modificar el Status GUI del reporte, para añadir dos botones a medida, uno llamado “Generar Reserva” y otro llamado “Imprimir Reserva”.

Page 23: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

23

Botón “Generar Reserva” El objetivo de este botón es crear la Reserva de un nuevo Vuelo en la Tabla SBOOK, así como actualizar la Disponibilidad para la Clase seleccionada en la Tabla SFLIGHT. Lo primero que debe hacer el programa al pulsarse este botón, será verificar que se ha seleccionado al menos un vuelo (línea) en el ALV, en caso contrario, se debe emitir el Mensaje 009, devolviendo el control al ALV. Adicionalmente se debe validar que para la(s) línea(s) seleccionada(s), se hayan informado los cuatro campos editables, emitiendo el Mensaje 013 en caso contrario. También debe verificarse que para la Clase seleccionada exista Disponibilidad de asientos, emitiendo el Mensaje 014 en caso de estar lleno el Vuelo. Una vez realizadas todas las validaciones, para cada registro/vuelo seleccionado en el ALV, se procede a registrar la Reserva propiamente dicha, en el sistema, insertando una nueva entrada en la Tabla SBOOK, con los siguientes datos:

(*) Se debe buscar primero en la tabla SBOOK con CARRID, CONNID y FLDATE cuál es el último número de reserva registrado (campo BOOKID), y asignarle a este campo el siguiente número en la secuencia. Una vez registrada correctamente la Reserva, se debe actualizar la Disponibilidad en el registro correspondiente en la Tabla SFLIGHT, de manera que, en próximas consultas, se muestre la disponibilidad correcta (o deje de aparecer disponible el Vuelo en caso de haberse llenado con esta última Reserva). En caso de haber algún error en el proceso de registro, se debe emitir el Mensaje 010, devolviendo el control al ALV final, actualizando la columna OBSERVACIONES del ALV con el mensaje de error correspondiente.

Page 24: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

24

Si la Reserva se ha registrado de forma satisfactoria, se devuelve el control al ALV principal, actualizando la columna RESERVA con el nuevo número de Reserva generada, así como el campo OBSERVACIONES, con el Mensaje 011. Adicionalmente, se creará una entrada en el Log de Mensajes, de tipo 06 (Gestionar Reserva), a través de la Función ZAA_FM_LOG.

También debe verse actualizada la columna DISPONIBILIDAD para la Clase seleccionada, restando la nueva reserva del total de asientos disponibles que había originalmente. Botón “Imprimir Reserva” El Status GUI del ALV contará con un segundo botón a medida, llamado “Imprimir Reserva”, cuya función será leer el número de la Reserva seleccionada (campo RESERVA del ALV), e imprimir un Formulario de tipo SMARTFORM con la información de la línea seleccionada. En caso de que la línea seleccionada no tenga informado el campo RESERVA, significará que no se ha realizado ninguna Reserva para dicho vuelo, y se emitirá el Mensaje 015, terminado el proceso. Cuando se ha comprobado que si se ha realizado una Reserva para el Vuelo seleccionado, se imprimirá un formulario llamado ZAA_SF_BOOKING, del tipo SMARTFORM, cuyo diseño será parecido al siguiente:

Page 25: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

25

Cada ventana del Formulario representa lo siguiente: Ventana LOGO: En esta ventana se ha de mostrar el Logo de AprendeABAP, el cual deberá ser subido por la Transacción SE78 previamente. Ventana HEADER: En esta ventana se informarán los datos del Pasajero, obtenidos en los cinco campos editables del ALV final. Ventana Nº RESERVA: Se mostrará un número aleatorio, generado a través de la Función NUMBER_GET_NEXT, que nos devolverá el siguiente número disponible en un rango que estableceremos entre 100.000 y 300.000. Ventana FOOTER: En el Pie de Página se mostrarán los datos de Cabecera del ALV, es decir, la Fecha del Día y los Datos del Usuario/Vendedor que ejecutó la transacción. Ventana MAIN: En la ventana principal se mostrará el detalla de los Vuelos seleccionados, tomados del ALV, con la siguiente Información:

Nº Vuelo (CONNID).

Fecha del Vuelo (FLDATE).

Aerolínea (CARRID).

Ciudad Origen (CITYFROM).

Aeropuerto Origen (AIRFROM).

Ciudad Destino (CITYTO).

Aeropuerto Destino (AIRTO).

Hora de Salida (DEPTIME).

Hora de Llegada (ARRTIME). Luego de la impresión/visualización del Formulario, se debe devolver el control al ALV principal.

3.1.2.4 Log de Mensajes.

Objeto Descripción Tipo de objeto

ZAA_ED_ACCION Acciones del Sistema Elemento de Datos

ZAA_T_LOG Tabla Log de Mensajes Tabla Transparente

ZAA_LOG Log de Mensajes Transacción

ZAA_FG_LOG Función de Carga del Log Grupo de Funciones

ZAA_FM_LOG Función de Carga de Log Módulo de Función

Se pide que cada proceso del Panel de Gestión de Vuelos que impacte a nivel del Diccionario de Datos, (creación de un nuevo dato, generación de una nueva reserva, etc.), quede registrado en un Log de Mensajes, el cual podrá ser accedido por el usuario desde el Panel principal (a través del botón/enlace correspondiente explicado en el punto 3.1.1.

Page 26: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

26

Este registro se creará (y almacenará) en una Tabla transparente llamada ZAA_T_LOG, la cual contará con una Vista de Actualización, a la que se le podrá acceder desde la transacción ZAA_LOG, en la cual el usuario podrá visualizar el historial de eventos registrados en el Panel. Esta Tabla ZAA_T_LOG contará con la siguiente Estructura de Datos:

Los campos Fecha, Hora y Usuario SYST_INDEX utilizarán el tipo de dato instalado SYST_DATUM, SYST_UNAME respectivamente, mientras que el campo Código tendrá un tipo de datos CHAR de 20 posiciones. El campo ID, de tipo Entero, será una secuencia de números correlativos, generada a través de la Función NUMBER_GET_NEXT. El campo ACCION, representará los diferentes eventos que se registrarán en el Log, los cuales son los siguientes:

Para ello, se creará un Elemento de Datos de tipo CHAR con 2 posiciones, llamado ZAA_ED_ACCION, el cual tendrá como ámbito de valores, los 6 códigos expresados anteriormente. Para generar la Vista de Actualización a esta Tabla, se creará un Grupo de Funciones llamado ZAA_FG_LOG, que contendrá los parámetros de dicha Vista, además de contener el Módulo de Funciones del siguiente punto. Esta Tabla será alimentada desde distintos puntos del Panel de Gestión de Vuelos, por lo tanto se implementará un Módulo de Funciones llamado ZAA_FM_LOG, que recibirá como parámetros de entrada todos los campos de la Tabla ZAA_T_LOG, a excepción del campo ID, cuyo valor se generará desde la propia función, y con ello, insertar un nuevo registro en la tabla, que será leído posteriormente desde el Log de Mensajes.

Page 27: DT Reto 15 días Sistema de Gestión de Vuelosaprendeabap.com/wp-content/uploads/2017/05/DT... · Los eventos posibles serán los siguientes: Carga de Datos Básicos: Esta sección

RETO DE 15 DÍAS

27

3.1.3 Manejo de Idiomas.

Objeto Descripción Tipo de objeto

ZAA Clase de Mensajes Gestión de Vuelos Clase de Mensajes Todos los mensajes que se emitan en el Panel de Gestión de Vuelos, son susceptibles de ser traducidos al Inglés, esto es, cuando un usuario ingresa al sistema en el idioma Inglés, el Panel deberá mostrar todos los mensajes y textos correctamente traducidos del Español al Inglés. Los títulos y descripciones dentro de cada programa serán controlados a través de Elementos de Texto, creando su traducción directamente en cada objeto mediante la funcionalidad habitual (que será explicada en cada procedimiento). Los mensajes, tanto de error como de advertencia o confirmación, que se emitan a lo largo del Panel, serán tomados de una Clase de Mensajes creada a medida, desde la transacción SE91, que será llamada ZAA. Esta Clase de Mensaje ZAA tendrá configurados los siguientes mensajes, los cuales serán traducidos al Inglés desde la propia transacción.