Etikettendruck mit RSPO_SR* Bausteinen als SapScript Ersatz

Getting started ... Alles für einen gelungenen Start.
3 Beiträge • Seite 1 von 1
3 Beiträge Seite 1 von 1

Etikettendruck mit RSPO_SR* Bausteinen als SapScript Ersatz

Beitrag von Alpmann (ForumUser / 68 / 8 / 20 ) »
Einen schönen guten morgen in die Runde,

ich möchte alte SapScript Formulare für Etikettendruck vereinheitlichen und durch modernes ersetzen vor einer Umstellung auf S4.

Die Templates für die Etiketten (ZPL Code) habe ich in einer Z-Tabelle. Zeilenweise mit CHAR200 definiert.

Das Template lese ich in eine String Variable und mache mir replace die Ersetzungen und möchte den String zum Drucker schicken. Und da fangen meine Probleme an. Ich hatte mir dann mal den String in eine Datei schreiben lassen, um zu schauen, ob es passt. Die Datei sieht gut aus, aber all meine Versuche, das an den Drucker zu senden mit den RSPO_SR_OPEN, RSPO_SR_WRITE und RSPO_SR_CLOSE haben nicht zu 100% funktioniert. Das Problem sind hier wohl Unicode Zeichen sowie CRLF Zeichen. Im Template steht für eine neue Zeile __CRLF__.

REPLACE ALL OCCURRENCES OF '__CRLF__' IN lv_zpl_string WITH cl_abap_char_utilities=>cr_lf.

So hatte ich das in eine Datei geschrieben:

OPEN DATASET lv_file FOR OUTPUT IN TEXT MODE ENCODING UTF-8.

IF sy-subrc = 0.
TRANSFER lv_zpl_string TO lv_file.
CLOSE DATASET lv_file.
ENDIF.

So in den Spool

CALL FUNCTION 'RSPO_SR_OPEN'
EXPORTING
dest = 'XXX1'
layout = 'G_RAW'
doctype = 'RAW'
IMMEDIATE_PRINT = 'X'
IMPORTING
handle = lv_handle
spoolid = lv_spoolid.


DATA(lv_offset) = 0.
lv_len = strlen( lv_zpl_string ).

WHILE lv_offset < lv_len.

lv_chunk_len = nmin( val1 = 255 val2 = lv_len - lv_offset ).

temp_text = lv_zpl_string+lv_offset(lv_chunk_len).

CALL FUNCTION 'RSPO_SR_WRITE'
EXPORTING
handle = lv_handle
text = temp_text
EXCEPTIONS
handle_not_valid = 1
operation_failed = 2
OTHERS = 3.

lv_offset = lv_offset + lv_chunk_len.

ENDWHILE.

In der SPAD hat der Drucker den Gerätetyp LB_ZEB3 und als Treiber RDIF (spool raw data interface).

Es ist sicher kein Hexenwerk - aber ich habe es noch nicht durschaut.

Mit freundlichen Grüßen
Matthias Alpmann

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Etikettendruck mit RSPO_SR* Bausteinen als SapScript Ersatz

Beitrag von qyurryus (Specialist / 116 / 88 / 47 ) »
Hi,
ich stand vor einer Weile vor einem ähnlich Problem. Du bist nicht weit vom Ziel entfernt. Ich habe allerdings etwas andere Prämissen:

- Druckertreiber YZB200 (non-unicode!)
- ZPL-Code wird in einem String gesammelt, Zeilen mit cl_abap_char_utilities=>cr_lf getrennt, wie bei dir

Sinngemäß ist die Sequenz wie folgt:

Schritt 1: ZPL-Code String zu Binär-Tabelle
- ZPL-Code erstellen als String
- ZPL-Code String in XSTRING umwandeln (SCMS_STRING_TO_XSTRING)
- XSTRING Encoding anpassen (könnte bei dir entfallen, falls der Treiber Unicode fähig ist) (cl_abap_conv_x2x_ce=>create)
- XSTRING in Binär-Tabelle konvertieren (ENH_XSTRING_TO_TAB)

Schritt 2: Spool erstellen und Binärdaten eintragen
- Spool erstellen (doctype = 'BIN') (RSPO_SR_OPEN)
- Binärdaten in Spool schreiben (RSPO_SR_TABLE_WRITE_BINARY)
- Spool schließen (RSPO_SR_CLOSE)

Vielleicht hilft das weiter.

Folgende Benutzer bedankten sich beim Autor qyurryus für den Beitrag:
Alpmann


Re: Etikettendruck mit RSPO_SR* Bausteinen als SapScript Ersatz

Beitrag von Alpmann (ForumUser / 68 / 8 / 20 ) »
Hi qyurryus,

danke für die Tipps. Habe heute keinen Zebra-Drucker zur Hand. Aber ich kann schon mal so viel sagen: der Druck auf einen Laser-Drucker hat funktioniert. Da habe in den ZPL-Code in lesbarer Form gehabt. Das sollte dann mit einem Zebra-Drucker genau so funktionieren.

Bisher konnte man im Spool sich die Zebra-Etiketten ansehen (ZPL-Code). Das geht jetzt nicht mehr. Ist aber auch nicht so schlimm, da ich eh eine Print2File Option eingebaut habe. Dann kann ich mir das bei Bedarf dann direkt in einem Texteditor anschauen.

An der Logistik-Front schauen sich die meisten Mitarbeier keine Spool-Aufträge dann. Wenn überhaupt machen die dann nur einen Nachdruck aus dem Spool.

Vielen Dank!

Mit freundlichen Grüßen
Matthias Alpmann

Seite 1 von 1

Vergleichbare Themen

1
Antw.
802
Views
Verhalten von ENQUEUE Bausteinen
von A6272 » 06.07.2023 12:18 • Verfasst in ABAP® für Anfänger
3
Antw.
1491
Views
allg. zu Funktoinsgruppen /-bausteinen
von adazip » 19.06.2007 14:29 • Verfasst in ABAP® für Anfänger
15
Antw.
3505
Views
Dokumenten-Download aus Archiv scheitert mit verschiedenen Bausteinen
von Doobie » 14.06.2022 15:16 • Verfasst in ABAP® für Anfänger
1
Antw.
3558
Views
Etikettendruck mit SmartForms
von deejey » 08.04.2024 09:05 • Verfasst in ABAP® Core
10
Antw.
12055
Views
Etikettendruck Wareneingang
von Chaos81 » 13.04.2020 20:00 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

SFP/SEGW - Fehler beim Rendering
vor einer Woche von Manfred K. 1 / 42229
Pflegeview zeigt nicht alle Daten an
vor einer Woche von sapdepp gelöst 7 / 43785
ALV Grid und Dynprofeld
vor einer Woche von PeterPaletti 5 / 41958

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

SFP/SEGW - Fehler beim Rendering
vor einer Woche von Manfred K. 1 / 42229
Pflegeview zeigt nicht alle Daten an
vor einer Woche von sapdepp gelöst 7 / 43785
ALV Grid und Dynprofeld
vor einer Woche von PeterPaletti 5 / 41958

Unbeantwortete Forenbeiträge

SFP/SEGW - Fehler beim Rendering
vor einer Woche von Manfred K. 1 / 42229
Benutzerdefinierte Felder PSP
letzen Monat von Rabea1103 1 / 92956
Spool vereinen OTF und PDF
January 2026 von anna2205 1 / 108135
XSLT und Loipro05 Transformation
December 2025 von Torsten1965 1 / 116244