SAPWIN Codes

Ich habe längere Zeit gesucht, bis ich das richtige gefunden habe.

Wenn man für SAP Listen die Aufbereitungen verändern will, dann stößt man auf verschiedene Codes, die eingegeben werden können.

Die Codes entstammen aus SAPWIN, worüber praktisch keine Doku verfügbar ist. Die Codes entstammen nicht PCL oder Postscript etc.

Die Codes können eingegeben werden, wenn in SPAD dem Gerätetyp SAPWIN die Aufbereitung zuordnet. wird.

Hinweis 21738

Hier ein Extrakt der möglichen Codes aus dem Hinweis.

Das Programm SAPSprint hat zwei Funktionen: Es kann einerseits wie ein normaler LPD Druckdaten annehmen und an den Hostspooler weiterleiten. Andererseits kann es aber auch den speziellen Datenstrom SAPWIN/SWIN interpretieren und auf MS-Windows in GDI-Aufrufe umsetzen und benutzt dann die Druckertreiber die Windows und/oder den Druckern beiliegen.
‚SAPWIN‘ ist ein Datenstromprotokoll, daß ähnlich einer Druckersteuersprache aufgebaut ist, wie sie zu real existierenden Druckerfamilien definiert sind. Und es gibt im R/3 den Gerätetyp ‚SAPWIN‘ (bzw. SWIN) der darauf angepaßt ist.

‚SAPWIN‘ ist ein SAP-internes Format, daß sich ohne Vorankündigung ändern kann.

SAPWIN erkennt und verarbeitet folgende Zeichenfolgen, die in dem auszugebenden Text eingestreut sein können: (Im folgenden steht ‚Esc‘ immer für ‚\033‘ (ESCAPE) z.B. im Unicodefall für das entsprechende UNICODE-Zeichen)
‚\n‘ (NEWLINE)     Zeilenvorschub und an linken Rand
‚\r‘ (RETURN)      An linken Rand
‚\f‘ (FORMFEED)    Seitenvorschub
Esc B 1       Normale Schrift
Esc B 2       Fette Schrift
Esc B 3       Sehr fette Schrift
Esc B 0       Helle Schrift
Esc C x y     Listenfarbe festlegen x = 0..7, y = N,H,V (wie im ABAP)
Esc U 0       Kein Unterstreichen
Esc U 1       Unterstreichen
Esc I 0       Italics aus
Esc I 1       Italics an
Esc S s f     Fontsize & family:
                          f = C Courierfamilie  (z.B. Courier)
                          f = R Romanfamilie (z.B. Times Roman)
                          f = S Swissfamilie (z.B. MS Sans Serif)
                          f = N Novelty Family (z.B. Old English)
                          f = H Script Family ( z.B. Script )
                          f = X Fontfamilie nicht ändern
                          s = Fontgrösse in TWIPS (optional)

Esc F name ;  Fontname auswählen
              Bitte beachten Sie auch Hinweise 11364 und 13350
Esc P P|L     Portrait/Landscape mode

Esc p xx;     Paper size auf xx stellen   (ab 4.02)
              1   /* Letter 8 1/2 x 11 in               */
              2   /* Letter Small 8 1/2 x 11 in         */
              3   /* Tabloid 11 x 17 in                 */
              4   /* Ledger 17 x 11 in                  */
              5   /* Legal 8 1/2 x 14 in                */
              6   /* Statement 5 1/2 x 8 1/2 in         */
              7   /* Executive 7 1/4 x 10 1/2 in        */
              8   /* A3 297 x 420 mm                    */
              9   /* A4 210 x 297 mm                    */
              10  /* A4 Small 210 x 297 mm              */
              11  /* A5 148 x 210 mm                    */
              12  /* B4 (JIS) 250 x 354                 */
              13  /* B5 (JIS) 182 x 257 mm              */
              14  /* Folio 8 1/2 x 13 in                */
              15  /* Quarto 215 x 275 mm                */
              16  /* 10×14 in                           */
              17  /* 11×17 in                           */
              18  /* Note 8 1/2 x 11 in                 */
              19  /* Envelope #9 3 7/8 x 8 7/8          */
              20  /* Envelope #10 4 1/8 x 9 1/2         */
              21  /* Envelope #11 4 1/2 x 10 3/8        */
              22  /* Envelope #12 4 \276 x 11           */
              23  /* Envelope #14 5 x 11 1/2            */
              24  /* C size sheet                       */
              25  /* D size sheet                       */
              26  /* E size sheet                       */
              27  /* Envelope DL 110 x 220mm            */
              28  /* Envelope C5 162 x 229 mm           */
              29  /* Envelope C3  324 x 458 mm          */
              30  /* Envelope C4  229 x 324 mm          */
              31  /* Envelope C6  114 x 162 mm          */
              32  /* Envelope C65 114 x 229 mm          */
              33  /* Envelope B4  250 x 353 mm          */
              34  /* Envelope B5  176 x 250 mm          */
              35  /* Envelope B6  176 x 125 mm          */
              36  /* Envelope 110 x 230 mm              */
              37  /* Envelope Monarch 3.875 x 7.5 in    */
              38  /* 6 3/4 Envelope 3 5/8 x 6 1/2 in    */
              39  /* US Std Fanfold 14 7/8 x 11 in      */
              40  /* German Std Fanfold 8 1/2 x 12 in   */
              41  /* German Legal Fanfold 8 1/2 x 13 in */

