Modelos importación/exportación

Esta función permite definir los formatos de los ficheros utilizados en las funciones de importación y exportación para integrar o extraer los datos en la base del sistema.

Un fichero que se puede utilizar en el módulo de importación y que se puede generar en el módulo de exportación es un fichero con una de las siguientes estructuras:

  • fichero plano con campos de longitud fija
  • fichero plano con separadores entre los campos y registros
  • fichero XML

El módulo de importación/exportación utiliza el concepto de objeto para permitir la actualización de los datos en la base. Un objeto es un conjunto de tablas y pantallas que también incluye las acciones estándar asociadas a los campos y a la actualización. Esto garantiza la ejecución de todas las acciones y todos los controles necesarios para actualizar la base, ya que una sola descripción del objeto permite generar el código de una actualización en línea y de una actualización por importación.

Si un objeto solo actualiza una tabla, el modelo de importación define la lista de campos de la tabla que hay que integrar, teniendo en cuenta que un bloque de datos del fichero de importación o exportación contiene los datos de un registro. Si el objeto actualiza varias tablas (la cabecera y las líneas, por ejemplo), se encontrarán varios bloques de datos para una instancia del objeto que se va a integrar (un bloque que define la cabecera y N bloques, uno por línea).

También se puede importar una tabla sin tener que asociarla a una noción de objeto. Para esto, deja el campo del objeto en blanco e indica la tabla y los campos relacionados en la tabla de la segunda sección. La importación se lleva a cabo sin realizar ningún control, aparte de los que proceden de los formatos asociados a los tipos de datos de los campos de la tabla.

Requisitos previos

Consulta la documentación de Puesta en marcha.

Gestión de pantalla

Cabecera

Un modelo de importación/exportación se identifica por un código alfanumérico. Además del título, puedes definir las características técnicas del modelo en dos secciones.

Pestaña de cabecera

Esta sección define las características generales del modelo:

  • los datos que se van a exportar
  • la estructura general del fichero (formato, código, definición de grupos de datos)
  • parámetros complementarios

Pestaña de campos

En esta tabla se definen los campos que se van a importar. Se organizan en grupos identificados mediante la columna Código, en la que consta uno de los códigos definidos en la tabla de los indicadores de la primera sección. El campo se puede quedar en blanco si no se ha definido ninguna tabla.

Esta sección contiene la tabla que define la estructura detallada de los grupos existentes en la primera sección. Notas:

  • No es obligatorio definir los campos en todos los grupos. Algunos grupos son meramente técnicos y se utilizan para definir los vínculos. Por ejemplo, para importar los campos de la cabecera Pedido y Cliente pagador en un mismo grupo de datos, debes definir dos grupos: el primero para los pedidos y el segundo para el cliente (con el vínculo correspondiente). Por el contrario, la sección de los campos solo debe contener las líneas asociadas al segundo grupo. Estas líneas pueden incluir datos extraídos del cliente y de la cabecera del pedido.
  • En cada grupo, hay que definir la posición del separador de grupo cuando se trata de un modelo que se puede utilizar en importación y que contiene varios grupos.
  • Los bloques se deben ordenar de forma secuencial. Cuando hay un bloque de nivel inferior, este debe ser idéntico al bloque al que está vinculado.

Informes

Los siguientes informes están asociados por defecto a la función:

  • PRTSCR: Impresión pantalla

Se puede modificar con una parametrización diferente.

Botones específicos

Barra de menú

Opciones > Export. esquema de un modelo

Esta función, a la que se puede acceder cuando el formato de exportación es XML, se utiliza para crear un fichero XSD que describa la estructura del fichero creada por el modelo. El fichero se crea en el subdirectorio que sigue al directorio en el que se crean los dossieres, en el servidor de aplicación:

  • X3_PUB/FOLDER/GEN/ALL/WEBS (FOLDER es el nombre del dossier actual)
  • El nombre del fichero es WWIMPTEMPLATE.xsd (TEMPLATE es el nombre del modelo).

El fichero XSD permite definir el formato de los datos para realizar una comprobación preliminar de la validez de la sintaxis mediante herramientas ETL. La sintaxis obtenida incluye, además de las cabeceras estándar, líneas de los siguientes tipos:

  • Líneas que describen grupos y líneas. En el siguiente ejemplo se muestran un modelo ADI y los campos CODE y NUMTAB con las etiquetas ADI_CODE y ADI_NUMTAB):
<xs:complexType name="ADI">
<xs:sequence>
<xs:element name="ADI_NUMTAB" type="ADI_NUMTAB" minOccurs="1" maxOccurs="1"/><xs:element name="ADI_CODE" type="ADI_CODE" minOccurs="0" maxOccurs="1"/>...
</xs:sequence>
</xs:complexType>
  • Líneas que describen tipos de datos:
