Zwischensumme von Tabellen

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Trulchen
Beiträge: 55
Registriert: 27.02.2013, 10:30

Zwischensumme von Tabellen

Beitrag von Trulchen » 03.07.2013, 14:33

Hallo und zwar folgendes Problem,
ich bin heute von der Tatsache erschlagen worden das ich wohl doch JavaScript im LiveCycleDesigner anwenden muss.

Ich soll z.B. für eine Rechnung auf jeder Seite eine Zwischensumme bilden und am Ende dann die Gesamtsumme.

Einige Code Schnipsel habe ich auch gefunden z.B.

Code: Alles auswählen

subtotal(this.Zeile, "Feld3", "Formular1..Fusszeile", "subtotal");   
   
function subtotal(oRow, sFieldname, sFooter, sFooterfield) {   
   /* *****************************************   
   * Writes a subtotal into a field of a table's footer row.   
   * Makes sense only for long tables interrupted by page breaks.   
*   
* Event:   
   *     To be called only in the layout:ready event.   
   *   
   * Parameters:   
   *     oRow:         the object of a table row    
*                   (the repeating subform)   
   *     sFieldname:   name of the field to be summed up - is    
   *                   right under oRow   
   *     sFooter:      name of the footer row's subform (the    
   *                   table's overflow footer)   
   *                   (may be characterized as precisely as    
   *                   neccessary (e. g. "myForm1..myFooter")   
   *     sFooterfield: name of the field containing the subtotal    
   *                   right in the footer row's subform   
   * Author   
   *     Ulrich Bähr, www.paperless-process.de, 20.05.11   
   ***************************************** */   
   var sRowSom = oRow.somExpression;   
   sRowSom = sRowSom.substring(0, sRowSom.lastIndexOf("["));   
      
   var arraySubtotals= xfa.resolveNodes(sFooter + "[*]." +    
      sFooterfield);    
   var iSubtotal     = 0;   
   var iPageCount    = 0;   
   var oFields       = xfa.resolveNodes(sRowSom + "[*]." +    
      sFieldname);   
   var iPageHitherto = xfa.layout.page(oFields.item(0));   
   for (var iLine = 0; iLine < oFields.length; iLine++) {   
      iPageCurrent = xfa.layout.page(oFields.item(iLine));   
      if (iPageCurrent > iPageHitherto) {   
         // there was a page break   
         // On the previous page we write the subtotal   
         arraySubtotals.item(iPageCount).rawValue =    
            iSubtotal;   
         iPageHitherto = iPageCurrent;      
         iPageCount++;   
      } // if page break   
         
      iSubtotal += oFields.item(iLine).rawValue;   
   } // for iLine   
} // Function subtotal()   
 
[*]

 

Aber ich habe keine Ahnung was ich damit anfangen soll. Welche Variable ich wo und wie benenen soll etc. Und natürlich tut sich auch im LC nichts wenn ich den Code einfügen.

Könnt ihr mir den Code erklären?
Oder gibt es noch eine andere Möglichkeit ?

Wäre froh um jede Hilfe

[/*]

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

Zwischensumme von Tabellen

Beitrag von armine » 03.07.2013, 16:40

Hallo Julia,

alles was du wissen willst, steht doch im Kommentar. Ein Beispiel habe ich dir auf Basis meines Tabellen-Steinbruchs gebastelt.

vg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Trulchen
Beiträge: 55
Registriert: 27.02.2013, 10:30

Zwischensumme von Tabellen

Beitrag von Trulchen » 04.07.2013, 09:44

Tut mir leid gestern wurde mir irg. noch keine Antwort auf das Thema Angezeigt....
Deswegen antworte ich erst jetzt.
Vielen Dank für dein Beispiel.... Er rechnet mir zumindest jetzt alle Werte auf, aber das er den Seitenumbruch berücksichtigt kommt irg. nicht... (siehe Beispiel bei jeder Zwischensumme ist der gleiche Wert)
Was ist noch mein Fehler?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Zwischensumme von Tabellen

Beitrag von armine » 04.07.2013, 17:37

Hallo Julia,

es fehlt der Code. Wie solls da funktionieren?
Den habe ich mal blind eingesetzt. Mangels XML-Datei ist nichts getestet.
Sehe ich es richtig, dass da Beträge aufaddiert werden, ohne dass man sich darum kümmert, ob das nun EUR oder USD sind?

vg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Trulchen
Beiträge: 55
Registriert: 27.02.2013, 10:30

Zwischensumme von Tabellen

Beitrag von Trulchen » 05.07.2013, 08:52

Die Daten kommen direkt aus dem SAP deswegen auch so direkt keine XML, kannst du aber haben wenn du es brauchst.

Habe das mit den Zwischensummern jetzt anders gelöst und zwar folgendes Coding gefunden:
https://scn.sap.com/thread/1328696

Jetzt bin ich daren (und denke zu scheitern) auf jeder Seite (ab Seite 2) ein Übertragsfeld oben an die Tabelle zu basteln wo die Zwischensumme von der vorherigen Seite angezeigt wird.
Hast du da irgendwelche Tipps?



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

Zwischensumme von Tabellen

Beitrag von armine » 05.07.2013, 09:55

Hallo Julia,

am Einfachsten scheint mir, du verwendest den Code von Ulrich Bähr mit der von mir eingebrachten Erweiterung bezüglich des Übertrags auf Folgeseiten.
Woran scheitest du?

vg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Trulchen
Beiträge: 55
Registriert: 27.02.2013, 10:30

Zwischensumme von Tabellen

Beitrag von Trulchen » 05.07.2013, 10:02

Edit!

Habe jetzt mehrfach deine Funktion getestet und er springt mir einfach mit folgender Betitelung der Parameter nicht in die Funktion rein.

subtotal(this.Zeile, "Cell4", "data..Zwischensumme", "Cell4", "data..Kopfzeile_ff", "Übertrag" ) ;
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Zwischensumme von Tabellen

Beitrag von armine » 05.07.2013, 11:34

Der Code steht direkt in der Tabelle:
[font=courier new]Formular.Inhalt.Tabelle::ready:layout - (JavaScript, client)[/font]
Im Aufruf der Funktion musst du nur deine Objektbezeichnungen einbringen.

Ich verwende:
[font=courier new]Kopfzeile_1[/font] als Kopfzeile für die 1.Seite
[font=courier new]Kopfzeile_ff[/font] als Kopfzeile für die Folgeseiten,
    da steht das Feld Übertrag drin
[font=courier new]Zwischensumme[/font] als Fußzeile (nicht für die letzte Seite),
    da steht das Feld für die Zwischensumme (Cell4) drin
[font=courier new]Fußzeile[/font], nicht als Fußzeile verwendet, sondern als gewöhnliche Zeile,
    in der auch die Endsumme ermittelt wird.



chris@adobe@acrobat
Beiträge: 4
Registriert: 02.12.2013, 15:24

Zwischensumme von Tabellen

Beitrag von chris@adobe@acrobat » 03.12.2013, 14:35

Hallo zusammen,

irgendwie bekomme ich den Andruck eines Übertrages nicht hin. Könnte ich mal mein PDF einstellen und jemand schaut drauf?!

Ciao
Christian

Benutzeravatar
Merklin
Beiträge: 1857
Registriert: 04.04.2009, 17:03

Zwischensumme von Tabellen

Beitrag von Merklin » 03.12.2013, 18:35

Hallo Christian,

sollte schon machbar sein, ohne Garantie.

VG Merklin

Antworten