- Bloquants: mermaid 03-picking/_index reconstitue (archive 11-05), 13 liens vers pages squelette retires, 2 liens recibles (anoxie, application-dictionary) - Conventions: 910 em dashes -> tirets simples, 145 checklists -> puces question, 13 questions resolues barrees - Liens: 9 ancres reparees (slugs GitHub) - Delta: 12 standard_ref remappes, blocs Standard EasyWMS + sections References ajoutes, front matter complete - Glossaire: 15 termes standard deplaces en section rappel avec renvoi - Rapport: limagrain/_lint_report.md (Phase 1 + Phase 2 + re-scan final) - Inclut les pages des sessions precedentes non commitees + CLAUDE.md et consume.log en l'etat
24 KiB
title, tags, status, standard_ref, jira_refs, confluence_refs, sources, last_updated, author
| title | tags | status | standard_ref | jira_refs | confluence_refs | sources | last_updated | author | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| LOC - Message périodique (spécification complète) |
|
draft | concepts/erp-interface.md |
|
|
2026-07-17 | Arthur |
LOC - Message périodique (spécification complète)
Résumé : spécification du message custom LOC, envoyé du WMS vers SAP toutes les 5 minutes via le GNA, contenant le delta des HU modifiées. Le LOC remplace les messages PCK, MOVE, STV et STC et devient le seul canal de notification des mouvements de stock vers SAP.
Standard EasyWMS : → voir ERP Integration Ce message est un [CUSTOM] - il n'existe pas dans le standard EasyWMS.
Voir aussi : Référence messages, Flux ERP outbound, Intégration GNA → SAP-CPI
Contexte projet
Le LOC est un message custom envoyé du WMS vers SAP toutes les 5 minutes (✅ reconfirmé le 30/04/2026), contenant l'état de toutes les HU ayant subi une modification durant la période écoulée.
Il remplace les messages PCK et MOVE (supprimés) et centralise la
communication des mouvements physiques vers l'ERP. Le LOC ne transmet pas
l'intégralité de la base, uniquement le delta sur la fenêtre de 5 minutes
(basé sur la CreationDate des transactions WMS).
Pourquoi le LOC plutôt que des STV purs ?
Limagrain (Nicolas Sanchez) a exprimé que les STV en delta (+/-) ne sont pas fiables : si un message se perd ou est mal intégré, l'écart est définitivement perdu. Limagrain souhaite recevoir des quantités absolues que SAP prend pour argent comptant et compare à ses propres données pour générer les écritures de delta.
Le LOC est un fork fonctionnel du WSC (Warehouse Stock Count) adapté pour ne remonter que le delta des 5 dernières minutes, formaté selon un JSON spécifique attendu par SAP.
Décisions structurantes
- STV désactivé (post-processing coupé) - le LOC devient le seul canal de notification des mouvements de stock vers SAP
- STC désactivé - les changements de statut hors retour sont limités au B6 (blocage logistique) et sont couverts par le LOC (action R/U). Les statuts des retours sont remontés dans le REF
Architecture technique
Chaîne de traitement
Job (toutes les 5 min) → Workflow → Transaction custom LOC.SEND → GNA →
Script BOO (requêtes WMS + agrégation + formatage JSON) → POST API SAP
Côté WMS
- Un Job s'exécute toutes les 5 minutes
- Ce job appelle un Workflow custom dont le seul rôle est de créer
une transaction custom
LOC.SEND - Le Workflow et la transaction ne portent aucune logique métier côté WMS - toute la logique est dans le GNA
Côté GNA
- Un script BOO dédié au message LOC est créé dans le GNA
- Le GNA détecte la transaction custom
LOC.SEND - À réception, le script BOO :
- Collecte toutes les transactions WMS pertinentes sur le delta de temps
- Agrège les données par HU et détermine le code ACTION pour chaque mouvement
- Construit le JSON au format attendu par SAP
- Effectue un appel POST vers l'API SAP-CPI (voir Intégration GNA → SAP-CPI)
Détection du delta
- À chaque exécution, enregistrer un timestamp de dernière exécution
- Récupérer toutes les transactions dont
CreationDate > dernier_timestampetCreationDate ≤ timestamp_courant - Agréger par HU, déterminer le code ACTION pour chaque mouvement
- Générer le JSON et envoyer
- Si aucune transaction pertinente sur le delta → pas d'envoi de LOC
Couverture fonctionnelle - 7 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 |
Palettes exclues du LOC
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 attendu par SAP
Paramètres d'import
| Réf. | Champ | Type | Description |
|---|---|---|---|
| 1 | IV_LGNUM | CHAR 4 | Numéro d'entrepôt (valeur fixe : "WF02") - config EasyS |
| 2 | IV_TREATMENT_ID | CHAR 24 | Horodatage de génération du LOC |
Structure JSON
{
"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>"
}
]
}
Table IT_CREATE - Champs (1:n)
| Réf. | Champ | Type | Description |
|---|---|---|---|
| 1 | MATNR | CHAR 40 | Code produit SAP - vide si action B ou P |
| 2 | BATCHID | CHAR 10 | Code lot SAP - vide si action B ou P |
| 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 B, U/R, P |
| 5 | ALTME | CHAR 3 | Unité de mesure (BAG, KG) - vide si action B ou P |
| 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) |
| 11 | VBELN | - | Code livraison sortante SAP - uniquement pour action P |
| 12 | POSNR | - | Ligne de livraison sortante SAP - uniquement pour action P |
Données stock/container à récupérer par ligne LOC
Pour chaque HU identifiée dans les transactions du delta :
- 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
Règles de remplissage par action
| Champ | B (déplacement) | U/R (statut) | S (suppression) | T (transfert) | C (correction) | P (assignation) |
|---|---|---|---|---|---|---|
| MATNR | Vide | Code produit | Code produit | Code produit | Code produit | 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 | 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 dest. | Vide | Image de quai |
| VLENR | Code HU | Code HU | Code HU | Code HU source | Code HU | Code HU |
| NLENR | Vide | Vide | Vide | Code HU dest. | Vide | Vide |
| REASON | Vide | Vide | ZSC1 | Vide | Vide | Vide |
| VBELN | Vide | Vide | Vide | Vide | Vide | Code livraison |
| POSNR | Vide | Vide | Vide | Vide | Vide | Ligne livraison |
Règles métier par type d'action
ACTION = B (Déplacement bin-to-bin)
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é.
ACTION = U / R (Déblocage / Blocage statut)
Hors flux retour, le seul statut autorisé est le B6 (blocage logistique). ACTION=R pour bloquer, ACTION=U pour débloquer.
Les statuts exotiques des retours (B6, F2, F9, etc.) sont gérés dans le REF de la réception retour, pas dans le LOC.
ACTION = S (Suppression / Scrap)
REASON est renseigné uniquement pour cette action. Valeur : ZSC1
(scrapping normal). Pas d'autre valeur possible.
ACTION = T (Transfert inter-HU)
Source et destination 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.
ACTION = C (Correction de quantité)
Quantité absolue comptée/validée (pas un écart). SAP calcule le delta. REASON n'est pas renseigné.
ACTION = P (Assignation client)
Déclencheur : palette physiquement positionnée sur l'image de quai (pas l'assignation logique). Champs obligatoires :
- 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.
Transactions WMS sources
| Transaction WMS | Action LOC | Données à récupérer |
|---|---|---|
| CON.MOVE | B (déplacement) | ContainerCode, zone origine, zone destination |
| CON.LOCATE | B (déplacement) | Idem |
| STK.MOVE | B ou T | ContainerCode source et dest. Si ContainerTo ≠ ContainerCode → T avec qté transférée |
| STK.ADJ | C (correction) | ContainerCode, quantité absolue actuelle 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), qté transférée |
| CON.DELETE | S (suppression) | ContainerCode, quantité supprimée |
⚠️ Vérifier si d'autres transactions sont utiles pour le LOC (ex. STK.SCR pour le scrap depuis RF).
Zones de stockage (VLPLA / NLPLA)
Les codes zone WMS ne correspondent pas directement aux codes emplacement
SAP. Une table de correspondance est nécessaire, réalisée via un
paramètre EasyS (ex : [TK_5_A:TK_5][TK_5_B:TK_5]).
Zones attendues par SAP
| Zone SAP | Correspondance WMS |
|---|---|
| ASRS1 | TK1 (compartiment anoxie) |
| ASRS2 | TK2 (compartiment du milieu) |
| ASRS3 | Zone accessible du TK3 uniquement (grand compartiment) |
| ASRS4 | Zone accessible du TK4 uniquement (grand compartiment) |
| ASRS34 | Zone accessible des deux TK3 et TK4 (grand compartiment) |
| PICKING | Si présent sur un PK/TP |
| QUAI | Si présent sur un emplacement d'image de quai ou sur le quai |
Horodatage (IV_TREATMENT_ID)
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 : YYYYMMDD - limité à 24 caractères (CHAR 24).
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.
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 |
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.
Critères d'acceptation
- Un job WMS tourne toutes les 5 minutes et crée une transaction custom LOC.SEND
- Le GNA détecte cette transaction et génère un JSON LOC conforme
- Le JSON est envoyé en POST à l'endpoint SAP
- Les 7 codes ACTION (B, U, R, S, T, C, P) sont correctement générés
- ACTION=B : ANFME, ALTME, MATNR, BATCHID, NLENR, REASON, VBELN, POSNR vides - seuls VLPLA, NLPLA et VLENR renseignés
- ACTION=U/R : MATNR, BATCHID, ALTME, VLPLA, VLENR renseignés - ANFME, NLPLA, NLENR, REASON, VBELN, POSNR vides
- ACTION=S : REASON=ZSC1 - MATNR, BATCHID, ANFME, ALTME, VLPLA, VLENR renseignés - NLPLA, NLENR, VBELN, POSNR vides
- ACTION=T : VLENR et NLENR dans la même ligne - ANFME = qté transférée (pas un solde) - REASON, VBELN, POSNR vides
- ACTION=C : ANFME = quantité absolue (pas un delta) - NLPLA, NLENR, REASON, VBELN, POSNR vides
- ACTION=P : VLENR, NLPLA (image de quai), VBELN, POSNR renseignés - MATNR, BATCHID, ANFME, ALTME, VLPLA, NLENR, REASON vides
- Palettes liées à une réception non fermée (pas de REF envoyé) exclues
- Lignes dans IT_CREATE dans l'ordre chronologique des transactions WMS
- IV_TREATMENT_ID = horodatage de génération (CHAR 24)
- Aucune transaction pertinente sur le delta → pas d'envoi de LOC
- Contraintes de longueur respectées sur tous les champs
- STV et STC désactivés après validation de l'analyse d'impact
- Picking N tâches → N lignes ACTION=T dans l'ordre chronologique
- SSCC inconnu en NLENR lors d'un ACTION=T → LOC ne bloque pas, SAP crée la HU automatiquement
Cas de tests
Architecture et Job
| CT | CA | Description | Résultat attendu |
|---|---|---|---|
| CT-01 | 1 | Déclenchement job toutes les 5 min | 3 transactions LOC.SEND en 15 min |
| CT-02 | 2,3 | GNA détecte LOC.SEND et génère JSON | JSON conforme + POST HTTP 200 |
| CT-03 | 14 | Aucune transaction sur le delta | Aucun POST vers SAP |
ACTION=B - Déplacement
| CT | CA | Description | Résultat attendu |
|---|---|---|---|
| CT-10 | 4,5 | Déplacement via CON.MOVE | ACTION=B, seuls VLPLA/NLPLA/VLENR renseignés |
| CT-11 | 4,5 | Déplacement via CON.LOCATE | Idem CT-10 |
| CT-12 | 4,5 | STK.MOVE sans changement HU (ContainerTo=ContainerCode) | ACTION=B (pas T) |
ACTION=U/R - Blocage / Déblocage
| CT | CA | Description | Résultat attendu |
|---|---|---|---|
| CT-20 | 4,6 | Blocage HU via CST.STK (→ B6) | ACTION=R, MATNR/BATCHID/ALTME/VLPLA/VLENR renseignés |
| CT-21 | 4,6 | Déblocage HU via CST.STK (← B6) | ACTION=U |
| CT-22 | 6 | Changement statut hors B6 (hors retour) | Aucune ligne dans le LOC |
ACTION=S - Suppression / Scrap
| CT | CA | Description | Résultat attendu |
|---|---|---|---|
| CT-30 | 4,7 | CON.DELETE sur une HU | ACTION=S, REASON=ZSC1, qté et champs stock renseignés |
| CT-31 | 7 | Plusieurs suppressions | Chaque ligne S a REASON=ZSC1 uniquement |
ACTION=T - Transfert inter-HU
| CT | CA | Description | Résultat attendu |
|---|---|---|---|
| CT-40 | 4,8 | STK.MOVE avec ContainerTo ≠ ContainerCode | ACTION=T, VLENR+NLENR+ANFME renseignés |
| CT-41 | 4,8 | STK.PICKING | ACTION=T, ANFME = qté transférée (pas solde) |
| CT-42 | 17 | 3 pickings → même palette fille | 3 lignes T dans l'ordre chronologique |
| CT-43 | 18 | Picking vers SSCC inconnu SAP | Ligne T générée, LOC ne bloque pas |
| CT-44 | 8 | Transfert via table de travail | 2 lignes distinctes (pas de fusion) |
ACTION=C - Correction de quantité
| CT | CA | Description | Résultat attendu |
|---|---|---|---|
| CT-50 | 4,9 | STK.ADJ (ajustement) | ACTION=C, ANFME = qté absolue après ajustement |
| CT-51 | 9 | Vérification REASON vide | REASON vide pour action C |
ACTION=P - Assignation client
| CT | CA | Description | Résultat attendu |
|---|---|---|---|
| CT-60 | 4,10 | Palette sur image de quai | ACTION=P, VLENR/NLPLA/VBELN/POSNR renseignés |
| CT-61 | 10 | Champs vides vérifiés | MATNR/BATCHID/ANFME/ALTME/VLPLA/NLENR/REASON vides |
Filtre d'exclusion
| CT | CA | Description | Résultat attendu |
|---|---|---|---|
| CT-70 | 11 | HU réception non fermée (pas de REF) | Aucune ligne dans le LOC |
| CT-71 | 11 | HU réception fermée (REF envoyé) | Ligne présente dans le LOC |
Ordre chronologique et horodatage
| CT | CA | Description | Résultat attendu |
|---|---|---|---|
| CT-80 | 12 | 3 transactions dans l'ordre | Lignes dans l'ordre chronologique |
| CT-81 | 13 | IV_TREATMENT_ID | Horodatage de génération, ≤ 24 car. |
Contraintes de longueur et cas combinés
| CT | CA | Description | Résultat attendu |
|---|---|---|---|
| CT-90 | 15 | Valeurs aux limites de longueur | JSON sans troncature |
| CT-91 | 15 | ANFME avec décimales | Format NUM 13.3 respecté |
| CT-100 | 16 | STK.ADJ après désactivation STV | Pas de STV, LOC contient ACTION=C |
| CT-101 | 16 | CST.STK après désactivation STC | Pas de STC, LOC contient ACTION=R |
| CT-110 | 4,12 | Plusieurs actions dans le même delta | 4 lignes, 4 actions, ordre chronologique |
| CT-111 | 2 | IV_LGNUM | Toujours "WF02" |
| CT-112 | - | HU multi-lignes de stock | Plusieurs entrées dans IT_CREATE |
[CUSTOM] Implémentation GNA (statut : en revue de code, préprod)
Statut ticket au 2026-07-17 : En revue de code (plusieurs livraisons préprod, revue Vincent Charvet en cours). Éléments issus de la relecture des commentaires :
| Élément | Type | Rôle |
|---|---|---|
CST_SendLOCTransaction |
Job | Toutes les 5 min, appelle CST_SendLOC |
CST_SendLOC |
WF | Crée la transaction LOC.SEND (aucune logique métier) |
LOC.SEND |
TransactionType | Déclenche la génération du LOC |
LOC_ZONE_MAPPING |
Paramètre | Correspondance zones TK → zones client (voir Paramètres projet) |
CommonExportWebApi.boo |
Script GNA | Structure LOC selon le template client |
EasyWMSExportMessages.boo |
Script GNA | Appelle WriteLOC01 sur réception de LOC.SEND |
EasyWMSWebApiObserver.boo |
Script GNA | Ajoute le type de message LOC01 |
LOC01.boo |
Script GNA | En-tête du message |
WriteLOC01.boo |
Script GNA | Génère le message ; si rien n'a changé → transaction en erreur motif NO_CHANGES (évolution demandée : ne plus générer de transaction en erreur si rien à envoyer) |
LOC01Observer.boo |
Script GNA | Cœur : récupère la dernière LOC.SEND, prend les transactions depuis (CON.MOVE, CON.LOCATE, STK.MOVE, STK.ADJ, CST.STK, STK.PICKING, CON.DELETE), détermine l'ACTION |
LOC01.xsd |
Schéma | Structure du message LOC |
Décision réception non fermée : on n'envoie pas de LOC pour un conteneur pas encore présent dans l'ERP (SAP les crée à partir du REF). Conséquence assumée par le client (soulevée par Nicolas le 02/06) : les modifications intervenues sur la palette avant l'envoi du REF ne sont pas rejouées après coup (filtrage par date/heure de traitement).
Picking négatif (en cours - point délicat)
Le picking négatif génère la séquence de transactions suivante :
CON.CREATE: nouveau conteneur sur une TPSTK.PICKING.NEG: déplacement de l'excédent vers la nouvelle palette, origine = destination = conteneur d'origine (picking sur lui-même), quantité = quantité demandée dans l'OS- 2×
CHB.LAB: échange des labels des deux palettes (nouveau → origine, puis l'inverse)
Problème : avec CON.CREATE + STK.PICKING.NEG seuls, on n'a pas la
corrélation entre conteneur source et destination. CHB.LAB pourrait
faire le lien, mais le swap des labels intervient après le picking -
si le LOC part entre les deux étapes, l'information ne peut pas être
regroupée. Analyse en cours (LOC01Observer mis à jour le 03/07 ; pistes
de réflexion partagées par Arthur).
Retours revue de code / client (à traiter)
- Retour client (08/07) : certains LOC non intégrables côté SAP - action S avec les autres champs vides ; doublons (même info plusieurs fois). Corrections appliquées 09/07 puis 17/07.
- Revue de code (10/07, Vincent Charvet) : détail des stocks manquant
sur action S ; valeur
WF02codée en dur ; fonctionBuildZoneMappingjamais utilisée (éviterait de parserLOC_ZONE_MAPPINGpar emplacement) ; null ref potentielles sur la comparaison au statut B6 ; optimiser le cache (une query par type de donnée). Changements appliqués 17/07, re-revue à faire.
Points d'attention
⚠️ STV et STC désactivés - vérifier qu'aucun autre process métier ne dépend d'eux (middleware GNA, reporting).
⚠️ Le filtrage GNA des STV avec motif "STR" devient caduc si le STV est globalement désactivé.
⚠️ Le LOC ne doit jamais transmettre de palettes dont la réception n'est pas fermée (pas de REF envoyé).
⚠️ Pour ACTION=B, les champs MATNR, BATCHID, ANFME, ALTME sont tous vides.
⚠️ Les quantités sont des valeurs absolues sauf pour ACTION=S (quantité supprimée) et ACTION=T (quantité transférée).
⚠️ IV_LGNUM = "WF02" (pas "WL02" - corrigé depuis spec V2).
Questions ouvertes
- ❓ Cas palette déposée sur image de quai → chargée → OS fermé → LOF/SOF envoyé avant le LOC : la HU ne sera pas mentionnée dans le LOC (@Limagrain)
- ❓ HU multi-lignes de stock : comportement exact à confirmer (CT-112) (@Fabien)
- ❓ Vérifier si d'autres transactions WMS sont utiles pour le LOC (ex. STK.SCR) (@Fabien)
- Picking négatif : corrélation conteneur source ↔ destination
indisponible via CON.CREATE + STK.PICKING.NEG ; le swap
CHB.LABintervient après le picking. Solution en cours d'analyse (@Maxime / @Vincent) - LOC action S : compléter le détail des stocks ; éliminer les doublons (retour client 08/07, corrections en cours) (@Maxime)
Historique des modifications
| Date | Auteur | Modification |
|---|---|---|
| 2026-05-06 | Arthur | Création depuis spec LOC V2 (réunion 30/04/2026) |
| 2026-05-12 | Arthur | Refonte complète depuis LIM-76 : architecture technique GNA/BOO, ACTION=P confirmé avec VBELN/POSNR, IV_LGNUM corrigé WF02, zones SAP détaillées, contraintes de longueur, 25+ cas de tests, critères d'acceptation |
| 2026-07-17 | Arthur | Relecture commentaires LIM-76 (statut en revue de code, préprod) : section « Implémentation GNA » (job/WF/transaction, scripts .boo, LOC01.xsd, LOC_ZONE_MAPPING, motif NO_CHANGES), décision réception non fermée (modifs pré-REF non rejouées), sous-section picking négatif (CON.CREATE + STK.PICKING.NEG + CHB.LAB, problème de corrélation), retours revue de code / client (action S, doublons, WF02 hardcodé, BuildZoneMapping, cache) |
Références
| Source | Type | Date |
|---|---|---|
| LIM-76 | Ticket Jira (LOT 1.2) - en revue de code, préprod | 2026-07-17 |
| LOC - Etat des lieux V2 | Spécification technique | 30/04/2026 |
| CR CONSOLIDES REU ERP LIMAGRAIN V1 | CR ateliers interfaçage | 23/02/2026 |
| Réunion LOC 30/04/2026 | Réunion Arthur + Justine + Nicolas | 30/04/2026 |