Hallo,
hier ein Auszug aus der SAP-Bibliothek:
*****************************************************************
Schema eines Druckprogramms
In der Praxis liefern R/3-Anwendungen (FI, CO, MM etc.) standardisierte Formulare und Druckprogramme aus, die gegebenenfalls vom Kunden auf die eigenen Bedürfnisse angepaßt werden. Erst das enge Zusammenspiel zwischen Druckprogramm und vorgegebenem Formular erlaubt den Ausdruck von Formularen wie z.B. Bestellungen oder Rechnungen.
Charakteristisch und entscheidend für die Anwendung von SAPscript ist, daß Formulare neben den Layoutinformationen auch Texte mit zu ersetzenden Variablen beinhalten. Diese werden erst nach der Formatierung ersetzt und erscheinen dann auf dem Ausdruck. Zuständig für die Datenbeschaffung aus dem R/3-System und die Steuerlogik der Ausgabe ist das Druckprogramm.
Damit ist es in SAPscript-Formularen möglich, die Logik der Datenbeschaffung von der Gestaltung der Ausgabe (Layout) zu trennen. Das Druckprogramm ist dafür verantwortlich, die benötigten Daten zu besorgen bzw. zu berechnen sowie deren Ausgabereihenfolge festzulegen. Die Aufbereitung und die Positionierung dieser Daten auf einer Druckseite übernimmt das SAPscript-Formular. Damit können Sie Änderungen an der Aufbereitung im Formular vornehmen, ohne das Druckprogramm explizit ändern zu müssen.
Zur Laufzeit des Druckprogramms kann SAPscript automatisch auf Daten zugreifen, die im steuernden Programm definiert sind. Genauer gesagt: SAPscript holt sich die Werte direkt aus den Datenfeldern dieses Programms.
Beispiel eines Druckprogramms
Im folgenden soll ein typisches Druckprogramm schematisch dargestellt werden. Dieses einfache Druckprogramm erstellt eine Rechnung mit firmenspezifischen Angaben, Datum, Seitennumerierung, Kundenadresse sowie allen Buchungen eines Kunden.
In der Entwicklungsklasse SAPBC460 befindet sich das ausführliche Beispielprogramm RSTXEXP1 (zugehöriges Formular S_EXAMPLE_1).
Schematisches Druckprogramm:
* (1) Get customer data
TABLES: scustom, sbook, spfli.
DATA: bookings like sbook…
select * from…
* (2) Open form
CALL FUNCTION ‚OPEN_FORM‘
EXPORTING
DEVICE = ‚PRINTER‘
FORM = ‚S_EXAMPLE_1‘
DIALOG = ‚X‘
EXCEPTIONS
others = 1
* (3) Print table heading
CALL FUNCTION ‚WRITE_FORM‘
EXPORTING
ELEMENT = ‚HEADING‘
TYPE = ‚TOP‘
WINDOW = ‚MAIN‘
FUNCTION = ‚SET‘
…
* (4) Print customer bookings
LOOP AT bookings WHERE
CALL FUNCTION ‚WRITE_FORM‘
EXPORTING
ELEMENT = ‚BOOKING‘
TYPE = ‚BODY‘
WINDOW = ‚MAIN‘
…
ENDLOOP
* (5) Close form
CALL FUNCTION ‚CLOSE_FORM‘
…
In diesem Beispiel werden innerhalb des ersten Abschnitts die benötigten Daten von der Datenbank gelesen und in internen Tabellen (z.B. BOOKINGS) bereitgestellt. Im Abschnitt (2) wird der Funktionsbaustein OPEN_FORM aufgerufen, um die Druckausgabe des Formulars S_EXAMPLE_1 zu initialisieren. Danach gibt WRITE_FORM über das Textelement HEADING allgemeinen Text und die Spaltenüberschrift der Rechnung im Hauptfenster MAIN aus (Abschnitt (3)). Die Buchungen des Kunden aus Tabelle BOOKINGS werden in Abschnitt (4) in einer Schleife sukzessive ausgelesen und zwar über das Textelement BOOKING im MAIN-Fenster. Die Adresse des Kunden sowie firmenspezifische Angaben werden als Default-Textelemente in anderen Formularfenstern direkt ausgegeben. CLOSE_FORM beendet den Formulardruck schließlich.
Bei jedem Formulardruck müssen die Funktionsbausteine OPEN_FORM und CLOSE_FORM paarweise verwendet werden. Ein Druckprogramm kann auch mehrere Formulare drucken, die jeweils als getrennter Spoolauftrag verwaltet oder aber zu einem einzigen Druckauftrag zusammengefaßt werden. Im letzteren Fall müssen Sie die Funktionsbausteine START_FORM und END_FORM verwenden.
Weitere Informationen finden Sie unter OPEN_FORM und CLOSE_FORM sowie unter START_FORM und END_FORM.
*****************************************************************
Falls Du noch mehr Infos brauchst, such in der SAP-Bibliothek unter „SAPscript AND Druckprogramm“.
Gruß, Christoph