Was ist F-Script - Einleitung (2025)

Was ist F-Script

F-Script ist eine von Opacc entwickelte Script-Sprache. Sie ermöglicht das Erzeugen von Output und das Steuern von Abläufen innerhalb von OpaccOXAS und OpaccERP. Mit einem F-Script können Sie beispielsweise die ganze Logik und Formatierung einer Auswertung definieren. F-Script dient zudem zur Erweiterung der Business-Logik.

Mit F-Script wird also einerseits das Layout eines Dokuments (z.B. Rechnung) oder einer Auswertung (z.B. Lager-Bestandesliste) definiert. Andererseits können Sie mit F-Script auch ganze Abläufe programmieren, welche im Hintergrund laufen und z.B. vollautomatisch ganze Dokumentketten erzeugen und verarbeiten.

Ein F-Script wird innerhalb der BIZ-Engine verarbeitet. Dadurch ist sichergestellt, dass sämtliche Validierungen, die durch die Business-Logik durchgeführt werden, auch innerhalb von F-Script stattfinden.

F-Scripts sind meistens durch Subroutinen strukturiert. Subroutinen können dabei mit Funktionen verglichen werden, wie sie bei gebräuchlichen Programmiersprachen zur Verfügung stehen. Wir unterscheiden folgende Arten von Subroutinen:

  • Standard Subroutinen (sind in der Funktion und Benennung fix vorgegeben)

  • Eigene Subroutinen (können eigene Funktionen enthalten und auch frei benannt werden)

  • Seitenkontroll-Subroutinen (sind in der Funktion und Benennung fix vorgegeben und dienen u.a. dem Handling von Überträgen beim Seitenumbruch)

F-Scripts werden als UTF-8-BOM Dateien in folgendem Verzeichnis gespeichert: \Insyde\Ff\

Die Dateierweiterungen (File-Extension) von F-Scripts sind von uns standardisiert.

  • .ff – Hauptscript

  • .fs – Subscript (ein Subscript wird aus einem Hauptscript heraus aufgerufen)

  • .fx – (Hilfs-)Script welches Daten in Form einer Tabelle (XFAS) zurückgibt

  • .lb – Library auf deren Inhalte ein F-Script zugreifen kann. Werden Libraries für Übersetzungszwecke eingesetzt, wird die Dateierweiterung um das Sprachkürzel ergänzt. (z.B. .lbd für eine deutsche Sprach-Library oder .lbf für eine französische Sprach-Library.)

F-Scripts können durch folgende Services direkt ausgeführt werden:

  • System_RunScript (normale Script-Ausführung)

  • SelectBo (Auswertungen)

  • AppPool_Process (Applikations-Pool Typ (F)-Script)

F-Scripts, welche die Business-Logik erweitern, werden in OpaccOXAS Studio je nach Modul und Kontext aktiviert und durch den jeweiligen Event ausgeführt.

Beispiel

Im OpaccOxas Studio BC 95220 > Navigationsbereich: Do/Undo > Do kann das Script vor Verbuchen des Verkaufdokuments aktiviert werden. In diesem Fall ist SalDoc_Process der entsprechende Event.

Die verschiedenen Arten von Scripts

Konkrete Hauptscripts

Konkrete Hauptscripts werden aus einem OpaccERP-Kontext gestartet, der in direktem Zusammenhang mit dem Script steht. Das ist z.B. dann der Fall, wenn das F-Script beim Verarbeiten/Drucken eines Verkaufsdokuments abläuft.

Abstrakte Hauptscripts

Abstrakte Hauptscripts enthalten die gesamte benötigte Logik (z.B. für das Abarbeiten von Datensätzen) und stehen deshalb in keinem Zusammenhang mit der Anwendung aus welcher sie gestartet werden. Das bedeutet, dass keine Unterstützung (z.B. für das automatische Aktivieren von BOs) zur Verfügung steht. Sämtliche Aktivierungen, Repeat/Loops etc. müssen im F-Script selbst codiert werden.

Begriffe

Bevor Sie sich mit den Details beschäftigen, sollten Sie sich im vorliegenden Kapitel mit einigen wichtigen Begriffen vertraut machen.

F-Script Interpreter

Der F-Script-Interpreter interpretiert/übersetzt den F-Script Code zur Laufzeit so, dass dieser durch OpaccOXAS verarbeiten kann. Dabei werden falsche Befehle und Operationen erkannt und deren Ausführung mit einer Fehlermeldung abgebrochen. So wird verhindert, dass in der Datenbank inkonsistente Zustände entstehen.

