FAQ : TFORMer SDK
Comment faire l'interface entre SAP et TFORMer ?
Comment faire l'interface entre SAP et TFORMer ?
Pour l'interfaçage avec SAP®, vous avez trois options (toutes nécessitant du code ABAP) :
TFORMer TFPrint
TFPrint est un utilitaire en ligne de commande qui crée une tâche d'impression à partir de modèles TFORMer. Vous appelez TFPrint depuis SAP et transmettez le nom du fichier modèle, le nom du fichier de données CSV ou XML et l'imprimante cible dans les arguments de ligne de commande.
tfprint -F "C:\Templates\LogisticLabel.tff" -D "C:\JobData\20220927_ID1022.csv" -DT TEXT –DO SC; -O MyPrinterName -OT WIN32En ABAP, vous pouvez utiliser FM SXPG_COMMAND_EXECUTE et les commandes maintenues dans la transaction SM69 pour exécuter n'importe quel script externe. Si vous souhaitez disposer d'un journal pour le dépannage, vous pouvez rediriger la sortie stdout/stderr de TFPrint vers un fichier d'état (horodaté avec l'ID de tâche). Si vous souhaitez traiter les messages d'état/d'erreur dans SAP, vous pouvez relire le fichier d'état après l'impression.
Si vous souhaitez isoler/déconnecter le processus d'impression du serveur d'application, vous pouvez exécuter TFPrint sur un autre serveur (serveur d'impression) via une exécution shell distante.
- Invoke-Command : Running Remote Commands - PowerShell | Microsoft Learn
- PSExec : PsExec - Windows Sysinternals | Microsoft Learn
Nous recommandons d'encapsuler l'ensemble de l'impression dans un script PowerShell ou CMD, qui peut ensuite être appelé depuis n'importe où. Les données peuvent être transmises et/ou les modèles mis à jour via un dossier partagé ; un script de nettoyage planifié peut supprimer les anciens fichiers de tâche et d'état (après nn jours).
- TFPrint fait partie de TFORMer SDK et utilise une licence SDK.
- Pour créer les modèles d'étiquette/de rapport, vous avez besoin d'une licence TFORMer Designer.
- Les efforts de codage ABAP sont faibles. L'exécution shell distante nécessite une configuration de sécurité appropriée.
Service Web TFORMer
Sur demande, nous proposons un service Web basé sur WCF qui fournit l'API TFORMer dans un format compatible SOAP (WSDL). Vous pouvez imprimer sur toutes les imprimantes disponibles sur le serveur (ou à distance) ou simplement créer un PDF qui est renvoyé à l'appelant (tableau d'octets).
Les modèles d'étiquette sont stockés dans un répertoire spécifique sur le serveur (App_Data), seules les données de l'étiquette sont soumises dans la requête SOAP. Les modèles peuvent être mis à jour de l'extérieur en partageant le dossier des modèles ou en utilisant un outil de synchronisation de fichiers, qui distribue les modèles depuis un dossier central ou un dépôt maître. La réponse SOAP fournit des informations d'erreur complètes, qui peuvent être traitées par ABAP ou simplement stockées dans un journal pour le dépannage.
Nous livrons le service sous forme de code source et de package de déploiement web précompilé. Vous pouvez héberger le service sur votre propre infrastructure (serveur Windows / IIS).
- Dans la version standard, il n'y a pas de mécanisme de connexion, mais le code source (.NET C#) peut être librement étendu. Pour les utilisateurs externes, vous ne devriez autoriser que https et utiliser une liste blanche d'IP (fonctionnalité d'IIS).
Pour accéder au service Web depuis SAP ABAP, vous voudrez peut-être créer un proxy et un consommateur de service – voici un tutoriel/guide :
- Consume SOAP Based Web Services with SAP BTP, ABAP Environment | Tutorials for SAP Developers
- Generating Proxies | SAP Help Portal
- How to configure a Service Consumer - ABAP Connectivity - Support Wiki (sap.com)
Après l'installation, le WSDL peut être récupéré à l'URL suivante
http://yourhostname/yourinstallationpath/TFORMer.asmx?WSDL
Nous n'avons pas d'exemple ABAP pour consommer (appeler) le service Web, mais l'application de test incluse (code source C# .NET) montre comment remplir les paramètres de la requête. Elle peut aussi être utilisée pour tester la disponibilité/fonctionnalité du service Web.
- Le service Web est basé sur TFORMer SDK et utilise une licence SDK.
- Pour créer les modèles d'étiquette/de rapport, vous avez besoin d'une licence TFORMer Designer.
- Les efforts de codage ABAP sont un peu plus élevés – vous devez intégrer les appels du service Web SOAP (classe proxy). Une fois le service Web configuré, la solution devrait fonctionner sans problème.
TFORMer Server
TFORMer Server assure l'impression automatique des étiquettes en surveillant des répertoires spécifiques (configurables) pour détecter de nouveaux fichiers de tâche. Les fichiers de tâche sont dans un format texte propriétaire ou au format XML et contiennent le modèle à utiliser, le nom de l'imprimante cible et les paires nom-valeur (enregistrements) pour les champs de données. Les modèles sont organisés dans un dépôt, lu soit depuis un dossier local, soit depuis un dossier partagé (externe). Si la surveillance d'un répertoire ne convient pas, vous pouvez aussi transmettre des tâches via une interface telnet ou une requête ODBC périodique.
Le serveur maintient des « spools », où vous voyez les fichiers de tâche par imprimante. Vous pouvez réimprimer des tâches sélectionnées depuis un spool ou arrêter et reprendre un spool. Une fois le fichier de tâche importé, les tâches sont maintenues sur le serveur et gérées soit via une interface navigateur, soit via une application dédiée « Spool Admin ». Par défaut, il n'y a pas de retour d'état vers SAP, sauf avec l'interface telnet/ODBC. L'Unicode est pris en charge par les fichiers XML, tous les autres canaux utilisent ANSI ASCII ou Latin-1.
Veuillez nous contacter pour la version de démonstration et les manuels d'installation et d'utilisation.
- TFORMer Server utilise sa propre licence, basée sur l'imprimante/le site.
- Pour créer les modèles d'étiquette/de rapport, vous avez besoin d'une licence TFORMer Designer.
- Tant qu'il s'agit uniquement d'écrire le fichier de données, l'effort de programmation ABAP est gérable. En revanche, cette solution nécessite plus de connaissances (configuration de sécurité, gestion de codes d'erreur spécifiques, etc.) et davantage de formation des utilisateurs.