Unterdrücken der letzten (leeren) Seite

SFP..SAPscript (Transaktion SE71)..Smartforms (TA Smartforms).. Interactive Forms..Transaktion EFRM)..SIFBA..IAF..AIF..SIFBA - SAP_Interactive_Forms_based_on_Adobe // LÖSUNGSANSÄTZE aber AUCH FÜR "NORMALE" PDFs VERWENDBAR ;-)
Antworten
fischerb
Beiträge: 2
Registriert: 26.02.2013, 09:48

Unterdrücken der letzten (leeren) Seite

Beitrag von fischerb » 03.09.2013, 10:56

Hallo Acronauten,

vielleicht könnt Ihr mir bei meinem Problem helfen?

Ich habe ein Zeitnachweis-Formular aus SAP. Die Daten kommen aus dem HR-System und sind in sog. InfoStars enthalten. Potentiell können mehrere Zeitnachweise pro Personalnummer und Abrechnungsmonat in einem Formular erstellt werden!

Aktuell bereitet mir der Seitenumbruch einiges an Kopfzerbrechen...

Jeder Zeitnachweis (pro Mitarbeiter und Abrechnungsmonat) soll immer auf einer neuen Seite beginnen. Damit dies funktioniert, habe ich die Paginierung im Subform STAR_MONTH_PER_GEN_DATA auf 'Nach: Gehe zum nächsten Inhaltsbereich' gestellt. Im Ergebnis erzeugt der LCD jedoch immer einen Umbruch nach jeder Personalnummer und somit wird eine letzte leere (bis auf Kopf) Seite erzeugt.
Wenn ich diesen Umbruch jedoch nicht vornehme, so werden alle Subforms nacheinander angedruckt (ich habe alle Subforms standardmäßig auf 'Platzieren: Nach vorherigem').

Das Formular enthält folgende (anzuzeigende) Objekte:
  • Masterseite mit Inhaltsbereich und Kopfdaten
  • Seite mit Subforms und Tabellen für Einzelergebnisse, Monatsübersicht, Wochensummen, Zeitumbuchungen und Abwesenheitsansprüche.

Ich habe mal das PDF sowie die Daten-XML angehängt.
Bitte wundert euch nicht über die Verschachtelte Struktur des Formulares (SAP-Standard bei InfoStars im HR Umfeld).

Danke schon mal,
Björn
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Unterdrücken der letzten (leeren) Seite

Beitrag von armine » 04.09.2013, 18:10

Hallo Björn,

so lange eine neue Seite verlangt wird, scheint mir nur eine Wahl möglich: Ob ich die leere Seite am Anfang oder Ende haben will.
In deinem Fall scheit es mir schlüssig, die leere letzte Seite beim Drucken zu unterdrücken ([font=courier new]xfa.host.print(1, "0", (xfa.host.numPages -2).toString(), 0, 0, 0, 0, 0);[/font]) und gegebenenfalls den Seitenzähler anzupassen.

Leere Seiten lassen sich aber auch dadurch vermeiden, dass am Ende einer Instanz ein Teilformular eingefügt wird, das den auf der Seite noch verfügbaren Raum füllt. Der Nachteil soll aber nicht verschwiegen werden. Die Ladezeiten werden mit der Anzahl der Instanzen immer grauslicher, weil für jede Instanz das ganze Layout durchgerechnet wird.

vg armine

P.S.: Hat jemand die Nuss schon geknackt und einen besseren Vorschlag?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

fischerb
Beiträge: 2
Registriert: 26.02.2013, 09:48

Unterdrücken der letzten (leeren) Seite

Beitrag von fischerb » 05.09.2013, 10:12

Hallo armine,

Danke schon mal für Deine schnelle Hilfe.

Die Lösung mit dem "Platzhalter"-Teilformular funktioniert. Ich bin mir jedoch noch nicht sicher, ob mir die Nachteile (längere Laufzeit) das Genick brechen.
Das Formular soll eigentlich im Massenlauf eingesetzt werden (> 1000 Instanzen). Mal sehen, wie der ADS das ganze verkraftet. :?

Die Lösung mit dem manuellen Drucken kann ich (glaube ich zumindest) bei mir nicht einsetzen, da der Druck direkt aus SAP ohne Benutzerinteraktion erfolgt.

Für weitere Anregungen bin ich jederzeit dankbar.
Viele Grüße,
Björn

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Unterdrücken der letzten (leeren) Seite

Beitrag von armine » 05.09.2013, 11:09

Hallo Björn,

steck den Code – ohne [font=courier new]relayout[/font] – mal ins [font=courier new]initialize[/font].

vg armine

agatos
Beiträge: 3
Registriert: 14.06.2016, 12:01

Unterdrücken der letzten (leeren) Seite

Beitrag von agatos » 21.06.2016, 11:31

Hallo,
wenn ich die letzte Seite unterdrücke, wo muss ich den Code platzieren? in welchem Ereignis?

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Unterdrücken der letzten (leeren) Seite

Beitrag von armine » 21.06.2016, 12:36

Hallo agatos,

wenn du das PDF hochlädst, kann man herausfinden, wie du die leere Seite am Ende vermeidest, bzw. wenigstens das Drucken verhinderst.

vg armine

agatos
Beiträge: 3
Registriert: 14.06.2016, 12:01

Unterdrücken der letzten (leeren) Seite

Beitrag von agatos » 21.06.2016, 14:20

Hallo,
ok, ich wollte deine Coding probieren.
xfa.host.print(1, "0", (xfa.host.numPages -2).toString(), 0, 0, 0, 0, 0);
Wo muss ich ihn bringen in welche event?

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Unterdrücken der letzten (leeren) Seite

Beitrag von armine » 21.06.2016, 16:35

Du darft gerne deine Strategie verfolgen. Solltest du damit Erfolg haben, bitte posten.

agatos
Beiträge: 3
Registriert: 14.06.2016, 12:01

Unterdrücken der letzten (leeren) Seite

Beitrag von agatos » 22.06.2016, 14:35

Ok:) Dieser Ausdruck ist nur bei interactiven Formularen relevant. (nicht bei PDF basierten Formularen). Ein Button "Formular drucken" wird angelegt und PDF erzeugt. Wenn man auf "Formular drucken" klickt, wird dann ein Fenster aufgetaucht um Formular zu drucken.
Der Code wird automatisch erzeugt:
data.Test.DruckenSchaltfläche1::click - (JavaScript, client)
xfa.host.print(1, "0", (xfa.host.numPages -1).toString(), 0, 1, 0, 0, 0);
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten