EXPORTMI

EXPORTMI est une API générique utilisée pour extraire des données de M3 et offre des capacités de personnalisation des données pour une flexibilité dans la sélection des données. En général, cette API offre la possibilité de définir une sélection des données et une recherche des données SQL à l’aide des fonctions de recherche de fonctions M3 (IES). Les données retournées le sont sous la forme d'un champ long unique, dont le format équivaut à celui d'un fichier plat ou un fichier séparé par des virgules.

Même avec cette flexibilité, EXPORTMI a ses restrictions :

  • La récupération des informations est limitée à une seule table dans M3. L’association d’autres tables n’est pas possible. L'API nécessite que la table d'où les informations sont extraites renferme le champ de la division M3 (CONO).
  • Les filtres, y compris les divisions sélectionnées, ne sont pas pris en charge. La division M3 correspond toujours à la division utilisée par la session API (généralement la division par défaut de l'utilisateur, sauf si une division différente a été définie lors de la connexion à la session API).
  • Les filtres qui incluent la société sont uniquement pris en charge pour les sessions API connectées à une société globale (société vide).

Transaction de recherche

La transaction de recherche utilise principalement les fonctions de recherche de fonctions M3 (IES) pour filtrer les données. Cette fonctionnalité de recherche robuste améliore la sélection des données et la personnalisation de EXPORTMI.

Suivez les instructions ci-dessous pour utiliser la transaction :
  • Vous pouvez sélectionner les champs à inclure dans la sortie (FLDS). Si ce champ est laissé vide, tous les champs de la table sont inclus.
  • Le paramètre (SEPC) permet de définir le séparateur entre les valeurs des champs. Si ce paramètre n'est pas renseigné, un fichier plat avec des espaces vides de fin est créé. Si vous saisissez un caractère, ce caractère est utilisé en guise de séparateur et les espaces vides éventuels sont exclus des valeurs. Si le caractère est '*' ou "#", les valeurs de champ se voient ajouter le nom de champ en guise de préfixe (le même cas s'applique à toutes les lignes du résultat) suivi d'un espace.
  • Si le paramètre d'en-tête (HDRS) est défini sur 1, le premier enregistrement retourné contient les noms des champs mis en forme de la même manière que celle définie pour le paramètre de séparateur.
  • Différentes méthodes de recherche sont autorisées en tant qu’entrée par la requête de recherche (SQRY). Voir Utilisation des fonctions de recherche.

Transaction de sélection

La sélection est définie dans une syntaxe de type SQL et la même transaction API peut être utilisée pour quasiment toutes les tables dans M3.

La syntaxe du filtre doit respecter les règles suivantes :

  • Le filtre utilisé pour sélectionner les informations est rédigé dans une syntaxe de type SQL.
    Remarque

    Il ne s'agit pas d'une syntaxe SQL stricte mais elle partage une syntaxe similaire. Les opérations telles que IN(), 'commander par', etc., ne sont pas prises en charge.

  • Il est possible de définir un index spécifique pour la table qui contrôlera le tri de la liste retournée. Si aucun index n'est spécifié, l'index 00 est utilisé. Si un filtrage est effectué, il est recommandé d'utiliser un index correspondant aux champs de filtre pour des raisons de performance.
  • Les opérateurs 'from', 'where', 'and' et 'or' doivent être écrits en majuscules. Ils doivent également être dotés d'un espace vide unique de chaque côté.
  • Les opérateurs '=', '<>' etc., doivent contenir un espace vide unique de chaque côté.
  • Des opérateurs spéciaux, tels que 'count(*)', peuvent être utilisés. Le résultat est un nombre égal au nombre d'enregistrements conforme à la sélection de filtre.
    Remarque

    L'opérateur 'count(*)' renvoie le nombre d'enregistrements pour la division actuelle. Pour comptabliser tous les enregistrements de la table, vous devez utiliser l'opérateur 'count(#)'.

  • Les noms des champs doivent être rédigés en lettres majuscules et contenir le préfixe de la table. Autrement dit, 'MMITNO' est correct mais 'ITNO' ne l'est pas.
  • Pour des raisons de performance, il est recommandé de toujours renseigner les champs individuels. Cependant, à titre d'exception, il est possible d'utiliser l'opérateur général '*' pour sélectionner la totalité des champs. Tous les champs pouvant tenir dans la transaction sont alors inclus dans les informations retournées.
  • Des valeurs de comparaison sont saisies avec des guillemets ('') entre elles, quel que soit le type de valeur (chaîne, valeur numérique, etc.).
  • Le paramètre (SEPC) permet de définir le séparateur entre les valeurs des champs. Si ce paramètre n'est pas renseigné, un fichier plat avec des espaces vides de fin est créé. Si vous saisissez un caractère, ce caractère est utilisé en guise de séparateur et les espaces vides éventuels sont exclus des valeurs. Si le caractère est '*' ou "#", les valeurs de champ se voient ajouter le nom de champ en guise de préfixe (le même cas s'applique à toutes les lignes du résultat) suivi d'un espace.
  • Si le paramètre d'en-tête (HDRS) est défini sur 1, le premier enregistrement retourné contient les noms des champs mis en forme de la même manière que celle définie pour le paramètre de séparateur.
  • Exemples de chaîne d'entrée :
    Remarque

    Espace vide jusqu'à la position 16, contenant le paramètre de séparateur (SEPC). La position 17 contient alors le paramètre d'en-tête (HDRS).

    • Avec des champs spécifiés : Sélectionnez ;1MMSTAT,MMITNO,MMITDS,MMRESP,MMDCCD,MMUNMS,MMITGR,MMITCL from MITMAS où MMSTAT = 10 ou MMSTAT = 90 et MMITCL = 'Y001'.
    • Sans champs spécifiés : Sélectionnez ;1* à partir de CEMAIL où CBEMTP = 04 et CBRGDT <= 20160111.
    • Avec des champs spécifiés et un index spécifié (notez que les valeurs de filtre sont conformes à l'index) : Sélectionnez ;1MMSTAT,MMITNO,MMITDS,MMRESP,MMDCCD,MMUNMS,MMITGR,MMITCL from MITMAS80 où MMITTY = 'D02' et MMSTAT = '50'.