Validation au niveau du caractère
MapForce vous permet de définir des règles de validation avancées pour des champs qui nécessitent une validation non seulement au niveau du champ, mais aussi au niveau du caractère. Un exemple d’un champ qui requiert une telle validation est Data Element 8155 (UN/EDIFACT). Ce champ accepte non seulement des valeurs de code définies dans UN/EDIFACT, mais aussi des codes externes spécifiés par la norme ISO 6346. Notez que la norme ISO 6346 est mentionnée ici uniquement comme exemple. Les fichiers de configuration MapForce incluent déjà les règles de validation pour ISO 6346.
Lorsque vous devez valider un champ au niveau du caractère, ajoutez les valeurs de code globalement, telles qu’affichées dans Validation de champ complète.
ISO 6346
La norme ISO 6346 est une norme internationale qui fournit des informations sur les Conteneurs pour le transport de marchandises. La norme ISO 6346 utilise des codes spéciaux relatifs à la dimension et au type qui consiste en les caractères suivants :
•Le premier caractère indique la longueur d’un conteneur.
•Le deuxième caractère indique la hauteur et la largeur d’un conteneur.
•Les troisième et quatrième caractères décrivent le type d’un conteneur.
Un exemple de code relatif à la dimension et au type est 20G0 qui signifie conteneur à usage général.
ISO6346.Codelist
Vous pouvez configurer MapForce pour qu’il valide Data Element 8155 non seulement en accord avec les valeurs de code UN/EDIFACT, mais aussi avec ISO 6346. La liste de code ci-desosus affiche un extrait de ISO6346.Codelist situé dans le répertoire MapForceEDI\EDIFACT de votre dossier d’application. Dans la liste de code ci-dessous, chaque élément <Field> a un ensemble de valeurs de codes qui correspondent aux valeurs acceptables de chaque caractère depuis la liste ci-dessus (par ex., G0 dans le troisième élément Champ).
<?xml version="1.0" encoding="UTF-8"?>
<Config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="5" xsi:noNamespaceSchemaLocation="../EDIConfig5.xsd">
<Codelist>
<Field Name="F8155" Type="Alphanumeric" ListName="ISO6346" Length="1" Offset="1">
<Title>ISO 6346</Title>
<Description>Code specifying seagoing container type.</Description>
<Values>
<Value Code="1"/>
<...>
<Value Code="N"/>
</Values>
</Field>
<Field Name="F8155" Type="Alphanumeric" ListName="ISO6346" Length="1" Offset="2">
<Title>ISO 6346</Title>
<Description>Code specifying seagoing container type.</Description>
<Values>
<Value Code="0"/>
<...>
<Value Code="F"/>
</Values>
</Field>
<Field Name="F8155" Type="Alphanumeric" ListName="ISO6346" Length="2" Offset="3">
<Title>ISO 6346</Title>
<Description>Code specifying seagoing container type.</Description>
<Values>
<Value Code="G0"/>
<...>
<Value Code="A0"/>
</Values>
</Field>
</Codelist>
</Config>
Dans la liste de code ci-dessus, chaque élément <Field> a les attributs suivants :
•L’attribut Name se réfère au nom du champ (Champ F8155 dans notre exemple).
•L’attribut Type spécifie le type de données de l’élément de données (Alphanumeric dans notre cas).
•L’attribut ListName a le nom d’une liste de code (dans notre exemple, ISO6346 pour tous les trois ensembles de valeurs de code).
•L’attribut Length spécifie le nombre de caractères à valider. Chaque valeur dans les premier et deuxième ensembles est un long caractère, alors que chaque valeur dans le troisième ensemble a deux caractères longs.
•L’attribut Offset spécifie la position à laquelle MapForce (ou le moteur d'exécution externe) doit commencer à lire les caractères depuis le champ de données qui est en cours de validation. Par exemple, dans le code relatif à la dimension et au type 20G0, 2 a la valeur offset de 1, 0 a la valeur offset de 2, et G0 a la valeur offset de 3.
Si l'attribut Length est défini, l'attribut Offset doit aussi être défini. De plus, les valeurs des attributs Length et Offset doivent être supérieures à zéro.
Chaque combinaison Length-Offset, combiné avec les valeurs de code définies sous <Values>, représente une condition de validation au niveau du caractère. Pour qu’une validation de champ ait du succès, toutes les conditions ‘character-level’ avec la même valeur d’attribut ListName doit être satisfaite. Si l’une des conditions n’est pas satisfaite, la valeur de champ n’est pas valide. Un champ peut avoir plus d'une liste de valeurs de code possibles. Pour qu'elle puisse être considérée valide, la valeur de champ doit se trouver dans au moins une des listes.