前言:
SAP小技巧系列主要是记录一些项目中碰到的问题及解决思路与方式.这些问题可能你也碰到过,希望能给你一些帮助.
标签打印
怎么通过SAP开发程序打印标签? 提起这个问题,很自然的会想起ABAP常用打印方式:
- SMARTFORM 打印 TCODE: SMARTFORMS . 用于设计一个表单, 在ABAP程序中调用函数打印表单
- PDF 打印 TCODE: SFP . 用于设计一个PDF表单,在ABAP程序中调用函数打印表单
当我们费尽心思去设计了模版,开发了程序,解决了驱动程序问题, 最终发现打印处理的标签往往不太如意,下面是常常碰到的问题
- 条码模糊,
- 字体控制不好,
- 或者走纸不准确
如果你也碰到了这些问题, 那么你可以尝试一下以下解决方案:
- 使用打印机原厂提供的打印命令
- 使用第三方软件bartender
下面简单描述一下这两个方案的实现方式:
使用打印机原厂提供的打印命令
- 首先,你需要查找打印机厂商提供的打印驱动中的文档.比如斑马打印机,在打印驱动中会附带打印机的控制命令文档. EPL2EN.pdf (这只是一个版本的文档名,并非固定名称)
- 文档中会详细介绍打印命令及示例
- 参考文档设计自己的标签打印命令(标签模版) .
- 示例如下: (这个示例是很久之前设计的一个,有点忘记了具体的命令含义)
• N
• O
• S2
• D7
• ZT
• Q614,27
• q784
• A20,10,0,8,1,1,N,"某某股份有限公司"
• A20,50,0,8,1,1,N,"代码:A060"
• A280,50,0,8,1,1,N,"箱号: 01234567890"
• A20,90,0,8,1,1,N,"客户:"
• A120,90,0,8,1,1,N," 某某连锁店"
• A20,130,0,8,1,1,N,"电话: 0000-1234567"
• B20,170,0,1,6,12,320,N,"01234567890"
• P1
• 共享一下打印机 比如: 共享为 prn
• 执行以下命令,把USB连接的打印机映射到LPT1打印端口 hostname = ip
• net use lpt1: \\hostname\printname /y
• 执行操作系统命令 copy HX01.TXT lpt1 完成打印
具体到ABAP开发需要完成的工作,就是按打印命令生成一个文件,写入本地, 然后通过函数 WS_EXECUTE 或者类CL_GUI_FRONTEND_SERVICES 方法 EXECUTE 调用操作系统命令完成打印
使用第三方软件bartender
市面上有一些软件可以实现条码设计及打印,并且提供了一些第三方调用方式,这里列举的软件 BARTENDER(可能需要企业购买)
- 安装软件 bartender9.4(实测版本)
- 执行bartend程序, 按照向导一步一步创建一个模板文件. 其中数据源可以使用制表符分隔的文本文件c:\xlcs.txt. 保存模板文件 c:\wlcs.btw
- 通过SAP程序生成文本文件 c:\wlcs.txt (允许包含多条记录)
- 命令行执行下面的命令就可以打印出条码了. (可以在SAP中通过 GUI_EXE 函数调用命令,传递参数
- bartend.exe /F=C:\\wlcs.btw. /D=C:\\wlcs.txt. /P /X
上述两种方式均在项目中实测通过,可以完美的解决标签打印的问题.