<xs:simpleType name="ADI_NUMTAB">
<xs:restriction base="xs:int">
<xs:minExclusive value="-32768"/><xs:maxExclusive value="32767"/>
</xs:restriction>
</xs:simpleType><xs:simpleType name="ADI_CODE">
<xs:restriction base="xs:string"/>
<xs:maxLength value="5"/><xs:pattern value="{[A-Z]}*"/>
</xs:restriction>
</xs:simpleType>

Estos ejemplos corresponden a campos numéricos y, luego, alfabéticos. Observaciones sobre la gestión de la sintaxis:

  • Cada nombre de campo (aquí, ADI_CODE y ADI_NUMTAB) corresponde al contenido de la columna tag del modelo.
  • La cabecera del modelo procede de la columna pattern del modelo (aquí, la sintaxis propuesta corresponde a cualquier número de caracteres alfabéticos en mayúscula).
  • Las cabeceras minOccurs y maxOccurs se introducen teniendo en cuenta la columna mandatory del modelo.
  • Los tipos de datos, que pueden ser xs:string, xs:int, xs:decimal, xs:date, xs:base64Binary o xs:boolean, proceden de los datos de X3 correspondientes, al igual que las cabeceras maxLength, maxExclusive, minExclusive, maxInclusive y minInclusive, según el caso.

Documentación > Párrafos

Este elemento de menú permite acceder a la gestión de la documentación; más concretamente, al primer párrafo de la documentación, si existe, asociada a la ficha actual.

Documentación > Vínculos

Este elemento de menú permite acceder a la gestión de los vínculos. Se utiliza para definir los vínculos entre esta y otras fichas; por ejemplo, entre funciones y parámetros. Estos vínculos son específicos de la documentación y se utilizan para cargar la generación de las estructuras.

Documentación > Generación

Este elemento de menú lanza la generación de la documentación. También se puede lanzar mediante el botón Generación en la parte inferior de la pantalla.

Puedes lanzar tres tipos de generación a la vez o individualmente:

  • estructura de la documentación desde el diccionario (tablas ADOCUMENT, ADOCBLB y ADOCCLB)
  • documentación de las tablas anteriores
  • documentación de los campos

El rango propuesto por defecto tiene en cuenta la ficha actual, pero se puede modificar en el lanzamiento.

Mensajes de error

Además de los mensajes genéricos, se pueden mostrar los siguientes mensajes de error durante la entrada:

Importación imposible en este objeto

El objeto no se ha definido para la importación. La casilla Import. no está marcada en la pestaña Varios.

El código ya existe en línea nnn

El código ya se ha introducido con otros grupos.

ZZZ Campo inexistente (XXXXXX, YYYYY, ... )

Este mensaje aparece cuando en la tabla del grupo se ha expresado un vínculo con un campo ZZZ que no está referenciado en ninguna tabla (XXXXX, YYYYY, ...) definida en líneas anteriores.

Separador (/) no registrado en los campos Prohibido en un modelo de importación

En la tabla de campos no hay ninguna línea con el identificador del grupo G (sintaxis /).

Vínculo imposible. Prohibido en un modelo de importación

En las líneas que describen los campos se ha intentado añadir un campo procedente de una tabla que no está vinculada a la tabla principal del grupo.

Longitud incorrecta nnn<>mmm

La longitud definida por el formato numérico (mmm) es diferente de la del campo definido en la columna anterior (nnn).

En la ruta del fichero que se define por defecto en el modelo no se controla la existencia del directorio, ya que puede no existir todavía. El control solo se realiza cuando se lanza la importación o la exportación.

Tablas utilizadas

Consulta la documentación de Puesta en marcha.

Recomendaciones de implementación

Principios básicos

Ten en cuenta los siguientes principios cuando parametrices un modelo de importación:

  • La importación permite acciones de creación y modificación.
  • Para determinar la acción por realizar en el registro importado, el sistema controla la existencia del objeto por procesar cargando la clave principal del objeto con la información en el registro importado.
  • Si la clave principal no está parametrizada, los registros cambian al modo creación. Estos solo funcionarán si la clave del objeto por crear se puede asignar automáticamente. Por ejemplo, con un contador.
  • Una importación corresponde a una simulación de entrada en todas las pantallas vinculadas al objeto importado.
  • Los campos de la pantalla se procesan con los mismos controles que una entrada interactiva.
  • Los campos que no se pueden introducir no se tienen en cuenta, salvo en casos particulares. Por lo tanto, esos campos no se importan.
  • El orden en el que se parametrizan los campos del fichero es irrelevante. Primero, se cargan todos los campos y, luego, se importan en el orden en el que se muestran en las pantallas.

Modelos estándar proporcionados

