Paramétrage > Exploitation > Imports/Exports > Modèles import/export 

Cette fonction définit les formats de fichiers utilisés par les fonctions d'import et d'export pour intégrer ou d'extraire des données de la base du progiciel.

Un fichier utilisable par le module import et généré par le module export est à la base un fichier avec une structure de l'un des types suivants :

  • fichier plat avec champs en longueur fixe,
  • fichier plat avec séparateur entre les champs (et enregistrements),
  • fichier XML.

Le module d'import / export utilise la notion d'objet pour permettre la mise à jour de données dans la base. Un objet est un ensemble de tables et d'écrans, qui inclut également les actions standard associées aux champs et à la mise à jour. De plus, on garantit ainsi que l'ensemble des contrôles et des actions nécessaires lors de la mise à jour de la base sont effectués, puisque une seule description de l'objet permet à la fois de générer le code relatif à une mise à jour en conversationnel et la mise à jour par import.

Lorsqu'un objet ne met à jour qu'une seule table, le modèle d'import décrit la liste des champs de la table à intégrer, sachant qu'un bloc de données du fichier à importer ou exporter contient les données d'un enregistrement. Lorsque plusieurs tables sont mises à jour par un objet (par exemple, l'en-tête et les lignes), on retrouvera plusieurs blocs de données pour une instance de l'objet à intégrer (par exemple, un bloc définissant l'en-tête et N blocs, un pour chaque ligne).

Il est également possible d'importer une table sans l'associer à une notion d'objet. Pour cela, le champ objet doit rester vide et vous devez uniquement indiquer la table et les champs concernés dans le tableau de la seconde section. L'import se fait alors sans aucun autre contrôle que ceux induits par les formats associés aux types de données des champs de la table.

Prérequis

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre

Gestion de l'écran

En-tête

Présentation

Un modèle d'import / export s'identifie par un code alphanumérique. En plus de l'intitulé, vous pouvez définir, sur deux sections, les caractéristiques techniques du modèle.

 

Champs

Les champs suivants sont présents dans cet onglet :

Ce code identifie le modèle d'import / export.

  • Intitulé (champ INTIT)

Permet de définir un intitulé associé à chaque fiche.

  • Actif (champ ENAFLG)

Sélectionnez cette case à cocher pour activer la fiche courante.

Les enregistrements non sélectionnés conservent leur contenu et paramétrage, mais ne pourront pas être utilisés en rappelant leur code dans :

  • les autres enregistrements, comme les documents et paramètres,
  • les traitements en masse.

Les habilitations sur une fonction donnée peuvent interdire la création d'une fiche active. Dans ce cas, la case est désactivée par défaut. Elle est modifiable uniquement par un utilisateur autorisé, ou via un Workflow de signature.

  • Verrou de pré-réglage (champ AFACTORYOW)

Ce champ indique le nom du propriétaire du modèle d'import ou export.

Si le propriétaire est SAGE, vous ne pouvez pas modifier les données à l'écran.

 

Onglet En-tête

Présentation

Cette section définit les caractéristiques générales du modèle :

  • les données à exporter,
  • la structure générale du fichier (format, codage, définition de groupes de données),
  • des paramètres complémentaires.

 

Champs

Les champs suivants sont présents dans cet onglet :

Général

Ce champ définit le code de l'objet à importer ou exporter. Ce champ est optionnel pour les exports. Le bloc d'identification affiche le nom de la table principale à exporter.

Ce champ initialise le contexte et vérifie les droits d'accès. Il est utile lorsque le même objet est utilisé par plusieurs fonctions. En effet, les utilisateurs doivent avoir les droits d'accès idoines à la fonction pour pouvoir se servir du modèle.

Ce champ est obligatoire.

  • Module (champ MODULE)

Sélectionnez un module pour le paramétrage.

Ce champ vous permet de renseigner si l'écran doit être créé dans la base de données du dossier. Il l'est si le module auquel l'écran est rattaché est actif pour le dossier.

Un code activité vous permet de :

  • rendre optionnel un élément du dictionnaire si la valeur associée au code activité est nulle,
  • signer les éléments spécifiques dès lors qu'ils sont marqués par un code commençant par X, Y ou Z,
  • dimensionner un nombre de lignes maximum lorsque le code activité marque des éléments d'un tableau,

Si le code activité est désactivé :

  • l'élément marqué n'est pas utilisable,
  • le code associé n'est pas généré ou activé.

Ce code d'accès permet d'interdire l'accès à la fiche courante pour certains utilisateurs.

Si le champ est alimenté, seuls les utilisateurs qui ont des droits de lecture sur ce code d'accès peuvent visualiser l'enregistrement ; et seuls les utilisateurs avec des droits d'écriture peuvent le modifier.

Ce code d'accès permet d'interdire l'accès à la fiche courante pour certains utilisateurs.

Si le champ est alimenté, seuls les utilisateurs qui ont des droits de lecture sur ce code d'accès peuvent visualiser l'enregistrement ; et seuls les utilisateurs avec des droits d'écriture peuvent le modifier.

Le droit d'exécution attaché à un code utilisateur est traité de façon particulière dans le cas des modèles d'import-export : si un utilisateur n'a pas le droit d'exécution, il ne pourra pas utiliser le modèles pour importer ou exporter des données.

  • Script standard (champ TRTIMP)

Ce champ définit le traitement standard dans lequel se trouvent les intitulés des actions qui sont appelées dans les traitements d'import / export.

Ces traitements permettent de faire des initialisations, des contrôles complémentaires, et des mises à jour si nécessaire. La structure de ce programme est décrite en annexe technique. Il est à noter que des traitements standards nommés en général IMPXXX, XXX étant le code de l'import, sont fournis pour un certain nombre d'imports.

