Files
mcp-wms-wiki/wiki_old_13-05-2026/sources/archives/LIM-76 LOT1.2 [GNA] Message LOC.md
2026-05-20 09:41:27 +02:00

26 KiB
Raw Permalink Blame History

Résumé

Message custom LOC envoyé toutes les 5 minutes de EasyWMS vers SAP, contenant le delta des mouvements de HU (supports) sur la période. Ce message remplace les messages custom PCK et MOVE de l'AF (supprimés) et devient le seul canal de notification des mouvements de stock vers SAP (les STV et STC seront désactivés).


Contexte

Limagrain (SAP) ne souhaite pas recevoir les STV standards (en delta +/-) car jugés non fiables en cas de perte de message. Le LOC transmet des quantités absolues que SAP prend pour argent comptant et compare à ses propres données.

Le LOC est un fork fonctionnel du WSC (image de stock complète) adapté pour ne remonter que le delta des 5 dernières minutes, et formaté selon un JSON spécifique attendu par SAP.


Architecture technique

Chaîne de traitement

Job (toutes les 5 min) → Workflow → Transaction custom (ex. LOC.SEND) → GNA → Requêtes WMS + Formatage JSON → POST API SAP

Côté WMS

  1. Créer un Job déclenché toutes les 5 minutes.

  2. Ce job appelle un Workflow custom dont le seul rôle est de créer une transaction custom (ex. LOC.SEND).

  3. Le Workflow et la transaction ne portent aucune logique métier côté WMS — toute la logique est dans le GNA.

Côté GNA

  1. Créer un nouveau script BOO pour le message LOC.

  2. Le GNA détecte la transaction custom LOC.SEND.

  3. À réception de cette transaction, le script BOO :

    • Collecte toutes les transactions WMS pertinentes sur le delta de temps (cf. §Transactions sources)

    • Agrège les données par HU et détermine le code ACTION pour chaque mouvement

    • Construit le JSON au format attendu par SAP (cf. §Format JSON)

    • Effectue un appel POST vers l'API SAP (endpoint unique déjà en place sur git/develop)


Paramètres d'import

Réf. Champ Type Description
1 IV_LGNUM CHAR 4 Numéro d'entrepôt (valeur fixe : "WF02") provenant de la config EasyS
2 IV_TREATMENT_ID CHAR 24 Horodatage de génération du LOC

Table IT_CREATE (1:n) — Champs

Réf. Champ Type Description
1 MATNR CHAR 40 Code produit SAP — vide si action B
2 BATCHID CHAR 10 Code lot SAP — vide si action B
3 ACTION CHAR 1 Code action : B, U, R, S, T, C, P
4 ANFME NUM 13.3 Quantité (absolue ou transférée selon action) — vide si action B ou U/R
5 ALTME CHAR 3 Unité de mesure (Ex : BAG, KG) — vide si action B
6 VLPLA CHAR 18 Zone de stockage origine
7 NLPLA CHAR 18 Zone de stockage destination
8 VLENR CHAR 20 Code HU (palette) source (SSCC)
9 NLENR CHAR 20 Code HU (palette) destination (SSCC)
10 REASON CHAR 4 Code raison scrap — uniquement pour action S (ZSC1 = scrapping normal)
11 VBELN Code livraison sortante SAP — uniquement pour action P
12 POSNR Ligne de livraison sortante SAP — uniquement pour action P

Codes ACTION

Code Signification Déclencheur
B Déplacement bin-to-bin Déplacement de HU d'une zone à une autre
U Set to Unrestricted (déblocage) Déblocage statut B6
R Set to Restricted (blocage) Blocage statut B6
S Scrap quantity (suppression) Suppression de stock / support
T Transfert inter-HU Transfert de quantité entre deux HU
C Correction de poids Ajustement de quantité (valeur absolue)
P Assignation client Palette positionnée sur image de quai

Transactions WMS sources

Transaction WMS Action LOC Données à récupérer
CON.MOVE B (déplacement) ContainerCode, zone de stockage origine, zone de stockage destination
CON.LOCATE B (déplacement) Idem
STK.MOVE B ou T ContainerCode source et destination. Si ContainerTo ≠ ContainerCode → ACTION=T avec quantité transférée
STK.ADJ C (correction) ContainerCode, quantité absolue actuelle sur la HU après ajustement, UdM
CST.STK U ou R ContainerCode, nouveau statut (B6 uniquement hors retour)
STK.PICKING T (transfert) Container source, container destination (palette fille), quantité transférée
CON.DELETE S (suppression) ContainerCode, quantité supprimée