Ab NT4.0:               42  /* B4 (ISO) 250 x 353 mm              */
              43  /* Japanese Postcard 100 x 148 mm     */
              44  /* 9 x 11 in                          */
              45  /* 10 x 11 in                         */
              46  /* 15 x 11 in                         */
              47  /* Envelope Invite 220 x 220 mm       */
              50  /* Letter Extra 9 \275 x 12 in        */
              51  /* Legal Extra 9 \275 x 15 in         */
              52  /* Tabloid Extra 11.69 x 18 in        */
              53  /* A4 Extra 9.27 x 12.69 in           */
              54  /* Letter Transverse 8 \275 x 11 in   */
              55  /* A4 Transverse 210 x 297 mm         */
              56  /* Letter Extra Transverse 9\275 x 12 in */
              57  /* SuperA/SuperA/A4 227 x 356 mm      */
              58  /* SuperB/SuperB/A3 305 x 487 mm      */
              59  /* Letter Plus 8.5 x 12.69 in         */
              60  /* A4 Plus 210 x 330 mm               */
              61  /* A5 Transverse 148 x 210 mm         */
              62  /* B5 (JIS) Transverse 182 x 257 mm   */
              63  /* A3 Extra 322 x 445 mm              */
              64  /* A5 Extra 174 x 235 mm              */
              65  /* B5 (ISO) Extra 201 x 276 mm        */
              66  /* A2 420 x 594 mm                    */
              67  /* A3 Transverse 297 x 420 mm         */
              68  /* A3 Extra Transverse 322 x 445 mm   */
Esc c xx;     CPI einstellen (xx Zeichen pro INCH auch
                              xx.xx für Nachkommastellen erlaubt)
Esc l xx;     LPI einstellen (xx Zeichen pro INCH; auch xx.xx)
Esc s x       Super/Subscript + = Superscript
                              – = Subscript
                              0 = Normal
Esc G x       Graphikzeichen für Listenrahmen
                             *                           *         *
              0 = ***   1 =  *    2 =  **   3 = **   4 = **   5 = **
                             *         *         *
                   *         *                   *        *
              6 =  **   7 = **    8 = ***   9 = ***  : = ***  ; = **
                   *         *         *                  *
                   *
              < =  *    = =  **   > =  *
                                       *

              ? = Ankreuzfeld nicht markiert (wird als _ ausgegeben)
              @ = Ankreuzfeld markiert       (wird als X ausgegeben)
Esc G L sx,sy,ex,ey,thick,style,r,g,b;
              Linie von (sx,sy) nach (ex,ey) zeichnen.
              Alle Maße und Positionen in TWIPS.
              Dicke ‚thick‘ und Stil ’style‘ benutzen.
              Stil: 1 = (geschlossene Linie)
                    2   = (gestrichelte Linie)
                    3   = (punktierte Linie)
                    4   = (gestr. / punktiert)
                    5   = (gestr. / 2 * punktiert)
              r,g,b ist der RGB-Farbwert zum Zeichnen der Linie.
Esc G B sx,sy,ex,ey,thick,lstyle,corner,lr,lg,lb,fstyle,fr,fg,fb;
              Rechteck von (sx,sy) nach (ex,ey) zeichnen.
              Alle Maße und Positionen in TWIPS.
              Dicke ‚thick‘ und Stil ‚lstype‘ verwenden.
              Stil wie bei ESC G L (alle Linien mittig)
              zusätzlich: 6 = geschlossene Linie außerhalb des Rechtecks
                          0/7 = keinen Rand malen
              ‚corner‘ gibt den Eckradius an (0 = eckige Ecken)
              (lr,lg,lb) ist der RGB-Wert des Rahmens
              ‚fstyle‘ ist das Füllmuster:
                1 = leer
                2 = horizontale Linien
                3 = vertikale Linien
                4 = schräge Linien nach rechts
                5 = schräge Linien nach links
                6 = horizontale + vertikale Linien
                7 = schräge Linien links + rechts
              (fr,fg,fb) ist der RGB-Wert für das Füllmuster
Esc G b <BITMAPINFO> <ARRAY>
             Ausgeben der durch <BITMAPINFO> und <ARRAY>
             beschriebenen Graphik an der aktuellen Position.              <BITMAPINFO> ist die Standard-Windows-Struktur.
             (Ab Rel. 2.41 und nur in der 32-Bit-Version,
              ab Rel. 2.46 auch in 16-Bit aber nur bis 64KB Bitmaps)
Esc G f <Filename>
             Ausgeben der BMP-Datei <Filename> an der aktuellen
             Position. <Filename> ist ein nullterminierter String
             (ab 2.53/3.04 auch ; statt hex-00 erlaubt)
             (Ab Rel. 2.41 und nur in der 32-Bit-Version
              ab Rel. 2.46 auch in 16-Bit aber nur bis 64KB Bitmaps)
