Full text
1
2
3 ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA Módulo de control de calidad de materiales para baldosas en SAP Control module quality of materials tile in SAP Realizado por Juan Guevara Quesada Tutorizado por Ismael Navas Delgado Eusebio Hernández Villalobos Departamento Lenguaje y Ciencias de la Computación UNIVERSIDAD DE MÁLAGA MÁLAGA, Octubre, 2016 Fecha defensa: El Secretario del Tribunal
4
5 Resumen: Los ERP (Enterprise Resource Planning, en español Sistemas de Planificación de Recursos Empresariales) son sistemas de información que permiten controlar todos los procesos que se llevan a cabo en una empresa a través de módulos, estos módulos son configurables según las necesidades de cada empresa. SAP R/3 es un ERP desarrollado por SAP (Systeme, Anwendungen, Produkte en alemán) que permite ejecutar y optimizar distintos aspectos como finanzas, inventarios, ventas, gestión de materiales etc… Para programar en R/3, SAP tiene su propio lenguaje de programación llamado ABAP (Advanced Business Application Programming) que cuenta con miles de funciones para el manejo de archivos, base de datos entre otras muchas cosas. Este trabajo va a consistir en realizar para el módulo de laboratorio de Cemosa una serie de herramientas, como pantallas de resultados, entrada de muestras, y generación de informes referentes al material de baldosas (con sus variantes) siguiendo las normas UNE. Palabras claves: ERP, SAP, SAP R/3, ABAP, control de materiales, normas UNE, balsosa Abstract: ERP (Enterprise Resource Planning, in spanish Sistemas de Planificación de Recursos Empresariales) are information systems that allow to control all the processes that are carried out in a company through modules, these modules are configurable according to the needs of each company. To program in R/3, SAP has its own programming language called ABAP (Advanced Business Application Programming) that has thousands of functions for managing files, database among many other things. This work will consist of making a series of tools for the Cemosa laboratory module, such as results screens, sample entry, and report generation related to the tile material (with its variants) according to UNE standards. Keywords: ERP, SAP, SAP R/3, ABAP, material control, UNE standards, tile
6
7 Índice 1. Introducción ................................................................................................................................ 9 1.1. SAP..................................................................................................................................... 10 1.2. ABAP .................................................................................................................................. 12 1.3. Organización del documento ............................................................................................ 15 1.4. Motivación y objetivos del TFG ......................................................................................... 16 2. Fases de desarrollo .................................................................................................................... 19 2.1. Fase de documentación .................................................................................................... 19 2.2. Fase de análisis .................................................................................................................. 20 2.3. Fase de diseño ................................................................................................................... 23 2.3.1. Entrada de muestras ................................................................................................. 24 2.3.2. Entrada de resultados ............................................................................................... 25 2.3.3. Modelo de datos para las pantallas de resultados ................................................... 41 2.3.4. Listado ....................................................................................................................... 48 2.3.5. Informe ...................................................................................................................... 49 2.3.6. Borrador .................................................................................................................... 51 3. Implementación y pruebas........................................................................................................ 55 3.1. Diccionario de datos .......................................................................................................... 55 3.2. ModulePool ....................................................................................................................... 58 3.3. Grupo de funciones ........................................................................................................... 63 3.4. Entrada de muestras ......................................................................................................... 65 3.5. Entrada de resultados ....................................................................................................... 67 3.6. Listado ............................................................................................................................... 71 3.7. Informe .............................................................................................................................. 76 3.8. Borrador ............................................................................................................................ 85 4. Transporte y pruebas ................................................................................................................ 95 4.1. Transporte ......................................................................................................................... 95 4.2. Pruebas .............................................................................................................................. 98 5. Conclusiones............................................................................................................................ 103 6. Bibliografía .............................................................................................................................. 105 7. Lista de Ilustraciones ............................................................................................................... 107
8
9 1. Introducción Cemosa es una empresa especializada en servicios de ingeniería y control de calidad de materiales en el ámbito de la construcción, fomentando desde siempre desde sus inicios el conocimiento, la innovación y la tecnología, teniendo como horizonte la finalidad y la responsabilidad empresarial en sus actividades. Como laboratorio de control de calidad, Cemosa lleva realizando durante más de 40 años la supervisión técnica de materiales de construcción. Cemosa ofrece servicios en los siguientes ámbitos: Ingeniería, Geotecnia, Seguridad y Salud, Edificación, Control de Materiales y Certificación /Marcado CE. Al ser una empresa que trabajo en tantos campos, necesita un sistema de gestión y de datos único que permite converger la información de la empresa, y es ahí donde entran los ERP. Un ERP (Enterprise Resource Planning o Planificación de Recursos Empresariales) [1] es un sistema de gestión de información que permite automatizar muchas prácticas de negocio asociadas a los aspectos productivos u operativos de una empresa, como las ventas, compras, proyectos,etc… Algunas de las ventajas que nos ofrece un ERP son: Una mayor eficiencia en las operaciones de la empresa. Una mayor capacidad operativa, ya que al automatizar tareas nos permite atender más clientes, o fabricar más productos. Mayor control y trazabilidad de las actividades llevadas en la empresa, ya que queda todo registrado. Mayor rentabilidad. Algunos de las características de usar un ERP son (Ilustración 1): Son modulares: Permite al cliente elegir los componentes o módulos del sistema de acuerdo a las operaciones que quiere automatizar, por ejemplo, una empresa de servicios no necesita un control de almacenes. Son integrales: Un ERP tiene la capacidad de compartir datos de un módulo a otro, ya que la base de datos está centralizada, un ERP debe ser un sistema que permita interconectar los diferentes módulos y permitir trabajar de forma eficiente. Configurable: Un ERP debe permitir la característica de poder adecuar la funcionalidad de los módulos a las necesidades del negocio, no es lo mismo el módulo de ventas para un supermercado que para una empresa dedicada a la venta de una tienda informática.
16 El modelo utilizado para realizar el TFG es muy parecido al cascada, con una primera fase de análisis y reuniones con el cliente, para después seguir con el diseño, las pruebas y la implantación del código desarrollado. 1.4. Motivación y objetivos del TFG La razón de utilizar SAP para el TFG, también fue un gran condicionante en la elección, ya que llevo un buen tiempo trabajando con esta tecnología, lo que me permitiría poder avanzar en el trabajo de una forma fluida y rápida, donde se centraría más en cómo afrontar los requisitos y problemas habituales de un proyecto, que en aprender el lenguaje de programación, además que es un lenguaje que me estaba gustando mucho por las posibilidades que ofrecía y trabajar en una empresa ofrece una experiencia real de cómo trabajar en un verdadero proyecto. El objetivo del TFG es mejorar el módulo de control de materiales de Cemosa, donde al crear una muestra, esta presenta una serie de servicios y ensayos que se realizan a los materiales para verificar si un material en concreto cumple con los estándares de calidad, en nuestro caso, vamos a implementar la parte correspondiente al material de las baldosas. En Cemosa, baldosas se subdivide en cinco tipos de materiales: Baldosas de cerámica Baldosas de cemento Baldosas de hormigón Baldosas de mármol Baldosas de terrazo Por eso, cuando nos refiramos a baldosas como material, nos referiremos a los 5 tipos de materiales, nuestro objetivo también será ver los parecidos entre los diferentes tipos de baldosas, y hacer ensayos que puedan servir para los diferentes tipos de baldosas, a lo sumo que se diferencien en algunos campos. Para la realización del proyecto, se realizará una serie de reuniones con el personal de laboratorio para conocer las diferentes necesidades, en bases a ello poder definir diferentes prioridades en realizar un ensayo u otro (para el TFG no dará tiempo a implementar todos, por lo que se empezará por los más usados). Una vez empecemos a realizar los ensayos, nos apoyaremos en los Excel proporcionados por laboratorio con resultados reales, y en las normas UNE (Una Norma Española) [4], donde se especifica cómo se debe realizar un ensayo y que valores debe devolver el ensayo, estas normas serán proporcionadas por el
17 personal de laboratorio, ya que no se encuentran en internet (hay que comprarlas a AENOR, que es la asociación que distribuye estas normas). Una vez realizados los ensayos, representados como pantallas de cálculo, se procederá a la realización de informes y listados para poder obtener la información de estos ensayos.
18
19 2. Fases de desarrollo 2.1. Fase de documentación Como en todo proyecto, antes de empezar a trabajar debemos conocer que vamos a desarrollar, así que antes de empezar concertamos una pequeña reunión entre yo y mi tutor en la empresa con la jefa de laboratorio, donde mi tutor le explicó que yo iba a ampliar el módulo de laboratorio realizando algunas pantallas de cálculo e informes para baldosas, por lo que ella nos prestaría su ayuda por si en algún momento encontrábamos algún problema con algún ensayo o cálculo en concreto. Más tarde desde laboratorio nos pasaron algunas plantillas e informes sobre los distintos ensayos que íbamos a tener que realizar, para hacernos una idea de cómo organizan ellos los datos en el informe (ya que al realizar el informe, hay que seguir las normas UNE que nos indican que datos se deben informar, así como la precisión de los datos si procede), también nos pasaron los Excel con los que calculan ellos los datos del ensayo (Ilustración 5), donde podemos ver que formula usan y son necesarios para poder realizarse (y en caso de que alguna fórmula no quede claro en la propia norma, siempre podemos usar el Excel) Ilustración 5:Ejemplo de un ensayo en un informe.
20 Como ya se ha dicho, uno de los servicios que ofrece Cemosa es el control de materiales, por lo que debe a la hora de realizar un informe y hacer las pruebas de calidad a un material, nos debemos asegurar que cumple unos estándares, como en qué condiciones se debe realizar un ensayo o que debe cumplir para que, al realizar ese ensayo, se considere como que cumple los requisitos, para esta certificación de calidad es para lo que existen las normas UNE (Ilustración 6). Ilustración 6:Portada de la norma UNE de baldosas de hormigón. 2.2. Fase de análisis Una vez ya disponía de los documentos y las normas UNE que iba a utilizar, llegó el momento de saber que ensayo se iban a realizar, ya hay cinco tipos de materiales según como estén fabricadas las baldosas, lo que hace que los ensayos puedan variar de un tipo de baldosa a otro (en Cemosa, las baldosas están divididas en cinco tipos: cerámica, terrazo, hormigón, cemento y mármol), además que por el número de ensayo que existen y la duración máxima para hacer el TFG, hacía que debiera elegir cuantos ensayos iba a realizar. Para eso, en SAP existe una transacción (ZLIST3) (Ilustración 7) que nos indica cuantas veces se ha realizado un ensayo, y lo más importante, cuántas de ellas se han realizado en el último año, ya que desde ahí establecería una prioridad para saber que ensayos incluir en el TFG.
21 Ilustración 7:Listado de servicios ordenados por los más realizados este año (columna URS). Una vez obtenido el listado, se guardó en un Excel los resultados y se agruparon los servicios sin distinción por material y que tenían un nombre parecido (sin todavía saber si eran exactamente el mismo ensayo o no), obteniéndose el siguiente listado (Ilustración 8) :
22 Ilustración 8:Servicios realizados el último año (agrupados).
23 Con esto, ya podíamos hacernos una idea de que ensayos iban a ser más necesitados o no, por lo que ya podía empezar a revisar los informes y Excel, apoyándome en las normas UNE para poder empezar a desarrollar las pantallas de resultados, como durante el desarrollo del proyecto podía surgir cualquier duda que a lo mejor mi tutor no era capaz de responder, se creó un foro en la intranet de Cemosa donde yo podía exponer mis dudas y la jefa de laboratorio o cualquiera podía responderlas(Ilustración 9). Ilustración 9:Foro de dudas de la intranet. 2.3. Fase de diseño Haciendo uso de los datos que ya disponía (Informes y Excel), el siguiente paso era empezar a diseñar las pantallas de cálculo de todos los ensayos que íbamos a hacer, asegurándonos que aparecían todos los datos que aparecían en los informes haciendo siempre caso a lo que nos exigía las normas UNE (temas de redondeo en números y datos que debía contener sobretodo), también debíamos comprobar si la entrada de muestras estaba preparada para incluir los nuevos tipos de baldosas.
24 2.3.1. Entrada de muestras Esta pantalla ya estaba hecha, solo necesitaba modificación si se necesitaba incluir algún campo nuevo para baldosas, en nuestro caso, no fue hasta la realización del informe que no vimos esta necesidad. En esta pantalla en la casilla de tipo de material indicamos que material el material de la muestra, para nuestro caso existen estos: Baldosa de cerámica (11). Baldosa de cemento (12). Baldosa de hormigón (13). Baldosa de mármol (14). Baldosa de terrazo (15). En la tabla de abajo (Ilustración 10), señalamos los servicios que se van a realizar en la muestra. Ilustración 10:Ejemplo de entrada de muestras de cerámica.
25 2.3.2. Entrada de resultados En esta fase, nosotros disponemos de una pantalla general (Ilustración 11) que usaremos de base para hacer nuestras pantallas de resultados, esta pantalla ya nos proporciona como cabecera los datos generales del ensayo y datos de autoría. En cada pantalla que realicemos esta parte será prácticamente igual en todos los ensayos que realicemos. El código para hacer esta pantalla ha sido modificada para hacer lo más rápido posible la creación de nuevas pantallas a partir de esta. En esta pantalla estarán también botones como el de calcular los datos del ensayo o el de guardar los resultados en la base de datos. Ilustración 11:Entrada de resultados general. Se va a realizar una pantalla de resultados por cada ensayo, intentando unir en la misma pantalla si es posible el mismo ensayo para los distintos tipos de materiales, ya que como se ha indicado, puede existir el mismo ensayo para dos tipos de baldosas, pero que cambie ligeramente los datos a introducir o la forma de representar los resultados. En caso como este usaremos la misma pantalla, ocultando o mostrando campos según el tipo de material (se indicará si esto pasa).
32 Ilustración 17:Ensayo de dimensiones (hormigón).
33 Ilustración 18:Ensayo de dimensiones (terrazo).
34 Ilustración 19:Ensayo de dimensiones (cerámica).
35 Ilustración 20:Ensayo de dimensiones (mármol) 2.3.2.5. Desgaste por abrasión Ensayos correspondientes: 15057, 15047, 15065, 15076, 15040, 15171. Este ensayo existe para las baldosas de cemento, hormigón, mármol y terrazo. Este ensayo se realiza desgastando la cara vista de la baldosa con materiales abrasivos, normalmente corindón blanco fundido, se recogen los datos obtenidos al realizar el ensayo y se recogen en la pantalla de resultados. Una peculiaridad es que la media debe darse con una precisión de 0.5, por lo que hay que redondear la media calculada (Ilustración 21).
36 Ilustración 21:Ensayo de desgaste por abrasión. 2.3.2.6. Resistencia al impacto. Energía de rotura Ensayos correspondientes: 14151, 15044, 15174, 15025, 99939. Este ensayo existe para las baldosas de cerámica, mármol y terrazo. Este ensayo se mide la resistencia de una baldosa al impacto tomando como dato la altura en la que la baldosa sufre daño al caer una bola (de 1kg aprox.) sobre la cara vista. Para el caso de las baldosas de cerámica lo que se recoge es el coeficiente de restitución (es una medida del grado de conservación de la energía cinética en un choque entre partículas clásicas) (Ilustración 24). La energía de rotura (solo para el caso del mármol) se calcula de la siguiente manera (Ilustración 22): ( ) ( )
37 Ilustración 22:Ensayo de resistencia al impacto. Energía de rotura (mármol). Para el caso del terrazo, el número de probetas es siempre 3 (Ilustración 23). Ilustración 23:Ensayo de resistencia al impacto. Energía de rotura (terrazo).
38 Ilustración 24:Ensayo de resistencia al impacto. Energía de rotura (cerámica). 2.3.2.7. Determinación de la dureza al rayado de la superficie, según Mohs Ensayos correspondientes: 14028, 15133, 15158. Este ensayo existe para las baldosas de cerámica y mármol. Este ensayo mide la resistencia de una baldosa según la escala de Mohs (Ilustración 25), donde cada número está representado por un mineral, cuanto más alto es el número, más resistente es la baldosa (Ilustración 26).
39 Ilustración 25:Escala de Mohs. Ilustración 26:Ensayo de dureza al rayado en la escala Mohs.
40 2.3.2.8. Resistencia a flexión y carga de rotura Ensayos correspondientes: 14020, 15046, 15039, 15170. Este ensayo existe para las baldosas de hormigón, terrazo y cerámica. Este ensayo mide la resistencia de flexión y de rotura de una baldosa. La peculiaridad que nos hemos encontrado al hacer este ensayo, es que tiene unos datos de anchura de la baldosa que nos recordaba a los del ensayo de dimensiones, y en algunos Excel que nos pasaron estos datos coincidía en los dos ensayos, pero no siempre, por lo que después de hablarlo con los técnicos de laboratorio y se optó crear un botón en el ensayo para traer estos datos, aunque estos datos no están ligados en base de datos (cada ensayo tendrá su propio valor de anchura). El ensayo es exactamente igual para baldosas de terrazo y hormigón, para cerámica es también igual, pero algunas unidades cambian (carga de rotura en N en vez de kN) (Ilustración 27 y 28) Ilustración 27:Ensayo de resistencia a flexión y carga de rotura (terrazo y hormigón).
41 Ilustración 28:Ensayo de resistencia a flexión y carga de rotura (cerámica). 2.3.3. Modelo de datos para las pantallas de resultados Para el modelo de datos, lo que se ha intentado hacer es algo que sea fácil de comprender, y que intente ser común para todas las tablas que se hagan, para si en un futuro hay que revisar el código no sea difícil de entender. Ell esquema general de cómo se han creado las diferentes tablas han seguido un mismo patrón, en primer lugar todas las tablas heredan de ztlb_murelser, que es la tabla que contiene todos los datos de cabecera de la entrada de resultados y que se usa en todas las pantallas, después le sigue una tabla del ensayo general (ejemplo ztlb_dim) donde vienen los datos generales del ensayo como las medias o fechas si se necesitan, y para terminar la tabla que contiene las probetas del ensayo, esta tabla puede no existir según el ensayo, aunque en los que he hecho da al casualidad que todas tienen probetas(ejemplo ztlb_dimtl, se decidió que todas las tablas de probetas terminaran en ‘tl’ para su fácil identificación).
48 2.3.4. Listado Una vez terminada la entrada de resultados, se necesita un programa que saque por pantalla los resultados generales de los ensayos de todas las muestras de baldosas que se hayan hecho y que permita filtrar por muestra o por distintos campos. En Cemosa, para cada tipo de material existe un listado correspondiente, los filtros que se usarán son los mismos añadiendo el de tipo de material, ya que nuestro listado al ser de baldosas contiene 5 tipos de materiales (los 5 de baldosas) y a lo mejor solo nos interesa sacar las baldosas de cerámica (tipo de material 011), estos datos suelen ser datos de la propia muestra como la fecha en el que se realizó, el expediente asignado, el laboratorio donde se hace etc… (Ilustración 37 y 38) Ilustración 37:Filtro del listado de baldosas.
49 Ilustración 38:Listado de baldosas. 2.3.5. Informe Una vez el técnico de laboratorio ya haya creado la muestra he introducido los datos en la entrada de resultados, solo queda sacar los resultados en un archivo Word, que será el que se le entregue al cliente. Este Word recupera los ensayos y normas de la muestra junto a los resultados, el Word es editable para poder añadir ensayos que no estén implementados en la entrada de resultados y para añadir líneas adicionales. Para esta parte, se ha pedido a los técnicos de laboratorio que nos pasen los informes que usan ellos para baldosas, para hacerlos lo más parecido posible a como lo tienen ellos haciendo solo pequeños cambios si se ven necesario. Para obtener el listado, solo debemos entrar a la entrada de resultados (Ilustración 39, 40 y 41).
50 Ilustración 39:Entrada de resultados.Generar documento. Ilustración 40:Entrada de resultados.Carpeta del documento.
51 Ilustración 41:Informe de baldosas de hormigón generado. 2.3.6. Borrador Los borradores son muy parecidos a los informes, a diferencias de que estos vienen vacíos, son para que los técnicos de laboratorio los puedan imprimir y puedan apuntar los datos obtenidos al hacer el ensayo, para pasarlos después a SAP. Existen dos formas de obtener el borrador, uno con los ensayos agrupados y otro donde están sin agrupar (viene un ensayo por página, esto da la opción de que, si los ensayos lo hacen entre varias personas, cada uno pueda obtener sus hojas). Para los borradores se ha decidido agrupar todos los ensayos en uno, aunque en los borradores solo aparecen los ensayos que tiene la muestra, por lo que solo aparecerá los ensayos que tengan asignados. Los sacarlos borradores, hay que entrar en la transacción ZUCE (gestión de muestras), filtrar la muestra, y en el menú de ‘pasar a’ -> imprimir -> borradores, elegir la opción que queramos (las opciones con resultados no están implementados aun para ningún borrador, para el futuro se piensan añadir) (Ilustración 42, 43, 44 y 45).
52 Ilustración 42:Transacción ZUCE. Ilustración 43: Accediendo a los borradores.
53 Ilustración 44: Borrador de hormigón (sin agrupar).
54 Ilustración 45: Borrador de hormigón (agrupado).
55 3. Implementación y pruebas En este apartado, se va a explicar cómo se ha implementado cada uno de los apartados de la fase de diseño. Antes de empezar se explicarán unas cuantas cosas que son comunes entre varios apartados, para más tarde solo centrarnos en lo importante de cada apartado. 3.1. Diccionario de datos En la transacción SE11 es donde se crean las tablas y vistas en bases de datos, además que también es donde se crean otros elementos como dominios y estructuras. Ilustración 46:SE11. Un dominio es el tipo de datos que va a utilizar una estructura, donde básicamente se indica el tipo de datos (CHAR, DEC, NUMC) y la longitud del campo, en SAP, la mayor longitud que puede tener un campo es de 255 (Ilustración 47). Se puede indicar en la pestaña ámbito de valores si se va a restringir el número de valores posible.
56 Ilustración 47:Dominio. A partir del dominio de datos, este es asignado a un elemento de datos, donde se le da una descripción que sirve para las ayudas por si el usuario no sabe que trata el campo, y es donde se les da un denominador de campo que es el nombre que tendrá ese campo en listados (Ilustración 48).
57 Ilustración 48:Elemento de datos. Y finalmente en la tabla o vista correspondiente es asignado a un campo (Ilustración 49). Ilustración 49:Tabla.
64 Ilustración 56:Grupo de funciones y módulos de funciones. Los módulos de funciones, al ser llamados se hacen con una serie de parámetros, estos se pueden clasificar de la siguiente manera (Ilustración 57): IMPORT: Son los parámetros de entrada de la función, estos no pueden ser modificados en la función. EXPORT: Son los parámetros de salida de la función. CHANGING: Son los parámetros de entrada y salida, que van a sufrir algún cambio en la función (Como una función que añada un registro a una tabla que ya existía anteriormente)
65 Ilustración 57:Llamando a una función 3.4. Entrada de muestras En este programa, que ya estaba hecho, solo había que meter nuevos datos en la pantalla en caso de que nuestro material lo necesitara, en nuestro caso, el informe necesitabas datos como el color de la muestra o el soporte usado en la baldosa que no se recogen en ningún lado (y no son datos específicos de un ensayo), por lo que se decidió añadir estos nuevos campos a la entrada de muestras, para ello, en la tabla ZTLB_MUESTRAS, que es donde se guardan los datos generales de la muestra, añadir los nuevos campos que vamos a necesitar. Un problema que vi al hacer esta parte, es que ahora mismo, independiente de si el campo iba a ser necesario o no para otro tipo de material, se iba a mostrar como campo de entrada. Y si en un futuro se crea demasiados campos va a quedar una Dynpro demasiado grande y confusa para el usuario. Así que se estudió que hacer, si un campo de la entrada de muestras solo es necesario para baldosas, pues que solo se muestre para ese tipo de material, y al señalar otro tipo de material este se oculte de la entrada de muestras. Para esto, se decidió crear un módulo en el PBO del programa que se encargara de mostrar u ocultar campos según el tipo de material (Ilustración 58).
66 Ilustración 58:Módulo ocultar campos. Lo que se ha hecho, es crear una tabla donde se relaciona el tipo de material y el nombre del campo de la Dynpro que le pertenece, entonces se hace un select de la tabla filtrando por el tipo de material, y se hace un loop recorriendo todos los campos que tiene la Dynpro. Si el nombre del campo coincide con alguno de los que hemos encontrado en nuestro select (el READ TABLE que aparece al principio del bucle), si lo encuentra, pues muestra ese campo, si no lo encuentra estamos ante estos dos casos: Que el campo pertenezca a otro tipo de material Que el campo sea común Tanto si estamos en un caso como en otro, ahora mismo no lo podemos saber con certeza, lo que sí sabemos es que si ese campo no aparece para ningún tipo de material es que no es específico de ningún material, y por lo tanto es uno común, por lo que hacemos un segundo select en la tabla, esta vez filtrando por el nombre del campo, si encontramos algún registro en la tabla, debemos ocultar el campo porque pertenece a algún otro tipo de material, si no aparece, es que es un campo común y debe mostrarse (Ilustración 59).
67 Ilustración 59:Entrada de muestra, mostrando y ocultando campos. 3.5. Entrada de resultados En esta parte, como ya se ha dicho, la parte del modelo de datos se hizo de una forma que todas las tablas tuvieran una estructura similar, para facilitar después el mantenimiento de estas, pues para la implementación se ha hecho algo parecido. El programa utilizado ha sido ZLBM_ERGRAL (Ilustración 60), el cual ya contenía las dynpros referentes al material ladrillos, así podíamos reutilizar subrutinas y funciones que nos pudieran hacer falta.
68 Ilustración 60:ZLBM_ERGRAL. En cada Dynpro, se ha seguido un patrón común: PBO: Es donde se inicializan los datos y se encarga de asignar los datos de las tablas a los campos de la pantalla, ya que estos inicialmente están vacíos llamando al módulo encargado de eso, también en algunas pantallas se llama al módulo de ocultar campos de la Dynpro, ya que como se ha dicho en anteriores apartados, hay dynpros que se utilizan para los distintos tipos de baldosas, pero pueden tener campos diferentes y es preferible ocultarlos. PAI: Una vez ocurre una acción iniciada por el usuario, puede ocurrir varias cosas, para empezar, si es un campo de entrada, debe quedar registrada en la tabla y además señalarse que ha sido modificado, para una vez guardemos los datos modificar la tabla de base de datos (Ilustración 61), al final del PAI, en el módulo user_command (Ilustración 62) se llevan a cabo las acciones de los botones de la parte superior de la pantalla, y alguno como el de añadir probetas al ensayo.
69 Ilustración 61:PAI de una dynpro.
70 Ilustración 62:User_command. Para las tareas de inicialización (Ilustración 63), guardar o realizar cálculos se llaman a módulos de funciones que se encargan de realizar estas tareas, como se puede ver en la siguiente imagen, se ha pretendido modularizar lo mejor posible para distinguir las diferentes funciones del programa.
71 Ilustración 63:Inicializar datos dynpro 9020. 3.6. Listado Para el listado, se ha hecho de forma que se puede dividir en tres partes diferenciadas, primero el filtro, después la función que obtiene los parámetros introducidos y llama a la función que obtiene el listado y finalmente se llama a la función que llama al listado. Para empezar, hay que crear una estructura y su correspondiente tipo tabla, con los datos que queremos que salgan en el listado, que son los datos generales de la muestra y los resultados de cada ensayo como medias y resultados, como los tipos de baldosas son muy parecidos, se ha decidido hacer que el listado sirva para todos los tipos de baldosas (lo normal es un listado por tipo de material, en nuestro caso serían los cinco tipos de baldosas), a esta estructura la llamamos ZSLB_BALDOSAS (Ilustración 64).
72 Ilustración 64:ZSLB_BALDOSAS. Para el listado, se ha creado el programa ZLBR_LIST_BALDOSAS (Ilustración 65).
73 Ilustración 65:ZLBR_LIST_BALDOSAS. Como se puede ver, en la cabecera está el TOP, el SEL y el F01. El TOP y el F01 tienen la misma función que la que tienen para dynpros, declarar variables y subrutinas respectivamente. El SEL es donde se crea el filtro que va a tener el programa, en nuestro caso son los mismos filtros que se usan en listados similares, añadiendo el tipo de material porque existen 5 tipos de baldosa (Ilustración 66).
80 Lo siguiente es crear la función (Ilustración 76) que va a obtener los campos que se van a usar en la plantilla, para ello hemos creado una función que se encarga de obtener todos los datos necesarios, esta devuelve tres estructuras, una con los campos principales, otra con las tablas y otra con parámetros generales para obtener el informe (nos centraremos en las dos primeras). Ilustración 76:Función Z_LB_PLANTILLA_BALDOSAS. Primero vamos a crear la estructura ‘ZSLB_BALDOSASINFORME’ (Ilustración 77) con los datos generales de baldosas, estos datos en nuestra función se obtienen llamando a la función del listado de baldosas y asignando los campos. La estructura se incluirá en una más grande llamada ‘ZSLB_DATOS_PLANTILLAS’ (Ilustración 78) donde están incluidas todas las estructuras de todos los informes hechos hasta el momento, que es la que se usa en la función anterior como se puede ver en la captura (aunque nosotros solo vamos a usar nuestra parte y la de los datos de la muestra).
81 Ilustración 77:ZSLB_BALDOSAINFORME.
82 Ilustración 78:ZSLB_DATOS_PLANTILLAS. La otra estructura que vamos a usar es ‘ZTLB_TABLASPLANT’, que ya está creada y es donde se van a introducir los datos que van a ir a tablas (principalmente las probetas de cada ensayo), en esta estructura, almacenaremos los campos que vamos a mostrar después en el Word en registros de tipo CHAR, además del nombre con el que lo vamos a identificar, por ejemplo, las del ensayo de absorción de agua tendrán como nombre ‘ABS’. Para ello, crearemos una función por cada ensayo (Ilustración 79) donde queramos traer una tabla en el Word, hacemos un select a su tabla por el id de la muestra y lo metemos en la nueva estructura.
83 Ilustración 79:Z_LB_GET_ABSAGUAPROB. Ahora, lo que vamos a hacer es entrar en la transacción ‘ZGC_PLANTILLAS’, donde vamos a asignar los datos que hemos recuperados al Word (Ilustración 80).
84 Ilustración 80:Vista de ZGC_PLANTILLAS. Como se ve en la imagen de arriba, las propiedades que hemos creado en la plantilla Word aparecen directamente, por lo que para los campos solo hace falta crear una fórmula que haga un select a la estructura que creamos por el nombre del campo en la estructura, esta fórmula es de tipo 3, que es la que se usa para traer campos individuales (Ilustración 81). Este campo se coloca en la columna origen como se ve en la Ilustración 80. Ilustración 81:Creando una fórmula para campo.
85 Para las tablas es un poco diferente, en la parte de tablas añadimos una nueva fila y en la columna tabla añadimos en que tablas vamos a añadir los datos recuperados en el select, esta parte es un poco confusa ya que hay que hacerlo a ojo ya que no hay ningún indicador y podemos equivocarnos al principio, después para añadir el select, se hace de forma similar a los campos, creamos uno formula, aunque esta vez de tipo 2 (para indicar que es una tabla), y hacemos el select de los campos que hemos indicado en ‘ZTLB_TABLASPLANT’ por el nombre que indicamos en la función donde recuperamos los datos (Ilustración 82). En el campo Cat.Campos hay que escribir la estructura donde se va guardar, llamándose ‘TT_TABLASPLANTX’ donde la X indica el número de columnas de la tabla donde se va a insertar. Ilustración 82:Creando una fórmula para tablas. Una vez terminado, guardamos y ya solo queda generar el informe como se vio en el apartado 2.3.5. 3.8. Borrador Para empezar, vamos a crear la estructura donde se va a almacenar los datos que se van a incluir en el borrador, en el vamos a añadir las mismas estructuras que hemos usado para hacer las pantallas de resultados, con la diferencia que los ensayos que variaban en la pantalla de resultados por el tipo de material, necesita su propia estructura (como en la de dimensiones, aunque todos usan la misma estructura, tendrán su propio campo) (Ilustración 83).
86 Ilustración 83: Estructura ZSLB_BORR_BALDOSAS. Lo siguiente es crear la función (Ilustración 84), donde vamos a obtener los datos para el borrador, como ahora mismo no está implementada la función que trae también los resultados, en las filas el único dato informado es el número de probeta. El número de probeta que va a haber por ensayo irá determinado por el número que pongamos en el bucle de la función del ensayo, el número puesto varía según el número de filas que se han visto en Excel e informes de laboratorio (Ilustración 85).
87 Ilustración 84: Función Z_LB_BORR_BALDOSAS que obtiene los datos
88 Ilustración 85: Función del ensayo de deslizamiento con péndulo. También existe una estructura de configuración, donde vamos a añadir nuestros ensayos, y sirven para decidir si un ensayo se va a mostrar o no en el borrador (en el nuestro, están todos los ensayos de los cinco tipos de baldosas, pero solo queremos mostrar los que tengan la muestra) llamada ZSLB_BORR (Ilustración 86).
89 Ilustración 86: ZSLB_BORR. Para la realización de los borradores se va a hacer uso de los Adobe Forms. La tecnología más reciente para la creación de formularios en SAP, es la solución SAP Interactive Forms by Adobe [6]. Esto permite crear formularios interactivos y formularios de impresión basados en Adobe PDF para optimizar los procesos de impresión de las aplicaciones. El punto interesante en el uso de esta tecnología es su compatibilidad con las personalidades ABAP y JAVA del SAP Netweaver Application Server. Actualmente, el uso de los formularios de impresión basados en PDF, puede reemplazar a los SmartForms, del lado ABAP, además, potenciar a las Web Dynpro, del lado de Java, así como a las Web Dynpro for ABAP en la personalidad ABAP, usando formularios interactivos. Un formulario de Adobe Forms se compone de dos partes, la interfaz (Ilustración 88) y el formulario en sí, en la transacción SFP (Ilustración 87) es donde se llevan la creación de estos formularios.
96 resultados que se han creado, una vez se han realizado las pruebas necesarias el código se ha pasado a integración, donde se hacer una mezcla de pruebas con datos reales y también con datos ficticios, donde finalmente si todo a pasado como debería ser, pues se pasa a producción para que el usuario puede hacer uso de la nueva funcionalidad. En SAP existe lo que se llaman ordenes de transporte, que es lo que se usa para guardar los contenidos como código y contenido de tablas para pasarlo de un entorno a otro, al crear un programa o al modificar un programa que no tenga orden de transporte, SAP te pide automáticamente que lo guardes en una orden de transporte (Ilustración 94) (también está la opción de guardarse en local, lo cual hace que no se cree orden de transporte, sobre todo para programas de prueba en desarrollo), una vez terminas de programar y quieres pasar a integración el código, debes liberar la orden de transporte en la transacción SE10, lo que hace ya puedas pasar el código a los diferentes entornos, y si se vuelve a modificar el código ya pedirá una orden nueva. Una vez liberada la orden (Ilustración 95), hay que entrar en la transacción ‘STMS’ y ahí elegir uno de los tres entornos, aparecerá un listado con todas las ordenes, y ahí buscas la tuya y la pasas a integración (para pasar a producción, necesitas si o si haber pasado la orden primero a integración, sino no saldrá) (Ilustración 96 y 97). Ilustración 94:Creando una nueva orden de transporte.
97 Ilustración 95:Liberando orden de transporte en SE10. Ilustración 96:Eligiendo a que entorno queremos transportar en STMS.
98 Ilustración 97:Eligiendo que orden transportar en STMS. 4.2. Pruebas Para comprobar el correcto funcionamiento de los programas, se han realizado una serie de pruebas: Pruebas con valores reales: Para empezar, si queremos ver si el programa realiza los cálculos correctamente, debemos comprobar si los resultados que nos da coinciden con los calculados en hojas Excel por los técnicos de laboratorio, para ello hemos ido introduciendo uno a uno los ensayos en los que teníamos, si los resultados son los esperados damos esta prueba por buena (Ilustración 98 y 99).
99 Ilustración 98:Prueba con datos reales 1. Ilustración 99:Prueba con datos reales 2. Pruebas con valores extremos: Como en SAP, a los elementos de datos hay que indicarlo el tamaño que debe tener un número decimal, puede ocurrir que al introducir números demasiado grandes de un fallo por overflow, por eso se ha intentado controlar este tipo de fallos (Ilustración 100).
100 Ilustración 100:Prueba con números grandes. Control de errores: Para evitar errores como número negativos o divisiones por cero, en cada ensayo que se ha visto necesario, se ha hecho un control de errores, revisando si falta un dato o evitando resultados imposibles como un % de absorción que supera el 100% (Ilustración 101 y 102). Ilustración 101:Control de errores 1.
101 Ilustración 102:Control de errores 2.
102
103 5. Conclusiones En este apartado se hará un repaso general de cómo ha ido el proyecto conforme pasaba el tiempo y como se ha ido afrontando los problemas que han podido ir surgiendo. Para empezar, uno de los problemas más graves que han podido ocurrir es la falta de comunicación entre el departamento de desarrollo y los técnicos de laboratorio, como ellos están todo el día ocupados, era difícil poder quedar un día o que ellos pudieron contestar las preguntas que pudieran surgir en el foro, lo que podía provocar que hubiera retrasos en las tareas y que se tomaran tomas de decisiones que pudieran ser erróneas, como es el caso de los redondeos de algunos cálculos por no disponer de la norma o no disponer de ningún ejemplo, esto hace ver lo importante que es la comunicación entre departamentos, donde si se hace una buena toma de requisitos puede ayudar bastante a avanzar en el proyecto. Otro problema que ha ocurrido es la falta de tiempo para intentar hacer todo lo que se pretendía desde un principio, por la cantidad de ensayos que hay (hay que recordar que son cinco tipos de materiales, aunque hayamos tratado a baldosa como uno solo) y las mínimas diferencias que podía haber entre ensayos parecidos podía provocar un atraso al realizar las pantallas (en la de dimensiones es donde se vio de verdad esto, y es cuando se empezó a agilizar cuando nos encontrábamos este tipo de problemas). La parte del diseño de la base de datos fue de la que menos tiempo tomó, en el sentido de que ya existían pantallas de cálculo para otros tipos de materiales, y podía basarme en ellos para poder hacer el mío propio, solo hubo que hacer pequeñas modificaciones cuando hubo que tener en cuenta la precisión de los equipos de laboratorio con los de la norma. A destacar que siempre he tenido la ayuda de los demás compañeros de desarrollo para cualquier duda que podía surgir, por lo que en ese sentido estoy muy satisfecho, ya que apenas se ha perdido tiempo en dudas de no saber cómo implementar parte de los requisitos en el código (también es que llevo con SAP desde octubre del 2015, por lo que ya llevaba bastante experiencia en ese sentido). Como mi contrato es de 5 horas al día en Cemosa y poder quedarme más tiempo de la cuenta podía acarrear consecuencias (inspecciones de trabajo), se me permitió poder conectarme mediante una VPN a Cemosa para poder seguir trabajando y poder realizar las capturas necesarias para esta memoria si me hacía falta.
104 En conclusión, este Trabajo de Fin de grado me ha permitido tener una experiencia cercana a lo que sería un proyecto real, con su toma de requisitos, su fase de diseño, los retrasos que siempre suele haber, lo que ha sido una experiencia muy enriquecedora, en un gran ambiente de trabajo donde las tareas que se suelen realizar suelen ser más pequeñas como resolver incidencias de usuarios, o ampliaciones de módulos, y este trabajo me ha permitido hacer algo grande y vivir una experiencia prácticamente de proyecto.
105 6. Bibliografía 1. ERP;https://es.wikipedia.org/wiki/Sistema_de_planificaci%C3%B3n_de_rec ursos_empresariales 2. SAP NetWeaver; http://scn.sap.com/community/netweaver 3. ABAP IV; http://www.abap.es/ 4. Normas UNE; http://www.aenor.es/aenor/inicio/home/home.asp 5. ModulPool; http://www.abap.es/Descargas/Manual%20Modul-Pool%20.pdf 6. Adobe Forms: http://saptechnical.com/Tutorials/AdobeForms/ 7. Construmática; (aclaración de normas sobre todo) http://www.construmatica.com/ 8. Manuales de Seidor; (proporcionados por la empresa) 9. Normas UNE; (proporcionadas por la empresa) 10. Jesús Gómez Tenedor (2011); Desarrollo en SAP de aplicaciones para laboratorio de control de calidad en materiales; Proyecto fin de carrera, Universidad de Málaga 11. Documentación de la intranet en Cemosa