Crear tablas transparentes y estructuras

domingo, 22 de mayo de 2011

database 2

En un post anterior mostraba un detalle de tablas de diccionario estándar en SAP.

Hoy toca hablar de los pasos que hay que seguir si queremos guardar información en la base de datos de SAP. Sea cual sea el tipo de base de datos que utilice nuestro ERP (Oracle, SQL, MaxDB…) la forma en que podemos crear tablas en el diccionario de SAP es el mismo. Pero también hablaré de cómo crear otro objeto del diccionario, las estructuras de datos ya que los pasos a realizar son muy similares.


Definiciones

  • Estructuras: es un conjunto de definiciones de campos almacenado en el diccionario de SAP. Una estructura nunca podrá “llenarse” con ningún registro de información asociada en la base de datos. Su uso se sitúa solamente dentro de la programación ABAP.
  • Tabla tranparente: al igual que una estructura, una tabla transparente también corresponde a un conjunto definido de campos estructurados almacenada en el diccionario de SAP. La diferencia es que una tabla transparente puede ser “llenada” con información. De hecho, una tabla en general es la unidad mínima necesario para introducir información en nuestra base de datos.
Existen otros tipos de tablas como cluster o pool. Sin embargo, no trataré de ellas en este artículo. Podéis encontrar más información acerca de este tipo de tablas en el siguiente link.

Elementos comunes a la creación de tablas transparentes y estructuras

Previo a crear una tabla o estructura hay que definir los campos que contendrán éstas. Cada campo de una tabla o estructura ha de tener una descripción y una definición del tipo de información que contendrá. En SAP esto se consigue mediante dos objetos del diccionario llamados dominio y elemento de datos.
  • Dominio: el dominio se define como el rango de valores que puede tener un campo. Es decir, el tamaño máximo que puede tener un campo (desde 0 caracteres o números hasta lo que se nos ocurra) y el tipo de información que podrá albergar (caracteres, números enteros, números decimales, etc.). Por ejemplo, creemos aquí el dominio para el campo ‘código’.
Herramientas / Workbench ABAP / Desarrollo / SE11 – Dictionary ABAP / Dominio
    • Marcamos la opción ‘dominio’, lo llamaremos ‘ZD_CODIGO’. Presionamos ‘Crear’.
    • Damos una descripción al dominio.
    • Escogemos un tipo de datos. En este caso sólo aceptará datos numéricos así que voy a marcar la opción ‘NUMC’ que es un tipo de datos que sólo acepta números enteros. Así evitaremos que el usuario se pueda equivocar y entre letras en el campo. SAP validará que el tipo de información es numérica y no dejará grabar si no lo es.
    • Aceptaremos hasta 9999 contactos. Por lo tanto, la cantidad de posiciones será de 4.
    • La longitud de salidad también será de 4. Es decir, lo que veremos en la tabla será lo mismo que entremos en el registro.
    • En la pestaña ‘Ambito val’ podemos definir los valores fijos que puede tomar el campo. En este caso, lo dejamos vacío. Pero si por ejemplo el campo sólo pudiese tomar dos valores como ‘verdadero’ o ‘falso’, entonces lo podríamos indicar aquí y SAP al entrar la información luego en la tabla no nos dejaría entrar ningún otro valor que no fuese verdadero o falso. No es nuestro caso.
    • Grabamos. Damos una orden de transporte. Activamos.

      Dominio
  • Elemento de datos: el elemento de datos contiene la suma del dominio y la descripción del campo.
Herramientas / Workbench ABAP / Desarrollo / SE11 – Dictionary ABAP / Tipo datos / Elem. datos
    • Marcamos la opción ‘tipo de datos’. Escribimos el codigo del elemento de datos. Pulsamos ‘crear’.
    • Nos muestra un desplegable con tres opciones. Seleccionamos la opción ‘elemento de datos’.
    • De nuevo damos una descripción y escribimos el dominio que hemos creado anteriormente. Otra opción es utilizar el botón ‘tipo instalado’. Con esta opción no utilizaríamos ningún elemento de datos, sino que asignamos el tipo de datos y su longitud directamente en el elemento de datos. No es nuestro caso.
    • En la pestaña de ‘denominación de campo’ escribimos cuatro descripciones adicionales. Serán las que aparecerán en el encabezado de la tabla según el tamaño del campo.
    • Grabamos, guardamos y activamos.

      Elemento de datos

      Denominación de campo

Tabla transparente

Una vez creados dominios y elementos de datos podemos empezar a crear nuestra tabla que servirá de contenedor de información dentro de la base de datos SAP.

Herramientas / Workbench ABAP / Desarrollo / SE11 – Dictionary ABAP / Tabla base de datos

Al presionar el boton ‘Crear’ nos pedirá una decripción y un tipo de clase de entrega. Nuestra tabla almacenará información así que la definimos como ‘A’ (tabla de aplicación). También permitiremos que se puedan añadir registros directamente así que marcaremos la opción ‘X Visualización/actualización permitida’.