Vérifier si d'autres transactions sont utiles pour le LOC.

Données stock/container à récupérer pour chaque ligne LOC

Pour chaque HU identifiée dans les transactions du delta, récupérer :

  • Code produit SAP : attribut logistique LotCode du stock

  • Code lot SAP : ItemCode du stock (= code article WMS)

  • Quantité : quantité actuelle de la ligne de stock (UdM de base WMS = unité alternative SAP)

  • UdM : BAG ou KG

  • Zone de stockage : zone WMS du container (origine et destination)

  • Code support : ContainerCode (SSCC)

  • Code livraison sortante : ShippingOrderCode si action P

Filtre d'exclusion

Exclure les palettes liées à une réception non fermée (= dont le REF n'a pas encore été envoyé). Seules les HU déjà connues de SAP via un REF préalable doivent apparaître dans le LOC.


Format JSON de sortie

{ "IV_LGNUM": "WF02", "IV_TREATMENT_ID": "<HORODATAGE_GENERATION_LOC>", "IT_CREATE": [ { "MATNR": "<CODE_PRODUIT_SAP>", "BATCHID": "<LOT_SAP>", "ACTION": "<CODE_ACTION>", "ANFME": "<QUANTITE_OU_VIDE>", "ALTME": "<UDM_OU_VIDE>", "VLPLA": "<ZONE_STOCKAGE_ORIGINE>", "NLPLA": "<ZONE_STOCKAGE_DESTINATION>", "VLENR": "<CODE_SUPPORT_ORIGINE>", "NLENR": "<CODE_SUPPORT_DESTINATION>", "REASON": "<CODE_RAISON_OU_VIDE>", "VBELN": "<CODE_LIVRAISON_OU_VIDE>", "POSNR": "<LIGNE_LIVRAISON_OU_VIDE>" } ] }


Règles de remplissage par action

Champ B (déplacement) U/R (statut) S (suppression) T (transfert) C (correction) P (assignation client)
MATNR Vide Code produit SAP Code produit SAP Code produit SAP Code produit SAP Vide
BATCHID Vide Lot SAP Lot SAP Lot SAP Lot SAP Vide
ACTION B U ou R S T C P
ANFME Vide Vide Qté supprimée Qté transférée Qté absolue comptée Vide
ALTME Vide UdM UdM UdM UdM Vide
VLPLA Zone origine Zone actuelle Zone actuelle Zone HU source Zone actuelle Vide
NLPLA Zone destination Vide Vide Zone HU destination Vide Image de quai
VLENR Code HU Code HU Code HU Code HU source Code HU Code HU
NLENR Vide Vide Vide Code HU destination Vide Vide
REASON Vide Vide ZSC1 Vide Vide Vide
VBELN Vide Vide Vide Vide Vide Code livraison sortante
POSNR Vide Vide Vide Vide Vide Ligne de livraison

Règles métier

Déplacement (ACTION=B)

Déplacement de HU d'une zone à une autre. Pas de quantité, pas de code article, pas de lot — seuls les champs zone et support sont renseignés. Le contenu de la HU n'est pas rediscuté.

Blocage/Déblocage (ACTION=R/U)

Hors flux retour, le seul statut autorisé est le B6 (blocage logistique). Le LOC envoie R pour bloquer, U pour débloquer.

Suppression/Scrap (ACTION=S)

REASON est renseigné uniquement pour cette action. Valeur : ZSC1 (scrapping normal).

Transfert inter-HU (ACTION=T)

Source et destination doivent être dans la même ligne (VLENR + NLENR). ANFME = quantité transférée (pas le solde restant). Si le transfert passe par une étape intermédiaire (table de travail), transmettre chaque étape séparément avec un emplacement matérialisé.

Cas picking : 5 tâches alimentant la même palette fille = 5 lignes ACTION=T dans le même LOC, dans l'ordre chronologique.

Création de palette au picking : Si le SSCC en NLENR est inconnu de SAP, SAP crée automatiquement la HU (type palette standard). Le LOC ne crée que la structure palette — le stock est transféré depuis une palette source connue.

Correction de quantité (ACTION=C)

Quantité absolue comptée/validée (pas un écart). SAP calcule le delta. REASON n'est pas renseigné.

Assignation client (ACTION=P)

Déclencheur : palette physiquement positionnée sur l'image de quai (pas l'assignation logique). Les champs obligatoires sont :

  • ACTION = P

  • VLENR = Code HU

  • NLPLA = Image de quai de la HU

  • VBELN = Code livraison sortante SAP (= SorCode côté WMS)

  • POSNR = Ligne de livraison sortante SAP (= ligne d'OS associée à l'article)

