常见问题:TFORMer SDK
如何从 SAP 对接到 TFORMer?
如何从 SAP 对接到 TFORMer?
要对接 SAP®,您有三种方式可选(均需要一定的 ABAP 编码工作):
TFORMer TFPrint
TFPrint 是一个命令行工具,可基于 TFORMer 模板创建打印任务。您可以从 SAP 内部调用 TFPrint,并在命令行参数中传入模板文件名、CSV 或 XML 数据文件名以及目标打印机。
tfprint -F "C:\Templates\LogisticLabel.tff" -D "C:\JobData\20220927_ID1022.csv" -DT TEXT –DO SC; -O MyPrinterName -OT WIN32在 ABAP 中,您可以使用 FM SXPG_COMMAND_EXECUTE 以及在 SM69 事务中维护的命令来运行任意外部脚本。如果您希望保留日志以便排查问题,可以将 TFPrint 的 stdout/stderr 重定向到一个状态文件中(以任务 ID 加时间戳命名)。如果您希望在 SAP 中处理状态/错误信息,可以在打印完成后回读该状态文件。
如果您希望将打印过程与应用服务器隔离/分离,可以通过远程 Shell 执行方式,在另一台服务器(打印服务器)上运行 TFPrint。
- Invoke-Command:Running Remote Commands - PowerShell | Microsoft Learn
- PSExec:PsExec - Windows Sysinternals | Microsoft Learn
我们建议将整个打印过程封装到一个 PowerShell 或 CMD 脚本中,该脚本随后可以从任何地方调用。数据的传递和/或模板的更新可以通过共享文件夹完成;可以使用一个定期清理脚本,清除超过若干天数的旧任务和状态文件。
- TFPrint 是 TFORMer SDK 的一部分,使用 SDK 许可证。
- 创建标签/报表模板需要 TFORMer Designer 许可证。
- 所需的 ABAP 编码工作量较小。远程 Shell 执行需要适当的安全配置。
TFORMer Web 服务
如有需要,我们可以提供一个基于 WCF 的 Web 服务,以 SOAP (WSDL) 兼容的格式提供 TFORMer API。您可以打印到服务器上(或远程)可用的任意打印机,也可以只生成一个以字节数组形式返回给调用方的 PDF。
标签模板存储在服务器上的特定目录中(App_Data),SOAP 请求中只需提交标签数据。可以通过共享模板文件夹,或使用文件同步工具,从中央文件夹或主仓库分发模板,从而在外部更新模板。SOAP 响应提供完整的错误信息,可由 ABAP 处理,也可以直接存入日志以便排查问题。
我们以源代码和预编译的 Web 部署包两种形式提供该服务。您可以在自己的基础设施(Windows 服务器/IIS)上托管该服务。
- 标准版本中没有登录机制,但源代码(.NET C#)可以自由扩展。对于外部用户,建议仅允许 https,并使用 IP 白名单(IIS 中的功能)。
要从 SAP ABAP 内部访问该 Web 服务,您可能需要创建一个代理和一个服务使用方——以下是相关的教程/指南:
- 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)
安装完成后,可以通过以下网址获取 WSDL
http://yourhostname/yourinstallationpath/TFORMer.asmx?WSDL
我们没有提供用于调用该 Web 服务的 ABAP 示例,但随附的测试应用(C# .NET 源代码)展示了如何填写请求参数。该测试应用也可用于测试该 Web 服务的可用性/功能是否正常。
- 该 Web 服务基于 TFORMer SDK 构建,使用 SDK 许可证。
- 创建标签/报表模板需要 TFORMer Designer 许可证。
- 所需的 ABAP 编码工作量稍高——您需要集成 SOAP Web 服务调用(代理类)。一旦该 Web 服务配置完成,整个方案应能顺畅运行。
TFORMer Server
TFORMer Server 通过监控特定(可配置)目录中新出现的任务文件,实现自动标签打印。这些任务文件采用专有文本格式或 XML 格式,包含要使用的模板、目标打印机名称,以及数据字段所对应的键值对(记录)。模板统一存放在一个存储库中,该存储库可从本地文件夹或共享(外部)文件夹读取。如果监控目录的方式不适用,您也可以通过 telnet 接口或定期的 ODBC 查询来提交任务。
该服务器会维护“打印队列”,您可以按打印机查看其中的任务文件。您可以从队列中重新打印选定的任务,或暂停并继续某个队列。任务文件导入后,会由服务器统一维护和管理,管理方式可以是浏览器界面,也可以是专用的“Spool Admin”应用。默认情况下不会向 SAP 反馈状态,除非使用 telnet/ODBC 接口。XML 文件支持 Unicode,其他所有通道均使用 ANSI ASCII 或 Latin-1。
如需演示版本以及安装和用户手册,请与我们联系。
- TFORMer Server 使用其自有的许可证,按打印机/站点计费。
- 创建标签/报表模板需要 TFORMer Designer 许可证。
- 只要仅涉及写入数据文件,ABAP 编程所需的工作量是可控的。但另一方面,该方案需要更多的专业知识(安全配置、特定错误代码的处理方式等)以及更多的用户培训。