MII 15 SATO CL408e Label Printing with ADS
Has anyone else tried printing to SATO printers using ADS, or created / modified a XDC file for printing to SATO printers?
We will be migrating to MII 15 shortly and are looking at replacing our current label printing process with ADS to print to our SATO CL408e label printers.
- Created XDP files to test with using Adobe LiveCycle designer
- Uploaded the XDP files to web folder in MII
- Created a transaction that passes XML data to the ADS action block
- Set the ADS action block to use the XDP file from the web folder, set the Print object to true, and the PrintingCopies object to 1
- Tried printing to various printers defined in the Windows hosted print server
- Successfully printed to a Cannon laser printer after copying a XDC file containing the printer stock definitions to the \global\AdobeDocumentServices\lib\ folder on the MII 15 server and setting this file in the action block links XDCFilePath object
- Tried to do the same with a SATO CL408e label printer, but it didn't print. The printer queue in Windows showed the print job come in and it was released to the printer without any errors. I tried printing by using every XDC file available on the server without any success.
I have been working with SATO to see if this is possible. Here is what I learned:
- ADS does NOT have native support for printing to SATO printers. I looked at the raw data sent to the printer for every XDC file provided by SAP and there were not any that produced a data stream in SBPL.
- A proposed option is to update the SATO firmware to use Zebra emulation, but this is not feasible for my company.
- A custom XDC file will need to be created to output SBPL structured code to SATO printers.
I am baffled why there isn't native support for ADS to print to SATO devices. It doesn't look like there are many new (if any) released standard XDC files since 2007. If anyone has already created a XDC file to do this, please share.
A guide to programming in SBPL:
[EDIT 2: 12/21/2015]
I found SAP note 1444342: http://service.sap.com/sap/support/notes/1444342 that looks promising.
"You want to print forms that were generated by ADS on printers that are not defined with a device type in accordance with Note 685571 (that is, they are not assigned to an XDC file). This was not previously possible. Due to the new component SAPPDFPRINT, interactive forms can be printed on any Windows printer just like all of the other spool requests with the SAPWIN device types."
The SWIN device type allows you to use any printer or fax that the Microsoft Windows Print Manager can use, regardless of whether or not a device type for the printer/fax has been defined in the SAP System. In this case, it is actually the Microsoft Windows Print Manager and Windows driver that format a document producing an output-ready data stream.
I will try the steps from the above note on our MII 15 server. Once I have the software installed and tested, I will add my finding to this post.
[EDIT 3: 12/23/2015]
I could not get the SAPsprint service to print PDFs to SATO printers. My thought was that I could open a PCo connection from an MII transaction and send the ADS Printing PDF output data to SAPsprint using a socket connection:
XML Data => ADS Printing Action Block => PCo Socket Connection => SAPsprint Service => Printer Queue
The job would come in to the SAPsprint service on the MII server, but would not show up in the printer queue. I changed the PDF Options to enable Print PDF as RAW setting. The job then showed up in the printer queue, but it wasn't in the required SBPL format for label printing.
From my findings, it looks like SAPsprint / SAPPDFPRINT just may not work for SATO printers. Unless I missed a configuration option, I am out of ideas trying to print PDF forms with MII using this method.
We really need a solution for this soon. A ticket has been opened with the SAP MII team, hoping they can provide some incite into this problem.
[EDIT 4: 12/28/2015]
I was able to print a PDF sent to SAPsprint using a socket connection to a SATO CL408e printer using C#. I found that Adobe Reader needed to be installed on the server. I am stuck on the PCo tag query part. Command reference here: https://www.ietf.org/rfc/rfc1179.txt
From my understanding, LPR/LPD requires the following messages:
MII => LPR <02><Printer Name><LF>
LPR => MII <ACK>
MII => LPR <02><NUM BYTES IN CONTROL FILE><SPACE><CONTROL FILE NAME><LF>
LPR => MII <ACK>
MII => LPR <CONTENTS OF CONTROL FILE><0>
LPR => MII <ACK>
MII => LPR <03> <NUM BYTES IN DATA FILE><SPACE><DATA FILE NAME><LF>
LPR => MII <ACK>
MII => LPR <CONTENTS OF DATA FILE><0>
LPR => MII <ACK>
I need to be able to send this information to port SAPsprint port 515 on the MII server using PCo.
I created a PCo query that uses:
CALL SEND(address='127.0.0.1', port='515', message=[Param.1]);
[Param.1] is being passed in as a link from the transaction.
I was hoping to do something similar to this, or if possible reduce the number of socket messages:
I don't think it is possible to wait for the ACK messages, but data is being sent to SAPsprint now.
Th 16428: (28.12.2015 13:25:40) Receive job for printer F3MDC.SATO
Th 16428: (28.12.2015 13:25:40) Error: AwaitNullbyte: Nullbyte expected, protocol error on ni 53007200 - aborting.
Th 16428: (28.12.2015 13:25:40) Filename used is dfA8MII15demo
Th 16428: (28.12.2015 13:25:40) Error: Controlfile is missing (protocol or network problem). No printout.
Th 12748: (28.12.2015 13:28:43) Receive job for printer F3MDC.SATO
Th 12748: (28.12.2015 13:28:43) Error: Unknown receive job command, buff = 64
The current problems I am working through are:
1. MII is not sending the HEX value of 0x00 which is required when sending the PDF data to SAPsprint. I tried using null, stringnull, \00, and � in the Links expression editor without luck. The control file also requires a NULL character at the end of the send data command.
2. When I include a control file, I get an "Unknown receive job command, buff = 64" error. This error means that the second command isn't recognized by SAPsprint. <02><NUM BYTES IN CONTROL FILE><SPACE><CONTROL FILE NAME><LF> This command is working in C#, not sure why it isn't with the PCo Socket Agent. If I exclude the command file, there is an "Error: Controlfile is missing."
[EDIT 5: 12/29/2015]
I'm still not sure how to process the ACKs received from the PCo query and have been unsuccessful trying to resolve the errors mentioned above. I tried installing the PCo 15 Agent SDK to write my own agent, but we only have a license for VS2013. The SDK only supports VS2012 and would not let me install it. The process of sending the PDF information over a socket to the SAPsprint service using a PCo socket agent is messy and complex. I am giving up on using PCo.
I thought about passing the PDF data through a JCo call to SAP. SAP would connect to the SAPsprint service to print the PDF to a SATO printer, but this would have too much overhead in the system and would need all MII printers to be mapped in SAP.
I also thought about having a service continually scan folders for each printer for PDFs and print any that show up, but this is getting out of the SAP support realm and may impact the server resource utilization.
I'm going back to researching how to create an XDC file. I haven't heard anything from SAP. If nothing comes my way by the middle of next week, I will be escalating the issue. Our BASIS person will be starting the MII 15 environment setup and install next week, so this is becoming a higher priority for us.
[EDIT 6: 01/06/2016]
SAP responded to my ticket saying the printer manufacturer is responsible for providing XDC files. I reopened the ticket with SATO and essentially got back to the original answer of SATO providing us with a firmware update to the CL408e printers that will allow reading ZPL and SBPL. It will be a large effort on our part to update the firmware of all 200+ SATO printers at various plants across the US, but this is going to have to be the route we take. SATO claims that ZPL emulation is already implemented in the firmware for CL4NX printers, so I will be testing that this week. If this is works and I am able to test out Zebra emulation on CL408e printers, I will update this question stating the effort involved before closing it.
Eric Springer replied
The firmware update is working with the CL408e printers. The only way we were able to update the firmware was to FTP the files to the printers while Download Mode is enabled. SATO has sent us several firmware cards that have been pre-flashed also. The CL4NX models have this functionality built in, so no change is needed for the newer printers.