Les champs MATNR, BATCHID, ANFME, ALTME, VLPLA, NLENR, REASON sont vides pour cette action.


Horodatage

IV_TREATMENT_ID = horodatage du moment de génération du LOC (pas l'heure de chaque transaction individuelle). Toutes les lignes d'un même LOC partagent le même horodatage. Format limité à 24 caractères (CHAR 24).
Format : YYYYMMDD

Ordre des lignes

Les lignes dans IT_CREATE doivent être dans l'ordre chronologique des transactions WMS. SAP traite les lignes dans l'ordre du fichier.


Désactivation STV et STC

STV

Désactiver le post-processing des transactions STK.ADJ → plus de génération de message STV. Le LOC couvre ce besoin via ACTION=C.

Vérifications préalables obligatoires :

  • Lister toutes les transactions qui génèrent un STV et confirmer que le LOC couvre chaque cas

  • Vérifier que le middleware GNA n'a pas d'autre dépendance au STV

STC

Désactiver le post-processing des transactions CST.STK → plus de génération de message STC. Le LOC couvre le B6 via ACTION=R/U.

Mêmes vérifications à effectuer que pour le STV.

Documenter les résultats de cette analyse dans un commentaire de la tâche avant de procéder à la désactivation.


Zones de stockage (VLPLA/NLPLA)

Les zones de stockage WMS doivent être découpées/créées pour correspondre au besoin du LOC :

Une table de correspondance est nécessaire car les codes zone WMS ne correspondent pas directement aux codes emplacement SAP. Cette table sera réalisée via un paramètre (ex : [TK_5_A:TK_5][TK_5_B:TK_5]).

Zones attendues par SAP :

  • ASRS1 : correspond au TK1 (compartiment anoxie)

  • ASRS2 : correspond au TK2 (compartiment du milieu)

  • ASRS3 : correspond à la zone accessible du TK3 uniquement (grand compartiment)

  • ASRS4 : correspond à la zone accessible du TK4 uniquement (grand compartiment)

  • ASRS34 : correspond à la zone accessible des deux TK3 et TK4 (grand compartiment)

  • PICKING : si présent sur un PK/TP

  • QUAI : si présent sur un emplacement dimage de quai ou sur le quai


Contraintes de longueur

Champ Type Longueur max
IV_LGNUM CHAR 4
IV_TREATMENT_ID CHAR 24
MATNR CHAR 40
BATCHID CHAR 10
ACTION CHAR 1
ANFME NUM 13.3 (13 entiers, 3 décimales)
ALTME CHAR 3
VLPLA CHAR 18
NLPLA CHAR 18
VLENR CHAR 20
NLENR CHAR 20
REASON CHAR 4

Critères d'acceptation

  1. Un job WMS tourne toutes les 5 minutes et crée une transaction custom LOC.SEND.

  2. Le GNA détecte cette transaction et génère un JSON LOC conforme au format spécifié.

  3. Le JSON est envoyé en POST à l'endpoint SAP.

  4. Les 7 codes ACTION (B, U, R, S, T, C, P) sont correctement générés selon le type de transaction WMS source.

  5. ACTION=B : les champs ANFME, ALTME, MATNR, BATCHID, NLENR, REASON, VBELN, POSNR sont vides. Seuls VLPLA, NLPLA et VLENR sont renseignés.

  6. ACTION=U/R : MATNR, BATCHID, ALTME, VLPLA, VLENR renseignés. ANFME, NLPLA, NLENR, REASON, VBELN, POSNR vides.

  7. ACTION=S : REASON = ZSC1. MATNR, BATCHID, ANFME, ALTME, VLPLA, VLENR renseignés. NLPLA, NLENR, VBELN, POSNR vides.

  8. ACTION=T : VLENR et NLENR renseignés dans la même ligne. ANFME = quantité transférée (pas un solde). MATNR, BATCHID, ALTME, VLPLA, NLPLA renseignés. REASON, VBELN, POSNR vides.

  9. ACTION=C : ANFME = quantité absolue (pas un delta). MATNR, BATCHID, ALTME, VLPLA, VLENR renseignés. NLPLA, NLENR, REASON, VBELN, POSNR vides.

  10. ACTION=P : VLENR, NLPLA (image de quai), VBELN (livraison sortante), POSNR (ligne de livraison) renseignés. MATNR, BATCHID, ANFME, ALTME, VLPLA, NLENR, REASON vides.

  11. Les palettes liées à une réception non fermée (pas de REF envoyé) sont exclues du LOC.

  12. Les lignes dans IT_CREATE sont dans l'ordre chronologique des transactions WMS.

  13. IV_TREATMENT_ID = horodatage de génération du LOC (CHAR 24).

  14. Si aucune transaction pertinente sur le delta → pas d'envoi de LOC.

  15. Tous les champs respectent les contraintes de longueur (MATNR ≤ 40, BATCHID ≤ 10, VLENR/NLENR ≤ 20, VLPLA/NLPLA ≤ 18, REASON ≤ 4, ANFME = NUM 13.3).

  16. STV et STC désactivés après validation de l'analyse d'impact.

  17. Cas picking : N tâches alimentant la même palette fille = N lignes ACTION=T dans le même LOC, dans l'ordre chronologique.

  18. Si le SSCC en NLENR est inconnu de SAP lors d'un ACTION=T, SAP crée automatiquement la HU — le LOC ne doit pas bloquer.


Cas de tests

1. Architecture & Job

CT-01 — Déclenchement du job toutes les 5 minutes

CA : 1 Préconditions : Job LOC activé, WMS et GNA opérationnels. Étapes :

  1. Observer le job LOC pendant 15 minutes.

  2. Vérifier la création de transactions LOC.SEND dans le WMS.

Résultat attendu : 3 transactions LOC.SEND créées à ~5 min d'intervalle.


CT-02 — Le GNA détecte la transaction LOC.SEND et génère le JSON

CA : 2, 3 Préconditions : Au moins une transaction WMS pertinente existe sur le delta. Étapes :

  1. Provoquer un mouvement de HU (ex. CON.MOVE).

  2. Attendre le prochain cycle du job LOC.

  3. Vérifier les logs du GNA.

Résultat attendu : Le GNA détecte LOC.SEND, génère un JSON conforme et effectue un POST vers l'endpoint SAP. La réponse HTTP est 200.


CT-03 — Aucune transaction sur le delta → pas d'envoi

CA : 14 Préconditions : Aucun mouvement WMS sur les 5 dernières minutes. Étapes :

  1. Attendre le prochain cycle du job LOC.

  2. Vérifier les logs du GNA.

Résultat attendu : Aucun appel POST n'est effectué vers SAP. Le GNA logge l'absence de transactions.


2. ACTION=B — Déplacement bin-to-bin

CT-10 — Déplacement via CON.MOVE

CA : 4, 5 Préconditions : HU HU-001 en zone TK_1, connue de SAP (REF envoyé). Étapes :

  1. Exécuter un CON.MOVE de HU-001 de TK_1 vers TK_3.

  2. Attendre le cycle LOC.

  3. Inspecter le JSON envoyé.

Résultat attendu :

{ "ACTION": "B", "VLPLA": "TK_1", "NLPLA": "TK_3", "VLENR": "HU-001", "MATNR": "", "BATCHID": "", "ANFME": "", "ALTME": "", "NLENR": "", "REASON": "", "VBELN": "", "POSNR": "" }


CT-11 — Déplacement via CON.LOCATE

CA : 4, 5 Préconditions : HU HU-002 en zone PK_01, connue de SAP. Étapes :

  1. Exécuter un CON.LOCATE de HU-002 vers QUAI_03.

  2. Attendre le cycle LOC.

Résultat attendu : Ligne ACTION=B identique en structure à CT-10, avec VLPLA=PK_01, NLPLA=QUAI_03, VLENR=HU-002. Tous les autres champs vides.


CT-12 — Déplacement via STK.MOVE sans changement de HU

CA : 4, 5 Préconditions : HU HU-003 contenant du stock, ContainerTo = ContainerCode (même HU). Étapes :

  1. Exécuter un STK.MOVE où ContainerTo = ContainerCode et la zone change.

  2. Attendre le cycle LOC.

Résultat attendu : Ligne ACTION=B (pas T). MATNR, BATCHID, ANFME, ALTME vides. Zones origine/destination renseignées.


3. ACTION=U/R — Blocage / Déblocage

CT-20 — Blocage d'une HU (ACTION=R)

CA : 4, 6 Préconditions : HU HU-010 en zone TK_2, statut libre, connue de SAP. Étapes :

  1. Exécuter un CST.STK passant HU-010 en statut B6.

  2. Attendre le cycle LOC.

Résultat attendu :

{ "ACTION": "R", "MATNR": "<code_produit>", "BATCHID": "<lot>", "ALTME": "<udm>", "VLPLA": "TK_2", "VLENR": "HU-010", "ANFME": "", "NLPLA": "", "NLENR": "", "REASON": "", "VBELN": "", "POSNR": "" }


CT-21 — Déblocage d'une HU (ACTION=U)

CA : 4, 6 Préconditions : HU HU-010 en zone TK_2, statut B6, connue de SAP. Étapes :

  1. Exécuter un CST.STK retirant le statut B6 de HU-010.

  2. Attendre le cycle LOC.

Résultat attendu : Idem CT-20 mais ACTION=U.


CT-22 — Changement de statut hors B6 (hors retour) → pas de ligne LOC

CA : 6 Préconditions : HU HU-011, changement de statut autre que B6 (ex. F2, F9). Étapes :

  1. Exécuter un CST.STK avec un statut retour.

  2. Attendre le cycle LOC.

Résultat attendu : Aucune ligne générée dans le LOC pour cette transaction.


4. ACTION=S — Suppression / Scrap

CT-30 — Suppression d'un container (CON.DELETE)

CA : 4, 7 Préconditions : HU HU-020 en zone TK_4, contenant 150.000 BAG de produit MAT-A, lot LOT-1, connue de SAP. Étapes :

  1. Exécuter un CON.DELETE sur HU-020.

  2. Attendre le cycle LOC.

Résultat attendu :

{ "ACTION": "S", "MATNR": "MAT-A", "BATCHID": "LOT-1", "ANFME": "150.000", "ALTME": "BAG", "VLPLA": "TK_4", "VLENR": "HU-020", "REASON": "ZSC1", "NLPLA": "", "NLENR": "", "VBELN": "", "POSNR": "" }


CT-31 — REASON toujours ZSC1 pour action S

CA : 7 Préconditions : Plusieurs suppressions via CON.DELETE. Étapes :

  1. Supprimer 2 containers différents.

  2. Attendre le cycle LOC.

Résultat attendu : Chaque ligne ACTION=S a REASON=ZSC1. Pas d'autre valeur.


5. ACTION=T — Transfert inter-HU

CT-40 — Transfert via STK.MOVE avec changement de HU

CA : 4, 8 Préconditions : HU HU-030 (source) en zone TK_1, HU HU-031 (destination) en zone PK_02. Transfert de 50.000 KG de produit MAT-B, lot LOT-2. Étapes :

  1. Exécuter un STK.MOVE avec ContainerTo ≠ ContainerCode.

  2. Attendre le cycle LOC.

Résultat attendu :

{ "ACTION": "T", "MATNR": "MAT-B", "BATCHID": "LOT-2", "ANFME": "50.000", "ALTME": "KG", "VLPLA": "TK_1", "NLPLA": "PK_02", "VLENR": "HU-030", "NLENR": "HU-031", "REASON": "", "VBELN": "", "POSNR": "" }


CT-41 — Transfert via STK.PICKING

CA : 4, 8 Préconditions : HU source HU-040, palette fille HU-041. Picking de 20.000 BAG de MAT-C, lot LOT-3. Étapes :

  1. Exécuter un STK.PICKING.

  2. Attendre le cycle LOC.

Résultat attendu : Ligne ACTION=T avec VLENR=HU-040, NLENR=HU-041, ANFME=20.000 (quantité transférée, pas le solde restant).


CT-42 — Picking multiple : N tâches → N lignes ACTION=T

CA : 17 Préconditions : 3 tâches de picking alimentant la même palette fille HU-050 depuis 3 HU sources différentes. Étapes :

  1. Exécuter les 3 pickings dans l'ordre : HU-051 → HU-050, HU-052 → HU-050, HU-053 → HU-050.

  2. Attendre le cycle LOC.

Résultat attendu : 3 lignes ACTION=T dans IT_CREATE, dans l'ordre chronologique des pickings. Chaque ligne a NLENR=HU-050 et un VLENR différent.


CT-43 — Transfert vers SSCC inconnu de SAP

CA : 18 Préconditions : Palette fille HU-060 nouvellement créée (SSCC inexistant côté SAP). Étapes :

  1. Exécuter un picking vers HU-060.

  2. Attendre le cycle LOC.

Résultat attendu : La ligne ACTION=T est générée normalement avec NLENR=HU-060. Le LOC ne bloque pas. SAP crée automatiquement la HU à réception.


CT-44 — Transfert via étape intermédiaire (table de travail)

CA : 8 Préconditions : Transfert de HU-070 vers HU-071 passant par une table de travail TW_01. Étapes :

  1. Exécuter les mouvements : HU-070 → TW_01, puis TW_01 → HU-071.

  2. Attendre le cycle LOC.

Résultat attendu : 2 lignes distinctes dans le LOC, chacune avec un emplacement matérialisé (pas de fusion en une seule ligne).


6. ACTION=C — Correction de quantité

CT-50 — Ajustement de stock via STK.ADJ

CA : 4, 9 Préconditions : HU HU-080 en zone TK_5, stock actuel 100.000 BAG de MAT-D, lot LOT-4. Ajustement à 95.000 BAG. Étapes :

  1. Exécuter un STK.ADJ sur HU-080.

  2. Attendre le cycle LOC.

Résultat attendu :

{ "ACTION": "C", "MATNR": "MAT-D", "BATCHID": "LOT-4", "ANFME": "95.000", "ALTME": "BAG", "VLPLA": "TK_5", "VLENR": "HU-080", "NLPLA": "", "NLENR": "", "REASON": "", "VBELN": "", "POSNR": "" }

ANFME = quantité absolue après ajustement (95.000), pas le delta (-5.000).


CT-51 — REASON vide pour action C

CA : 9 Préconditions : Ajustement de stock. Étapes : Idem CT-50.

Résultat attendu : Le champ REASON est vide (pas de code raison pour les corrections).


7. ACTION=P — Assignation client

CT-60 — Palette positionnée sur image de quai

CA : 4, 10 Préconditions : HU HU-090 assignée à la livraison VBELN-001, ligne 010. Image de quai QUAI_07. Étapes :

  1. Positionner physiquement HU-090 sur l'image de quai QUAI_07.

  2. Attendre le cycle LOC.

Résultat attendu :

{ "ACTION": "P", "VLENR": "HU-090", "NLPLA": "QUAI_07", "VBELN": "VBELN-001", "POSNR": "010", "MATNR": "", "BATCHID": "", "ANFME": "", "ALTME": "", "VLPLA": "", "NLENR": "", "REASON": "" }


CT-61 — ACTION=P : champs MATNR, BATCHID, ANFME, ALTME, VLPLA, NLENR, REASON vides

CA : 10 Préconditions : Idem CT-60.

Résultat attendu : Vérifier explicitement que les 7 champs ci-dessus sont vides dans la ligne P.


8. Filtre d'exclusion

CT-70 — HU liée à une réception non fermée exclue du LOC

CA : 11 Préconditions : HU HU-100 vient d'être réceptionnée, le REF n'a pas encore été envoyé à SAP. Un mouvement CON.MOVE est effectué sur HU-100. Étapes :

  1. Déplacer HU-100.

  2. Attendre le cycle LOC.

Résultat attendu : Aucune ligne pour HU-100 dans le LOC.


CT-71 — HU liée à une réception fermée (REF envoyé) incluse dans le LOC

CA : 11 Préconditions : HU HU-101 réceptionnée, REF envoyé et confirmé par SAP. Un mouvement est effectué sur HU-101. Étapes :

  1. Déplacer HU-101.

  2. Attendre le cycle LOC.

Résultat attendu : La ligne apparaît dans le LOC.


9. Ordre chronologique & Horodatage

CT-80 — Lignes dans l'ordre chronologique

CA : 12 Préconditions : 3 transactions WMS effectuées dans l'ordre : CON.MOVE (t1), STK.ADJ (t2), STK.PICKING (t3). Étapes :

  1. Exécuter les 3 transactions.

  2. Attendre le cycle LOC.

  3. Inspecter l'ordre des lignes dans IT_CREATE.

Résultat attendu : Les lignes apparaissent dans l'ordre t1 → t2 → t3 (ACTION=B, puis C, puis T).


CT-81 — IV_TREATMENT_ID = horodatage de génération

CA : 13 Préconditions : Transactions effectuées à des heures différentes sur le delta. Étapes :

  1. Inspecter IV_TREATMENT_ID dans le JSON.

Résultat attendu : IV_TREATMENT_ID correspond à l'heure de génération du LOC (pas l'heure d'une transaction individuelle). Toutes les lignes partagent le même horodatage. Longueur ≤ 24 caractères.


10. Contraintes de longueur

CT-90 — Respect des longueurs max MII

CA : 15 Préconditions : Données de test avec des valeurs aux limites de longueur. Étapes :

  1. Créer des données avec : MATNR de 40 caractères, BATCHID de 10 caractères, VLENR/NLENR de 20 caractères, VLPLA/NLPLA de 18 caractères.

  2. Attendre le cycle LOC.

Résultat attendu : Le JSON est généré sans troncature ni erreur. Les valeurs respectent les longueurs max.


CT-91 — ANFME au format NUM 13.3

CA : 15 Préconditions : Quantité avec décimales (ex. 12345.678). Étapes :

  1. Ajuster un stock à une quantité avec 3 décimales.

  2. Attendre le cycle LOC.

Résultat attendu : ANFME formaté en NUM 13.3 (max 13 chiffres entiers, 3 décimales).


11. Désactivation STV / STC

CT-100 — Plus de STV après désactivation

CA : 16 Préconditions : STV désactivé (post-processing STK.ADJ supprimé). Étapes :

  1. Exécuter un STK.ADJ.

  2. Vérifier qu'aucun message STV n'est généré.

  3. Vérifier que le LOC contient bien une ligne ACTION=C.

Résultat attendu : Pas de STV. Le LOC couvre le mouvement via ACTION=C.


CT-101 — Plus de STC après désactivation

CA : 16 Préconditions : STC désactivé (post-processing CST.STK supprimé). Étapes :

  1. Exécuter un CST.STK (blocage B6).

  2. Vérifier qu'aucun message STC n'est généré.

  3. Vérifier que le LOC contient bien une ligne ACTION=R.

Résultat attendu : Pas de STC. Le LOC couvre le mouvement via ACTION=R.


12. Cas combinés / Scénarios de bout en bout

CT-110 — LOC avec plusieurs actions dans le même delta

CA : 4, 12 Préconditions : Sur le même delta de 5 minutes, effectuer : un déplacement (B), un blocage (R), un picking (T), une correction (C). Étapes :

  1. Exécuter les 4 opérations.

  2. Attendre le cycle LOC.

Résultat attendu : Le JSON contient 4 lignes dans IT_CREATE, une par action, dans l'ordre chronologique. Chaque ligne respecte ses règles de remplissage propres.


CT-111 — IV_LGNUM toujours "WF02"

CA : 2 Préconditions : Valeur configurée dans EasyS. Étapes :

  1. Inspecter plusieurs JSON LOC.

Résultat attendu : IV_LGNUM = "WF02" dans tous les cas.


CT-112 — HU multi-lignes de stock (point en attente #2)

CA :Préconditions : HU contenant 2 lignes de stock (2 articles/lots différents). Étapes :

  1. Effectuer un mouvement sur cette HU.

  2. Attendre le cycle LOC.

Résultat attendu : plusieurs entrées dans IT_CREATE


Points en attente

# Point En attente de Impact dev
3 Cas palette déposée sur image de quai → chargée → OS fermé → LOF/SOF envoyé avant le LOC (LOC ne mentionnera pas la HU) Limagrain Non