Los datos siempre se pueden exportar, independientemente del objeto. No obstante, no ocurre lo mismo con las importaciones. Los mecanismos automáticos para descodificar los flujos de datos y la llamada a las condiciones vinculadas al objeto automatizan la importación, pero esto no es suficiente para importar objetos complejos automáticamente. Por lo tanto, no todos los objetos se pueden importar.

En el dossier de referencia, se proporciona un modelo de importación editable para cada objeto importable. La importación también puede estar vinculada a funcionalidades específicas. Esta información se encuentra en la ayuda en línea asociada a los modelos de importación que contienen casos específicos. Puedes acceder a ella seleccionando Alt + F1 cuando se carga el modelo.

Para consultar la lista de la ayuda correspondiente, ordenada por módulo, haz clic aquí.

Tabla de indicadores

La estructura de los ficheros por importar o exportar depende de las opciones de extracción o integración del software externo.

Debes organizar los datos en grupos de líneas lógicos, que pueden ser o no de distintos tipos (cabecera, detalle, subdetalle, etc.). Puedes definir la organización de estos grupos en la tabla de identificadores, en la primera pestaña del modelo.

Cada grupo está asociado a una tabla de la base de datos: la primera es la tabla principal del objeto y las demás se definen con los vínculos de las tablas anteriores. Al utilizar un modelo de exportación, puedes definir los vínculos con cualquier tabla de la base de datos en la que exista un vínculo teórico para extraer los datos vinculados. No obstante, con un modelo de importación, solo puedes utilizar las tablas actualizadas con el objeto. Por ejemplo, no puedes importar el pedido y el cliente de forma simultánea. El objeto del pedido no se ha diseñado de esa manera.

Esta tabla puede estar en blanco si la estructura de datos por importar o exportar está basada únicamente en la tabla principal. En este caso, la columna Código de la página siguiente permanece en blanco. No tienes que crear varios grupos de datos para exportar simultáneamente varias tablas vinculadas. Si hay campos extraídos de varias tablas que se muestran en un solo grupo de datos, el proceso de exportación intenta resolver los vínculos entre las tablas mediante la estructura de vínculos descrita en el diccionario. Esto significa que solo hay un vínculo posible de la tabla principal del grupo a la tabla descrita. De lo contrario, se utiliza el primer vínculo encontrado, aunque no sea el correcto.

Si el modelo se define con una longitud fija, tienes que crear al menos un grupo y definir la longitud del registro desde algún lugar de la tabla de grupos. Si el indicador del grupo no es obligatorio en la lista de campos, basta con definir un código en blanco para el grupo. En este caso, solo se puede definir un grupo y ya no habrá que introducir la columna Código en la pestaña siguiente.

La tabla de identificadores solo está disponible si el objeto es de un único tipo. Si se definen indicadores del grupo, cada uno se asocia a un nivel, a una tabla y a las condiciones que permiten crear vínculos entre ellos.

La tabla principal se define con el valor 1 para una importación o una exportación. Esta no se introduce en la tabla, pero se deduce del objeto asociado al modelo.

El nivel de una tabla vinculada a otra anterior es el de la tabla anterior, en el caso de un vínculo directo entre ambas, o uno superior, en el caso de que haya varios registros vinculados al registro de la tabla anterior. El vínculo se caracteriza por la clave de la tabla de destino por leer y por la expresión del segmento de la clave cuyo valor define las líneas vinculadas.

Si defines los grupos como en este ejemplo:

Nivel

Grupo

1

A

2

B

2

C

3

D

Obtendrás esta información superpuesta:

Grupo A registro 1

Grupo B registro 1,1

Grupo B registro 1,2

...

Grupo B registro 1,N

Grupo C registro 1,1

Grupo D registro 1,1,1

Grupo D registro 1,1,2

...

Grupo D registro 1,1,M

Grupo C registro 1,2

Grupo D registro 1,2,1

...

Grupo C registro 1,Q

Grupo D registro 1,Q,1

...

Grupo D registro 1,Q,R

Grupo A registro 2

Grupo B registro 2,1

...

Ejemplo de grupo

