TEC-IT
TECIT
Bookmark 

FAQ: TBarCode/SAPwin - SAP Barcode DLL

FAQ for TBarCode/SAPwin - TEC-IT's Barcode DLL for SAPsprint, SAPlpd and SAPGUI.
 

Installation

What are the Basic Installation and Configuration Steps?

You must use at least one of the Spool Transfer Programs SAPsprint or SAPlpd - or the SAPGUI (Windows) Client.

Using SAPsprint

  • Install TBarCode/SAPwin in the SAPsprint installation folder.
SAPsprint is a Spool Transfer Software from SAP (see OSS Note # 894444) designed to be used on a print server (Windows platform).

No SAPsprint installed?

  • Using Windows Client (local printing), install TBarCode/SAPwin on the SAPGUI SAPlpd directory or on the directory where you can find the SAPwin.dll.

Configuring SAP

  • Copy the device type SWIN to ZSWIN.
  • In SPAD, add a new printer or modify an existing printer (e.g. your local printer), use ZSWIN as device type. The host spool method can be F (Frontend), G (GUI) or S (Server/SAPsprint) but not U.
  • Print the test document SAPSCRIPT-BARCODETEST available on client 00. You should see bar codes on the print-out by then.

For more detailed instructions, read the TBarCode/SAPwin Manual.

Device Type

How can I Export a Device Type?

  • Enter transaction SPAD
  • Main Menu: Utilities --> For Device Types --> Export
  • Object Selection = Device Type
  • Enter the name of the device type into the input field [Object Name]
  • Click Execute or press F8
  • In the following dialog enter (or confirm) the path where the export file should be saved

Device Type

How can I print Chinese characters?

Please look at SAP OSS Note # 83502.

In your SAP system there should be a device type CNSAPWIN for printing Chinese characters.

  • Make a copy of it and adjust the Printer Barcodes (transaction SE73) as shown in our manual.
  • Then assign this device type to your printer (transaction SPAD).
For TBarCode/SAPwin you need a device type based on the SAPwin device driver!

Unwanted Characters

Unwanted Characters are Printed Beside the Bar Code

  • Wrong defined print control suffix SBS01

Please read FAQ section 21.8 of the user manual to learn how to solve this problem.

Or there are no bar codes at all

  • Wrong host spool access method,
  • Wrong device type,
  • Wrong print controls

Please read FAQ section 21.4 of the user manual. Make sure you have the actual version of TBarCode/SAPwin installed.

SAPsprint

Wrong Printing Order

From the command line, turn off the print job based multi-threading
sapsprint -oi ProcessingMode 1

* This parameter is supported in SAPsprint 1015.

Read SAP Note 1054561 for problems with printing sequence caused by multi-threading.

No Bar Codes after Heavy Traffic

Some users are printing at the same time large print jobs via SAPsprint. After the end of a such a print job containing bar codes, the bar codes on subsequent print jobs are missing.

  • This may be caused by multi-threading. See previous solution Wrong Printing Order....

Some bar codes are licensed, some bar codes have demo text

  • Use the latest version of TBarCode/SAPwin
  • Check if you have multiple versions of the barcode.dll and/or barcode.ini file in your system. You should use only one version. Make sure that the license key is in all barcode.ini files.
  • See previous solution regarding multi-threading.

SAPsprint Crash

SAPsprint Print Job Terminates with CreateDCW

OSS Note 1069483 -"Error: CreateDCW failed: The operation completed successfully".

This error is caused by a third party print monitor.

The following options in SAPsprint Version 1018 and later can deal with the CreateDCW error:

  • The service restarts automatically once the
    CreateDCW is one of the first calls to the printer driver. If this fails, you will not be able to print. With the Windows printer driver, the Windows spooler can create the final print job and then use the print monitor to transmit the print job to the printer.
    CreateDCW
    problem occurs. You can prevent this behavior by setting the parameter values to 1.
            Key: IgnoreDCError
            Default: 0
            Other values: 1
    
  • The SAPSprint service restarts automatically after a specified number of print jobs. This mainly reduces the occurrence of the CreateDCW problem described in Note 1069483. If the default value is set to 0, this service will not restart.

            Key: RestartAfterJobs
            Default: 0
            Other values: any number
    

For printing problems, Microsoft recommends the procedure that is described at http://support.microsoft.com/kb/260142/EN-US/

Or try to update or downgrade the printer driver / printer port software. Not always newer versions give better results - sometimes elder drivers are more stable. A printer with PCL emulation can usually use a standard HP Laserjet 4 PCL-5 driver as well. It is also possible to use a standard Adobe driver for PostScript emulation.

Printer Driver

Distorted Barcode Image

This behaviour is most often caused by the Windows printer driver.

  • Get the latest version of TBarCode/SAPwin.
  • Change the drawing method in the barcode.ini file:
     [DRAW_MODE]
     UseGDIRect=1
    
    When using SAPlpd, make a restart.

You can also try the following:

  • Print bar-codes without human readable text: Set A=0 in the printcontrol Prefix of your printer barcode (edit it with TA SE73).
  • Change the printing direction: set direction=1 in the barcode.ini file.
  • Such problems may also be caused by multi-threading. See previous solution.

SAPlpd Crashes with > 352 Characters of Bar Code Data

Using SAPscript's rawtext command or the 2D barcode data concatenation, you can generate a bar code Printcontrol with a huge amount of data. But once you reach the limit of 352 characters, SAPlpd suddenly crashes. This is caused by a bug in SAPlpd, not of TBarCode/SAPwin.

As solution, use the data splitting feature of TBarCode/SAPwin to separate the data portions into 2 or more blocks. You can stay below the crash limit this way.

Barcode Position

How can I fine-tune the barcode position?

The upper left corner of the bar code starts in the middle of the line feed. The bar code text partly overwrites the next line.

  • If the bar code should always be printed at the same position, you can set the target coordinates with the parameters X=[mm],Y=[mm] in the Printcontrol:
    bC=39,X=100,Y=50,B=50,H=20,D=
    The Print control prefix can be modified in transaction SE73 (printer bar codes). Click the prefix, and then the button Maintain PrintControl. After that, a window will be displayed allowing you to change the character sequence.
  • If the barcode should be printed on a relative position (inline) you can use the
    The shift parameter was introduced to overwhelm printer driver problems, it can also be used for vertical adjustments.
    shift parameter , which can be found in the Barcode.ini file. If you set direction parameter to 1, you can adjust the vertical position using the shift parameter, wherein a negative value is also allowed.
    [SETTINGS]
    Direction=1
    Shift=1
    

Barcode Size, Barcode Rotation

How can I Change the Size of the Bar Code?

You can change the bar code size and orientation in the Printer Barcode Printcontrol Prefix. The following parameters are available:

  • B= ... controls the width of the symbol in mms
  • H= ... controls the height of the symbol in mms
  • M= ... controls the module width of the symbol (in 1/1000 mms)
  • R= ... adjust the orientation of the barcode in degree (optional)
* If parameter M is used, omit the B parameter!

Examples

  • Width: 70 mm, Height: 30 mm, Rotation=90°
            bC=E128,B=70,H=30,A=1,R=90,D=
  • Module Width: 0.254 mm, Height: 30 mm
            bC=E128,M=254,H=30,A=1,D=

You can edit the Printcontrol Prefix in transaction SE73 (printer bar codes).

  • Select your device type e.g. ZSWIN. In the edit dialog, click the prefix and then the button Maintain Printcontrol. Change the Printcontrol parameters in the Control Char Sequence input field.

Positioning

Barcode Position and Barcode Log File Coordinates

Position may be:

  • relative (no X/Y parameters specified in Printcontrol) or
  • absolute (X/Y parameters specified in Printcontrol)

If you want, you can change the printing direction parameter in the barcode.ini file to print the barcode from base line upwards:

Direction=1

To make the relative positioning compatible with other (previous) solutions (e.g. hardware barcode printer extensions) you can fine-tune the Y position using the shift parameter in the barcode.ini file.

If you print the barcode always to the same position you can specify X and/or Y parameters in the Printcontrol. You also can leave the printing direction upwards if its more convenient.

Coordinates in the Barcode.log file

  • Printcontrol parameters are shown first, e.g:
    C=128B,B=43,H=7,X=0,A=0,D=
    
    The X position in our example is zero. The Y position is not specified, so it will be taken from actual cursor position by default.
  • The next parameter is the actual printing cursor position passed from SAP to our DLL. This value is relevant for relative positioning:
    Pos:        xpos: 240, ypos: 2050
    
  • And then the bounding rectangle of the barcode:
    Startpoint: x: 0, y: 2215
    Endpoint:   x: 1016, y: 2050 
    
    The zero-zero point (origin) of the coordinates depends on the used mapping mode. The origin can either be the top left corner or the bottom left corner of the document.

Decoding Problems

How can I Optimize the Bar Code Quality?

The bar code module width parameter influences the reading quality of the bar code.

Note: Use standard settings for the
Print ratio is the ratio of bar widths and spaces
print ratio e.g. Code-128 has a ratio of 1:2:3:4.

If the printer has 200 dpi, set the module width in a way that it corresponds to the dot width of one or more printer pixel. For example, use 1 pixel (equivalent to 0.127mm) for 200 dpi.

According to the symbology standard, a module width of below 0.19 mm is not applicable. In this case, at least 2 printer pixels must be set for bar codes having a module width of 0.254 mm. It should fit to the printer resolution and should produce much better test results by then.

If the module width is too small, hence the bar code width is also small, use the following:

        3 x 0.127mms = 0.381mms
        4 x 0.127mms = 0.508mms

Here is a converson table for mms to inch:

        0.127 mms  =  0.005 inch (to small)
        0.19  mms  =  0.007 inch (minimum m.w.)
        0.254 mms  =  0.010 inch (2 printer pixel)
        0.381 mms  =  0.015 inch (3 printer pixel)
        0.508 mms  =  0.020 inch (4 printer pixel)

Set the module width based on the above values to avoid resolution errors. If errors still occur because of minor rounding errors, try using 0.509 instead of 0.508.

You can also use Barcode Studio with the Quality Watch feature to detect printing tolerances and find out the optimal module width value.

FNC1

EAN-128 Variable Length AI With FNC1

  • Use system barcode BC_EANH or a user specific type ZBC_EANH
  • Make sure that you configured the EAN-128 bar code format in your Print Control Prefix as follows:
    C=E128,...
    
  • Adjust a placeholder for the FNC1 with the Print Control Parameter %=. Use a placeholder, which is normally not used in AI's - e.g. the exclamation mark %=! or the plus sign %=+
  • Then encode the FNC1 using the placeholder (e.g. the exclamation mark):
    21 + serial number + ! + 11 + production date.
    
    If the serial number is 1234 and the production date is 010108, the encoded bar code data should be as follows:
    211234   FNC1   11010108
    
  • Check if everything works by scanning the bar code with a reader. You can also send your bar code (image scan or PDF) to TEC-IT Support for validation.
EAN128 uses FNC1 character on the first position of the code to mark the bar code as EAN-128 and identify it from Code-128. This is done automatically by TEC-IT Barcode Software, so you don't need to do it manually!
TEC-IT

© TEC-IT Datenverarbeitung GmbH, Austria  ++43(0)7252/72720  office@tec-it.com