Skip to Content

Not all characters printed on Zebra (ZPL) label

Jan 11 at 01:54 PM


avatar image

Dear all,

we are currently trying to print a handling unit label with some additional data on a Zebra Printer (QLn420). Most of the data (ASCII characters) is printed correctly.

However, there's also receiver (partner) data which has some special characters (for example Greek, but could also be Turkisch, Eastern Europe, etc.) Those (in this case) Greek characters can not be interpreted correctly and a hashtag is printed.

Due to some requirements (among others flexibility and as less as possible logic in the smartform) we are using the smartform just as container. The smartform therefore only has one parameter (variable) of type STRINGTAB (which is linked to the smartform function module interface of the same type.

The string holds the entire ZPL data (ZPL string) with ZPL codes and variable data. In other words, we are not designing our label in the smartform itself, it is merely a container.

We tried several drivers, device type combinations to get this to work. But we suspect that these drivers are not working for our 'special' case since we designed the label not in a smartform.

On the label printer the Swiss 721 Font is installed. And when we send the data directly to the printer (with the Zebra Setup Utilities), the label looks just fine. So we must assume that the issue is in the device types / drivers that are used.

Device types:

  • LB_ZEB (STN2 Line Printer Driver II)
  • LZEBS2 (LZPL Zebra programming Language 2)
  • LZEBU2 (LZPL Zebra programming Language 2)
  • YZB200 (YZB1 Zebra ABAP Printer Driver)
  • YZB200U (YZB1 Zebra ABAP Printer Driver)
  • LZEB2 (LZPL Zebra programming Language 2)

SAP Notes:

  • 750772 - Information about ZPL-II printer driver for SmartForms
  • 812821 - Cascading Font settings
  • 1036961 - Device type selection wizard in transaction SPAD
  • 1097563 - Device Drivers for SAP
  • 1103422 - SAP Printer Vendor program: Installing devicetypes, etc.
  • 1173046 - Printer Vendor Wizard Note: Zebra

Does anyone have an idea on how to solve this issue (without having to create the label within a smartform)? Thanks in advance.

Addendum: would it be an option to some how bypass the assigned device type and/or driver by creating/changing a (copy of) standard device type/driver? If so, how and would I also have to change some settings on the print server as well.

Kind regards,

Micky Oestreich


labelrotate.jpg (81.9 kB)
10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

2 Answers

Raymond Giuseppi
Jan 12 at 09:57 AM

You could ask the printer to dump (*) the data received in the two cases (direct vs. smarform encapsulated) to check for difference, then you may be required to add some code to your string text like a ^PA or other command?

(*) Press and hold the Feed button while you turn on the power on some models.

Show 4 Share
10 |10000 characters needed characters left characters exceeded

Or use the "retain print file" in the "debug" tab of the output device.


Download the .dmp file with the Net Bridge application


Is your system Unicode, did you use an Unicode printer driver?


Hi Raymond and Sandra,

sorry for the late reply (seems I'm not getting any email notification anymore).

Thanks for your suggestions. We're looking into it.

For now:

  1. Yes, we do have a unicode system and we tried several (unicode) printer drivers provided by SAP and Zebra.
  2. We don't have the Net Bridge application.
  3. Can't find any 'retain print file". I did download the data stream that was sent to the label printer. Using this file and sending it directly to the printer works just fine.
  4. HEX...ENDHEX: Is this only valid for using SAP Script? Trying to get it to work within a smartform.

I'll get back with our findings as soon as we have something to show for (good or bad).

Kind regards,


Sandra Rossi Jan 12 at 10:08 AM

It seems that you send characters, and so SAP uses the code page (character set) defined in the device type to encode them into bytes before sending to the printer (hence, the # character). Instead, you could try converting the characters yourself to the code page expected by the printer, and send the bytes using HEX ... ENDHEX

10 |10000 characters needed characters left characters exceeded