lumnik. / scénarios Tous les scénarios · English

Un message EDIFACT ORDERS relu ligne de commande par ligne de commande

Objectif Lire une commande EDIFACT segment par segment, puis ligne par ligne, sans outil EDI.

L'acheteur envoie un message ORDERS sur une seule ligne. Les segments finissent par une apostrophe. Une apostrophe dans un libellé s'écrit ?'.

ORDERS_PO-7001.edi
UNA:+.? 'UNB+UNOC:3+3012345000004:14+3098765000002:14+261020:0930+42'UNH+1+ORDERS:D:96A:UN'BGM+220+PO-7001+9'DTM+137:20261020:102'NAD+BY+3012345000004::9'LIN+1++3012345000110:EN'IMD+F++:::Bâche d?'hiver 10x5'QTY+21:12'LIN+2++3012345000127:EN'QTY+21:6'UNS+S'UNT+10+1'UNZ+1+42'
manifests/20-segment.yaml
kind: Entityname: edifact_segment_blabel: Segment EDIFACTdescription: "One segment of an ORDERS message, in message order: its tag, its elements, and the order and article it belongs to."match: [seg_no]scopes: [purchasing-b]columns:  seg_no: { label: "N°" }  tag: { label: "Segment" }  elements: { label: "Éléments" }  order_no: { label: "Commande" }  ean: { label: "EAN" }  quantity: { label: "Quantité" }sources:  - table: t_scenario_edifact_b    map: { seg_no: seg_no, tag: tag, elements: elements, order_no: order_no, ean: ean, quantity: quantity }
$ lm entity get edifact_segment_b --filter tag=QTY
SEG_NO  TAG  ELEMENTS  ORDER_NO  EAN            QUANTITY  _CONFLICTS
9       QTY  21:12     PO-7001   3012345000110  12        {}
11      QTY  21:6      PO-7001   3012345000127  6         {}

Limites

  • Les lignes de commande sont une lecture filtrée des segments (--filter tag=QTY): aucun filtre ne passe après l'étage cellule.
  • Le segment UNA, qui déclare les séparateurs, passe par le même échappement: il se lit «:+. ».
  • Un seul message par fichier ; numéros GLN et EAN fictifs.

Achats · EDIFACT

Les commandes arrivent en EDIFACT.

Un message sur une seule ligne.

ORDERS, un message, deux lignes

Le problème

Tout tient en une ligne.

  • L'apostrophe finit un segment.
  • La commande est en tête, l'article plus loin.

Ce qui n'est pas modifié

Le message reste tel quel.

  • Pas de traducteur EDI.
  • Pas de conversion avant.

Le piège

Une apostrophe dans un libellé.

  • « Bâche d'hiver » s'écrit Bâche d?'hiver.
  • Mal lue, elle coupe le segment en deux.

Ce qu'il a fallu écrire

split-row: { sep: "'", escape: "?" }

Une ligne.

  • Un segment par ligne, dans l'ordre.
  • ?' reste une apostrophe.
  • Deux manifestes, 43 lignes.

Le résultat

PO-7001: 12 et 6.

  • Chaque quantité porte sa commande.
  • Et l'EAN de son article.

La limite

Un message par fichier.

  • Les lignes sont une lecture filtrée des segments.

Essayer

Le scénario se rejoue en local.

Chaque étape est publiée avec sa sortie.

Ce scénario tourne sur lumnik Open, gratuit et open source.

Essayer lumnik Open →