Esc G F <Filename>   wie ESC G f, Graphik wird zusätzlich auf aktuelle
             Fontgröße skaliert.
Esc G M nn <BITMAPINFO> <ARRAY> definiere Makro nn (wie Esc G b)
                                (ab SAPLPD 4.18)
Esc G m nn    benutze zuvor definiertes Makro (ab SAPLPD 4.18)
Esc b barcode Esc   Barcode mittels Barcode-DLL drucken
              (Es werden aber keine Striche ausgegeben!)
              Bitte beachten Sie auch Hinweis 14561
Esc o A       Ein OCR-A Zeichen folgt (bitte nicht mehr verwenden)
Esc o B       Ein OCR-B Zeichen folgt (bitte nicht mehr verwenden)
Esc X         Erweiterungs-DLL anspringen (ohne Gewähr…)
Esc x yz      Zeichen mit dem Hexcode yz ausgeben
Esc M T xx;   Top Margin besetzen      (Maßeinheit sind TWIPs, ab 2.32)
Esc M L xx;   Left Margin besetzen     (1440 TWIPS = 1 inch = 2.54 cm)
                                        erst ab SAPLPD 2.32
Esc D x       Set Duplex mode
              ( ab Version 2.44 ) im Printmanger darf nichts
                                  voreinstellt sein!              x = ‚S‘ Simplex
                  ‚D‘ Duplex (lange Seite)
                  ‚T‘ Tumble (kurze Seite)
                  ‚F‘ Print on frontside
                  ‚B‘ Print on backside
Esc T n       Select Papertray n
              ( ab Version 2.44 )
              n=1..9  (Tray number; Interpretation druckerabhängig)
              n=M     Manual feed
              n=E     Envelopes
              n=e     Manual envelopes
Esc d nnnn   SAPding ausgeben (benötigt Font)
Esc i nnnn   SAPicon ausgeben (benötigt Font bis Version 2.45
                     ab 2.46 Ausgabe als Bitmap-Graphik möglich)
Esc r <resource name>;   SAPicon mit dem Ressourcenamen <resource name>
                         ausgeben.
Esc R nn        SAPicon mit internem Code 00..ZZ ausgeben (ab 4.21)
Esc t <hex>;    Daten direkt an Drucker weiterleiten (passthrough)
                <hex> sind 2stellige Hexadezimalzeichen
                (kann für Steuercodes benutzt werden,
                funktioniert nur, wenn der Windows-Treiber diese
                Funktion unterstützt, was die meisten Treiber NICHT
                tun!!!)
Esc m x,y;   Moveto (x,y) Position in TWIPS
Esc w x;     Breite des Leerzeichens in TWIPS einstellen
Esc O M p|l  p = physikalische Papiergrenzen benutzen
             l = logische Papiergrenzen (druckbarer Bereich) [default]
             (Befehle wirken nur, wenn enable_phys_margins=1 [default])
Esc O C b|t  b = Baseline für Zeichenpositionierung verwenden
             t = Top des Zeichens ist Referenzpunkt
Esc O p 0|1  0 = keine Proportionalschriften verwenden
             1 = erlaube Proportionalschriften
Esc O s 0|1  0 = Keine automatische Ableitung des Zeichenabstandes aus
                 der Schriftgröße
             1 = Aus Schriftgröße folgt Zeichenabstand
Esc O a 0|1  0 = ABAP Listen einzelzeichenweise ausgeben.
             1 = Als ein String ausgeben (ESC c darf dann nicht
                 verwendet werden)
                 (Darf nicht verwendet werden, wenn Listen mit
                 Proportionalfonts (Arial etc.) ausgegeben werden
                 sollen)
Esc W x;     WinCharSet auf x setzen (siehe WINNT.H)
Esc L hhhh;  Locale auf hhhh setzen. hhhh ist hex-codierte
             LANG- und SUBLANG-Id (siehe WINNT.H)
Esc L c;     Locale auf c (interne R/3-Codierung des Sprachschlüssels)
Esc L;       Locale auf vorherigen Wert zurücksetzen (SAPLPD >= 4.28)
Esc > m,n;   Ausgabe auf m Seiten mit n Zeichen pro Seite verteilen
             (Kann z.B. für breite Listen verwendet werden)
             (Benötigt SAPLPD >= 4.15)
Esc < 2|4    2 bzw. 4 Seiten pro Seite drucken (SAPLPD >= 4.15)
             Muß unmittelbar nach ESC %SAPWIN% kommen!
             (automatische Skalierung)
Esc f r,g,b; Definiere Textfarbe RGB
Esc q m;     Seitenlänge in m*1/10 Millimeter setzen (SAPLPD >= 4.25)
Esc %SAPWIN%  Kennzeichen, daß dies ein SAPWIN Datenstrom ist
              (Sollte das erste Kommando in der Intialisierung und
               der Titelseite sein)
              (Ab SAPLPD 6.00 versteht der SAPLPD auch einen UNICODE-
               Datenstrom (UTF16-LE), wenn das %SAPWIN% in UNICODE
               codiert ist)