Para explicar la parametrización, los siguientes ejemplos contienen un modelo de exportación con sociedades y plantas:

  • La tabla principal COMPANY es de nivel 1.
  • En este ejemplo, la información de la divisa contable (campo ACCCUR) es obligatoria en el fichero exportado. En este caso, no es necesario definir un grupo nuevo vinculado a la tabla principal. Basta con definir los campos de la tabla TABCUR en el grupo. A continuación, el proceso de exportación buscará el vínculo entre las tablas COMPANY y TABCUR en el diccionario. Al haber varios vínculos, se utilizará el primero. En este caso, es el correcto.
  • Si hubieras querido exportar la información de la divisa del capital de stock de la sociedad (campo RGCCUR), tendrías que haber creado un segundo bloque de datos. También habría sido de nivel 1 según la tabla TABCUR. En la columna del vínculo se mostraría RGCCUR. También tendrías que haber hecho esto si el vínculo no fuera explícito. Por ejemplo, si en el campo CREUSR, que corresponde al código del usuario que ha creado el registro, se utiliza un tipo genérico (A) que no permite los vínculos automáticos. Si se tuviera que mostrar la información del usuario que ha creado el registro, tendrías que haber definido el vínculo con un grupo.
  • Si se tiene que mostrar la lista de plantas vinculadas a la sociedad, se crea un grupo de nivel 2 desde la tabla FACILITY con un vínculo basado en el índice FCY, con el campo CPY de la tabla principal.
  • Si se tienen que extraer los valores de parametrización de cada sociedad, se crea un segundo grupo de nivel 2 desde la tabla ADOVAL. Este segundo grupo tendría un vínculo basado en el índice ADW0, con el valor del campo CPY de la tabla principal.

En la siguiente tabla se muestran los identificadores que habría que introducir:

Nivel

Código

Tabla

Clave

Vínculo

Comentarios

1

CPY

COMPANY

CPY0

Registro de grupo principal

1

CUR

TABCUR

TCU0

[CPY]RGCCUR

1 registro vinculado

2

FCY

FACILITY

FCY1

[CPY]CPY

N registros vinculados

2

ADP

ADOVAL

ADW0

[CPY]CPY

M registros vinculados

Formatos de ficheros

Los formatos de los ficheros vienen determinados por el tipo. Pueden ser:

Separadores de campos (formato 1 ASCII)

Este es un campo de longitud variable donde todos los campos están separados por un separador (el campo del separador es SC).

Campo 1 registro 1

SC

Campo 2 registro 1

SC

...

Campo N registro 1

SC

Campo 1 registro 2

SC

Campo 2 registro 2

SC

...

Campo N registro 2

SC

Separadores de registros (formato 2 ASCII)

Este es un fichero de longitud variable donde todos los campos están separados por un separador (el separador de campo). Una vez que el registro está completo, el separador de campo se sustituye por otro; el separador de línea SL).

Campo 1 registro 1

SC

Campo 2 registro 1

SC

...

Campo N registro 1

SL

Campo 1 registro 2

SC

Campo 2 registro 2

SC

...

Campo N registro 2

SL

Formato delimitado

Este es un fichero de longitudes variables del mismo tipo que el fichero del separador de registro (dos separadores distintos). Además, los campos de cadenas se encuentran en un delimitador de campos (DC). En el siguiente ejemplo, el segundo campo es alfanumérico.

Campo 1 registro 1

SC

DC

Campo 2 registro 1

DC

SC

...

Campo N registro 1

SL

Campo 1 registro 2

SC

DC

Campo 2 registro 2

DC

SC

...

Campo N registro 2

SL

Formato de longitud fija

Este es un fichero donde los campos se definen con una longitud fija y sin separador de campos. Tienes que definir la longitud total del registro. Puede haber un separador de líneas. En ese caso, no definas su longitud en la longitud del registro.

También puedes definir la longitud de cada grupo cuando se hayan parametrizado bloques de datos en la tabla de indicadores.

Campo 1 registro 1

<------Campo 2 registro 1------>

...

<--Campo N registro 1-->

SL

Campo 1 registro 2

<------Campo 2 registro 2------>

...

<--Campo N registro 2-->

SL

Formato XML

Este es un formato donde los datos se definen en etiquetas XML.

En una exportación, este fichero contiene información sobre el modelo y sobre la extracción. También puedes utilizar el menú Opciones > Export. esquema de un modelo para exportar un fichero XSD que describa la estructura del fichero creada por el modelo.

En una importación, los datos son menos importantes; se pueden limitar en el fichero por importar.

Formato plano

Este formato es el separador de registros variable o, si se ha introducido el campo Delimitador de campo, el formato delimitado.

Si en el modelo se han definido varios niveles, solo se genera una línea.

Nivel 1

Campo 1 registro 1

SC

DC

Campo 2 registro 1

DC

SC

...

Nivel 2

Campo 1 registro 2

SC

DC

Campo 2 registro 2

SL

En una importación, el uso de este tipo de formato implica la agrupación de todas las líneas de detalle de un nivel específico en la misma cabecera si los campos de dicha cabecera son idénticos.

Formato con cabecera

Este es el formato plano con una línea de cabecera adicional correspondiente a los títulos de los campos del modelo.

Este formato se utiliza, por ejemplo, en Alemania para los ficheros GDPDU.

Anexos técnicos

Para más información, consulta los siguientes anexos técnicos: