Prozeduren für WRK-Programme

Toolmaker Produkt-Dokumentation

Prozeduren für WRK-Programme

Grundlagen zu WRK-Programmen

Standard-Bearbeitungs-Modi

Wird in Work-Programmen kein Kontext-Menü-Punkt und keine Buttons definiert, wird automatisch ein Kontext-Menü und ein Button mit den folgenden Standard-Optionen oder Modi hinzugefügt.

Die folgenden Standard Modi gesetzt werden:

*ADD Button → Erfassen (eines neuen Datensatzes)
*CHANGE Kontext-Menü → Ändern (des Datensatzes)
*COPY Kontext-Menü → Kopieren (des Datensatzes)
*DELETE Kontext-Menü → Löschen (des Datensatzes)
*PROPERTY Kontext-Menü → Anzeigen (des Datensatzes)

Die Standard-Optionen werden an das Folge-Programm übergeben und können über RPGWX-Prozeduren geprüft und ermittelt werden.
In den Folge-Programmen können die Standard-Modi, sowie alle anderen Modi, die in Kontext-Menüs oder über Buttons gesetzt werden mit RPGWX-Prozeduren geprüft und ermittelt werden.
In Change-Programmen werden automatisch Buttons mit den folgenden Standard-Optionen hinzugefügt:

*SAVE Sichern
*APPLY Übernehmen
*REFRESH Aktualisieren

Diese Standard-Modi können ebenfalls über RPGWX-Funktionen geprüft und ermittelt werden. Die Prüfung sollte jedoch erst nach Aufruf der RPGWX-Funktion Wx_GetChgInput() (ähnlich OpCode EXTFMT) erfolgen.

Wx_OpnHTMLWrk() – HTML Dokument öffnen

Im ersten Schritt der RPGWX-Programmierung muss festgelegt werden, ob eine List-Anzeige (Work-Table) oder Detail-Anzeige erfolgen soll. Die Unterscheidung erfolgt durch den Aufruf von unterschiedlichen Prozeduren für WRK- oder CHG-Programme.

Zum Erstellen einer WRK-Programmes wird zunächst die Prozedur WX_OpnHTMLWrk() (Open HTML Document for Work Tables) aufgerufen.

In dieser Prozedur wird zunächst das Default-HTML-Template ermittelt und geöffnet. Anstatt des Default-HTML-Templates zu verwenden, kann auch ein individuelles HTML-Dokument verwendet werden. In diesem Fall muss jedoch dafür gesorgt werden, dass die Platz-Halter für Work- bzw. Change-Tables, Überschriften, Error-Messages etc., die von RPGWX/Directweb ersetzt werden, in dem individuellen Dokument integriert sind.

Der Titel, der zur Laufzeit angezeigt werden soll wird als Parameter übergeben und kann wahlweise als Text oder als Message-Id aus der bei dem Einrichten der Anwendung angegebenen Nachrichten-Datei übergeben werden.

Das Folge-Programm (Detail-Anzeige oder eine weitere List-Anzeige) muss angegeben werden. Bei List-Programmen ist das Folge-Programm i.d.R. das Programm in dem die Detail-Verarbeitung erfolgen soll.

Die Programme, die bei Auswahl über das Kontext-Menü aufgerufen werden, werden bei der Definition der Menü-Punkte angegeben.

Die Prozedur Wx_OpnHTMLWrk() darf pro Work-Programm nur einmalig aufgerufen werden.

Wx_OpnHTMLWrk - Prototyp
//********************************************************************** // Procedure name: Wx_OpnHTMLWrk // Purpose: Open HTML Document for CGI Work Program // Returns: // Parameters: ParMsg => Message-Id Header or Header-Text // Parameters: ParCGIPGM => Program to Call // Parameters: ParHTMLDoc => HTML-Document // --> Not Passed or *DEFAULT passed // = Default Document // Parameters: ParOpnOpt => Additional Open Options //********************************************************************** D Wx_OpnHTMLWrk... D PR OpDesc D ParMsg Like(FldRef.MsgText) Const D PInCGIPGM Like(FldRef.PGM) Const D Options(*NoPass: *Trim) D PInHtmlDoc Like(FldRef.HTMLDOC) Const D Options(*NoPass) D PInOpnOpt Like(FldRefCGI.Options) Const D Options(*NoPass)

Parameter

ParTitle - Message-Id oder Text für Titel

PInCGIPGM - Folge-Programm

PInHTMLDoc - HTML-Dokument

Optionaler Parameter - Muss nur angegeben werden, wenn ein anderes als das Default HTML-Dokument verwendet werden soll

PInOpnOpt - Aufbereitungsoptionen