Der F-Script-Interpreter arbeitet zeilenorientiert. Das bedeutet, dass eine Zeile nach der anderen abgearbeitet und gegebenenfalls auch ausgegeben wird. Gegenüber den Seitenbeschreibungssprachen wie Postscript oder PCL hat dies sowohl Vor- als auch Nachteile. Für die Kontrolle des Seitenumbruchs bietet F-Script vorgefertigte Funktionen um diese Anforderung abzudecken.

Der F-Script-Interpreter entpackt zudem die einzelnen Befehle (Kennzeichnung «») jeweils von "innen nach aussen" und übergibt somit den Wert eines Befehls an den jeweils äusseren Befehl.

Beispiel

«nz ADR-ACTIVE(«ADRNR»)\I»

Zuerst wird «ADRNR» ausgewertet und anschliessend dem Befehl «nz ADR-ACTIVE()\I» übergeben.

F-Script Befehle

Ein F-Script Befehl wird durch die Zeichen « (Alt-174) und » (Alt-175) begrenzt. Der F-Script-Interpreter von OpaccERP führt diesen Befehl zur Laufzeit aus. Fehlt das Start- («) und End-Zeichen (») wird der Ausdruck als Konstante (Text) angesehen. Falls es sich beim auszuführenden Befehl um ein Attribut (z.B. «NAME») handelt, wird die entsprechende Information aus der Datenbank (OpaccOXAS BusinessData) ausgelesen und im Script ausgegeben. Die Daten werden dabei nicht direkt aus der Datenbank gelesen. Damit haben Anpassung an der Datenstruktur (z.B. durch ein Update) keinen Einfluss auf den F-Script Befehl. F-Script Befehle können auch Daten liefern, die nicht direkt in der Datenbank gespeichert sind, sondern erst durch entsprechende Prozeduren erzeugt werden.

F-Script Befehle stehen u.a. für die folgenden Anwendungsfälle (Auswahl) zur Verfügung:

  • Business-Objekte aktivieren

  • BO-Attribute auslesen

  • Formatieren von Output (Drucken)

  • Datenbank-Operationen (Erstellen/Mutieren/Löschen von Daten via IBOS und SaveBo)

Blatt (Physische Grenzen)

Das Blatt definiert die maximale Anzahl Zeilen, welche auf eine Seite gedruckt werden können. Bei einem Laserdrucker entspricht dies 68 Zeilen (A4 Hochformat) bzw. 47 Zeilen (A4 Querformat). Die exakten Werte werden in der Druckersteuerung hinterlegt (OpaccOXAS Studio BC 98400 und BC 98410) und zur Laufzeit vom F-Script abgefragt.

Seite (Logische Grenzen)

Die Seite definiert die Anzahl Zeilen, welche für den Output (ohne Kopf- und Fusszeile) genutzt werden sollen. Die Ausgabe der Kopf- und Fusszeile erfolgt dann mit Hilfe der Subroutinen /totalcarry und /totalpage. Für die korrekte Ausgabe von Kopf- und Fusszeile, muss die entsprechende Anzahl Zeilen frei gelassen werden.

Beispiel

Ein Blatt ist mit 68 Zeilen definiert. Damit eine Fusszeile über zwei Zeilen ausgegeben werden kann, darf die Seite nur mit 66 Zeilen definiert sein. So steht zwischen dem normalen Inhalt und der Fusszeile noch eine Trennzeile (Leerzeile) zur Verfügung.

Operation

Operationen beinhalten komplexe, in sich abgeschlossene Funktionalität (z.B. ART-LIST) und stehen immer in einem bestimmten Kontext zu einem oder mehreren Objekten. Die verfügbaren Operationen werden in einzelnen Abschnitten beschrieben.

Business-Objekte (BO) und -Attribute (BO-Attribute)

Ein Business-Objekt (BO) entspricht im Prinzip einem Datensatz innerhalb der Datenbank. Beispiele von Business-Objekten sind Adressen (Addr) oder Verkaufsdokumente (SalDoc). Jedes BO hat seine eigenen Attribute (BO-Attribute), auf welche nach der Aktivierung des BO zugegriffen werden kann.

Beispiel

Zugriff auf das BO-Attribut Addr.Number mit dem Befehl «ADRNR».

Benutzen von Operationen, Befehlen und Attributen

Bevor Sie eine Operation, einen Befehl oder ein Attribut benutzen, sollten Sie die folgenden drei Punkte klären.

Welche BOs müssen aktiv sein?

Bevor auf ein BO-Attribut zugegriffen werden kann, das entsprechende BO aktiv sein. Das gilt analog auch für Operationen. Vor dem Aufruf einer Operation müssen bestimmte BOs aktiv sein. In den Beschreibungen zu den Operationen ist vermerkt, welche BOs das sind.

