cancel
Showing results for 
Search instead for 
Did you mean: 

Entgeltnachweis SAP_PAYSLIP_DE_P: Personalnummernübergreifender Seitenzähler

former_member368169
Participant
0 Kudos

Hallo,

wir möchten den Gehaltsnachweis auf interactive Forms by Adobe umstellen. Für unsere Kuvertiermaschine brauchen wir dabei einen Seitenzähler, der beim Massendruck über alle Formulare durchgehend die Seiten zählt. In der FAQ zu HRFORMS (Hinweis 1415445) heißt es dazu:

In dem Formbuilder-Formular SAP_PAYSLIP_DE_P verwenden wir das bereits mit der globalen Variablen G_TOTAL_PAGECOUNT (s. Hinweis 1430459, Punkt d.). Im Layout muss zu diesem Basiswert dann aber noch in einem Script die Nummer der aktuellen Seite dieser Personalnummer addiert werden (xfa.layout.page(this)).

Die Variable G_TOTAL_PAGECOUNT habe ich inzwischen im Formular, und sie enthält auch den richtigen (Zwischen-)Wert. Nur die Addition mit dem Seitenzähler der aktuellen Personalnummer will nicht funktionieren. In meinen bisherigen Versuchen kommt bei meinen FormCalc-Skripten immer 0 heraus.

Hat jemand vielleicht ein Beispiel für ein funktionierendes Skript für diese Funktionialität?

Danke!

------------------------------------------------------------------------------------------------------

English version:

When printing payslips using the form SAP_PAYSLIP_DE_P, I need a page counter which continuously runs through all personnel numbers. In the FAQ in SAP note 1415445 I have found the following text:

13) Cross-personnel number page counter for insertion:

For performance reasons, the layout should always be called with the data for one personnel number only. However, as the page counting starts from the beginning during every call of the layout, you cannot use a cross-personnel number page counter.

A solution would be to write the page counter to the ABAP memory and to read it from there again. In the Form Builder form SAP_PAYSLIP_DE_P, we already use this with the global variable G_TOTAL_PAGECOUNT (see SAP Note 1430459, point d.). However, in the layout for this base value, you must add the number of the current page to this personnel number in a script (xfa.layout.page(this)).

Can anybody give me a working example of the script mentioned here? Up to now, all my attempts do do this have failed.

Thank you!

Accepted Solutions (1)

Accepted Solutions (1)

former_member368169
Participant
0 Kudos

Inzwischen habe ich es selbst herasgefunden. Der Haken liegt vor allem darin, dass die im SAP-Hinweis angegebene Syntax xfa.layout.page(this) JavaScript-Syntax ist, während ich meine Skripten in FormCalc erstellt habe. Da muss der Code ein wenig anders aussehen.

Was ich gemacht habe, ist folgendes:

Auf der Masterseite habe ich ein neues Teilformular angelegt, das mir als "Container" für den Skript-Code dient. Darin habe ich folgendes Skript angelegt:

data.#pageSet[0].Startseite.OMRBlock::calculate - (FormCalc, server)


currentPageCount = $.parent.index + 1 ; Für Zähler pro Kuvert: Pro Dokument bei 1 anfangen zu zählen

overallPageCount = $record.G_TOTAL_PAGECOUNT.value +  $.parent.index ; Pro Dokument bei 0 anfangen zu zählen

(...)

Damit habe ich die drei Werte, die ich brauche: Den aktuellen Seitenzähler innerhalb des Dokuments und den Gesamtzähler über alle Dokumente. Mit diesen Werten kann ich dann im folgenden weiter arbeiten.

Der Trick war also vor allem, dass der laufende Seitenzähler mit $.parent.index angesprochen wird (vorausgesetzt, man befindet sich eine Ebene unter der Masterseite, wodurch man mit $.parent eben die Masterseite selbst ansprechen kann).

Answers (0)