Smart Forms: Aktuelle Seite im Druckauftrag ermitteln

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Smart Forms: Aktuelle Seite im Druckauftrag ermitteln

Postby Helga3606 » Wed Dec 02, 2009 7:19 pm

Hallo

Ich habe ein Formular mit Smart-Forms erstellt. Das Formular stellt einen Beleg dar. Nun kann der Benutzer im Druckprogramm verschiedene Belege selektieren und alles in einem Formular drucken. Dies funktioniert auch; wem es interessiert, siehe Link:

http://help.sap.com/saphelp_nw04/helpda ... ontent.htm

Nun muss ich pro Seite einen Seitenzähler einbauen: "Seite x von y". Es gibt nun drei Parameter:

SFSY-PAGESeitennummer/-anzahl
SFSY-FORMPAGESGesamtzahl Formularseiten
SFSY-JOBPAGESGesamtzahl Seiten des Ausgabejobs

Die Anzahl Seiten wird über den Parameter SFSY-JOBPAGES versorgt, aber die aktuelle Seite im Druckauftrag kann ich mit den obigen Parametern nicht ermitteln. Der Parameter SFSY-PAGE gibt nur die aktuelle Seite innerhalb des Formulares an.

Hat jemand eine Idee, wie ich die aktuelle Seite im Druckauftrag ermitteln kann?
Helga3606
..
..
 
Posts: 28
Joined: Fri Mar 03, 2006 2:44 pm

Postby Tron » Wed Dec 02, 2009 9:04 pm

Moin,
ich würde im Druckprogramm eine Zählvariable definieren und in der Schnittstelle des Formulars einen "Changing" - Parameter zum Vorbelegen der Seitennummer. Bei Verlassen des Formularbausteins wird der Seitenzähler zurückgegeben und dient dann als Korrekturwert (offset) für den nächsten Aufruf.
Oder statt Schnittstellen - Parameter einen Coding-Abschnitt im Formular mit "Export Seitenzahl to memory".
gruß Tron
(ist das ein eigenes Druckprogramm ?)
Tron
.....
.....
 
Posts: 1112
Joined: Sat Aug 04, 2007 10:21 pm

Postby Helga3606 » Thu Dec 10, 2009 12:00 pm

vielen Dank Tron!!!! :-)

Das hat wunderbar geklappt.

Aus Zeitmangel stelle ich erst nächste oder übernächste Woche den kompletten Code hier hinein.

Sowohl das Druckprogramm und das SMARTFORMS-Formular sind selbstgeschrieben.
Helga3606
..
..
 
Posts: 28
Joined: Fri Mar 03, 2006 2:44 pm

Coding für Seitenzähler,wenn Ausgabe aus mehreren SMARTFORMS

Postby Helga3606 » Tue Sep 21, 2010 5:30 pm

- Im Smartforms-Formular unter Formularschnittstelle folgenden Parameter definieren:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. SEITENOFFSET   TYPE   TDSFPAGE
GeSHi ©


- Im Smartforms-Formular unter Globale Definition im Tab-Reiter Globale Daten definieren:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. W_SEITE         LIKE      SFSY-PAGE
  2. W_SEITE_STRING   TYPE   STRING
  3.  
GeSHi ©


- Im Smartforms-Formular unter Globale Definition im Tab-Reiter Initialisierung definieren:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. Eingabeparameter: SEITENOFFSET
  2. Ausgabeparameter: W_SEITE
  3. Ausgabeparameter: W_SEITE_STRING
  4. w_seite = seitenoffset.
  5. w_seite_string = w_seite.
  6. condense w_seite_string.
GeSHi ©


- Im Formular ein Fenster erstellen, Fenstertyp: Abschlussfenster

- Darunter ein Coding-Block hinzufügen:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. Eingabeparameter: W_SEITE
  2. Ausgabeparameter: W_SEITE
  3. Ausgabeparameter: W_SEITE_STRING
  4. Coding:
  5. add 1 to w_seite.
  6. w_seite_string = w_seite.
  7. condense w_seite_string.
GeSHi ©


- Ebenfalls unter dem Fenster mit dem Typ Abschlussfenster ein Textfeld erstellen. Folgendes eingeben:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. Seite &W_SEITE_STRING& von &SFSY-JOBPAGES+0(4CZ)&
GeSHi ©

wobei folgendes Variablen sind:
&W_SEITE_STRING&
&SFSY-JOBPAGES+0(4CZ)&
(Das +0(4CZ) eliminiert einen Darstellungsfehler).

- Im Druckprogramm folgende Workareas definieren:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. data: lw_anzahl_seiten type TDSFPAGE.
  2. data: lw_document_output_info type ssfcrespd.
GeSHi ©


- Im Druckprogramm muss nun jedes Mal bevor ein neues Formular aufgerufen wird, folgender Code stehen:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. lw_anzahl_seiten = lw_anzahl_seiten + lw_document_output_info-tdfpages.
GeSHi ©

Für den Parameter SEITENOFFSET wird die Variable w_anzahl_seiten übergeben.

- Da in diesem Szenario mehrere Formulare in einem einzigen Job ausgedruckt werden, muss der JOB-Anfang und -Ende manuell mit den Funktionsbausteinen SSF_OPEN geöffnet bzw. SSF_CLOSE geschlossen werden.

- Bei Bedarf kann es noch in PDF umgewandelt werden, und zwar mit dem Funktionsbaustein CONVERT_OTF.
Helga3606
..
..
 
Posts: 28
Joined: Fri Mar 03, 2006 2:44 pm


Return to ABAP® Core

Who is online

Users browsing this forum: No registered users and 8 guests