Pour plus d'information sur ces actions, cf. la documentation annexe correspondante.

  • Script spécifique (champ SPEIMP)

Ce champ définit le traitement spécifique, qui est appelé avant le traitement standard, et qui permet de réaliser les mêmes actions en désactivant si nécessaire ce que fait le traitement standard.

Les actions possibles sont notamment des initialisations, des contrôles complémentaires, et des mises à jour si nécessaire.

Pour plus d'information sur ces actions, cf. la documentation annexe correspondante.

Structure

  • Type de fichier (champ TYPFIL)

Ce champ définit la structure utilisée pour gérer les données dans le fichier à importer ou exporter. Pour plus d'informations, cf. le paragraphe correspondant.

  • Séparateur de champ (champ SEPFLD)

Indiquez le caractère utilisé comme séparateur entre deux champs.

Pour saisir un caractère non imprimable, saisissez '\' (barre de slash inversée) suivi de 3 chiffres représentant le code ASCII du caractère en base décimale.

  • Sép enregistrement (champ SEPREC)

Indiquez le séparateur entre deux enregistrements (groupes de données).

Pour saisir un caractère non imprimable, saisissez '\' (barre de slash inversée) suivi de 3 chiffres représentant le code ASCII du caractère en base décimale.

Les séparateurs communément utilisés sont :

  • le caractère "line feed" (\010), qui correspond à la fin de ligne dans des fichiers textes sous Unix,
  • la combinaison des deux caractères "carriage return" (retour chariot) et "line feed" (\013\010), qui correspond à la fin de ligne dans des fichiers textes Windows.
  • Délimiteur de champ (champ FLDLIM)

Le délimiteur de champ est ajouté en première et dernière position des champs de type alphanumérique. Pour les champs numériques et le champs de date, aucun séparateur n'est requis.

Il s'agit généralement d'un des caractères suivants :

  • Guillemets simples : '
  • Guillemets doubles : "
  • Format fichier (champ CODDBA)

Indiquez le format des caractères utilisés dans le fichier :

  • ASCII est le format classique où un caractère équivaut à un octet dans le fichier. Ce type de format permet de traiter les caractères occidentaux classiques, avec différents jeux de caractères possibles, définis dans le champ correspondant.
  • UTF-8 correspond à un format UNICODE où le nombre de caractères est variables (il va de 1 à 4, 1 correspondant au jeu de caractère latin non accentués). Ce format permet de gérer tous les types de caractères, et notamment les caractères chinois.
  • UCS-2 correspond à un format standard Microsoft, dans lequel les caractères sont systématiquement stockés sur 2 octets.

Export

  • Export (champ EXPORT)

Si cette zone est cochée, il sera possible d'utiliser ce modèle en Export de données.

  • Chrono export (champ CHRNUM)

Ce champ non modifiable stocke la valeur du numéro de chrono lorsque le dernier export a eu lieu. Ceci permet, lorsqu'on réalise des exports chronologiques, de ne traiter que ce qui a été modifié depuis que le dernier export a eu lieu.

Transcodage

  • Jeu de caractères (champ OPTCHA)

Si vous utilisez le jeu de caractère ASCII, vous pouvez utiliser différents formats standardisés :

  • le code ISO 8859 (qui est par ailleurs le jeu interne d'Adonix lorsqu'on travaille en ASCII),
  • le code tiers IBM,
  • Le code ASCII 7-bit sans accents (les lettres accentuées sont converties en lettres minuscules sans accent).
  • Séparateur décimal (champ SEPDEC)

Ce champ définit le séparateur décimal utilisé pour les chiffres. Si ce champ est vide, le séparateur décimal pris en compte est le point (".").

  • Format des dates (champ OPTDAT)

Ce champ permet de définir le type de codage des champs de date.

Vous pouvez uniquement définir l'ordre des informations, et le nombre de caractères dans l'année. Pour l'import, tout caractère servant de séparateur entre les champs est filtré. Par exemple, des dates au format DD-MM-YY ou DD/MM/YYYY seront bien interprétées.

Le sous-programme de décodage des dates prend en compte la variable adxdcs du moteur. Cette variable est définie au niveau du paramètre général DCS permettant de définir comment les années sur deux caractères sont décodées. DCS représente une année pivot permettant de déterminer le siècle concerné.

Par exemple, si DCS est égal à "1940" et que l'année est définie sur deux caractères :

  • une valeur inférieure ou égale à 40 est considérée comme faisant partie du 21ème siècle,
  • une valeur supérieure à 40 est considérée comme faisant partie du 20ème siècle.

Il est ainsi possible d'exprimer les années entre 1940 et 2039 sur deux chiffres.

  • champ LIBDAT

Intitulé associé au code précédent

  • Format menus locaux (champ OPTMNL)

Les champs de type menu local sont stockés sous forme d'un nombre représentant leur rang dans la table.

Selon la valeur de ce champ, le modèle va exporter, ou s'attendre à trouver en import :

  • 0: 0 : Le choix est un chiffre indiquant le rang du menu dans la table. 1 pour le premier choix, 2 pour le deuxième, etc. Ceci correspond au format interne sous lequel le menu local est stocké dans la base.
  • 1 : 1 : Le choix est saisi en utilisant le code sur un caractère, associé à chaque choix de menu local. Ce code n'est pas visible en gestion des menus locaux. Il peut être défini dans les fonctions de développement, en gestion des messages, où ce code interne peut être saisi. C'est la seule utilité de ce code interne, contrairement aux anciennes versions sur caractères où il servait d'accélérateur de saisie.
  • n : (n>1) : les n premiers caractères du libellé affiché en saisie. Lorsqu'on utilise cette option, l'algorithme de reconnaissance recherche sur le premier caractère, puis sur le deuxième, et ainsi de suite, jusqu'à ce qu'un seul intitulé corresponde. Ainsi, si on cherche à reconnaître CHQ dans un menu local dont les intitulés sont Espèces, Virement, Chèque, Traite, Carte bleue, l'algorithme va reconnaître Chèque (seul intitulé dont les deux premières lettres correspondent).

