Programme magasins et caisses enregistreuses dans SAP
L'Oréal USA · Technical Lead SAP SD/FI · Chef d'équipe SD, FI et DataSources BW
Technical lead du programme retail sur SAP qui a intégré à SAP les boutiques de produits professionnels de L'Oréal USA, des écrans de caisse et de la création des commandes jusqu'à la finance et aux extracteurs BI.
- Client / organisation
- L'Oréal USA
- Cabinet de conseil
- VISEO USA
- Rôle
- Technical Lead SAP SD/FI · Chef d'équipe SD, FI et DataSources BW
- Période
- août 2011 - mai 2017
- Lieu
- Berkeley Heights, New Jersey, États-Unis
- Équipe
- Jusqu'à 10 développeurs
- Domaine
- Systèmes retail
Contexte métier
L'Oréal USA a acheté SalonCentric, distributeur de produits de coiffure pour les professionnels, composé de plusieurs entrepôts et d'environ 600 boutiques réparties dans tous les États-Unis. Pour assurer la cohésion des données, l'application de gestion des boutiques et des caisses enregistreuses a été déployée directement dans le système SAP existant de L'Oréal plutôt que dans un logiciel de caisse séparé. Intervention pour accélérer les développements que l'équipe en place ne pouvait pas livrer à temps : l'application de gestion des boutiques, l'approvisionnement des boutiques par les entrepôts et les mises en production successives par région. Poursuite sur les phases suivantes du programme, liées à de nouvelles acquisitions de L'Oréal, et sur de nouveaux outils SAP.
Contributions clés
- Pilotage des équipes de développement SAP sur les flux de vente, la finance et les DataSources BW, sur site et offshore, pour un programme livré en phases successives sur environ six ans.
- Conception et développement d'évolutions des applications de caisse enregistreuse et de centre d'appels dans SAP : recherche client, scan, écran récapitulatif et paiement.
- Conception d'une logique au moment du scan qui choisit la version de produit réellement en stock lorsqu'une boutique scanne un code-barres UPC/EAN, ce qui réduit les stocks négatifs.
- Simplification de l'interface des boutiques par la suppression des boutons et écrans inutiles de la solution retail livrée.
- Responsabilité des estimations, du planning, du budget, du recrutement de sous-traitants, de la gestion des temps et de l'assistance aux comités de pilotage pour les équipes techniques.
Responsabilités en détail
Pilotage d'équipe
- Coordination de l'équipe de développement sur les flux de vente (4 personnes sur site), du développeur finance (1 sur site), du développeur des flux BW (1 en France) et d'une équipe technique offshore (2).
- Recrutement de sous-traitants ; gestion et signature des feuilles de temps ; suivi des tâches et garant des livraisons.
- Chiffrages, estimations des charges et calendriers de livraison ; planning, budget et gestion des ressources.
- Assistance aux comités de pilotage et suivi de chaque mise en production.
Analyse et conception
- Analyse des besoins métier et études de faisabilité pour les évolutions de caisse et de centre d'appels.
- Rédaction des spécifications techniques détaillées et des cahiers de test.
- Participation à la refonte graphique des écrans des boutiques.
Développement
- Développements ABAP : rapports ALV, écrans Dynpro, interfaces, user exits, BAdI, BAPI, IDoc et Smart Forms.
- Mise à jour et création de transactions SAP pour les caisses enregistreuses, la création des commandes de vente et la facturation.
- Rapports de stock et de ventes en temps réel accessibles depuis l'application des boutiques.
- Implémentation de solutions de finance sur SAP FI.
- Maintenance et évolution des DataSources logistiques BW alimentant la couche BI (Informatica et MSBI) ; BI queue clearing.
- Optimisation des performances des rapports, plus tard avec SAP HANA.
Tests et mise en production
- Tests unitaires et support aux tests d'intégration.
- Correction des anomalies de mise en production lors de chaque vague régionale de boutiques.
- Cycles de mise à jour du système SAP : ateliers, ajustement des configurations, tests et support.
Support
- Support de l'application des boutiques et des autres projets de L'Oréal USA après la mise en production.
Le défi
Les modules standard SAP SD, MM, WM et FI/CO, déjà utilisés par L'Oréal USA, ne comportaient pas de fonctionnalités de gestion de boutiques ou de vente au détail. L'Oréal avait acheté une solution retail développée par une autre société de services SAP et installée dans SAP ; après l'installation, VISEO avait la main sur toutes ses modifications. Les besoins spécifiques à chaque boutique ou marque et les fonctionnalités manquantes devaient être ajoutés dans SAP, surtout dans SD. Gérer les caisses dans SAP évitait de construire des interfaces et permettait aux boutiques d'utiliser les données de produits et de prix existantes.
À mon arrivée, beaucoup de développements étaient en cours et les dates de livraison n'étaient pas tenables pour l'équipe en place. Le déploiement concernait environ 600 boutiques. La première version comportait toutes les bases nécessaires au fonctionnement d'un magasin, puis un go-live intervenait environ tous les six mois, chacun couvrant une région d'une centaine de boutiques et le ou les entrepôts qui les approvisionnaient.
L'application des boutiques
Je suis intervenu en tant que développeur sur les études de faisabilité, la conception technique, le développement et les tests de l'application de caisse enregistreuse, ainsi que sur une application de centre d'appels qui permettait de prendre les appels clients et les commandes par téléphone.
L'enchaînement de la prise de commande en boutique était le suivant :
- Recherche du client
- Scan des marchandises
- Écran récapitulatif
- Paiement à la caisse
Je suis intervenu sur chacune de ces étapes. La plupart des modifications portaient sur l'interface utilisateur : boutons, pop-ups pour afficher les messages d'erreur et nouveaux écrans. Les écrans communiquaient avec les périphériques de la boutique (scanneur de codes-barres, tiroir-caisse, imprimante de tickets et afficheur « pole display » tourné vers le client) grâce à des programmes Java qui faisaient la liaison entre les périphériques et SAP.
La solution livrée était très lourde à utiliser. J'ai activement participé à la refonte graphique, en supprimant les boutons et écrans dont le personnel des boutiques n'avait pas besoin, pour qu'il ne voie que ce que sa tâche exigeait. J'ai aussi ajouté une recherche avancée de clients qui fonctionne sur plusieurs critères et ne demande pas le nom complet.
J'ai rendu certains des rapports ABAP que j'ai développés accessibles depuis l'application des boutiques, pour que les équipes puissent suivre l'évolution du stock et les ventes en temps réel dans une ou plusieurs boutiques. Ces rapports devaient respecter la hiérarchie de produit, qui va du niveau le moins précis au plus précis (par exemple : luxe, femme, produit professionnel, shampoing, marque, teinte).
Zoom technique : choisir la bonne version de produit au moment du scan
Le problème. Chez L'Oréal, un SKU est une version d'un produit, alors que l'UPC/EAN identifie le produit lui-même : un même code-barres peut donc correspondre à plusieurs SKU. Les versions diffèrent par l'étiquette, la couleur de l'emballage ou de légères modifications de composition imposées par la réglementation des pays. Les codes-barres en boutique étaient au niveau UPC/EAN, le système ne pouvait donc pas savoir quelle version avait été scannée. Dans la vente au détail, on doit pouvoir vendre ce que le client a en main, même si le stock informatique est à zéro : les stocks négatifs étaient donc autorisés. Le fonctionnement standard prenait le premier SKU de l'UPC scanné, ce qui rendait cette version négative même quand une autre version avait encore du stock.
Le fonctionnement du scan. Les articles scannés apparaissent dans un tableau à l'écran (code, type, description, prix). Le scanneur simule une saisie clavier suivie de la touche Entrée, ce qui déclenche l'événement de traitement de la saisie de l'écran en ABAP. J'ai placé la logique dans cet événement de l'écran Dynpro.
La logique que j'ai conçue :
- Récupérer l'UPC du produit scanné.
- Récupérer, à l'aide de requêtes SQL et de fonctions standard SAP, toutes les versions liées à cet UPC avec leur niveau de stock.
- Trier les versions par ordre croissant de stock et prendre la première qui n'est pas à zéro.
- Afficher cette version à la place de la version par défaut.
Le traitement se déroule en arrière-plan et reste transparent pour le caissier.
Pourquoi c'était important. Les stocks négatifs remontaient dans des rapports que les équipes devaient ensuite traiter, et les boutiques procédaient à des inventaires physiques pour les corriger, ce qui coûte du temps et des ressources humaines. Avec une gestion du stock plus robuste, le métier avait moins besoin de conduire ces inventaires. Comme l'algorithme fait descendre en priorité le stock des versions qui en ont le moins, il a aussi nettoyé le stock des anciennes versions de produit qui n'étaient plus utilisées, ce qui a donné une base de données plus propre et des états de stock plus clairs.
Finance et BI
Au-delà des écrans des boutiques, le programme comprenait des implémentations finance et la partie BW. J'étais chef d'équipe sur les travaux SD, FI et DataSources BW : évolution des DataSources logistiques, support des extracteurs qui alimentaient la couche BI construite sur Informatica et MSBI, et BI queue clearing lorsque les chargements s'accumulaient. Plus tard, l'optimisation des performances des rapports est passée sur SAP HANA, ce que je décris dans la mission distincte sur le sidecar HANA.
Organisation du projet
Le plateau projet de Berkeley Heights était organisé par domaine : ventes, achats, finance, intégration et BI. J'ai rejoint l'équipe ABAP, qui a compté jusqu'à 10 développeurs, dont une équipe offshore. En tant que technical lead, j'ai combiné le développement avec :
- l'analyse des besoins et l'estimation des charges ;
- les chiffrages, le calendrier de livraison, le planning, le budget et la gestion des ressources ;
- le recrutement de sous-traitants et la validation de leurs feuilles de temps ;
- le suivi des tâches et la responsabilité des livraisons ;
- l'assistance aux comités de pilotage ;
- les cycles de mise à jour SAP (ateliers, ajustement des configurations, tests, support).
Après le déploiement de SalonCentric, L'Oréal a continué d'acquérir des marques à intégrer, et des projets conçus en France pour le core system du groupe étaient aussi déployés dans la filiale américaine. Le programme s'est donc déroulé en phases successives liées à ces acquisitions, et j'ai assuré le support de l'application et des nouvelles phases.
Par ailleurs, j'ai réalisé une maquette d'application de gestion des caisses enregistreuses dans le cadre d'une étude de faisabilité de SAP Fiori, développée entièrement en ABAP objet avec une expérience utilisateur moderne.
Ce que j'en ai retenu
C'est là que ma spécialisation SD s'est ouverte au retail. J'ai appris à concevoir des écrans à partir des situations réelles en boutique, comme un client qui a en main un produit que le système croit en rupture, ou un caissier qui a besoin d'un clic au lieu de trois. J'ai aussi appris à corriger rapidement les anomalies de go-live pendant qu'une nouvelle région de boutiques dépend de vous. Le retail est revenu plus tard dans mon parcours, sur des projets boutiques basés sur Cegid. Piloter ici des équipes mixtes sur site et offshore m'a aussi préparé aux rôles de gestion de projet qui ont suivi.