Actualización permitida
  • Añadimos los nombres de cada campo.
  • A cada campo asignamos su elemento de datos si lo tenemos.
    • En el caso del código tenemos el elemento ‘ZE_CODIGO’ y se lo asignamos.
    • En el caso del nombre no lo tenemos, pero vamos a utilizar alguno de los que existen en SAP de forma estándar. Buscamos a través del matchcode un elemento de datos estandar de tipo carácter y tamaño 40

      Elemento datos estándar
       
    • En el caso de dirección y teléfono no utilizaremos ningún elemento de datos. Asignaremos el tipo de datos, longitud y descripción directamente en la tabla. Para eso pulsamos el botón ‘Tipo instalados’ y escribimos la información directamente.

      Tipos instalados
  • Determino cuáles son los campos clave, es decir, aquellos que determinarán un registro como único en la tabla. En esta tabla esos campos son el campo ‘mandante’ y el campo ‘código’. Esto significa que el código de cada contacto es unívoco y no pueden aparecer dos registros con el mismo código dentro de la base de datos. El campo mandante es necesario siempre en todas las tablas transparentes para indicar que la información contenida en una tabla transparente será diferente según el mandante en el cual nos encontremos. Para eso marco la columna ‘Clv’ de estos campos.
  • Actualizamos las opciones técnicas: en Pasar a / Opciones técnicas indicamos la clase de datos que informaremos a nuestra tabla. En el ejemplo, los datos que incluirá serán información de datos maestros (APPL0). El tamaño será el mímo posible (0 – de 0 a 3300), seguro que no incluiré más registros. El resto de información de esta pantalla la mantengo tal cual.

    Opciones técnicas
  • Actualizamos la categoría de ampliación: si en el futuro queremos ampliar la estructura de la tabla debemos decidir cómo la vamos a ampliar. En el ejemplo, seleccionamos ‘ampliable de cualquier manera’. La propia ayuda de la opción nos puede guiar sobre cómo hacer esto. Menú Detalles / Categoría de ampliación.
  • Grabamos y activamos.

Estructura

Básicamente lo que debemos hacer es exactamente lo mismo que hacemos al crear una tabla transparente. Sin embargo, el camino del menú será diferente.

Herramientas / Workbench ABAP / Desarrollo / SE11 – Dictionary ABAP / Tipo datos / Estructura

Directamente debemos añadir los campos con su tipología (columna tipo componente) sin asignar ningún tipo de clase de entrega. No es necesario añadir el campo ‘mandante’.

Añadir información a una tabla transparente

Para dotar de contenido una tabla podemos utilizar diversas alternativas directas si hemos marcado la opción de ‘browser de datos/actual.vista de tabla’ de la pestaña ‘Entrega y actualización’ como ‘X’
  • A través del explorador de datos de tablas.
Herramientas / Workbench ABAP / Resumen / SE16 – Browser de datos / Tabla / Registrar entradas


Registrar entradas
  • A través del browser de visualización general de tabla: mediante la transacción SE16N
    • Botón ejecutar.
    • Botón añadir líneas.
    • Botón grabar.

      Botón añadir líneas
  • Creando una vista de tablas y utilizar esta vista para añadir registros. En otro artículo comentaré con más detalle cómo utilizar esta interesante opción.
Herramientas / Workbench ABAP / Desarrollo / SE11 – Dictionary ABAP / Utilidades / Generador actualiz.tablas

También podemos utilizar código ABAP. Utilizando sentencias de SQL como UPDATE, MODIFY o INSERT dentro de nuestro programa podemos ir añadiendo registros a la tabla que hayamos creado. En este caso no es necesario haber marcado la opción de ‘browser de datos/actual.vista de tabla’ de la pestaña ‘Entrega y actualización’ como ‘X’.

Visualizar la información almacenada en una tabla transparente

De nuevo hay dos opciones:
  • A través del explorador de datos de tablas.
Herramientas / Workbench ABAP / Resumen / SE16 – Browser de datos
  • A través del nuevo browser de visualización en la transacción SE16N.

    Browser SE16N
Podéis encontrar información muy completa sobre el diccionario ABAP y cómo crear tablas y estructuras en el siguiente link.

Imagen inicial | Tim Morgan

5 comentarios:

  1. COMO PUEDO CREAR UNA TABLA y CAMPO MEDIANTE DESDE EL VB. AL SAP. TENIENDO MIS TXT CON SUS CAMPOS

    CON ESTA FUNCIONES

    - CUFD
    - BoFieldTypes Enumeration
    - SubType Property

    ResponderEliminar
  2. Como leer desde SQL (oracle11g) una tabla tipo cluster?

    ResponderEliminar
    Respuestas
    1. No conozco de Oracle pero imagino que puedes leer de cada una de las tablas que forman el cluster (en lugar del cluster directamente). He visto también este enlace en la scn también que te puede servir http://scn.sap.com/message/8733247

      Eliminar
  3. Excelente aporte Oscar.
    Sólo quería agradecerte, y mencionarte que te he nombrado como referente del tema en este debate sobre Tipos de Tablas en SAP. ;)

    Abrazo

    ResponderEliminar
  4. Excelente aporte hermano. Mil gracias

    ResponderEliminar