Optionaler Parameter, die folgenden Angaben sind möglich:

  • HelpDoc(Parm1, Parm2, Parm3, Parm4)

    • Parm1 = Hilfe-Text/Beschreibung - Kann direkt oder als Mesage-Id angegeben werden

    • Parm2 = PDF-Dokument oder Link - Kann direkt oder als Message-Id angegeben werden.
      Ein PDF-Dokument wird ohne Pfad angegeben und muss sich im Anwendungs-Verzeichnis für Hilfe-Dokumente befinden:
      /www/dirweb/htdocs/HelpDocs/<anwendungsname>

    • Parm3 = Seite in PDF-Dokumenten oder *NONE - Nur für PDF-Dokumente zulässig
      Syntax: #page=x (x=Seiten-Zahl)
      Sofern keine Seite angegeben werden kann und der 4. Parameter erforderlich ist, kann der Standard-Wert *NONE angegeben werden.

    • Parm4 = Icon
      Sofern ein individuelles Icon angegeben werden soll, wird dieses ohne Pfand angegeben und muss im Anwendungs-Verzeichnis für Icons hinterlegt sein.
      /www/dirweb/htdocs/HelpDocs/<anwendungsname>

Parm3 und Parm4 sind optional

Das Schlüssel-Wort HelpDoc, sowie die einzelnen Parameter können in jeder beliebigen Groß-/Klein-Schreibung angegeben werden.

  • DoubleClick(Parm1, Parm2)

    • Parameter1= ModusZulässig sind aktuell die folgenden Angaben
      In jeder beliebigen Groß/Klein-Schreibung
      *DSP/*DISPLAY = Anzeige Modus
      *CHG/*CHANGE = Änderungs-Modus
      *NONE = Keine Aktion bei Doppel-Klick

    • Parameter2 =Bestätigung
      Optional
      Nur für Änderungs- und Anzeige-Modus
      Zulässig sind die folgenden Angaben in jeder beliebigen Groß/Klein-Schreibung
      Confirm = mit Standard-Bestätigungstext
      Confirm(Text) = Bestätigungstext in Klammer
      Confirm(MSGID) = Message-Id für Bestätigungstext in Klammer

Das Schlüssel-Wort DoubleClick, sowie die einzelnen Parameter können in jeder beliebigen Groß-/Klein-Schreibung angegeben werden.

  • NoList - Beim ersten Aufruf werden nur die Filter angezeigt, aber die Tabelle hat keinen Inhalt

  • EmptyList - Beim ersten Aufruf werden die Filter und eine leere Liste angezeigt. Das SQL-Statement wird aber ausgeführt und die Anzahl der Datensätze wird angezeigt.

  • Group

Durch die Angabe des Schlüssel-Wortes Group wird ein zusätzlicher Kontext-Menü-Punkt „Gruppieren" ans Ende des Kontext-Menüs angefügt.

Mit Hilfe der Kontext-Menü-Auswahl Group können die Daten in der Spalte, auf der der Cursor aktuell steht verdichtet werden.

Das Schlüssel-Wort Group kann in jeder Beliebigen Groß-/Klein-Schreibung angegeben werden.

Beispiele für den Aufruf

Wx_OpnHTMLWrk('Adress-Stamm': 'EXCHGAD01');
Wx_OpnHTMLWrk('TOP0017'     : 'EXCHGUMS'   : 'MyWrkUmsatz.html');
Wx_OpnHTMLWrk('TOP0017'     : ''           : 'MyChgUmsatz.html'  : 'helpDoc(HLP0002, HLP0001, *NONE, Phone-52.png)');
Wx_OpnHTMLWrk('TIT0012'     : 'EXCHGCOMP'  : ''                  : 'DoubleClick(*NONE)');
Wx_OpnHTMLWrk('TIT0013'     : 'EXNXTPGM'   : ''                  'DoubleClick(*DSP, confirm)');
Wx_OpnHTMLWrk('TIT0012'     : 'EXCHGPGM1'  : ''                  : 'DoubleClick(*Chg, CONFIRM(Achtung: Änderungsmodus))');
Wx_OpnHTMLWrk('TIT0012'     : 'EXCHGPGM2'  : ''                  : 'helpDoc(HLP0002, HLP0001, *NONE, Phone-52.png) DoubleClick(*Chg, confirm(BST0007))');

Prozedur Wx_OpnHTMLWrk - HTML Dokument für Worktables öffnen

Such (Filter-)Felder definieren

Mit diesen Funktionen können oberhalt der Liste Suchfelder eingeblendet werden, über die der Benutzer die angezeigte Liste einschränken kann.

Wx_GenFlt() – Generischer Filter

Mit der Funktion WX_GenFlt wird der generische Filter definiert.

Für den generischen Filter können bis zu 10 Spalten angegeben werden, die entweder case sensitive oder case insensitive nach der eingegebenen Zeichen-Kombination durchsucht werden.

In einem WRK-Programm kann maximal ein generischer Filter definiert werden.

Wx_GenFlt - Prototyp
? ************************************************************************ P* Procedure name: Wx_GenFlt P* Purpose: Add generic Filter P* --> Up to 10 Fields/Columns within the same File/Table P* Returns: P* Parameters: ParFile => File/Table P* Parameters: ParField1 => Field/Column Name (in specified File) P* Parameters: ParOptions => Options (Table Options!) P* Parameters: ParField2 => Field/Column Name (in specified File) P* Parameters: ParField3 => Field/Column Name (in specified File) P* Parameters: ParField4 => Field/Column Name (in specified File) P* Parameters: ParField5 => Field/Column Name (in specified File) P* Parameters: ParField6 => Field/Column Name (in specified File) P* Parameters: ParField7 => Field/Column Name (in specified File) P* Parameters: ParField8 => Field/Column Name (in specified File) P* Parameters: ParField9 => Field/Column Name (in specified File) P* Parameters: ParField10 => Field/Column Name (in specified File) ? ************************************************************************ P Wx_GenFlt... P B Export ? ? * Procedure Interface ? --------------------------- D Wx_GenFlt... D PI OPDesc D ParFile Like(FldRef.NameSQL) Const D ParField1 Like(FldRef.NameSQL) Const D ParOptions Like(FldRefCGI.Options) Const D Options(*NoPass) D ParField2 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParField3 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParField4 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParField5 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParField6 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParField7 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParField8 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParField9 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParField10 Like(FldRef.NameSQL) Const D Options(*NoPass) Source Code 3022: Prototype - Prozedur Wx_GenFlt - Definiere generischen Filter

Parameter

ParFile - Physische Datei oder Tabelle oder View in der die Spalten/Felder für den generischen Filter hinterlegt sind

Es können wahlweise die kurzen (max.10 stelligen) System-Namen oder die bis zu 128 Zeichen langen SQL Namen angegeben werden.
Der Datei-Name kann in jeder beliebigen Groß/Klein-Schreibweise angegeben werden.

ParField1 - Erste Spalte/Feld, die nach der eingegebenen Buchstabenkombination durchsucht werden soll.

Es kann wahlweise der kurze System- oder der lange SQL-Name angegeben werden.
Der Spalten/Feld-Name kann in jeder beliebigen Groß/Klein-Schreibweise angegeben werden.
Für den generischen Filter muss mindestens eine Spalte/Feld angegeben werden.

ParOptions -  Aufbereitungsoptionen

Optionaler Parameter

Mögliche Werte

casesensitive - Casesensitive Suche

Default Suche ist case insensitive

ParField2 - Spalte/Feld, die gescannt werden soll

Optionaler Parameter

ParField3ParField10

Analog ParField2

Beispiele für den Aufruf

Wx_GenFlt('ADRESSEX': 'NAME1F');
Wx_GenFlt('AdresseX': 'Name1F': 'casesensitive': 'Strasse': 'Ort');


Wx_FltFile() – Datei für Filter definieren

Sofern kein generischer Filter erforderlich ist, jedoch weitere Filter-Felder angelegt werden sollen, müssen zunächst die Dateien/Tabellen/Views, in denen zu selektierenden Informationen hinterlegt wurden definiert werden.

Wurde ein generischer Filter angelegt, so wurde bereits die erste Datei/Tabelle/View angelegt. Der Aufruf der Funktion Wx_FltFile ist nur erforderlich, wenn weitere Filter aus anderen Dateien/Tabellen/Views definiert werden sollen.

Über die Funktion Wx_FltFile können bis zu 10 Dateien/Tabellen/Views definiert werden. Da diese Dateien/Tabellen/Views auch zum Aufbau des Select-Statements, das die Listanzeige bildet verwendet wird, müssen die Abhängigkeiten (Join-Informationen) zwischen den Dateien/Tabellen/Views definiert werden.

Die Join-Anweisungen müssen in gültiger SQL Notation angegeben werden.

Anmerkung:Anstatt die Verknüpfungen in der Funktion Wx_FltFile anzugeben, wird empfohlen SQL Views zu erstellen, die die alle Spalten, sowie die Verknüpfungen enthalten.



Wx_FltFile() - Prototoyp
*************************************************************************** P* Procedure name: Wx_FltFile P* Purpose: Define Files used for Filter P* --> Up to 10 Files can be specified P* --> If more than 1 File is specified: Join Conditions are P* Returns: P* Parameters: ParFile1 => File/Table 1 P* Parameters: ParFile2 => File/Table 2 (Optional) P* Parameters: ParJoin2 => Join Previous Tables and Table 2 (Optional) P* Parameters: ParFile3 => File/Table 3 (Optional) P* Parameters: ParJoin3 => Join Previous Tables and Table 3 (Optional) P* Parameters: ParFile4 => File/Table 4 (Optional) P* Parameters: ParJoin4 => Join Previous Tables and Table 4 (Optional) P* Parameters: ParFile5 => File/Table 5 (Optional) P* Parameters: ParJoin5 => Join Previous Tables and Table 5 (Optional) P* Parameters: ParFile6 => File/Table 6 (Optional) P* Parameters: ParJoin6 => Join Previous Tables and Table 6 (Optional) P* Parameters: ParFile7 => File/Table 7 (Optional) P* Parameters: ParJoin7 => Join Previous Tables and Table 7 (Optional) P* Parameters: ParFile8 => File/Table 8 (Optional) P* Parameters: ParJoin8 => Join Previous Tables and Table 8 (Optional) P* Parameters: ParFile9 => File/Table 9 (Optional) P* Parameters: ParJoin9 => Join Previous Tables and Table 9 (Optional) P* Parameters: ParFile10 => File/Table 10 (Optional) P* Parameters: ParJoin10 => Join Previous Tables and Table 10 (Optional) *************************************************************************** D Wx_FltFile PR OPDesc D ParFile1 Like(FldRef.NameSQL) Const D ParFile2 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParJoin2 Like(FldRef.TextVar) Const D Options(*NoPass) D ParFile3 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParJoin3 Like(FldRef.TextVar) Const D Options(*NoPass) D ParFile4 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParJoin4 Like(FldRef.TextVar) Const D Options(*NoPass) D ParFile5 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParJoin5 Like(FldRef.TextVar) Const D Options(*NoPass) D ParFile6 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParJoin6 Like(FldRef.TextVar) Const D Options(*NoPass) D ParFile7 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParJoin7 Like(FldRef.TextVar) Const D Options(*NoPass) D ParFile8 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParJoin8 Like(FldRef.TextVar) Const D Options(*NoPass) D ParFile9 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParJoin9 Like(FldRef.TextVar) Const D Options(*NoPass) D ParFile10 Like(FldRef.NameSQL) Const D Options(*NoPass) D ParJoin10 Like(FldRef.TextVar) Const D Options(*NoPass)

Parameter

ParFile1 - Physische Datei/Tabelle/View

Kann als kurzer System-Name (Max.10 Zeichen) oder langer SQL Name (Max. 128 Zeichen) angegeben werden.

ParFile2 - Physische Datei/Tabelle/View

Optionaler Parameter

Kurzer System- oder langer SQL Name

ParJoin2 - Verknüpfung zwischen Datei/Tabelle/View 1 und 2

Optionaler Parameter, muss aber angegeben werden, wenn ParFile2 angegeben wurde (auch dann wenn ein Cross Join gewünscht wird).

  • Beispiel:'Inner Join MYFILE2 +

on Key1File1 = Key1File2 +
and Key2File1 = Key2File2'

ParFile3 – ParFile10  - optional und werden analog ParFile2 verwendet.

ParJoin3 – ParJoin10 - optional werden analog ParJoin2 verwendet.

Beispiel für den Aufruf

Wx_FltFile('AuftrKopfX');
Wx_FltFile('AuftrKopfX': 'AuftrPosX': 'Join AuftrPosX on AuftrKopfX.BestNr = AuftrPosX.BestNr': 'KundSt': 'Left Outer Join KundSt on KundeNr = KndNr');


Wx_FltFld() – Such(Filter-)Feld definieren

Filter-Felder können definiert werden, nach dem die Dateien/Tabellen/Views, die für die Listanzeige benötigt werden, definiert wurden.


Für die einzelnen Filter-Felder können unterschiedliche Vergleichsoperatoren angegeben werden. Wird kein Vergleichsoperator angegeben, so wird der Unterlassungswert = (gleich) verwendet.

Bei der Definition der Filter-Felder können diverse Aufbereitungsoptionen angegeben werden.

Ebenso ist es möglich Unterlassungswerte anzugeben.

Über einen weiteren optionalen Parameter können Bedingungen definiert werden unter denen das Feld angezeigt oder ausgeblendet werden kann.

Wx_FltFld() - Prototyp
*************************************************************************** P* Procedure name: Wx_FltFld P* Purpose: Define Fields used for Filter P* Returns: P* Parameters: ParField => Field P* Parameters: ParMsg => Message-Id or Text P* (=, <>, >=, <=, <, >, Like, Not Like, P* Not LikeLeft, LikeRight, Not LikeRight P* Not LikeLeft, LikeRight, Not LikeRight P* Not Between, Between, Not In, In P* Parameters: ParOptions => Options P* Parameters: ParValue => Default Values P* Parameters: ParCond => Single field conditions P* Parameters: ParHelp => Help (Text or Message-Id P* --> Help = Level 2 Message Text) ? *************************************************************************** D Wx_FltFld... D PR OPDesc D ParField Like(FldRef.NameSQL) Const D ParMsg Like(FldRef.MsgData) Const D ParCompare Like(FldRef.Text15V) Const D Options(*NoPass) D ParOptions Like(FldRefCGI.Options) Const D Options(*NoPass) D ParValues Like(FldRefCGI.DftValue) Const D Options(*NoPass) D ParCond Like(FldRefCGI.Cond) Const D Options(*NoPass) D ParHelp Like(FldRefCGI.Help) Const D Options(*NoPass: *Trim)

Syntax

Wx_FltFld( <fldname> :  <msg> : [<operator>] : [<options>] : [<default>] : [<cond-values>] : [<help>])

Parameter

fldname -  Feld/Spalten-Name des Filter-Feldes

Das Filter-Feld (der angegebene Feld-Name) muss in den zuvor definierten Tabellen vorhanden sein.
Wahlweise kann der kurze System-Name oder der lange SQL –Name angegeben werden.

msg - Beschreibung, die links neben dem Filter-Feld angezeigt wird

In dem Parameter kann entweder die Beschreibung direkt oder eine Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

operator - Vergleichsoperator

Optionaler Parameter

Default-Wert ist =

Die verfügbaren Vergleichsoperatoren werden auf dieser Seite beschrieben: Vergleichsoperationen für Filter-Felder (Wx_FltFld und Wx_FltFileFld)

options - Aufbereitungsoptionen

Optionaler Parameter

default - Default-Werte

Optionaler Parameter

Bei Vergleichsoperator (Not) Between und (Not) In können mehrere alphanumerische Default-Werte durch Kommata getrennt übergeben werden.

cond-values - Bedingungen unter denen das Filter-Feld angezeigt werden soll.

Optionaler Parameter

Wird in JavaScript konvertiert und zur Laufzeit ausgeführt

help - Hilfe-Text

Ein Hilfe-Text oder eine Message-Id mit Hilfe-Text kann übergeben werden. Sofern eine Message-Id übergeben wird, wird davon ausgegangen, dass der Hilfe-Text als Level 2 Text hinterlegt wurde.
Sofern bei der Message-Id, die für die Anzeige angegeben wurde ein Level 2-Text in der Message-File hinterlegt ist, wird dieser automatisch als Hilfe-Text übernommen.

Beispiel für den Aufruf

Wx_GenFlt('ADRESSEX': 'NAME1F': '': 'NAME2F');
Wx_FltFld('Ort': 'FLD0005': 'LikeLeft');
Wx_FltFld('Land': 'FLD0006': '=': 'enhflt CTL(Country)');
Wx_FltFld('KundeNr': 'FLD0001': '>=': 'enhflt');

Zeigt dieses Bild:




Wx_FltFileFld() – Filterfile und 1.Feld definieren

Sofern kein generischer Filter verwendet wird und auch nur auf eine einzige physische Datei/Tabelle/View zugegriffen wird, kann die Datei/Tabelle/View über die Funktion Wx_FltFileFld() direkt zusammen mit dem 1. Filter-Feld definiert werden.

Bei dieser Funktion wird die Datei/Tabelle/View als 1. Parameter übergeben. Die folgenden Parameter entsprechen den Parametern (Anzahl, Reihenfolge und Schlüssel-Wort CONST), die für Prozedur Wx_FltFld() übergeben werden können.

Wx_FltFileFld() - Prototyp
*************************************************************************** P* Procedure name: Wx_FltFileFld P* Purpose: Define Fields used for Filter P* Returns: P* Parameters: ParFile => File P* Parameters: ParField => Field P* Parameters: ParMsg => Message-Id or Text P* (=, <>, >=, <=, <, >, Like, Not Like, P* Not LikeLeft, LikeRight, Not LikeRight P* Not LikeLeft, LikeRight, Not LikeRight P* Not Between, Between, Not In, In P* Parameters: ParOptions => Options P* Parameters: ParValue => Default Values P* Parameters: ParCond => Single Field Conditions P* Parameters: ParHelp => Help (Text or Message-Id P* --> Help = Level 2 Message Text *************************************************************************** D Wx_FltFileFld... D PR OPDesc D ParFile Like(FldRef.NameSQL) Const D ParField Like(FldRef.NameSQL) Const D ParMsg Like(FldRef.MsgData) Const D ParCompare Like(FldRef.Text15V) Const D Options(*NoPass) D ParOptions Like(FldRefCGI.Options) Const D Options(*NoPass) D ParValues Like(FldRefCGI.DftValue) Const D Options(*NoPass) D ParCond Like(FldRefCGI.Cond) Const D Options(*NoPass) D ParHelp Like(FldRefCGI.Help) Const D Options(*NoPass: *Trim)

Syntax

Wx_FltFileFld(<table> : <field> : <msg> : [<operator>] : [<options>] : [<default>] : [<cond-values>] : [<help>])

Parameter

table - Physische Datei/Tabelle/View

Kann als kurzer System-Name (Max.10 Zeichen) oder langer SQL Name (Max. 128 Zeichen) angegeben werden.
Analog Parameter ParFile1 in Funktion Wx_FltFile()

field - Feld/Spalten-Name des Filter-Feldes

Das Filter-Feld (der angegebene Feld-Name) muss in den zuvor definierten Tabellen vorhanden sein.

Wahlweise kann der kurze System-Name oder der lange SQL –Name angegeben werden.

Analog Parameter ParField in Funktion Wx_FltFld()

msg - Beschreibung, die links neben dem Filter-Feld angezeigt wird

In dem Parameter kann entweder die Beschreibung direkt oder eine Message-Id angegeben werden.

Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

operator - Vergleichsoperator

Optionaler Parameter

Default-Wert ist =

Die verfügbaren Vergleichsoperatoren werden auf dieser Seite beschrieben: Vergleichsoperationen für Filter-Felder (Wx_FltFld und Wx_FltFileFld)

options - Aufbereitungsoptionen

Optionaler Parameter

default - Default-Werte

Optionaler Parameter

Bei Vergleichsoperator (Not) Between und (Not) In können mehrere alphanumerische Default-Werte durch Kommata getrennt übergeben werden.

cond-values - Bedingungen unter denen das Filter-Feld angezeigt werden soll.

Optionaler Parameter

Wird in JavaScript konvertiert und zur Laufzeit ausgeführt

help - Hilfe-Text

Ein Hilfe-Text oder eine Message-Id mit Hilfe-Text kann übergeben werden. Sofern eine Message-Id übergeben wird, wird davon ausgegangen, dass der Hilfe-Text als Level 2 Text hinterlegt wurde.
Sofern bei der Message-Id, die für die Anzeige angegeben wurde ein Level 2-Text in der Message-File hinterlegt ist, wird dieser automatisch als Hilfe-Text übernommen.

Beispiel für den Aufruf

Wx_FltFileFld('TXDATEV05': 'WDUSER': 'TXD0011': '=':  'NotRequired ExecSQL(UserPrf)');

Wx_BegEnhFlt() – Beginn erweiterter Filter

Durch die Angabe der Option EnhFlt bei der Filter-Feld-Definition können Filter-Felder, die im erweiterten Filter angezeigt werden definiert werden.

Sofern mehrere Filter-Felder als erweiterte Filter-Felder definiert werden müssen, kann anstatt bei jedem Feld die Option EnhFlt anzugeben die Funktion Wx_BegEnhFlt() aufgerufen werden.

Alle Filter-Felder, die nach Aufruf dieser Prozedur definiert werden, werden als erweiterte Filter-Felder definiert und ausgegeben.

Wx_BegEnhFlt() - Prototype
************************************************************************** P* Procedure name: Wx_BegEnhFlt P* Purpose: Begin enhanced filter P* Returns: P* Parameters: ************************************************************************** D Wx_BegEnhFlt... D PR OPDesc

Syntax

Wx_BegEnhFlt()

Parameter

Die Prozedur Wx_BegEnhFlt() hat weder einen Rückgabe-Wert noch Parameter.

Beispiel für den Aufruf

Wx_BegEnhFlt();
Wx_FltFld('WDDATE': 'Datum');
Wx_FltFld('WDTIME': 'Zeit');
... weitere Felder für den erweiterten Filter


Vergleichsoperationen für Such(Filter)-Felder

Die verfügbaren Vergleichsoperationen für Such(Filter)-Felder werden hier beschrieben: Vergleichsoperationen für Filter-Felder

Aufbereitungsoptionen für Such(Filter)-Felder

Die verfügbaren Aufbereitungsfunktionen für Such(Filter)-Felder werden hier beschrieben: Aufbereitungsoptionen für Filter-Felder.

Bedingte Filter-Felder – Condition Group

RPGWX stellt mehrere Funktionen zur Verfügung, mit deren Hilfe JavaScript-Code erzeugt wird, der zur Laufzeit dafür sorgt, dass Filter-Felder nur unter bestimmten Bedingungen angezeigt werden.

Die Bedingungen unter denen die Filter-Felder angezeigt werden können auch bei den Funktionen Wx_FltFileFld() und Wx_FltFld() über einen optionalen Parameter angegeben werden.

Um zu vermeiden, dass die gleichen Bedingungen mehrfach angegeben werden müssen, wurden Prozeduren erstellt, über die die Bedingung einmalig festgelegt wird. Alle im Anschluss definierten Filter-Felder werden nur unter den in der Prozedur Wx_FltIf() angegebenen Bedingungen angezeigt.

Für Filter-Felder werden die folgenden zur Condition Group gehörenden Prozeduren zur Verfügung gestellt:

  • Wx_FltIf() If-Anweisung = Beginn der Condition Group

  • Wx_FltElse() Else-Anweisung

  • Wx_FltEndIf()EndIf-Anweisung = Ende der Condition Group

Für die Bedinungs-Funktionen gilt:

  • Die Bedingung muss sich auf zuvor mit RPGWX definierte Filter-Felder beziehen.

  • Condition Groups können verschachtelt werden. Die Verschachtelung der Condition Groups sowie die Anzahl der Aufrufe der Wx_FltIf() und Wx_FltEndIf() werden zur Laufzeit geprüft. Im Fehlerfall wird eine Fehlermeldung ausgegeben.

  • Die Bedingungen können wahlweise in RPG, CL oder JavaScript-Schreibweise angegeben werden. Der angegebene Code wird in JavaScript konvertiert und zur Laufzeit ausgeführt.

  • Nur Datei-Felder, die bereits in zuvor als Filter-Felder definiert wurden dürfen in den Bedingungen verwendet werden.

  • Vergleichsoperatoren, wie =, >, <> etc. (RPG-Schreibweise) können ebenso angegeben werden, wie *EQ, *GT, *NE etc. (CL-Schreibweise) oder ==, >, != (JavaScript-Schreibweise)

  • Logische Operatoren wie AND, OR, NOT (RPG) bzw. *AND, *OR, *NOT (CL) bzw. &&, ||, ! (JavaScript) können verwendet werden.

  • Klammersetzung ist erlaubt

Weitere Informationen: Seite RPGWX-Prozeduren, Abschnitt "Bedingtes Anzeigen von Ein-/Ausgabe-Feldern"

Wx_FltIf() – Beginn der Condition Group

Mit Hilfe der Prozedur Wx_FltIf() wird die erste Bedingung definiert. Die Bedingung wird in Java-Script-Code übersetzt und steuert zur Laufzeit die Anzeige der Ein-/Ausgabe-Felder.

Alle Felder und Variablen, die nach dem Aufruf der Prozedur Wx_FltIf() definiert werden, werden unter den gleichen Bedingungen angezeigt.

Wird die Prozedur Wx_FltIf() erneut, mit einer weiteren Bedingung aufgerufen, werden alle im Anschluss definierten Filter-Felder nur dann angezeigt, wenn beide Bedingungen erfüllt sind.

Wx_FltIf() - Protototyp
************************************************************************* P* Procedure name: Wx_FltIf P* Purpose: Begin IF-Condition - Filter P* Returns: P* Parameters: ParCond => Condition ************************************************************************* D Wx_FltIf... D PR OpDesc D ParCond Like(FldRefCGI.Cond) Const

Syntax

Wx_FltIf('<bedingung>');

Parameter

bedingung - Eine Bedingung, deren Ergebnis ein Wert True oder False ist

Beispiele

Wx_FltIf('Firma = 10');
Wx_FltIf('LiefBed *EQ ''AW''');

Wx_FltElse – Else-Anweisung

Über die Prozedur Wx_FltElse() kann eine ELSE-Anweisung definiert werden.

Alle Ein-/Ausgabe-Felder, die nach Ausführung der Prozedur Wx_FltElse() über RPGWX-Funktionen definiert werden, werden zur Laufzeit unter den inversen Bedingungen der zuvor definierten IF-Anweisung angezeigt.

Durch die Angabe von weiteren Bedingungen können Else-If-Bedingungen definiert werden.

Innerhalb der Else-Anweisungen können weitere Condition Groups definiert werden.

Wx_FltElse() - Prototoyp
************************************************************************* P* Procedure name: Wx_FltElse P* Purpose: Begin Else(IF)-Condition - Filter P* Returns: P* Parameters: ParCond => Condition ************************************************************************* D Wx_FltElse... D PR OpDesc D ParCond Like(FldRefCGI.Cond) Const D Options(*NoPass)

Syntax

Wx_FltElse('<bedingung>');

Parameter

 bedingung - Eine Bedingung, deren Ergebnis ein Wert True oder False ist

Optionaler Parameter

Durch Angabe von Bedingungen in der Else-Funktion wird eine ElseIf-Funktionalität erreicht.

Beispiele

Wx_FltEndIf() – Ende Condition Group

Der Aufruf der Wx_FltEndIf() Prozedur beendet die Condition Group.

Jede If-Anweisung muss beendet werden. Stimmen die Anzahl der Wx_FltIf() und Wx_FltEndIf()-Prozedur-Aufrufe nicht überein, tritt zur Laufzeit ein Fehler auf.

Durch den Aufruf der Prozedur Wx_FltEndIf() wird die äußerste Condition Group beendet.

Zu jedem Wx_FltIf()-Prozedur-Aufruf, muss auch ein Wx_FltEndIf()-Prozedur-Aufruf ausgeführt werden. Stimmt die Anzahl der Wx_FltIf()-Aufrufe mit der Anzahl der Wx_FltEndIf()-Aufrufe nicht überein, tritt zur Laufzeit ein Fehler auf.

Alle Filter-Felder, die mit RPGWX-Funktionen nach der Ausführung der Prozedur Wx_FltEndIf() definiert werden, werden ohne Berücksichtigung der Bedingungen aus der beendeten Condition Group angezeigt.

Wx_FltEndIf() - Prototyp
************************************************************************* P* Procedure name: Wx_FltEndIf P* Purpose: End IF-Condition - Filter P* Returns: P* Parameters: ************************************************************************* D Wx_FltEndIf... D PR OpDesc

Syntax

Wx_FltEndIf('<bedingung>');

Parameter

Für die Prozedur Wx_FltEndIf sind keine Parameter erforderlich



Condition Group - Beispiel für den Aufruf

Wx_FltIf('Firma = 10');
  Wx_FltFld('AuftrArt': 'FLD0027': '=': 'SelectList');
  Wx_FltIf('LiefBed = "AW"');
    Wx_FltFld('LiefBed': 'FLD0029': '=': 'SelectList');
  Wx_FltElse('LiefBed = "FH"');
    Wx_FltFld('Status': 'FLD0026': '=': 'SelectList');
  Wx_FltEndIf();
Wx_FltElse('Firma = 15');
  Wx_FltFld('KundeNr': 'FLD0001': '=': 'SelectList');
  Wx_FltIf('KundeNr < "20000"');
    Wx_FltFld('BestNr': 'FLD0025': 'LikeLeft');
  Wx_FltEndIf();
Wx_FltEndIf();


Inline-Filter

Neben den regulären Filter-Feldern können in Worktables zusätzlich Inline-Filter definiert werden.
Die Inline-Filter werden über das Schlüssel-Wort Filter(Option), das bei der Spalten-Definition angegeben wird, gesteuert. Wird ein Inline-Filter definiert kann eine der folgenden Optionen angegeben werden:

  • Text_Search In der entsprechenden Spalte wird dynamisch (abhängig von der Eingabe) die ein Datensätze ausgewählt bzw. reduziert

  • Select_Filter Es wird eine Select-Liste mit den vorhandenen Ausprägungen bereitgestellt

  • Combo_Filter Es wird eine Combobox mit den vorhandenen Ausprägungen bereitgestellt. Abhängig von der Eingabe werden die Auswahlmöglichkeiten in der Combobox reduziert.

  • Text_Search Abhängig von der Eingabe wird innerhalb der Spalte auf das erste Vorkommen positioniert.

  • Numeric_Filter



Abbildung 16: Inline Filter - Text_Filter / Select_Filter


Achtung: Sofern Inline-Filter verwendet werden, wird per Default das übliche Paging (Einlesen von Blöcken von jeweils 100 Datensätzen) ausgeschaltet, und alle Datensätze eingelesen.

Bei großen Datenmengen (mehrere 100.000 Datensätze) kann die Performance sehr darunter leiden. In diesen Fällen sollten besser reguläre Filter-Felder definiert werden.

Das folgende Beispiel zeigt den Source Code zur Definition der Inline-Filterfelder im vorherigen Beispiel:

Wx_WrkFld('DCAPP': 'DWB0552': 'Filter(Text_Filter)'); //Anwendung
Wx_WrkFld('DCNAM': 'WXA0002': 'Filter(Select_Filter)'); //Kennung
Wx_WrkFld('DCKEY': 'DWB0590':'filter(Combo_Filter)'); //Schlüssel
Wx_WrkFld('DCTXT': 'DWB0019': 'Filter(Text_Search)'); //Beschreibung

Für Filter-Felder können individuelle Bedienerhilfe-Texte definiert werden.

Die Bedienerhilfe kann zum einen über einen optionalen Parameter in allen Definitions-Funktionen für Change-Tables (z.B. Wx_FltFld() oder Wx_FltFileFld()) angegeben werden.

Alternativ kann die Bedienerhilfe explizit durch den Aufruf Funktion WX_FltHelp() gesetzt oder überschrieben werden.

Dabei kann wahlweise direkt ein Hilfe-Text oder eine Message-Id übergeben werden. Wird eine Message-Id übergeben wird der Level 2-Message-Text dieser Message-Id ermittelt und als Hilfe-Text angezeigt.

Wurde weder ein Message-Text noch eine Message-Id angegeben, so wird, sofern eine Feldbeschreibung als Message-Id angegeben wurde der Level 2 Message-Text ermittelt und als Bedienerhilfe ausgegeben. Dieser Prozess erfolgt automatisch, ohne Angabe eines Schlüssel-Wortes.

Soll diese Automatik unterbunden werden, bzw. kein Hilfe-Text erwünscht sein, so kann in dem optionalen Parameter für die Bedienerhilfe der Sonderwert *NONE übergegeben werden. Das Hinzufügen der Bedienerhilfe kann ebenfalls durch den Aufruf der Funktion Wx_FltNoHelp() entweder für ein einzelnes Feld oder alle Felder unterbunden werden.

Sofern ein Hilfe-Text zu einem (Eingabe)-Feld vorhanden ist, wird ein Fragezeichen-Icon angezeigt. Bei der Mouse Over-Aktion wird der hinterlegte Hilfe-Text angezeigt.


Abbildung 17: Bedienerhilfe bei Filter-Feldern

WX_FltHelp – Bedienerhilfe zu Filter hinzufügen

Mit Hilfe der Funktion Wx_FltHelp können in Work-Programmen Hilfe-Texte zu Filter-Feldern zugewiesen werden.

Prototyp

***************************************************************************
P* Procedure name: Wx_FltHelp
P* Purpose: Add individual help to a filter field
P* If a Message-Id is passed the 2nd Level Message Text will
P* will be used as help text
P* If a Message Text is passed this text will be used
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Help text or message id
P* Parameters: ParMsgTxt => Variable Message Text (Optional if a m
***************************************************************************
D Wx_FltHelp...
D PR OpDesc D ParField Like(FldRef.NameSQL) Const D Options(*Trim) D ParMsg Like(FldRefCGI.Help) Const D ParMsgTxt Like(FldRef.MsgText) Const D Options(*NoPass: *Trim) Source Code 4537: Prototype - Procedure Wx_FltHelp – Bedienerhilfe für Filter hinzufügen