Scripting Teilformulare

Aus SAP-Wiki
Zur Navigation springenZur Suche springen


Siehe JavaScript und FormCalc Scripting im LiveCycle Designer.

Teilformulare sind ein mächtiges Objekt, um Objekte zu strukturieren, das Layout zu bestimmen und sie können auch als Tabellen genutzt werden.

Tabellenzeile ausblenden

  • Wird ein Teilformular als Tabelle genutzt, können in Abhängigkeit von Werten Zeilen der Tabelle ausgeblendet werden.
  • Angenommen es gibt eine Tabelle/Teilformular "Sitzplaetze" mit einem untergeordneten Feld "Reserviert", dann sollen nur die Zeilen dargestellt werden, wo die Sitzplätze reserviert sind.

Das Coding wird beim Feld "Reserviert" beim Event "form:ready" angelegt.

Teilformular ausblenden, Scripting im Feld im Teilformular

Lösung mit JavaScript

if (this.rawValue == null || this.rawValue == 0)            //Wenn Feld "Reserviert" nicht gefüllt ist
  {
  this.parent.presence = "hidden";   //Dann blende Zeile der Tabelle/
  }

Lösung mit FormCalc

if ($ == null | $ == 0) then
  $.parent.presence = "hidden"
endif

Teilformular ausblenden, Scripting im Teilformular

Lösung mit JavaScript

if (this.Reserviert.rawValue == "X")            //Wenn Bedingung zutrifft
  {
  this.presence = "hidden";   //Dann blende Zeile der Tabelle/
  }

Lösung mit FormCalc

if ($.Reserviert.rawValue == "X") then
  $.presence = "hidden"
endif

Bedingte Seitenumbrüche

Es soll ein Seitenumbruch erzeugt werden, wenn eine neue Sitzklasse im Teilformular "Sitzplaetze" durch den veränderten Inhalt des Feldes "Sitzklasse" ersichtlich ist.

  1. Beim Teilformular in der Palette "Objekt" den Reiter "Paginierung" markieren.
  2. Einen bedingten (Seiten-)Umbruch einfügen über die Schaltfläche "Bearbeiten".
  3. auf das "+" klicken
  4. als Sprache "JavaScript" wählen
  5. Als Reaktion auf das "true" wird der Umbruch auf "Vor" eingestellt und "Anfang des nächsten Inhaltsbereichs".
if (this.resolveNode("Sitzplaetze[-1].Sitzklasse) != null)   //mindestens 1 Buchung in einer Klasse
  {
  //Prüfung Ungleichheit Sitzklasse vorherigen Datensatz mit aktuellem Datensatz
  this.resolveNode("Sitzplaetze[-1].Sitzklasse").rawValue != Sitzplaetze.Sitzklasse.rawValue
  }

Der Code liefert nun ein "true" für einen Seitenumbruch, bzw. "false" für eine Ausgabe ohne Seitenumbruch und löst den Seitenumbruch aus.

Felder berechnen

Feld in Abhängigkeit anderer Felder

Es ist sehr einfach möglich Felder innerhalb eines wiederholenden Teilformulars in Abhängigkeit von anderen Feldern zu berechnen.

Angenommen das Teilformular Sitzplaetze hat die Felder "Nettopreis" und "Steuer". Nun möchte man ein Feld "Bruttopreis" berechnen, was aus dem Kontext nicht geliefert wird.

Man geht in das Feld "Bruttopreis" unter dem Teilformular "Sitzplaetze" und legt das Coding an mit dem Event "form:ready".

this.rawValue = Nettopreis.rawValue + Steuer.rawValue; //JavaScript

oder

$ = Nettopreis + Steuer //FormCalc

Summe eines Feldes einer Tabelle berechnen

Summe eines Feldes einer Tabelle berechnen

Literatur