Wie werden die BOs aktiviert?

Gewisse BOs wie z.B. die Postleitzahlen (PLZV) sind immer aktiv und müssen daher auch nicht aktiviert werden. In den meisten Fällen müssen BOs aber aktiviert werden, wenn sie nicht durch den Kontext bereits aktiv sind.

Was ist F-Script - Einleitung (1)
Wichtig

Es ist nicht möglich, mehr als ein BO desselben BO-Typs aktiv zu halten.

Ist z.B. das BO Adresse mit der Adressnummer 100 aktiv, so führt die Aktivierung der Adresse mit der Adressnummer 120 dazu, dass das zuvor aktive BO mit Adressnummer 100 durch das BO mit der Adressnummer 120 "ersetzt" wird.

Explizite Aktivierung

Die Aktivierung erfolgt durch den Befehl <BO>-ACTIVEn(...) mit einem oder mehreren Argumenten.

Beispiel

Aktivieren der Adresse mit der Adressnummer 123456: «ADR-ACTIVE(123456)»

Für die Aktivierung stehen je nach BO verschiedene Indizes zur Verfügung, welche auch mehr als ein Argument (z.B. das Aktivieren einer Adresse über Vor- und Nachname) enthalten können.

Beispiel

Aktivieren der Adresse mit Vor- und Nachname Heinz Müller über Index 3 (Nachname, Vorname): «ADR-ACTIVE3(Müller, Heinz)»

Damit wird die erste Adresse mit Nachname Müller und Vorname Heinz aktiviert.

Wenn ein Objekt aufgrund des zu verwendenden Index mit mehreren Argumenten aktiviert werden kann, so dürfen - von hinten beginnend - eines oder mehrere dieser Argumente weggelassen werden. Eine Aktivierung über Index 3 (Nachname, Vorname) nur nach Nachnamen würde dann so aussehen: «ADR-ACTIVE3(Müller)»

Damit wird die erste Adresse mit Nachname Müller aktiviert.

Automatische Aktivierung

Die Aktivierung erfolgt hier durch Programme (z.B. Verkaufsdokument drucken) und manche Operationen (z.B. VUMS-LIST). In der Beschreibung der Operation ist jeweils beschrieben, welche BOs aktiviert werden.

Service-Objekte

Über Services in F-Script (XSER) erhält ein F-Script Zugang zum ServiceBus. Damit lassen sich alle Services, die OXAS zur Verfügung stellt (z.B. Biz.GetBo oder Biz.SaveBo) auch in F-Script nutzen. Ein Service kann dabei mandantenübergreifend ausgeführt werden. So kann beispielsweise mit dem F-Script nach Erstellen einer Verkaufsposition (VERPSAVE.FF) in einem Mandanten eine Verkaufsdokument-Position bearbeitet und gleichzeitig in einem anderen Mandanten eine Einkaufsdokument-Position erstellt werden.

Resultate von Services werden mit im F-Script definierten Namen als temporäre Objekte gespeichert (XRES) und stehen während der gesamten Laufzeit des F-Scripts zur Verfügung. Ist beispielsweise in einem Resultat ein Verkaufsdokument (SalDoc) gespeichert, kann während der gesamten Laufzeit des F-Scripts auf die Attribute dieses SalDoc zugegriffen werden.

Was ist F-Script - Einleitung (2)
Hinweis

Da F-Script sehr tief in der OXAS-Business-Logik verwurzelt ist, ist es technisch nicht in allen Konstellationen möglich direkt aus dem F-Script heraus auf das public interface des ServiceBus zuzugreifen. Wie man abfragt ob solche Zugriffe möglich sind, wird später in der Dokumentation erklärt.

Da mittels Services auch BOs gespeichert werden können für welche es keinen IBOS gibt, werden für neue BOs keine IBOS mehr zur Verfügung gestellt.

Was ist F-Script - Einleitung (2025)
Top Articles
Latest Posts
Recommended Articles
Article information

Author: Kelle Weber

Last Updated:

Views: 6167

Rating: 4.2 / 5 (53 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Kelle Weber

Birthday: 2000-08-05

Address: 6796 Juan Square, Markfort, MN 58988

Phone: +8215934114615

Job: Hospitality Director

Hobby: tabletop games, Foreign language learning, Leather crafting, Horseback riding, Swimming, Knapping, Handball

Introduction: My name is Kelle Weber, I am a magnificent, enchanting, fair, joyous, light, determined, joyous person who loves writing and wants to share my knowledge and understanding with you.