Les intitulés sont les libellés affichés à l'écran. Leur rang dans la table est l'information qui est stockée dans la base de données. Il est possible de modifier l'intitulé d'un menu local lors d'un import pour que l'algorithme de recherche fonctionne correctement. Cette modification est uniquement possible en mode mono-utilisateur. Cette opération n'est pas conçue pour les transferts réguliers ou automatiques.

  • champ LIBMNL

Intitulé associé au code précédent

Import

  • Import (champ IMPORT)

Si ce champ est sélectionné, il est possible d'utiliser ce modèle en import de données.

  • Mise à jour autorisée (champ OPTUPD)

Utilisez ce champ pour modifier un enregistrement existant pendant l'import

  • Sas (champ AOWSTA)

Lorsque cette case est cochée, l'import de données alimente le sas d'import-export avec les données erronées. Le fait d'alimenter le sas n'empêche pas par ailleurs de créer un fichier d'erreur.

  • Import spécial (champ OPTSPE)

Ce champ indique que l'intégration des données dans la base se fait en utilisant des actions spécifiques définies dans le traitement dont le nom est donné dans la rubrique Traitement import. Ce traitement spécifique possède un nombre restreint de points d'entrée et nécessite donc d'écrire un traitement incluant tous les contrôles que l'on, souhaite faire.

Son intérêt réside dans le fait qu'on peut ainsi regrouper des contrôles afin d'optimiser le programme d'import. La structure des imports personnalisés est décrite en annexe. Les actions suivantes sont disponibles :

  • $RAZCRE directement appelée par l'import,
  • $SAIMSK directement appelée par l'import à chaque enregistrement lu, et remplace l'appel SAIMSK standard (affectation et contrôle des champs de l'écran à partir de la classe [F])
  • Workflow (champ ENAWRK)

Si cette case est désactivée, les événements de workflow relatifs aux opérations de base (création ou modification en gestion d'objet) ne sont plus appelés. Si des imports sont lancés et qu'ils génèrent des mises à jour en masse, cette option permet ainsi d'éviter de déclencher une multitude d'événements. En effet, cela pourrait avoir un impact sur les performances de l'import et causer un envoi massif de messages.

Pour autant, les événements de workflow relatifs au déclenchement de l'import ne sont pas désactivés.

Tableau Identificateurs

  • No (champ NUMFLG)

Ligne courante du tableau.

  • Niveau (champ FLGLEV)

Ce champ définit le niveau d'imbrication du groupe. Le niveau 1 est le niveau principal. Un niveau N+1 définit un sous-détail du niveau N qui le précède.

  • Indicateur (champ FLGREC)

Ce champ identifie le groupe par un code constitué de 5 caractères au maximum. Ce code est repris dans le tableau des champs de la section suivante, et dans le fichier lui-même, comme en-tête de groupe.

Ce tableau des indicateurs définit la structure des groupes d'enregistrements. Cf le paragraphe correspondant.

  • Clé (champ FLGKEY)

Ce champ définit la clé de la table liée utilisée pour accéder au détail des enregistrement du groupe, à partir de valeurs de champs des tables de niveau supérieur utilisées dans l'expression de lien.

  • Lien (champ FLGLNK)

Ce champ définit l'expression de lien. Cette expression est une suite de valeurs, séparées par un point-virgule, qui donne les valeurs de clé qui lient la table de détail à l'enregistrement d'en-tête.

  • Longueur (champ RECLEN)

Dans le cas d'un type de fichier de longueur fixe, vous devez indiquer nombre de caractères de chaque enregistrement.

 

Onglet Champs

Présentation

Les différents champs à importer sont définis dans ce tableau. Ils sont organisés en groupes identifiés par la colonne Code dans laquelle on retrouve l'un des codes définis dans le tableau des indicateurs de la première section. Le champ peut rester vide si aucune table n'a été définie.

Cette section contient le tableau définissant la structure détaillée des groupes existants dans la première section. Remarques :

  • Il n'est pas obligatoire de définir des champs dans tous les groupes. Certains groupes sont purement techniques et servent à définir des liens. Par exemple, si les champs de l'en-tête de Commande et le Client payeur doivent être exportés dans un même groupe de données, vous devrez définir deux groupes : le premier pour les commandes et le second pour le client, avec le lien adéquat. En revanche, la section des champs ne doit contenir que les lignes associées au second groupe. Ces lignes peuvent inclure à la fois des informations extraites du client et de l'en-tête de la commande.
  • Il est obligatoire de définir pour chaque groupe la position où se trouve le séparateur de groupe lorsque qu'il s'agit d'un modèle utilisable en import et qu'il y a plusieurs groupes.
  • Les blocs doivent être rangés de façon séquentielle. Lorsqu'un bloc de niveau inférieur existe, il doit suivre le bloc auquel il est lié.

 

Champs

Les champs suivants sont présents dans cet onglet :

Tableau Champs

  • No (champ NUMLIG)

Ligne courante du tableau.

  • Indicateur (champ TYP)

Cette zone, n'est saisie que si le tableau des identificateurs de groupes de l'onglet précédent n'est pas vide. Elle permet de rattacher l'information à exporter ou importer à un groupe de données.

Ce champ indique la table de base de données où sont définies les données à importer ou exporter. Remarques :

  • Ce champ est obligatoire, même s'il n'est pas nécessairement utilisé. Si une expression du calcul est indiquée sur le modèle d'export, elle peut faire référence à des champs de différentes tables.
  • La table concernée n'est pas nécessairement la table principale du groupe. Il peut s'agir d'une table liée à la table principale de ce groupe ou d'un des groupes précédents de niveau supérieur. Si aucun lien n'est trouvé, une message d'avertissement est affiché : Lien automatique non géré. Cela signifie qu'il est du ressort du traitement d'import ou d'export, saisi dans la première section, de réaliser ce lien manuellement. Par exemple, en déclarant la table dans l'action IMP_OUVRE, et la lecture de la table dans l'action IMP_LIENS.
  • Champ (champ FLD)

Ce champ permet d'indiquer le nom du champ de la table à importer ou exporter. Différentes syntaxes sont admises pour définir les informations à extraire ou intégrer :

  • Le slash (/) signifie qu'un indicateur de groupe est écrit à l'export ou recherché lors de l'import. Dans un modèle permettant l'import, lorsque plusieurs groupes existent, ce séparateur est obligatoire pour chaque groupe. Le séparateur de groupe est censé être un champ normal, encadré par des séparateurs de champs et des délimiteurs si un modèle de type Délimité est utilisé.
  • La syntaxe la plus simple est FIELD(index), lorsqu'un champ issu de la table déclarée dans la colonne précédente est importé ou exporté. Une fenêtre de sélection affiche alors les choix possibles.
  • Si on saisit ici une constante chaîne de caractères encadrée entre des guillemets doubles ("), le champ sera écrit tel quel dans le fichier en export, et ignoré en import.
  • Si on ne saisit rien, ceci signifie qu'il y aura un champ vide dans le fichier exporté, encadré par des délimiteurs de champ si le modèle est de type Délimité. En import, cela signifie que le champ correspondant doit être ignoré.
  • La syntaxe *N, où N est un nombre compris entre 1 et 99, est également possible. Ceci permet d'affecter (en import) ou de lire (en export) la variable GIMP(N). GIMP est une variable globale constituée d'une chaîne de caractères avec une longueur maximum de 100. Vous devez l'affecter à un processus personnalisé associé à l'import ou à l'export.
  • La dernière possibilité, utilisable uniquement en export, consiste à définir une expression calculée quelconque, précédée du signe égal (=). Cette expression permet d'appeler des constantes, des fonctions, des variables, des opérateurs ou des champs provenant d'autres tables. La syntaxe est vérifiée lors de la saisie. Le contrôle du contexte, permettant par exemple de vérifier que des variables existent, ne peut pas être vérifié.
  • Intitulé (champ COM)

Ajoutez un commentaire qui permette de comprendre plus facilement votre configuration.

  • Borne (champ SEL)

Trois choix sont possibles dans ce champ :

  • Non saisie signifie qu'aucune borne de début-fin pour ce champ ne sera saisie au lancement de l'export.
  • Saisie signifie qu'une borne de début-fin pour ce champ pourra être saisie au lancement de l'export.
  • Non transférée signifie qu'une borne de début-fin pourra être saisie pour ce champ au lancement de l'export, mais que le champ ne sera pas transféré lors d'un import ou d'un export.
  • Position (champ LOC)

Cette colonne est uniquement utilisée pour les formats à longueur fixe. Dans ce cas, la position donne le décalage par rapport au début du bloc ou de l'enregistrement. Les positions sont données en nombre d'octets, "1" signifiant que l'on se trouve au début du bloc ou de l'enregistrement. Les positions doivent être compatibles avec la taille de l'enregistrement.

  • Longueur (champ LNG)

Cette zone détermine la longueurdu champ sur le fichier séquentiel.

  • Format (champ FMT)

Cette colonne n'est saisie que si le format est en longueur fixe. Pour les montants numériques, le format saisi est défini sous la forme nnn ou nnn.mmm, sachant que ces chiffres peuvent être :

  • préfixés par < ou >. Cadrage gauche ou droite en complétant avec des zéros (le formatage droit étant utilisé par défaut),
  • préfixés ou post-fixés par le caractère +. Ce signe obligatoire avant ou après le chiffre,
  • préfixés par le caractère *. Le séparateur décimal ne doit pas apparaître. Le tableau ci-dessous montre des exemples, de formatage pour un montant donné. Les espaces sont ici remplacés par des #  :

Format

Montant

Résultat du formatage

7.2

123.456

####123.45

7.2

-123.456

### -123.45

>7.2

123.456

0000123.45

>7.2

-123.456

-000123.45

<7.2

123.456

123.45####

<7.2

-123.456

- 123.45###

6.2+

123.456

###123.45+

>6 .2+

123.456

000123.45+

<6.2+

-123.456

123.45-###

Pour un format alphanumérique, les seules directives de formatage possibles sont < ou > (cadrage à droite ou à gauche, sachant que les chaînes de caractères sont complétées par des espaces).

  • Pattern (champ PATTERN)

Ce champ est utilisé lorsqu'on réalise des imports/exports au format XML.

Lorsqu'un fichier XML est créé, davantage d'informations sont requises. C'est le cas notamment si vous souhaitez créer un fichier XSD décrivant la structure du fichier XML et ainsi contrôler sa validité avec des outils de vérification de syntaxe intégrés aux différents logiciels ETL.

Ce champ définit si un modèle doit être associé à la description saisie pour le fichier XSD.

Si ce champ est renseigné, le fichier XSD contiendra une spécification de type :
pattern value="value_entered_in_the_pattern_field"

Des tutoriels comme celui-ci sont disponibles en ligne pour en savoir plus sur la syntaxe des schémas ou "patterns".

  • Balise (champ BAL)

Ce champ est utilisé lorsqu'on réalise des imports/exports au format XML.

Lorsqu'un fichier XML est créé, davantage d'informations sont requises. C'est le cas notamment si vous souhaitez créer un fichier XSD décrivant la structure du fichier XML et ainsi contrôler sa validité avec des outils de vérification de syntaxe intégrés aux différents logiciels ETL.

Ce champ définit le code de la balise décrivant le champ exporté dans le modèle, telle qu'elle apparaîtra dans le fichier XML.

  • Obligatoire (champ OBL)

Ce champ est utilisé lorsqu'on réalise des imports/exports au format XML.

Lorsqu'un fichier XML est créé, davantage d'informations sont requises. C'est le cas notamment si vous souhaitez créer un fichier XSD décrivant la structure du fichier XML et ainsi contrôler sa validité avec des outils de vérification de syntaxe intégrés aux différents logiciels ETL.

Ce champ définit si le champ est obligatoire ou non. Si la valeur de ce champ est égal à Oui, le fichier XSL contiendra une spécification de type minOccurs="1".

Ce numéro, s'il existe, fait référence à une table de transcodage utilisable pour transcoder le champ lu et le rendre conforme au format attendu.

Génération du fichier

  • champ TYPEXP

Sélectionnez le type d'export que vous souhaitez effectuer. Les options possibles sont :

  • client,
  • serveur.
  • Fichier de données (champ FILEXT)

Ce champ définit le chemin du fichier de données par défaut, suggéré au lancement du processus d'export ou d'import. Ce fichier de données est utilisé en mode automatique dans le cas d'un enchaînement d'imports ou d'exports. Ce chemin peut être relatif. Dans ce cas, le répertoire de base de données est le répertoire d'installation du logiciel.

Ce chemin peut inclure le caractère #. Dans ce cas, la gestion des numéros séquentiels (chronos) s'applique :

  • En import : Tous les fichiers dont le modèle correspond au chemin sont parcourus, et # représente 5 chiffres. Les fichiers sont intégrés dans l'ordre croissant, selon leur numéro.
  • En export : Un fichier est créé avec la valeur formatée du chrono [C]EXPORT sur 5 chiffres. Cela implique que la case à cocher Gestion chrono soit sélectionnée lors du lancement de la fonction d'export.

Par exemple, si le chrono d'export est égal à 156, /u/tmp/fic# permet de générer le fichier /u/tmp/fic00156.

  • Répertoire final (champ REPFIN)

Ce champ permet d'imposer un répertoire final dans lequel le fichier va être transféré après avoir été importé. En l'absence de valeur, on utilise le répertoire donné dans les paramètres généraux de l'import / export.

 

Icône Actions

Sélection d'un champ

Champs

Les champs suivants sont présents dans cette fenêtre :

Bloc numéro 1

Ce champ définit la table dont on veut sélectionner les champs à insérer.

Tableau

  • No (champ NUMLIG)

Ligne courante du tableau.

  • Zone (champ CODZONE)

Indiquez le nom du champ dans la table, en suivant la syntaxe interprétable par le logiciel. Par exemple, le nom de champ FIELDNAME, défini dans la table des abréviations ABV, sera accessible en suivant la syntaxe [F:ABV]FIELDNAME.

Le nom des champs personnalisés commence par X_, Y_ ou Z_.

Dans la base de données, chaque zone correspond à un ou plusieurs champs. (selon que la zone est dimensionnée ou non). Les champs correspondants s'appellent FIELDNAME_0, FIELDNAME_1, FIELDNAME_2.

Pour saisir et afficher le champ correspondant à l'écran, son nom doit être le même dans le dictionnaire des écrans. L'écran et la table seront alors utilisés en simultané dans la gestion des objets.

  • Intitulé (champ INTITCOURT)

Intitulé associé au code précédent

  • Sélection (champ SELECT)

Si le champ est égal à Oui, il est inséré dans le tableau principal. Par défaut, il est suggéré de définir :

  • les champs non inclus dans la table principale à Oui,
  • les champs inclus dans la table principale à Non.

Utilisez ce champ pour insérer un ensemble de champs issus d'une table dans un modèle, à partir de la ligne courante du tableau.

Recalcul positions indicateur

Cette fonction n'est présente que pour les modèles avec un type de fichier en longueur fixe. Elle permet de recalculer la position de chacun des champs du groupe de données courant (ayant le même l'indicateur de la ligne). Le recalcul se fait en partant de la position 1 sur le premier champ du groupe, et en y ajoutant la longueur de chaque champ pour obtenir la position du champ suivant.

 

 

États

Par défaut, les états suivants sont associés à la fonction :

 PRTSCR : Impression écran

Mais ceci peut être modifié par paramétrage.

Actions spécifiques

Cliquez sur ce bouton pour valider votre modèle d'import / export.

Les champs suivants sont présents dans la fenêtre ouverte par ce bouton :

Bloc numéro 1

  • champ OBJET

 

  • champ CLES

 

Bloc numéro 2

  • Depuis le dossier (champ DOSORG)

Indiquez le dossier à partir duquel la fiche va être copiée. Les syntaxes possibles sont décrites dans l'annexe dédiée.

  • Tous dossiers (champ TOUDOS)

Cette option permet de copier la fiche vers tous les dossiers définis dans le dictionnaire (table ADOSSIER de la solution courante).

  • Vers le dossier (champ DOSDES)

Indiquez le dossier dans lequel la fiche va être copiée. Les syntaxes possibles sont décrites dans l'annexe dédiée.

Ce bouton permet de recopier la définition de la fiche depuis ou vers un autre dossier.

Les champs suivants sont présents dans la fenêtre ouverte par ce bouton :

Tableau Bornes

  • Zone (champ BNOM)

Ce champ définit le nom du champ pour lequel une borne peut être saisie.

  • Valeur début (champ BDEB)

Saisissez des bornes de début et de fin pour chaque champ défini comme critère saisi ou non affiché dans le tableau des champs. Si un champ vide est saisi, on considère qu'il n'y a pas de bornes. Ces bornes seront proposées par défaut lors de l'export.

  • Valeur fin (champ BFIN)

 

Tableau Critères

Les tables mises en œuvre dans le modèle d'import / export sont listées ici, afin de permettre de définir un filtrage éventuel des données exportées.

  • Critère (champ FLGEXP)

Ce champ permet de définir une condition logique mettant en œuvre les champs de la table. Seules les lignes répondant à cette condition pourront être exportées.

Ce bouton vous permet d'accéder à un écran dans lequel vous pouvez définir des valeurs par défaut de critères pour filtrer les données exportées :

  • lorsqu'un export est lancé, les critères s'affichent et peuvent être modifiés,
  • lorsqu'un enchaînement d'exports est lancé, les critères s'appliquent automatiquement sans saisie sur chacun des modèles pour lesquels ils ont été définis.

Barre de menu

Options / Export schéma d'un modèle

Cette fonction, accessible lorsque le format d'export est XML, permet de produire un fichier XSD décrivant la structure du fichier créé par le modèle. Ce fichier est créé dans le sous-répertoire suivant du répertoire où se trouvent les dossiers sur le serveur d'application :

  • X3_PUB/FOLDER/GEN/ALL/WEBS (FOLDER est le nom du dossier courant)
  • Le nom de ce fichier est WWIMPTEMPLATE.xsd (TEMPLATE est le nom du modèle d'import / export)

Ce fichier XSD définit le format des données afin de permettre un contrôle préliminaire de validité syntaxique par des outils de type ETL. La syntaxe obtenue intègre (outre des en-têtes standard) des lignes du type :

  • Lignes décrivant les groupes et les lignes. Ici, un modèle ADI et des champs CODE et NUMTAB, dont les balises sont ADI_CODE et 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>

  • Lignes décrivant les types de données :

<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>

On voit ici des exemples de champs de type numérique, puis alphabétique. Quelques commentaires à propos de la façon dont est générée cette syntaxe :

  • Le nom de chaque champ (ici, ADI_CODE et ADI_NUMTAB) correspond au contenu de la colonne Balise du modèle.
  • La rubrique pattern est issue de la colonne Pattern dans le modèle (ici, la syntaxe proposée correspond à un nombre quelconque de caractères alphabétiques majuscules)
  • Les rubriques minOccurs et maxOccurs sont renseignées en tenant compte de la colonne obligatoire du modèle
  • Les types de données, qui peuvent être, selon les cas, xs:string, xs:int, xs:decimal, xs:date, xs:base64Binary, xs:boolean, sont issues du type de données X3 correspondants, ainsi que la rubrique maxLength, et les rubriques maxExclusive, minExclusive, maxInclusive, minInclusive selon les cas.

Documentation / Paragraphes

Cette fonction permet d'accéder à la gestion de la documentation, sur le premier paragraphe de la documentation (si elle existe) associé à la fiche courante.

Documentation / Liens

Cette fonction permet d'accéder à la gestion des liens. Elle permet de définir des liens entre la fiche courante et d'autres fiches (par exemple des liens entre fonctions et paramètres). Ces liens, purement documentaires, permettent d'alimenter la mécanique de génération des squelettes de documentation.

Documentation / Génération

Ce menu permet de lancer une génération de documentation. La génération peut se lancer également à partir du bouton [Génération] dans le bas de la fenêtre.

Trois types de génération peuvent être lancées, séparément ou simultanément :

  • la génération du squelette de documentation à partir du dictionnaire (tables ADOCUMENT, ADOCBLB, ADOCCLB).
  • la génération de la documentation à partir des tables précédentes.
  • la génération de la documentation sur champ.

Les bornes proposées par défaut tiennent compte de la fiche en cours, mais elles peuvent être modifiées au lancement.

Messages d'erreur

Outre les messages génériques, les messages d'erreur suivants peuvent apparaître lors de la saisie :

Import impossible sur cet objet

L'objet n'a pas été défini comme importable. La case à cocher Import n'est pas sélectionnée dans la section Divers.

Code déjà existant en ligne nnn

On saisit deux fois le même code associé à des groupes différents.

ZZZ zone inexistante (XXXXXX, YYYYY, ... )

Ce message est affiché lorsqu'on exprime un lien dans le tableau des groupes en utilisant un champ ZZZ qui n'est référencé dans aucune des tables (XXXXX, YYYYY, ...) définies dans les lignes précédentes.

G séparateur (/) non référencé dans les champs. Interdit sur un modèle d'import

Dans le tableau des champs, pour le groupe G, aucune ligne n'indique l'endroit où se trouve l'identificateur de groupe (syntaxe /).

Lien impossible. Interdit sur un modèle d'import

On a tenté, dans le lignes décrivant les champs, d'insérer un champ issu d'une table qui ne peut pas être liée à la table principale du groupe.

Longueur incorrecte nnn<>mmm

La longueur définie par le format numérique (mmm) est différente de la longueur du champ définie dans la colonne précédente (nnn).

Remarque :

Aucun test d'existence de répertoire n'est fait sur le chemin défini par défaut dans le modèle. Il est possible que le répertoire n'existe pas encore. Ce contrôle ne sera fait qu'au lancement de l'import ou de l'export.

Tables mises en œuvre

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre

Conseils de mise en oeuvre

Principes de base

Les principes suivants doivent être pris en compte lorsque vous paramétrez un modèle d'import :

  • L'import permet des actions de création et de modification.
  • Pour déterminer l'action à mener sur un enregistrement importé, le système effectue un test d'existence de l'objet à traiter. Ce test s'effectue en chargeant la clé primaire de l'objet avec les informations de l'enregistrement importé.
  • Par conséquent, si la clé principale n'est pas définie, tous les enregistrements seront passés en mode création. Les enregistrements fonctionnent uniquement si la clé de l'objet à créer peut être affectée automatiquement. Par exemple, en utilisant un compteur (numéros de séquence).
  • Un import correspond à une simulation de saisie de tous les écrans liés à l'objet importé.
  • Il traite tous les champs de l'écran en effectuant les mêmes contrôles qu'une saisie interactive.
  • Il ne prend pas en compte les champs non saisissables de l'écran (sauf cas particuliers et référencés). Par conséquent, les champs paramétrés dans un modèle correspondant à un champ non saisissable ne sont pas importés.
  • L'ordre dans lequel sont paramétrés les champs à l'intérieur d'un enregistrement n'a pas d'importance. L'import charge d'abord tous les champs du fichier, puis les importe dans l'ordre des champs dans les écrans.

Modèles standard fournis

Si l'export de données est toujours possible quel que soit l'objet, ce n'est pas le cas de l'import. Les mécanismes automatiques de décodage des flux de données et l'appel des contrôles liés à l'objet automatisent grandement l'import. Cependant, cela ne suffit pas pour permettre un import automatique sur les objets complexes. Ainsi, tout objet n'est pas importable.

Dans le dossier de référence, un modèle d'import modifiable est fourni pour chaque objet dont l'import est possible. Il est toutefois possible de lier l'import à des fonctionnalités spécifiques. Cela est décrit dans l'aide en ligne associée aux modèles d'import, ainsi que les cas particuliers. Pour consulter cette aidée, utilisez la combinaison de touches Alt + F1 sur votre clavier lorsque le modèle est chargé.

Cliquez sur le lien suivant pour consulter la liste des aides correspondantes (classées par module).

Tableau des identificateurs

Le choix de la structure des fichiers à importer ou exporter dépend des possibilités d'extraction ou d'intégration que l'on trouve dans le progiciel avec lequel on veut dialoguer.

Dans tous les cas, vous devez organiser les données en groupes logiques de lignes, qui peuvent être de types différents (en-tête, détail, sous-détail, par exemple), ou d'un type unique. Vous pouvez définir l'organisation de ces groupes dans le tableau des identificateurs, situé sur la première section du modèle.

Chaque groupe est associé à une des tables de la base données. La première étant la table principale de l'objet. Les autres tables sont définies par des liens renvoyant aux tables précédentes. Si vous utilisez le modèle pour réaliser un export d'objet, vous pouvez définir des liens avec n'importe quelle table de la base sur laquelle un lien théorique existe pour extraire des données liées. Dans le cas d'un modèle d'import, vous pouvez uniquement utilisez les tables mises à jour par l'objet. Il n'est pas possible d'importer simultanément la commande et le client, par exemple. L'objet "commande" n'a pas été conçu dans cette logique.

Ce tableau peut rester vide si la structure des données à importer ou exporter s'appuie sur l'utilisation de la table principale uniquement. Dans ce cas, la colonne Code reste vide sur la page suivante. Vous n'avez pas besoin de créer plusieurs groupes de données si plusieurs tables liées doivent être exportées simultanément. Si les champs extraits des tables s'affichent dans un même groupe de données, le traitement d'export va tenter de résoudre les liens entre tables en utilisant la structure des liens décrite dans le dictionnaire. Cela signifie qu'un seul lien est possible de la table principale du groupe vers la table décrite. Sinon, le premier lien trouvé est utilisé, même s'il est incorrect.

Il existe un cas particulier : si le modèle est défini avec une longueur fixe, alors il est nécessaire de créer au moins un groupe. Dans ce cas, vous devez définir la longueur de l'enregistrement au niveau de la table des groupes. Si l'indicateur de groupe n'est pas obligatoire dans la liste des champs, il suffit de définir ce groupe avec un code vide : seul un groupe pourra alors être défini, et la colonne Code ne sera plus saisie dans la section suivante.

Le tableau des identificateurs n'est accessible en saisie que si l'objet est de type simple. Si des identificateurs de groupe sont définis, chacun doit être associé à un niveau, une table, et des conditions de liens qui permettent relier les lignes entre elles.

La table principale est définie au niveau 1 pour l'import et l'export. Cette table n'est pas saisie dans le tableau, mais déduite en fonction de l'objet associé au modèle.

Pour toute table liée à une table précédente, le niveau est égal au niveau de la table précédente si un lien biunivoque existe entre les deux tables, et vaut ce niveau plus un si plusieurs enregistrements sont liés à un enregistrement de la table précédente. Le lien est caractérisé par la clé de la table destination à lire, et par l'expression des segments de clés dont la valeur définit les lignes liées.

Si vous définissez des groupes comme dans l'exemple suivant :

Niveau

Groupe

1

A

2

B

2

C

3

D

Vous obtiendrez les informations suivantes, qui se chevauchent :

Groupe A enregistrement 1

Groupe B enregistrement 1.1

Groupe B enregistrement 1.2

...

Groupe B enregistrement 1.N

Groupe C enregistrement 1.1

Groupe D enregistrement 1.1.1

Groupe D enregistrement 1.1.2

...

Groupe D enregistrement 1.1.M

Groupe C enregistrement 1.2

Groupe D enregistrement 1.2.1

...

Groupe C enregistrement 1.Q

Groupe D enregistrement 1.Q.1

...

Groupe D enregistrement 1.Q.R

Groupe A enregistrement 2

Groupe B enregistrement 2.1

...

Exemple de groupes

Pour illustrer ce paramétrage, on peut prendre l'exemple d'un modèle d'export uniquement mettant en jeu les sociétés et sites :

  • La table principale COMPANY est au niveau 1.
  • On souhaite intégrer des informations liées à la devise comptable (champ ACCCUR) dans le fichier exporté. Il n'est pas nécessaire de définir un nouveau groupe lié à la table "société" dans ce cas. Vous devez simplement définir les champs de la table TABCUR dans le groupe. Le moteur d'export va alors parcourir le dictionnaire pour chercher un lien entre la table COMPANY et la table TABCUR. Comme il y en a plusieurs, c'est le premier qui va être utilisé. Dans ce cas, c'est le lien qui nous intéresse.
  • Si on avait voulu exporter des informations liées à la devise du capital social (champ RGCCUR), il aurait fallu créer un deuxième groupe de données. Ce deuxième groupe aura dû être de niveau 1 également, basé sur la table TABCUR. Ce groupe afficherait alors RGCCUR dans la colonne des liens. C'est également ce que l'on serait amené à faire si le lien n'était pas explicite. Par exemple, le champ CREUSR, qui correspond au code de l'utilisateur ayant créé la fiche, utilise un type générique (A) qui ne permet pas de faire le lien de façon automatique. Si donc on avait voulu faire figurer des informations relatives à l'utilisateur ayant créé la fiche, il aurait fallu définir le lien par un groupe.
  • Supposons qu'ensuite on veuille faire apparaître la liste des sites rattachés à la société. On va alors créer un groupe de niveau 2, utilisant la table FACILITY, avec un lien basé sur l'index FCY prenant comme valeur le champ CPY de la table principale.
  • Finalement, si les valeurs du paramétrage liées à chaque société doivent être extraites, un deuxième groupe de niveau 2 serait créé à partir de la table ADOVAL. Ce deuxième groupe aurait un lien s'appuyant sur l'index ADW0, reprenant la valeur du champ CPY de la table principale.

Le tableau ci-dessous résume les Identificateurs tels qu'ils seraient saisis :

Niveau

Code

Table

Clé

Lien

Commentaires

1

CPY

COMPANY

CPY0

Enregistrement principal du groupe

1

CUR

TABCUR

TCU0

[CPY]RGCCUR

1 enregistrement lié

2

FCY

FACILITY

FCY1

[CPY]CPY

N enregistrements liés

2

ADP

ADOVAL

ADW0

[CPY]CPY

M enregistrements liés

Formats de fichier

Les formats de fichier dépendent du type. Il peut s'agir des valeurs suivantes :

Séparateurs de champs (format ASCII 1)

Il s'agit d'un fichier en longueur variable, dont tous les champs sont séparés par un séparateur (le séparateur de champ noté SC).

Champ 1 enreg 1

SC

Champ 2 enreg 1

SC

...

Champ N enreg. 1

SC

Champ 1 enreg 2

SC

Champ 2 enreg 2

SC

...

Champ N enreg. 2

SC

Séparateur d'enregistrement (format ASCII 2)

Il s'agit d'un fichier en longueur variable, dont tous les champs sont séparés par un séparateur (le séparateur de champ). Lorsqu'un enregistrement est terminé, un autre séparateur (le séparateur de ligne noté SL) vient remplacer le séparateur de champ.

Champ 1 enreg 1

SC

Champ 2 enreg 1

SC

...

Champ N enreg. 1

SL

Champ 1 enreg 2

SC

Champ 2 enreg 2

SC

...

Champ N enreg. 2

SL

Format délimité

Il s'agit d'un fichier en longueur variable de même type que le fichier "séparateur d'enregistrement" (deux séparateurs distincts). Mais en plus, les champs de type chaîne de caractères sont encadrés par un délimiteur de champ (noté DC). Dans l'exemple ci-dessous, le deuxième champ est de type alphanumérique.

Champ 1 enreg 1

SC

DC

Champ 2 enreg 1

DC

SC

...

Champ N enreg. 1

SL

Champ 1 enreg 2

SC

DC

Champ 2 enreg 2

DC

SC

...

Champ N enreg. 2

SL

Format en longueur fixe

Il s'agit d'un fichier dont les champs sont définis en longueur fixe, sans séparateur de champ. Vous devez indiquer la longueur totale de l'enregistrement dans le paramétrage. Il peut y avoir un séparateur de ligne. Dans ce cas, il n'est pas nécessaire d'inclure sa longueur dans la longueur de l'enregistrement.

De même, vous pouvez définir la longueur de chaque groupe lorsque des blocs de données sont définis dans la table des indicateurs.

Chp 1 enreg 1

< ---------Champ 2 enreg. 1------------ >

...

< --Champ N enreg. 1-- >

SL

Chp 1 enreg 2

< ---------Champ 2 enreg. 2------------ >

...

< --Champ N enreg. 2-- >

SL

Format XML

Il s'agit d'un format où les données sont définies dans des balises au format XML.

A l'export, on retrouve un ensemble d'informations important liées à la fois au modèle et à l'extraction. Vous pouvez également utiliser le menu Options / Export schéma d'un modèle pour exporter un fichier XSD décrivant la structure du fichier créé par le modèle.

A l'import, les données ont moins d'importance. Il est possible de limiter ces données dans le fichier à importer.

Format A plat

Ce format est le format variable Séparateur d'enregistrement ou le format délimité (si le champ Délimiteur de champ est renseigné).

Si dans le modèle d'import/export plusieurs niveaux sont définis, une seule ligne est générée.

Indicateur niveau 1

Champ 1 enreg 1

SC

DC

Champ 2 enreg 1

DC

SC

...

Indicateur niveau 2

Champ 1 enreg 2

SC

DC

Champ 2 enreg 2

SL

Lors de l'import, l'utilisation de ce type de format a pour conséquence un regroupement de toutes les lignes de détail d'un niveau donné sous le même en-tête dès lors que tous les champs répétés dans l'en-tête sont strictement identiques.

Format d'en-tête

Ce format est le même format que le format A plat plus une ligne en-tête supplémentaire correspondant aux intitulés des champs du modèle.

Par exemple en Allemagne, ce format est utilisé pour les fichier GDPDU.

Annexes techniques

Vous trouverez des informations complémentaires dans les annexes techniques suivantes :