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

Siehe: Aufbereitungsoptionen für Filter-Felder

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

Siehe: Aufbereitungsoptionen für Filter-Felder

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

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

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.

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

Beispiele

Siehe Seite RPGWX-Prozeduren, Abschnitt "Beispiel für bedingte Filter-Felder"

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

Parameter

  • ParFieldEindeutige Kennung des Filter-Feldes


  • ParMsgBedienerhilfe-Text oder Message-Id der Bedienerhilfe

Bedienerhilfe wird aus Level 2 Message-Text der Message-Id ermittelt

  • ParMsgTxtVariable Message-Texte

Sofern eine Message-Id übergeben wurde, können zusätzlich Variable Message-Texte (die die Platzhalter in dem Message-Text ersetzen angegeben werden)

Beispiele für den Aufruf

Wx_FltHelp('Land': 'Internationales Länder-Kennzeichen');
Wx_FltHelp('KundeNr': 'MSG1234');
Wx_FltHelp('ARTNR': 'MSG7111': MyFld1 + ' ' + MyFld2);
Source Code 4638: Aufruf Prozedur Wx_FltHelp() – Bedienerhilfe für Filter hinzufügen

Wx_FltNoHelp – Bedienerhilfe für Filter unterbinden

Mit der Funktion Wx_FltNoHelp() kann die automatische Ermittlung der Bedienerhilfe für einzelne Filter-Felder oder alle Filter-Felder unterbunden werden.

Prototyp


***************************************************************************
P* Procedure name: Wx_FltNoHelp
P* Purpose: Prevents from adding automatically help texts to filter
P* Returns:
P* Parameters: ParField => Field (Optional)
P* Not Passed or Special Value *ALL -->
P No help text for all fields
***************************************************************************
D Wx_FltNoHelp...
D PR OpDesc
D ParField Like(FldRef.NameSQL) Const
D Options(*NoPass: *Trim)
Source Code 4739: Prototype Procedure Wx_ChgNoHelp - Automatische Ermittlung der Bedienerhilfe unterbinden

Parameter

  • ParFieldEindeutige Kennung des Filter-Feldes

(Optional)
Nicht übergeben oder Sonderwert *NONE --> Bedienerhilfe wird für alle Felder unterbunden

Beispiele für den Aufruf

Wx_FltNoHelp('ARTNR');
Wx_FltNoHelp();
Source Code 4840: Aufruf Procedure Wx_FltNoHelp - Automatische Ermittlung der Bedienerhilfe für Filter unterbinden

Kontext-Menü

Sofern für Worktables kein Kontext-Menü und keine Buttons definiert werden, wird automatisch ein Default-Kontext-Menü und ein Default-Button (Erfassen) generiert.

Das Default-Kontext-Menü enthält die folgenden Menü-Punkte:

  • Ändern
  • Kopieren
  • Löschen
  • Eigenschaften (= Anzeigen)

Die Verarbeitung der Standard-Kontext-Menü-Punkte bzw. des Standard-Buttons erfolgt in dem Folge-Programm, das beim Öffnen des HTML-Dokuments über Funktion Wx_OpnHTMLWrk() festgelegt wurde.

Bei individuellen Kontext-Menü-Punkten oder individuellen Buttons kann das auszuführende Programm direkt angegeben werden. Zur Laufzeit wird geprüft, ob es sich bei der eindeutigen Kennung um ein Programm in der aktuellen Bibliotheksliste handelt. Ist das Programm in der Bibliotheksliste vorhanden, wird es direkt aufgerufen. Konnte kein Programm gefunden werden, wird das gleiche Programm aufgerufen, das auch für die Standard-Menü-Punkte aufgerufen wird. Die eindeutige Kennung muss in diesem Programm geprüft werden, um entsprechende Aktionen ausführen zu können.

Soll kein Kontext-Menü generiert werden, muss entweder die Prozedur Wx_NoCtxMnuItm() oder die Prozedur Wx_CtxMnuItm() explizit mit dem Parameter-Sonderwert *NONE aufgerufen werden.

Soll der Standard-Button nicht generiert werden, so muss entweder die Prozedur Wx_NoWrkBtn() oder die Prozedur Wx_WrkBtn() mit dem Parameter-Sonderwert *NONE explizit aufgerufen werden.

Werden nicht alle Default-Menü-Punkte gewünscht, so muss entweder die Prozedur für die gewünschte Aktion (z.B. Wx_CtxMnuItmChange() oder Wx_CtxMnuItmDelete()) oder die Prozedur Wx_CtxMnuItm() jeweils mit der gewünschten Aktion (z.B. *CHANGE) im ersten Parameter aufgerufen werden.

Sofern die Standard-Kontext-Menü-Punkte sowie individuelle Kontext-Menü-Punkte erwünscht sind, müssen die Prozeduren für die gewünschten Standard-Kontext-Menü-Punkte aufgerufen werden.

Wenn alle Standard-Kontext-Menü-Punkte integriert werden sollen, genügt der Aufruf der Prozedur Wx_CtxMnuItmDefault() oder der Aufruf der Prozedur Wx_CtxMnuItm() mit dem Sonderwert *DEFAULT oder *DFT im ersten Parameter.

Die Funktion Wx_WrkBtn() muss für jeden individuellen Button aufgerufen werden.

Sofern der Standard-Button für Hinzufügen eingefügt werden soll, kann entweder dir Prozedur Wx_WrkBtnAdd() oder die Funktion Wx_WrkBtnAdd() mit dem Sonderwert *ADD als erster Parameter aufgerufen werden.

Wx_NoCtxMnuItm() – Ohne Standard-Kontext-Menü

Die Standard-Kontext-Menü-Auswahlen (Ändern, Hinzufügen, Löschen, Anzeigen/Properties) werden automatisch generiert.

Sofern diese Standard-Kontext-Menü-Auswahlen nicht eingebunden werden sollen, kann dies durch den Aufruf der Prozedur Wx_NoCtxMnuItm() unterbunden werden.

Wx_NoCtxMnuItm() - Prototyp
***************************************************************************
P* Procedure name: Wx_NoCtxMnuItm
P* Purpose: Define no context menu items (--> not even default items)
P* Returns:
***************************************************************************
D Wx_NoCtxMnuItm...
D PR 3U 0 OpDesc

Parameter

Rückgabe-Wert  - Nr. der Worktables (--> aktuell immer 1)

Kann von RPGWX-Programmen ignoriert werden

Beispiele für den Aufruf

Wx_NoCtxMnuItm();

Wx_CtxMnuItmChange() – Menü-Punkt Ändern

Sofern individuelle Kontext-Menü-Punkte eingebunden werden, wird das Standard-Kontext-Menü nicht eingebunden.

In diesem Fall müssen die benötigten Standard-Menü-Punkte durch Aufruf der entsprechenden Prozedur oder der Prozedur Wx_CtxMnuItm() mit dem Sonderwert des gewünschten Standard-Kontext-Menü-Punktes im ersten Parameter aufgerufen werden.

Durch den Aufruf der Prozedur Wx_CtxMnuItmChange() wird der Standard-Kontext-Menü-Punkt Änderung/Change eingebunden.

Wx_CtxMnuItmChange() - Prototyp
***************************************************************************
P* Procedure name: Wx_CtxMnuItmChange
P* Purpose: Define Context Menu Item Change
P* Returns:
P* Parameters: ParOptions => Options
P* Parameters: ParTblOptions => Options
P* Parameters: ParMnuObj => Menu Object
P* Parameters: ParMnuId => Menu Id
***************************************************************************
D Wx_CtxMnuItmChange...
D PR 3U 0 OpDesc
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParTblOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParMnuObj Like(FldRef.MnuObj) Const
D Options(*NoPass)
D ParMnuId Like(FldRef.MnuObj) Const
D Options(*NoPass)
Source Code 5143: Prototype - Funktion Wx_CtxMnuItmChange() – Standard--Menü-Punkt Änderung einbinden

Parameter

Rückgabe-Wert - Nr. der Worktables (--> aktuell immer 1)

Kann von RPGWX-Programmen ignoriert werden

ParOptions - Optionen (siehe Aufbereitungsoptionen Kontext-Menü-Punkte)

Optionaler Parameter

Beispiele für den Aufruf

Wx_CtxMnuItmChange();

Wx_CtxMnuItmChange(line);


Wx_CtxMnuItmCopy() – Menü-Punkt Kopieren

Sofern individuelle Kontext-Menü-Punkte eingebunden werden, wird das Standard-Kontext-Menü nicht eingebunden.
In diesem Fall müssen die benötigten Standard-Menü-Punkte durch Aufruf der entsprechenden Prozedur oder der Prozedur Wx_CtxMnuItm() mit dem Sonderwert des gewünschten Standard-Kontext-Menü-Punktes im ersten Parameter aufgerufen werden.
Durch den Aufruf der Prozedur Wx_CtxMnuItmCopy() wird der Standard-Kontext-Menü-Punkt Kopieren eingebunden.

Prototype

***************************************************************************
P* Procedure name: Wx_CtxMnuItmCopy
P* Purpose: Define Context Menu Item Copy
P* Returns:
P* Parameters: ParOptions => Options
P* Parameters: ParTblOptions => Options
P* Parameters: ParMnuObj => Menu Object
P* Parameters: ParMnuId => Menu Id
***************************************************************************
D Wx_CtxMnuItmCopy...
D PR 3U 0 OpDesc
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParTblOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParMnuObj Like(FldRef.MnuObj) Const
D Options(*NoPass)
D ParMnuId Like(FldRef.MnuObj) Const
D Options(*NoPass)
Source Code 5345: Prototype - Funktion Wx_CtxMnuItmCopy() – Standard-Menü-Punkt Kopieren einbinden

Rückgabe-Wert - Nr. der Worktables (--> aktuell immer 1)

Kann von RPGWX-Programmen ignoriert werden

ParOptions - Optionen (siehe Aufbereitungsoptionen Kontext-Menü-Punkte)

Optionaler Parameter

Beispiele für den Aufruf

Wx_CtxMnuItmCopy();

Wx_CtxMnuItmCopy(line);


Wx_CtxMnuItmDelete() – Menü-Punkt Löschen

Sofern individuelle Kontext-Menü-Punkte eingebunden werden, wird das Standard-Kontext-Menü nicht eingebunden.

In diesem Fall müssen die benötigten Standard-Menü-Punkte durch Aufruf der entsprechenden Prozedur oder der Prozedur Wx_CtxMnuItm() mit dem Sonderwert des gewünschten Standard-Kontext-Menü-Punktes im ersten Parameter aufgerufen werden.

Durch den Aufruf der Prozedur Wx_CtxMnuItmDelete() wird der Standard-Kontext-Menü-Punkt Löschen eingebunden.

Prototype

***************************************************************************
P* Procedure name: Wx_CtxMnuItmDelete
P* Purpose: Define Context Menu Item Delete
P* Returns:
P* Parameters: ParOptions => Options
P* Parameters: ParTblOptions => Options
P* Parameters: ParMnuObj => Menu Object
P* Parameters: ParMnuId => Menu Id
***************************************************************************
D Wx_CtxMnuItmDelete...
D PR 3U 0 OpDesc
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParTblOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParMnuObj Like(FldRef.MnuObj) Const
D Options(*NoPass)
D ParMnuId Like(FldRef.MnuObj) Const
D Options(*NoPass)
Source Code 5547: Prototype - Funktion Wx_CtxMnuItmDelete() – Standard-Menü-Punkt Löschen einbinden

Parameter

Rückgabe-Wert - Nr. der Worktables (--> aktuell immer 1)

Kann von RPGWX-Programmen ignoriert werden

ParOptions - Optionen (siehe Aufbereitungsoptionen Kontext-Menü-Punkte)

Optionaler Parameter

Beispiele für den Aufruf

Wx_CtxMnuItmDelete();

Wx_CtxMnuItmCDeleteline);


Wx_CtxMnuItmProperty() – Menü-Punkt Anzeigen/Eigenschaften

Sofern individuelle Kontext-Menü-Punkte eingebunden werden, wird das Standard-Kontext-Menü nicht eingebunden.

In diesem Fall müssen die benötigten Standard-Menü-Punkte durch Aufruf der entsprechenden Prozedur oder der Prozedur Wx_CtxMnuItm() mit dem Sonderwert des gewünschten Standard-Kontext-Menü-Punktes im ersten Parameter aufgerufen werden.

Durch den Aufruf der Prozedur Wx_CtxMnuItmProperty() wird der Standard-Kontext-Menü-Punkt Anzeigen/Eigenschaften eingebunden.

Prototype

***************************************************************************
P* Procedure name: Wx_CtxMnuItmProperty
P* Purpose: Define Context Menu Item Property
P* Returns:
P* Parameters: ParOptions => Options
P* Parameters: ParTblOptions => Options
P* Parameters: ParMnuObj => Menu Object
P* Parameters: ParMnuId => Menu Id
***************************************************************************
D Wx_CtxMnuItmProperty...
D PR 3U 0 OpDesc
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParTblOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParMnuObj Like(FldRef.MnuObj) Const
D Options(*NoPass)
D ParMnuId Like(FldRef.MnuObj) Const
D Options(*NoPass)
Source Code 5749: Prototype - Funktion Wx_CtxMnuItmProperty() – Standard-Menü-Punkt Eigenschaften

Rückgabe-Wert - Nr. der Worktables (--> aktuell immer 1)

Kann von RPGWX-Programmen ignoriert werden

ParOptions - Optionen (siehe Aufbereitungsoptionen Kontext-Menü-Punkte)

Optionaler Parameter

Optionaler Parameter

Beispiele für den Aufruf

Wx_CtxMnuItmProperty();

Wx_CtxMnuItmProperty(line);

Wx_CtxMnuItmDefault() – Standard-Kontext-Menü

Sofern individuelle Kontext-Menü-Punkte eingebunden werden, wird das Standard-Kontext-Menü nicht eingebunden.

In diesem Fall müssen die benötigten Standard-Menü-Punkte durch Aufruf der entsprechenden Prozedur oder der Prozedur Wx_CtxMnuItm() mit dem Sonderwert des gewünschten Standard-Kontext-Menü-Punktes im ersten Parameter aufgerufen werden.

Sollen alle Standard-Kontext-Menü-Punkte eingebunden werden, können durch den einmaligen Aufruf der Funktion Wx_CtxMnuItmDefault alle Standard-Kontext-Menü-Punkte eingebunden werden.

Wx_CtxMnuItmDefault() - Prototyp
***************************************************************************
P* Procedure name: Wx_CtxMnuItmDefault
P* Purpose: Define Context Menu Item Default
P* Returns:
P* Parameters: ParOptions => Options
P* Parameters: ParTblOptions => Options
P* Parameters: ParMnuObj => Menu Object
P* Parameters: ParMnuId => Menu Id
***************************************************************************
D Wx_CtxMnuItmDefault...
D PR 3U 0 OpDesc
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParTblOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParMnuObj Like(FldRef.MnuObj) Const
D Options(*NoPass)
D ParMnuId Like(FldRef.MnuObj) Const
D Options(*NoPass)


Rückgabe-Wert - Nr. der Worktables (--> aktuell immer 1)

Kann von RPGWX-Programmen ignoriert werden

ParOptions - Optionen (siehe Aufbereitungsoptionen Kontext-Menü-Punkte)

Optionaler Parameter

Sofern Optionen angegeben wurden, werden diese für alle Standard-Kontext-Menü-Punkte übernommen.

Beispiele für den Aufruf

Wx_CtxMnuItmDefault();

Wx_CtxMnuItmDefault(line);

Wx_CtxMnuItm() - Kontextmenüpunkt definieren

Über die Funktion Wx_CtxMnuItm() können Kontextmenü-Einträge definiert werden, durch die ein Folgeprogramm für den markierten Satz aktiviert wird. Das Kontextmenü wird über einen Rechtsklick aufgerufen. Dabei können ein oder mehrere Sätze markiert sein.Wenn mehrere Sätze markiert sind, dann werden die Indexwerte aller dieser Sätze in einem Array an das Folgeprogramm übergeben.

Die Aktion, die bei einem Klick auf einen Kontextmenü-Eintrag ausgeführt wird, wird durch den ersten Parameter (ParMnuItem) bestimmt. Dies kann sein:

  • der Aufruf einer der Standard-Funktion Bearbeiten eines Satzes (*ADD / *COPY / *DELETE / *PROPERTY)
  • das Unterdrücken aller Kontextmenü-Einträge (*NONE)
  • das Setzen aller Standard-Kontextmenü-Einträge (*DEFAULT/*DFT)
  • der Aufruf eines bestimmten Programmes
    • wenn der Parameter den Namen eines existierenden Programmes enthält, dann wird beim Klick dieses Programm gerufen
  • der Aufruf des Standard-Verarbeitungsprogrammes (hinterlegt in der Prozedur Wx_OpnHTMLWrk() ) - mit dem Parameter-Inhalt als "Modus"
    • wenn der Parameter keinen der oben genannten Einträge hat und kein Programm mit diesem Namen existiert, dann wird das Standard-Verarbeitungsprogramm gerufen und der Inhalt des Parameters als "Modus" übergeben
    • das Standard-Verarbeitungsprogramm kann den Modus mit der Funktion Wx_isMode() abfragen

Bei einem individuellen Kontext-Menü-Punkt muss der Text, der in dem Kontext-Menü erscheinen soll angegeben werden. Der Text kann entweder direkt angegeben oder als Message-Id hinterlegt werden.

Die Funktion Wx_CtxMnuItm() muss für jeden (individuellen) Kontext-Menü-Punkt aufgerufen werden.

Die Kontext-Menü-Punkte werden in der gleichen Reihenfolge angeordnet, in der die Kontext-Menü-Punkte (durch Aufruf der Funktion Wx_CtxMnuItm()) definiert wurden.

Error rendering macro 'code': Invalid value specified for parameter 'firstline'
***************************************************************************
P* Procedure name: Wx_CtxMnuItm
P* Purpose: Define Fields used for Work Table
P* Returns:
P* Parameters: ParMnuItm => Menu Item --> Several Default *ITEMs
P* (such as *CHANGE) allowed
P* Default Options: *ADD, *CHANGE, *COPY,
P* *DELETE, *PROPERTY
P* *DFT/*DEFAULT = all previously listed
P* Parameters: ParMsg => Message-Id or Item Text
P* Parameters: ParOptions => Options
P* Parameters: ParTblOptions => Options
P* Parameters: ParMnuObj => Menu Object
P* Parameters: ParMnuId => Menu Id
***************************************************************************
D Wx_CtxMnuItm...
D PR 3U 0 OpDesc
D ParMnuItm Like(FldRef.MnuItm) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParTblOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParMnuObj Like(FldRef.MnuObj) Const
D Options(*NoPass)
D ParMnuId Like(FldRef.MnuObj) Const
D Options(*NoPass)

Parameter

Rückgabe-Wert  - Nr. der Worktables (--> aktuell immer 1)

Kann von RPGWX-Programmen ignoriert werden

ParMnuItm - Eindeutige Kontext-Menü-Kennung

Standard-Kontext-Menü-Punkte:

  • *CHANGE - Kontext-Menü-Punkt Änderung
  • *COPY - Kontext-Menü-Punkt Kopieren
  • *DELETE - Kontext-Menü-Punkt Delete
  • *PROPERTY - Kontext-Menü-Punkt Eigenschaften/Anzeigen
  • *DEFAULT/*DFT - Alle Standard-Kontext-Menü-Punkte
  • *NONE - Keine Standard-Kontext-Menü-Punkte einbinden
  • <programm-name>- Sofern es sich zur Laufzeit um ein Programm in der Bibliotheksliste handelt, wird dieses Programm aufgerufen
  • <eindeutige_kennung> - Sofern zur Laufzeit kein Programm mit der eindeutigen Kennung vorhanden ist, wird das Programm das in Prozedur Wx_OpnHTMLWrk() vorgegeben wurde aufgerufen. Die eindeutige Kennung kann in dem aufgerufenen Programm über Funktion Wx_isMode geprüft werden.

ParMsg - Text für Kontext-Menü-Punkt

Optionaler Parameter

Nur erforderlich bei individuellen Kontext-Menü-Punkten

Wahlweise kann ein Text oder eine Message-Id (aus der der Anwendung zugeordneten Message-File) angegeben werden.

ParOptions - Optionen (vergl. Aufbereitungsoptionen Kontext-Menü-Punkte)

Optionaler Parameter

Beispiele für den Aufruf

Wx_CtxMnuItm('*CHANGE');
Wx_CtxMnuItm('*PROPERTY');
Wx_CtxMnuItm('KXCHGKOEM': 'KXD0086': 'Window line');
Wx_CtxMnuItm('KXCHGKOTX': 'KXD0016': 'Window');
Wx_CtxMnuItm('KXWRKKOPR': 'KXD0031': 'Window line');
Wx_CtxMnuItm('KXWRKKOTN': 'KXD0026': 'Window');
Wx_CtxMnuItm('KXWRKKOSP': 'KXD0032': 'Window');
Wx_CtxMnuItm('FAKTALL' : 'Faktura erstellen':
            'Window line');
Wx_CtxMnuItm('KXWRKMAIL2': 'Gesendete e-mails':
            'Window line');
Wx_CtxMnuItm('KXKNGRCSV': 'KXD0094': 'Window line');
Wx_CtxMnuItm('KXANWCSV' : 'KXD0114': 'Window');

Wx_CtxMnuItm('HLDOUTQ' : 'DWB0118' :
            'icn(stop.gif) line ParCond(OutQStsH = ''RELEASED'')');


Wichtiger Hinweis zu bedingten Kontext-Menü-Punkten:

Bei bedingten Kontext-Menü-Punkten (ParCond) darf die Spalte, auf die sich die Bedingung bezieht (hier QutQStsH), keine Icon-Spalte (QutQSts) sein, sondern muss eine Text-Spalte (QutQStsH) sein.

Lösung: Falls die Bedingung eine Spalte betrifft, die durch eine Parameternutzung CTL() ein Icon enthält, z.B. Wx_WrkFld('OutQSts' : 'DWB0132' : 'CTL(OUTQSTS) center'); muss am Ende aller Wrk-Felder eine weitere Spalte mit dem Textwert als "hidden" definiert werden, z.B. Wx_WrkFld('OutQStsH' : '': 'hidden'); Da jede Spalte einen anderen Namen verlangt, muss evt. ein weiteres Feld in der angezeigten View oder SQL-Anweisung definiert werden, z.B. Select ..... OutQSts, OutQsts as OutQStsH from ....

Beispiel der Spalte (QutQSts) mit Icon:

Beispiel des bedingten Kontextmenüs:


Wird dieser Hinweis nicht beachtet, funktioniert die Bedingung nicht, d.h. der bedingte Kontext-Menü-Punkt wird immer angeboten.


Das Ergebnis dieser Kontext-Menü-Definition wird im folgenden Screenshot gezeigt.

Abbildung 18: Erstellen Kontext-Menü durch Aufruf der Funktion Wx_CtxMnuItm()

Buttons

Erst Headertexte, dann Buttons

Wenn in einem WRK-Programm Header-Texte mit der Prozedur Wx_HdrText eingefügt werden, dann müssen die Buttons nach den Headertexten eingefübt werden.

Wx_NoWrkBtn() – Ohne Standard-Buttons

Der Standard-Button Hinzufügen wird automatisch generiert.

Sofern dieser Standard-Button nicht eingebunden werden soll, kann dies durch den Aufruf der Prozedur Wx_NoWrkBtn() unterbunden werden..

Prototype

***************************************************************************
P* Procedure name: Wx_NoWrkBtn
P* Purpose: Define no Buttons (--> not even default buttons)
P* Returns:
***************************************************************************
D Wx_NoWrkBtn...
D PR 3U 0 OpDesc
Source Code 6355: Prototype - Funktion Wx_NoWrkBtn()

Rückgabe-Wert - Nr. der Worktables (--> aktuell immer 1)

Kann von RPGWX-Programmen ignoriert werden

Beispiele für den Aufruf

Wx_NoWrkBtn();

Wx_WrkBtnAdd() – Button Hinzufügen/Erfassen

Sofern individuelle Buttons eingebunden werden, werden die Standard-Buttons nicht eingebunden.

In diesem Fall müssen die benötigten Standard-Buttons durch Aufruf der entsprechenden Prozedur oder der Prozedur Wx_WrkBtn() mit dem Sonderwert des gewünschten Standard-Buttons im ersten Parameter aufgerufen werden.

Durch den Aufruf der Prozedur Wx_WrkBtnAdd() wird der Standard-Button Hinzufügen/Erfassen eingebunden.

Prototype

***************************************************************************
P* Procedure name: Wx_WrkBtnAdd
P* Purpose: Define Button Add
P* Returns:
P* Parameters: ParOptions => Options
P* Parameters: ParMsg => Message Text or Message Id
P* Parameters: ParTblOptions => Options
P* Parameters: ParMnuObj => Menu Object
P* Parameters: ParMnuId => Menu Id
***************************************************************************
D Wx_WrkBtnAdd...
D PR 3U 0 OpDesc
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParMsg Like(FldRef.MsgText) Const
D Options(*NoPass: *Trim)
D ParTblOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParMnuObj Like(FldRef.MnuObj) Const
D Options(*NoPass)
D ParMnuId Like(FldRef.MnuObj) Const
D Options(*NoPass)
Source Code 6557: Prototype - Funktion Wx_WrkBtnAdd() – Button Hinzufügen/Erfassen

Parameter

Rückgabe-Wert - Nr. der Worktables (--> aktuell immer 1)

Kann von RPGWX-Programmen ignoriert werden

ParOptions - Optionen (siehe Aufbereitungsoptionen für Buttons)

Optionaler Parameter

ParMsgButton - Text oder Message-Id für vom Default abweichenden Button-Text

Optionaler Parameter

Beispiele für den Aufruf

Wx_WrkBtnAdd();

Wx_WrkBtnAdd(line);

Wx_WrkBtnAdd('': 'Neuer Auftrag');

Wx_WrkBtnAdd('': 'MSG4711');


Wx_WrkBtnDefault() – Standard-Buttons

Sofern individuelle Buttons eingebunden werden, werden keine Standard-Buttons eingebunden.

In diesem Fall müssen die benötigten Standard-Buttons durch Aufruf der entsprechenden Prozedur oder der Prozedur Wx_WrkBtn() mit dem Sonderwert des gewünschten Standard-Buttons im ersten Parameter aufgerufen werden.

Sollen alle Standard-Buttons eingebunden werden, können durch den einmaligen Aufruf der Funktion Wx_WrkBtnDefault alle Standard-Buttons eingebunden werden.

Prototype

***************************************************************************
P* Procedure name: Wx_WrkBtnDefault
P* Purpose: Define Button Default
P* Returns:
P* Parameters: ParOptions => Options
P* Parameters: ParTblOptions => Options
P* Parameters: ParMnuObj => Menu Object
P* Parameters: ParMnuId => Menu Id
***************************************************************************
D Wx_WrkBtnDefault...
D PR 3U 0 OpDesc
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParTblOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParMnuObj Like(FldRef.MnuObj) Const
D Options(*NoPass)
D ParMnuId Like(FldRef.MnuObj) Const
D Options(*NoPass)
Source Code 6759: Prototype - Funktion Wx_WrkBtnDefault() – Alle Standard-Buttons einbinden

Parameter

Rückgabe-Wert - Nr. der Worktables (--> aktuell immer 1)

Kann von RPGWX-Programmen ignoriert werden

ParOptions - Optionen (siehe Aufbereitungsoptionen für Buttons)

Optionaler Parameter

Sofern Optionen angegeben werden, werden die Optionen für alle Standard-Buttons übernommen.

Beispiele für den Aufruf

Wx_WrkBtnDefault();

Wx_WrkBtnDefault(line);

Wx_WrkBtn() Button definieren

Über die Funktion Wx_WrkBtn() können Buttons definiert werden, durch die Folge-Programme aktiviert werden können.

Die Aktion, die bei einem Klick auf diesen Button ausgeführt wird, wird durch den ersten Parameter (action/program) bestimmt. Dies kann sein:

  • der Aufruf der Standard-Funktion zum Hinzufügen eines Satzes (*ADD)
  • das Unterdrücken aller Buttons (*NONE)
  • das Setzen aller Standard-Buttons (*DFT)
  • der Aufruf eines bestimmten Programmes
    • wenn der Parameter den Namen eines existierenden Programmes enthält, dann wird beim Klick dieses Programm gerufen
  • der Aufruf des Standard-Verarbeitungsprogrammes (hinterlegt in der Prozedur Wx_OpnHTMLWrk() ) - mit dem Parameter-Inhalt als "Modus"
    • wenn der Parameter keinen der oben genannten Einträge hat und kein Programm mit diesem Namen existiert, dann wird das Standard-Verarbeitungsprogramm gerufen und der Inhalt des Parameters als "Modus" übergeben
    • das Standard-Verarbeitungsprogramm kann den Modus mit der Funktion Wx_isMode() abfragen

Bei individuellen Buttons muss ein Beschriftungs-Text (wahlweise auch als Message-Id) angegeben werden.

Die Funktion Wx_WrkBtn() muss für jeden (individuellen) Button aufgerufen werden.

Die Buttons werden in der gleichen Reihenfolge angeordnet, in der die Buttons definiert wurden (durch Aufruf der Funktion Wx_WrkBtn()) definiert wurden.

Der "Erstellen"-Button wird automatisch erstellt

  • Wird die Funktion Wx_WrkBtn() nicht aufgerufen wird automatisch der Button Erfassen für das Hinzufügen von neuen Datensätzen generiert.
  • Soll dieser Button nicht generiert werden, muss die Funktion Wx_WrkBtn() mit dem Sonderwert *NONE im ersten Parameter aufgerufen werden.


Wx_WrkBtn() - Prototype
***************************************************************************
P* Procedure name: Wx_WrkBtn
P* Purpose: Define Fields used for Work Table
P* Returns:
P* Parameters: ParButton => Button --> Several Default *ITEMs
P* (such as *ADD
P* Default Options: *ADD
P* *DFT/*DEFAULT --> all previously listed
P* Parameters: ParMsg => Message-Id or Item Text
P* Parameters: ParOptions => Options
P* Parameters: ParTblOptions => Options
P* Parameters: ParMnuObj => Menu Object
P* Parameters: ParMnuId => Menu Id
***************************************************************************
D Wx_WrkBtn...
D PR 3U 0 OpDesc
D ParButton Like(FldRef.MnuItm) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParTblOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParMnuObj Like(FldRef.MnuObj) Const
D Options(*NoPass)
D ParMnuId Like(FldRef.MnuObj) Const
D Options(*NoPass)

Syntax

Wx_WrkBtn(<action/program> : <description>: <options>);

Parameter

Rückgabe-Wert - Nr. der Worktables (--> aktuell immer 1)

Kann von RPGWX-Programmen ignoriert werden

action/action - Auszuführende Standard-Aktion oder zu rufendes Programm

Hier kann entweder eine Standard-Aktion angegeben werden oder ein Name.

Gültige Werte:

  • *ADD - Button Erfassen/Hinzufügen
  • *DEFAULT/*DFT - Alle Standard-Buttons
  • *NONE - Kein Standard-Button einbinden
  • <programm_name> - sofern es sich zur Laufzeit um ein Programm in der Bibliotheksliste handelt, wird dieses Programm aufgerufen
  • <eindeutige_kennung> - sofern zur Laufzeit kein Programm mit der eindeutigen Kennung vorhanden ist, wird das Programm das in Prozedur Wx_OpnHTMLWrk() vorgegeben wurde aufgerufen.
    Die eindeutige Kennung kann in dem aufgerufenen Programm über Funktion Wx_isMode geprüft werden.

<description> - Text für Button

Optionaler Parameter -  nur erforderlich bei individuellen Buttons

Wahlweise kann ein Text oder eine Message-Id (aus der der Anwendung zugeordneten Message-File) angegeben werden
.

<options> -  Aufbereitungsoptionen (siehe Aufbereitungsoptionen für Buttons in Worktables )

Optionaler Parameter

Beispiel für den Aufruf

Wx_WrkBtn('SELFIL' : 'WEB0058': 'Window');
Wx_WrkBtn('ACTALL' : 'WEB0087': 'Window');
Wx_WrkBtn('ENDALL' : 'Trigger beenden': 'Window');
Wx_WrkBtn('DtaQ'
: 'WEB0059': 'Window');
WX_WrkBtn('DeregFil': 'WEB0060': 'Window');


Dieses Beispiel definiert die Buttons in dem folgenden Screenshot.

Wx_WrkBtnReseq- Resequenzierung

Die Reihenfolge der Datensätze innerhalb von List-Anzeigen kann mittels Drag und Drop geändert werden.
Voraussetzung ist, dass ein Resequenzierungs-Button mit Hilfe der Funktion Wx_WrkBtnReseq() definiert wurde.

Prototype

***************************************************************************
P* Procedure name: Wx_WrkBtnReseq
P* Purpose: Define Button for Resequencing
P* Returns:
P* Parameters: ParOptions => Options
P* Parameters: ParMsg => Message Text or Message Id
P* Parameters: ParTblOptions => Options
P* Parameters: ParMnuObj => Menu Object
P* Parameters: ParMnuId => Menu Id
***************************************************************************
D Wx_WrkBtnReseq...
D PR 3U 0 OpDesc
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
D ParMsg Like(FldRef.MsgText) Const
D Options(*NoPass: *Trim)
D ParTblOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParMnuObj Like(FldRef.MnuObj) Const
D Options(*NoPass)
D ParMnuId Like(FldRef.MnuObj) Const
D Options(*NoPass)
Source Code 7163: Prototype - Prozedur Wx_WrkBtnReseq() - Definieren Button für Resequenzierung

Parameter

Rückgabe-Wert - Nr. der Worktables (--> aktuell immer 1)

Kann von RPGWX-Programmen ignoriert werden

ParOptions - Optionen (siehe Aufbereitungsoptionen für Buttons)

Optionaler Parameter

ParMsgButton - Text oder Message-Id für vom Default abweichenden Button-Text

Optionaler Parameter

ParMsg - Message-Id oder Text für vom Default abweichenden Button-Text

Optionaler Parameter

Wahlweise kann ein Text oder eine Message-Id (aus der der Anwendung zugeordneten Message-File) angegeben werden

Beispiel für den Aufruf

Wx_WrkBtnReseq();

Wx_WrkBtnReseq('confirm(Wollen Sie die Änderungen wirklich speichern) ');

Wx_WrkBtnReseq('': 'BTN4111');

Wx_WrkBtnEdtList – Editierbare Worktables

Die Funktion Wx_WrkBtnEdtList fügt der Ausgabe einen Button zu. Mit Klick auf diesen können einzelne Spalten der Tabelle editierbar gemacht werden.

Im weiteren Verlauf des Programms kann mit der Funktion Wx_isModeEdtList() geprüft werden, ob Eingaben vorliegen und diese dann verarbeitet werden.

Weitere Funktionen, die für editierbare Worktables benötigt werden:

Auf der Seite RPGWX-Prozeduren im Überblick - Editierbare Worktables wird diese Programmierung genauer erläutert.


Wx_WrkBtnEdtList - Prototyp
**************************************************************************
P* Procedure name: Wx_WrkBtnEdtList
P* Purpose: Define Button for Editable Lists
P* Returns:
P* Parameters: ParOptions => Options
P* Parameters: ParMsg => Message Text or Message Id
P* Parameters: ParTblOptions => Options
P* Parameters: ParMnuObj => Menu Object
P* Parameters: ParMnuId => Menu Id
***************************************************************************
D Wx_WrkBtnEdtList...
D PR 3U 0 OpDesc
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
D ParMsg Like(FldRef.MsgText) Const
D Options(*NoPass: *Trim)
D ParTblOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParMnuObj Like(FldRef.MnuObj) Const
D Options(*NoPass)
D ParMnuId Like(FldRef.MnuObj) Const
D Options(*NoPass)

Parameter

Options - Aufbereitungsoption für den Button

Optionaler Parameter

Siehe: Aufbereitungsoptionen für Buttons

Text - Message-Id oder Text für vom Default abweichenden Button-Text

Optionaler Parameter

Wahlweise kann ein Text oder eine Message-Id (aus der der Anwendung zugeordneten Message-File) angegeben werden

Beispiele für den Aufruf

Wx_WrkBtnEdtList();

Wx_WrkBtnEdtList('confirm(Wollen Sie die Änderungen wirklich speichern) ');

Wx_WrkBtnEdtList('': 'BTN2222');

Siehe auch: RPGWX-Prozeduren im Überblick - Editierbare Work-Table wird

Wx_WrkBtnExcel - Ausgabe in eine CSV-Datei

Ausgabe der Tabelle in eine Datei im IFS der IBM i.

Wx_WrkBtnExcel() - Prototype
//*********************************************************************************************
//  Procedure name: Wx_WrkBtnExcel
//  Purpose:        Define Button Excel - for saving the work table as Excel
//  Returns:
//  Parameters:     ParOptions     => Options
//  Parameters:     ParMsg         => Message Id or Text
//  Parameters:     ParTblOptions  => Options
//  Parameters:     ParMnuObj      => Menue Object
//  Parameters:     ParMnuId       => Menue Id
//--------------------------------------------------------------------------------------------
//  12.08.2014 - BHA - Parameter Message Text or Id added
//*********************************************************************************************
     D Wx_WrkBtnExcel...
     D                 PR             3U 0                       OpDesc         LocHandle
     D  ParOptions                         Like(FldRefCGI.Options)  Const       Options
     D                                     Options(*NoPass)
     D  PInMsg                             Like(Fldref.MsgText)     Const       Message Id or Text
     D                                     Options(*NoPass: *Trim)
     D  ParTblOptions                      Like(FldRefCGI.Options)  Const       Table Options
     D                                     Options(*NoPass)
     D  ParMnuObj                          Like(FldRef.MnuObj)      Const       Menue Object
     D                                     Options(*NoPass)
     D  ParMnuId                           Like(FldRef.MnuObj)      Const       Menue Id
     D                                     Options(*NoPass)    

Syntax

Wx_WrkBtnExcel([options] : [msg] : [table-options]: [menu-object] : [menu-id]);

Parameter

Options - Aufbereitungsoptionen

optional

Vergl. Aufbereitungsoptionen für Buttons

Msg - Message-Id oder Text für vom Default abweichenden Button-Text

optional

Wahlweise kann ein Text oder eine Message-Id (aus der der Anwendung zugeordneten Message-File) angegeben werden

Table-Options - ??

Menu-Object -  ??

Menu-ID - ??

Beispiel für den Aufruf

Wx_WrkBtnExcel();

Wx_WrkBtnExcel('confirm(MSG4711) ');

Wx_WrkBtnEdtList('': 'BTN3333');

Erstellen der Work Tables

Work Tables sind List-Anzeigen, die auf einem SQL-Select-Statement beruhen.

Das SQL-Statement wird per Default automatisch - basierend auf den definierten Dateien/Tabellen/Views (Prozedur-Aufrufe Wx_GenFlt(), Wx_FltFile(), Wx_FltFileFld(), Wx_WrkFile()) und Felder/Spalten (Prozedur-Aufrufe Wx_WrkKey(), Wx_WrkFld()) - generiert. Es ist jedoch auch möglich das SQL-Select-Statement direkt vorzugeben (Prozedur-Aufruf Wx_WrkSQLMan()).

Zu dem SQL-Statement (unabhängig davon ob automatisch generiert oder direkt vorgegeben) können zusätzliche Where-Bedingungen (Prozedur-Aufruf Wx_WrkWhere()) hinzugefügt werden.

Ebenso ist es möglich eine Default-Sortierung (Prozedur-Aufruf Wx_DftOrder()) vorzugeben.

Zusätzlich zu der List-Anzeige ist es möglich Kontext-Menüs (Prozedur-Aufruf Wx_CtxMnuItm) und Buttons (Prozedur-Aufruf Wx_WrkBtn) zum Aufruf von Folge-Programmen festzulegen

Wx_WrkFile() – Datei für Work Table definieren

Sofern in dem List-Programm keine Filter-Felder benötigt werden, müssen die verwendeten Dateien/Tabellen/Views über die Funktion Wx_WrkFile() definiert werden.

Sofern die Dateien/Tabellen/Views bereits für die Filter-Felder definiert wurden, ist eine neuerliche Definition der Tabellen nicht mehr erforderlich.

Über die Funktion Wx_WrkFile können bis zu 10 Dateien/Tabellen/Views definiert werden. Da diese Dateien/Tabellen/Views 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.

Error rendering macro 'code': Invalid value specified for parameter 'firstline'
**************************************************************************
P* Procedure name: Wx_WrkFile
P* Purpose: Define Files used for Work Tables
P* --> Up to 10 Files can be specified
P* --> If more than 1 File is specified: Join Conditions ar
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_WrkFile...
D 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 – Analog zu Prozedur Wx_FltFile() – Datei für Filter definieren

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.

Beispiele für den Aufruf

Wx_WrkFile('AuftrKopfX');

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

Wx_WrkFile('DWEMLADR': 'KXKOEMV05': 'Join KXKOEMV05 on EMEMAIL = EASEML'
        : 
'KXMAILV02': ' Left Outer Join KXMAILV02 on EAMID = ESEAMID and EATYP = ESRCVTYP': 'WITITV01'
        :
' Left outer Join WITITV01 on KGMAND = VLMAND and KGTINR = VLTINR');

Definition von Schlüsseln

Es werden 2 Möglichkeiten zur Definition von Schlüssel-Begriffen, die an das Folge-Programm übergeben werden vorgesehen.

  • Relative Satz-Nr.: Sofern der Zugriff über die relative Satz-Nr. erfolgt, wird der eindeutige Schlüssel über die Funktion Wx_WrkKeyRRN definiert.
  • Schlüssel-Felder/Spalten: Bei Zugriff über Schlüssel-Felder, werden diese über die Funktion Wx_WrkKeyFld() definiert.

Die Schlüssel innerhalb der Work-File vor allen anderen Spalten definiert werden, d.h. unmittelbar nach der Definition der Dateien/Tabellen/Views bzw. dem Öffnen der Work-Table
Anmerkung:Die Funktion Wx_WrkKeyRRN darf pro Worktable nur ein einziges Mal aufgerufen werden.
Es kann pro Worktable entweder nur eine relative Satz-Nr. oder ein oder mehrere Schlüssel-Felder angegeben werden.

Wx_WrkKeyRRN() – Schüssel = Relative Satz-Nr.

Über die Funktion Wx_WrkKeyRRN() wird der eindeutige Schlüssel für den Zugriff in dem Folge-Programm als relative Satz-Nr. der Datei definiert und ermittelt.
Über diese Funktion wird der eindeutige Schlüssel, der zum Zugriff auf den Datensatz in der Detail-Anzeige/Change Table erforderlich hinterlegt.
Die Prozedur Wx_WrkRRN() darf nur einmalig pro Work Table aufgerufen werden.
Anmerkung:Schlüssel müssen innerhalb der Work Table vor allen anderen Spalten definiert werden.

Prototype

********************************************************************************* P* Procedure name: Wx_WrkKeyRRN
P* Purpose: Save Key Information for Work Files - Key is relative record no
P* for table/file
P* Returns:
P* Parameters: ParKey => Table
P* Parameters: ParOptions => Options (Optional)
**********************************************************************************
D Wx_WrkKeyRRN...
D PR OpDesc
D ParKey Like(FldRef.NamesQL) Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
Source Code 7769: Prototype - Prozedur Wx_WrkKeyRRN() - Definieren relative Satz-Nr. als Schlüssel

Parameter

  • ParKeyDatei/Tabelle für Zugriff über relative Satz-Nr.

Wahlweise kann der kurze System-Name oder der lange SQL-Name für die Datei/Tabelle/View angegeben werden.

  • ParOptionOptionen

Optionaler Parameter
z.Z. sind noch keine Schlüssel-Worte festgelegt.

Beispiel für den Aufruf

Wx_WrkFile('AuftrKopfX');

Wx_WrkKeyRRN('AuftrKopfX');

Wx_WrkKeyFld() – Definieren Schlüssel-Felder

Über die Funktion Wx_WrkKeyFld() können Schlüssel-Felder für den eindeutigen Zugriff im nächsten Programm definiert werden.
Über die Funktion können gleichzeitig bis zu 10 Schlüssel-Felder definiert werden.
Wird die Funktion mehrfach aufgerufen, so werden die Schlüssel-Felder am Ende der bereits definierten Schlüssel-Felder hinzugefügt.
Insgesamt können bis zu 100 Schlüssel-Felder definiert werden. Die Schlüssel-Felder müssen alle in der gleichen Datei/Tabelle/View definiert sein.
Anmerkung:Schlüssel müssen innerhalb der Work Table vor allen anderen Spalten definiert werden.

Prototype

*******************************************************************************
P* Procedure name: Wx_WrkKeyFld
P* Purpose: Save Key Information for Work Files - Key is a compound key
P* consisting of 1 to 10 key fields
P* Key fields must be located within the same table/file
P* Returns:
P* Parameters: ParKey01 => Name Key field 01
P* Parameters: ParOptions => Options (Optional)
P* Parameters: ParKey02 => Name Key field 02 (Optional)
P* Parameters: ParKey03 => Name Key field 03 (Optional)
P* Parameters: ParKey04 => Name Key field 04 (Optional)
P* Parameters: ParKey05 => Name Key field 05 (Optional)
P* Parameters: ParKey06 => Name Key field 06 (Optional)
P* Parameters: ParKey07 => Name Key field 07 (Optional)
P* Parameters: ParKey08 => Name Key field 08 (Optional)
P* Parameters: ParKey09 => Name Key field 09 (Optional)
P* Parameters: ParKey10 => Name Key field 10 (Optional)
********************************************************************************
D Wx_WrkKeyFld...
D PR OpDesc
D ParKey01 Like(FldRef.NamesQL) Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParKey02 Like(FldRef.NamesQL) Const
D Options(*NoPass)
D ParKey03 Like(FldRef.NamesQL) Const
D Options(*NoPass)
D ParKey04 Like(FldRef.NamesQL) Const
D Options(*NoPass)
D ParKey05 Like(FldRef.NamesQL) Const
D Options(*NoPass)
D ParKey06 Like(FldRef.NamesQL) Const
D Options(*NoPass)
D ParKey07 Like(FldRef.NamesQL) Const
D Options(*NoPass)
D ParKey08 Like(FldRef.NamesQL) Const
D Options(*NoPass)
D ParKey09 Like(FldRef.NamesQL) Const
D Options(*NoPass)
D ParKey10 Like(FldRef.NamesQL) Const
D Options(*NoPass)
Source Code 7971: Prototype - Prozedur Wx_WrkKeyFld() - Definieren Schlüssel-Felder

Parameter

  • ParKey01 Name des ersten Schlüssel-Feldes

Wahlweise kann der kurze System-Name oder der lange SQL-Name für die Spalte angegeben werden.

  • ParOptionOptionen

Optionaler Parameter
z.Z. sind noch keine Schlüssel-Worte festgelegt.

  • ParKey02 – ParKey02: Weitere Schlüssel-Felder

Wahlweise kann der kurze System-Name oder der lange SQL-Name für die Spalten angegeben werden.

Beispiel für den Aufruf

Wx_WrkKeyFld('FLDName1');
Wx_WrkKeyFld('FLDName2': '');
Wx_WrkKeyFld('FLDName3': '': 'FldName4':
'FLDName5': 'FldName6');
Source Code 8072: Aufruf Prozedur Wx_WrkKeyFld() – Definieren Schlüssel-Felder

Ausgabe der Spalten

Wx_WrkFld() Feld/Spalte definieren

Alle Spalten, mit Ausnahme der ersten Spalte, d.h. der Spalte mit dem eindeutigen Schlüssel (oder der relativen Satz-Nr.) müssen über diese Prozedur definiert werden.
Die Definition ist auch dann erforderlich, wenn das SQL-Statement direkt vorgegeben wurde.

Prototype

***********************************************************************
P* Procedure name: Wx_WrkFld
P* Purpose: Define Fields used for Work Table
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParOptions => Options
***********************************************************************
D Wx_WrkFld...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
Source Code 8173: Prototype – Prozedur Wx_WrkFld() – Definieren Spalten in Work Table

Parameter

  • ParFieldFeld/Spalten-Name

Das Feld/Spalte muss in einer zuvor definierten Datei/Tabelle/View vorhanden sein.
Es kann wahlweise der kurze System- oder der lange SQL-Name angegeben werden.
Der Feldname kann in jeder beliebigen Groß/Klein-Schreibweise angegeben werden.

  • ParMsgSpalten-Überschrift

Die Spalten-Überschrift kann wahlweise als Text oder als Message-Id (für Mehrsprachigkeit) angegeben werden.
Wird eine Message-Id übergeben so muss diese in der für die Anwendung definierten Message-File vorhanden sein.

coloptions - Aufbereitungsoptionen

optional

Aufbereitungsoptionen gemäß Aufbereitungsoptionen für Spalten

Beispiele für den Aufruf

Wx_WrkKey('ADRESSEX': *On);
Wx_WrkFld('KundeNr': 'FLD0001');
Wx_WrkFld('Name1F': 'FLD0002');
Wx_WrkFld('Name2F': 'Telefon');
Wx_WrkFld('Strasse': 'FLD0003');
Wx_WrkFld('Land': 'Land': ' center CTL(Country)');
Source Code 8274: Aufruf Prozedur Wx_WrkFld - Definieren Spalte in Work Table
Das Ergebnis dieser Spalten-Definition über Prozedur Wx_WrkFld() wird im folgenden Screenshot gezeigt

Abbildung 20: Worktable - Spalten-Definition - Ergebnis aus Source Code 40
Anmerkung:Die Aufbereitung in Spalte Telefon wird nicht über ein Schlüssel-Wort in der Option gesteuert, sondern wird automatisch durch das zugrundeliegende Framework gesteuert.

Aufbereitungsoptionen für Spalten

Für eine Spalte können mehrere unterschiedliche Aufbereitungs-Optionen angegeben werden. Die einzelnen Optionen werden durch Blanks getrennt in dem Parameter Option als Text übergeben.

Die Schlüsselworte können in jeder beliebigen Form der Groß/Kleinschreibung angegeben werden.

Die verfügbaren Aufbereitungsoptionen für Spalten und ihre Handhabung werden hier beschrieben: Seite Aufbereitungsoptionen in RPGWX-Prozeduren - Abschnitt "Aufbereitungsoptionen für Spalten".

Auszugebende Sätze filtern und sortieren

Wx_WrkWhere() Where-Bedingungen

Allen SQL-Abfragen, die automatisch, basierend auf den vorgegebenen Dateien/Tabellen/Views generiert werden, können WHERE-Bedingungen, die die Anzahl der auszugebenden Datensätze/Zeilen reduzieren, hinzugefügt werden.

Die Syntax der hinzuzufügenden WHERE-Bedingungen muss der gültigen SQL-Syntax entsprechen und kann alles beinhalten, was in SQL Where-Bedingungen zulässig ist, z.B. logische Operatoren, Klammern, Prädikate, skalare Funktionen.

Die Felder/Spalten, die in den WHERE-Bedingungen angegeben werden, müssen in den vordefinierten Dateien/Tabellen/Views vorhanden sein. Die Felder/Spalten müssen jedoch nicht zwingend als Spalten für die Worktables definiert werden.

Der Aufruf von Wx_WrkWhere muss nach allen Wx_WrkFld und vor dem Wx_WrtWrkTbl ausgeführt werden.

Innerhalb des gleichen Work-Programms kann die Prozedur Wx_WrkWhere mehrfach, mit unterschiedlichen Bedingungen angegeben werden. Die Where-Bedingungen werden von RPGWX zu einer einzigen WHERE-Bedingung zusammengefasst. Der Programmierer muss jedoch dafür sorgen, die Where-Bedingungen korrekt verknüpft werden können, z.B. die folgenden WHERE-Bedingungen müssen mit einem logischen Operator (AND oder OR) beginnen.

Prototype

**************************************************************************
P* Procedure name: Wx_WrkWhere
P* Purpose: Define Where clause for Work Tables
P* Returns:
P* Parameters: ParString => Where Condition for the SQL Statement
**************************************************************************
D Wx_WrkWhere...
D PR OpDesc
D ParString Like(FldRefLA.VarLen) Const

Source Code 8375 : Prototype - Prozedur - Wx_WrkWhere - Where-Bedingungen hinzufügen

Parameter

  • ParWhereKomplett aufbereitete Where-Bedingung in SQL Syntax

Beispiele für den Aufruf

Wx_WrkWhere(' LiefMge < BestMge +
          and LiefTerm <= Current_Date – 3 Days');

Wx_WrkWhere('and AuftrArt = ''EX'');

Source Code 8476: Aufruf Prozedur Wx_WrkWhere - Where-Bedingungen hinzufügen

Wx_WrkDftOrder() Default-Sortierung (Order By)

Sofern eine bestimmte Anfangssortierung der Daten erforderlich ist, kann diese mit Hilfe der Prozedur Wx_DftOrder() vorgegeben werden.
Über die Funktion Wx_DftOrder() können bis zu 10 Sortier-Spalten/Felder nach denen in auf- oder absteigender Reihenfolge sortiert werden soll, vorgegeben werden.
Die Sortierreihenfolge, sofern erwünscht kann im Parameter-Feld durch ein Blank von dem Spalten/Feld-Namen getrennt angegeben werden. Sofern keine Sortierreihenfolge angegeben wird, wird aufsteigend sortiert. Die Sortierreihenfolge kann entweder als ASC (aufsteigend) oder DESC (absteigend) angegeben werden. Sortier-Spalten/Felder können in jeder beliebigen Kombination aus Groß- und Kleinschreibung angegeben werden.
Die Funktion Wx_DftOrder() kann pro Work Table nur einmalig angegeben werden.

Prototype

*************************************************************************
P* Procedure name: Wx_WrkDftOrder
P* Purpose: Save Order By clause for Work Files
P* Returns:
P* Parameters: ParCol01 => Field/Column to Sort
P* Parameters: --> Desc or Asc can be added to the Column Name
P* Parameters: separated by a Blank
P* Parameters: ParCol02 => Field/Column to Sort (Optional)
P* Parameters: ParCol03 => Field/Column to Sort (Optional)
P* Parameters: ParCol04 => Field/Column to Sort (Optional)
P* Parameters: ParCol05 => Field/Column to Sort (Optional)
P* Parameters: ParCol06 => Field/Column to Sort (Optional)
P* Parameters: ParCol07 => Field/Column to Sort (Optional)
P* Parameters: ParCol08 => Field/Column to Sort (Optional)
P* Parameters: ParCol09 => Field/Column to Sort (Optional)
P* Parameters: ParCol10 => Field/Column to Sort (Optional)
*************************************************************************
D Wx_WrkDftOrder...
D PR OpDesc
D ParCol01 Like(FldRef.NameSQL) Const
D ParCol02 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParCol03 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParCol04 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParCol05 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParCol06 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParCol07 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParCol08 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParCol09 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParCol10 Like(FldRef.NameSQL) Const
D Options(*NoPass)
Source Code 8577: Prototype - Procedure - Wx_WrkDftOrder - Default Sortierung

Parameter

  • ParCol1Sortier-Spalte/Feld

Durch die zusätzliche Angabe von ASC oder DESC kann festgelegt werden, ob die Sortierung auf- oder absteigend erfolgen soll.

  • ParCol2 – ParCol10Sortier-Spalte/Feld

Optionale Parameter
Sortierreihenfolge kann analog ParCol1 angegeben werden.

Beispiel für den Aufruf

Wx_WrkDftOrder('Land': 'PLZ': 'KundeNr');
Wx_WrkDftOrder('KundeNr ASC', 'Umsatz Desc');

Source Code 8678: Aufruf Prozedur Wx_WrkDftOrder - Default Sortierung

Manuelle SQL-Abfragen

Per Default wird das SQL-Statement, auf dem die List-Anzeige basiert aus den über RPGWX-Funktionen definierten Tabellen, deren Verknüpfung, den definierten Filter-Felder und Spalten der List-Anzeige automatisch generiert.

Alternativ ist es auch möglich das SQL-Statement über die Funktion Wx_WrkSQLMan vorzugeben.Die einzige Bedingung, die dabei berücksichtigt werden muss, ist, dass die erste Spalte eindeutige Werte liefern muss. Diese Spalte wird in der Lists-Anzeige nicht angezeigt, bei Auswahl des Datensatzes, wird jedoch der Feld-Inhalt der ersten Spalte ermittelt und kann in einem Folge-Programm als eindeutiger Schlüssel-Wert verwendet werden.

Sofern nur die Prozedur Wx_WrkSQLMan() mit dem SQL-Statement für die List-Anzeige aufzubereitenden SQL-Statement aufgerufen wird, kann bereits eine Liste erzeugt werden. Alle Spalten, die in dem angegebenen SQL-Statement hinterlegt sind, werden angezeigt, numerische Spalten-Werte werden rechtsbündig ausgerichtet. Echte Datums-/Zeit-Werte werden entsprechend aufbereitet. Weitere Aufbereitungen oder Informationen können jedoch nicht automatisch generiert werden.

Sofern für die List-Anzeige Überschriften oder andere Aufbereitungsoptionen hinterlegt werden sollen, müssen zusätzliche RPGWX-Funktionen aufgerufen werden. Gleiches gilt für Filter-Felder, die zusätzlich zu der List-Anzeige generiert werden sollen.

Für die Definition der Spalten und Filter-Felder können die gleichen Prozeduren, wie für die automatisch generierten SQL-Statements verwendet werden. Der Nachteil bei Verwendung dieser Funktionsen ist, dass alle im SQL-Statement verwendeten Tabellen über eine der Prozeduren Wx_HdrFile, Wx_FltFile oder Wx_WrkFile angebeben werden muss. Ebenso müssen alle Join-Anweisungen, die im manuellen SQL-Statement definiert wurden ebenfalls in diesen Funktionen angegeben werden.

Mit der letzten Erweiterung können die Spalten über die Funktion WX_WrkFld() definiert werden, ohne dass zusätzlich die verwendeten Tabellen erneut angegeben werden müssen.

Sofern zusätzlich Filter-Felder definiert werden sollen, kann dies ebenfalls über die Funktionen WX_GenFlt() (=Generischer Filer) oder Wx_FltFld() (=Sonstige Filterfelder) definiert werden. Die Tabelle, in denen sich die Filter-Felder befinden, sowie die Verknüpfung der Tabellen muss jedoch über Wx_HdrFile() oder Wx_FltFile() definiert werden.

Filter-Felder können jedoch auch ohne Angabe der Tabelle direkt definiert werden. Hierfür werden abhängig vom Datentyp des Filter-Feldes unterschiedliche Prozefuren zur Verfügung gestellt.

  • Wx_GenFltMan()Manuelle Definition des generischen Filters
  • Wx_ManFltFld()Manuelle Definition eines Filter-Feldes für vorgegebene SQL-Statements in jedem beliebigen Datetypen
  • Wx_ManFltFldCharManuelle Definition eines alphanumerischen Filter-Feldes mit fixer Länge für ein vorgegebenes SQL-Statement
  • Wx_ManFltFldVarCharManuelle Definition eines alphanumerischen Filter-Feldes mit variabler Länge für ein vorgegebenes SQL-Statement
  • Wx_ManFltFldUC2Manuelle Definition eines Unicode (Dobule-Byte) Filter-Feldes mit fixer Länge für ein vorgegebenes SQL-Statement
  • Wx_ManFltFldVarUC2 Manuelle Definition eines Unicode (Dobule-Byte) Filter-Feldes mit variablesr Länge für ein vorgegebenes SQL-Statement
  • Wx_ManFltFldPackManuelle Definition eines gepackt numerischen Filter-Feldes mit festgelegter Anzahl an Dezimal-Positionen für ein vorgegebenes SQL-Statement
  • Wx_ManFltFldZone Manuelle Definition eines gezont numerischen Filter-Feldes mit festgelegter Anzahl an Dezimal-Positionen für ein vorgegebenes SQL-Statement
  • Wx_ManFltFldIntManuelle Definition eines ganzzahligen numerischen Filter-Feldes für ein vorgegebenes SQL-Statement
  • Wx_ManFltFldFloatManuelle Definition eines Fließkomma-Filter-Feldes für ein vorgegebenes SQL-Statement
  • Wx_ManFltFldDateManuelle Definition eines Datum-Filter-Feldes für ein vorgegebenes SQL-Statemement
  • Wx_ManFltFldTimeManuelle Definition eines Zeit-Filter-Feldes für ein vorgegebenens SQL-Statement
  • Wx_ManFltFldTimestampManuelle Definition eines Zeitmarken-Filter-Feldes für ein vorgegebenes SQL-Statement.
  • Wx_ManFltFieldRefManuelle Definition eines Filter-Feldes mit dem gleichen Datentyp und der gleichen Länge wie das angegebene Referenz-Feld.

Basierend auf den manuell definierten Filter-Feldern werden zu dem vorgegebenen SQL-Statement weitere WHERE-Bedinungen hinzugefügt. Aus diesem Grund ist es erforderlich, dass die in der Definition angegebenen Namen der Filter-Felder mit den Spalten-Definitionen in dem manuell vorgegebenen SQL-Statement übereinstimmen.

Wx_WrkSQLMan() SQL Select-Statement

Per Default wird das SQL-Select-Statement für die List-Ausgabe basierend auf den definierten Dateien/Tabellen/Views, den definierten Filter-Feldern und den für die List-Anzeige vorgegebenen Spalten dynamisch aufbereitet.

Es ist jedoch auch möglich das SQL-Select-Statement direkt durch Aufruf der Prozedur Wx_WrkSQLMan() im Programm vorzugeben. Wurde diese Prozedur aufgerufen, wird das vorgegebene Select-Statement verwendet, d.h. es erfolgt keine Aufbereitung basierend auf den definierten Dateien/Tabellen/Views.

Das SQL-Select-Statement kann alles beinhalten, was in einem SELECT-Statement zulässig ist, inklusive Group-By und Having-Anweisungen, Full-Selects (Union, Except, Intersect), verschachtelten Sub-Selects, Common-Table-Expressions (CTE), User Defined Functions (UDF) und User Defined Table-Functions (UDTF).


Auch wenn das SQL-Select-Statement über Prozedur Wx_WrkSQLMan() vorgegeben wird, müssen die verwendeten Dateien/Tabellen/Views definiert werden, d.h. es muss eine der folgenden Prozeduren Wx_GenFlt(), Wx_FltFile(), Wx_FltFileFld() oder Wx_WrkFile() aufgerufen werden. Ebenso müssen die auszugebenen Spalten über die Prozeduren Wx_WrkKey() und Wx_WrkFld() definiert werden. Die Definition der Spalten wird benötigt, Überschriften und Aufbereitungsoptionen vorzugeben. Die Definition der Dateien/Tabellen/Views ist erforderlich um die Datentypen für die einzelnen Spalten ermitteln und basierend auf den Datentypen automatisch Aufbereitungsoptionen (z.B. bei Datums-Feldern) hinzuzufügen..

Wird das SQL-Select-Statement direkt vorgegeben, muss darauf geachtet werden, dass die erste Spalte entweder das eindeutige Schlüssel-Feld oder die relative Satz-Nr. aus einer der definierten und verknüpften Dateien/Tabellen/Views enthalten muss. Die folgenden Felder/Spalten müssen in der Reihenfolge den Spalten, die über die Prozedur Wx_WrkFld() definiert wurden entsprechen.
Die Funktion Wx_WrkSQLMan() darf innerhalb einer Work-Table nur einmal aufgerufen werden.

Prototype

**************************************************************************
P* Procedure name: Wx_WrkSQLMan
P* Purpose: Save SQL Command for Work Files
P* Returns:
P* Parameters: ParString => SQL Command
**************************************************************************
D Wx_WrkSQLMan...
D PR OpDesc
D ParString Like(FldRefLA.VarLen) Const
Source Code 8779: Prototype – Wx_WrkSQLMan() – SQL Select-Statement vorgeben

Parameter

  • ParString Vollständiges SQL Select-Statement

Beispiele für den Aufruf

Wx_WrkSQLMan('Select AKID, BestNr, k.KundeNr, KundeName +
From AuftrKopfX k join AdresseX a +
on k.KundeNr = a.KundeNr +
Where LiefTerm = Current_Date');

Wx_WrkSQLMan('Select RRN(a), a.* From AuftrKopfx a');

Source Code 8880: Aufruf Prozedur Wx_WrkSQLMan() - SQL Select-Statement vorgeben


Das folgende Beispiel zeigtdas komplette Programm für eine List-Anzeige, mit vorgegebenem SQL-Statement.

Über die Funktion Wx_GenFltMan() wird ein Generischer Filter über die Spalten KNDNA1, KNDNA2, KNDSTR und KNDORT generiert.

Da keine zusätzlichen RPGWX-Prozeduren zur Spalten-Definition aufgerufen werden, werden die Spalten-Namen als Überschrift ausgegegeben.

Das Programm soll ohne Standardbuttons und Kontext-Menü generiert werden. Aus diesem Grund ist der Aufruf der Funktionen Wx_NoWrkBtn() und Wx_NoCtxMnuItm() erforderlich.

Abbildung 21: Work-Programm mit manuellem SQL-Statement

WX_WrkListColumns() – Spalten Liste

Die Funktion Wx_WrkListColumns() kann in manuellen SQL-Statements eingesetzt werden. Die Funktion bildet einen String bestehend aus allen über Wx_WrkFld() definierten Spalten. Die einzelnen Spalten werden durch Kommata getrennt aufgelistet.

Per Default werden die Spalten innerhalb der Liste mit dem Correlation/Tabellen-Namen qualifiziert ausgegeben. Ausnahme sind manuelle SQL-Statements für die keine Tabelle oder View angegeben wurde.

Sofern die Qualifiziertung mit dem Correlation-Namen nicht erwünscht ist, kann die Qualifizierung durch die Angabe des Parameters ParNoCorr unterbunden werden.

Prototype

//**********************************************************************
// Procedure name: Wx_WrkListColumns
// Purpose: Build Column List for the Select-Statement for WorkTa
// Returns: String
// Parameters: ParNoCorr => Without qualification with correldation
// --> (Default) --> with correlation
//**********************************************************************
DCL-PR Wx_WrkListColumns Like(FldRefLA.VarLen) OpDesc;
ParNoCorr Ind Const Options(*NoPass);
End-PR;
Source Code 8981: Prototyp Funktion Wx_WrkListColumns - Spaltenliste für manuelle SQL-Statements

Parameter

  • ParNoCorrSofern dieser Parameter mit *ON übergeben wurden, werden die Spalten ohne Qualifizierung durch den Correlation-/Tabellen-Namen angegeben.

Beispiel für den Aufruf

Wx_WrkSQLMan('Select AKID, ' + Wx_WrkListColumns() +
' From AuftrKopfX k join AdresseX a +
on k.KundeNr = a.KundeNr +
Where LiefTerm = Current_Date');
Wx_WrkSQLMan('Select RRN(a), ' + Wx_WrkListColumns(*On) +
' From AuftrKopfx a');

Source Code 9082: Aufruf Funktion WX_WrkListColumns – Auflistung der über WX_WrkFld definierten Spalten

Wx_WrkSQLManKey() – Aufbereiteter Schlüssel

Die Funktion Wx_WrkSQLManKey() kann in manuellen SQL-Statements eingesetzt werden. Die Funktion bildet für die Schlüssel-Spalte einen String bestehend aus allen über Wx_WrkKeyRRN() oder Wx_WrkKeyFld definierten Schlüssel-Werten. Bestimmte Sonder-Werte werden maskiert und NULL-Werte konvertiert.

Per Default werden die für die Schlüssel-Spalte angegebenen Spalten qualifiziert ausgegeben. Ausnahme sind manuelle SQL-Statements für die keine Tabelle oder View angegeben wurde.

Sofern die Qualifiziertung mit dem Correlation-Namen nicht erwünscht ist, kann die Qualifizierung durch die Angabe des Parameters ParNoCorr unterbunden werden.

Prototype

//*****************************************************************************
// Procedure name: Wx_WrkSQLManKey
// Purpose: Build Key Column for the Select-Statement for WorkTables
// Returns: String
// Parameters: ParNoCorr => Without qualification with correldation
// --> (Default) --> with correlation
//****************************************************************************
DCL-PR Wx_WrkSQLManKey Like(FldRefLA.VarLen) OpDesc;
ParNoCorr Ind Const Options(*NoPass);
End-PR;

Source Code 9181: Prototyp Funktion Wx_WrkSQLManKey – Aufbereitete Schlüssel-Informationen

Parameter

  • ParNoCorrSofern dieser Parameter mit *ON übergeben wurden, werden die Spalten ohne Qualifizierung durch den Correlation-/Tabellen-Namen angegeben.

Beispiel für den Aufruf

Wx_WrkSQLMan('Select Wx_WrkSQLManKey() + ' , ' +
BestNr, KundeNr, Name, LiefTerm, LiefBed +
' From AuftrKopfX k join AdresseX a +
on k.KundeNr = a.KundeNr +
Where LiefTerm = Current_Date');
Wx_WrkSQLMan('Select Wx_WrkSQLManKey(*On) + ' , ' +
Wx_WrkListColumns(*On) +
' From AuftrKopfx a');

Source Code 9282: Aufruf Funktion WX_WrkListColumns – Auflistung der über WX_WrkFld definierten Spalten

Wx_WrkListKeyAndColumns () – Auflistung von Schlüssel und Spalten

Sofern man in manuellen SQL-Statements sowohl die generieten Schlüssel-Spalten, als auch die Spalten-Liste über alle Spalten, die mit WX_WrkKey definiert wurden, einbinden möchte, kann man die Funktion Wx_WrkListKeyAndColumns() aufrufen. Diese Funktion ihrerseits bildet einen einzigen String aus den Ergebnissen aus der Funktionen Wx_SQLManKey und Wx_WrkListColumns().

Die Funktion Wx_WrkSQLManKey() kann in manuellen SQL-Statements eingesetzt werden, um Schlüssel- und Spalten nicht manuell auflisten zu müssen.

Per Default werden die Spalten qualifiziert ausgegeben. Ausnahme sind manuelle SQL-Statements für die keine Tabelle oder View angegeben wurde.

Sofern die Qualifizierung mit dem Correlation-Namen nicht erwünscht ist, kann die Qualifizierung durch die Angabe des Parameters ParNoCorr unterbunden werden.

Prototype

//*************************************************************************
// Procedure name: Wx_WrkListKeyAndColumns
// Purpose: Build Key Column for the Select-Statement for WorkTables
// Returns: String
// Parameters: ParNoCorr => Without qualification with correldation
// --> (Default) --> with correlation
//*************************************************************************
DCL-PR Wx_WrkListKeyAndColumns Like(FldRefLA.VarLen) OpDesc;
ParNoCorr Ind Const Options(*NoPass);
End-PR;
Source Code 9381: Prototyp Funktion Wx_WrkSQLManKey – Aufbereitete Schlüssel-Informationen

Parameter

  • ParNoCorrSofern dieser Parameter mit *ON übergeben wurden, werden die Spalten ohne Qualifizierung durch den Correlation-/Tabellen-Namen angegeben.

Beispiel für den Aufruf

Wx_WrkSQLMan('Select Wx_WrkListKeyAndColumns() +
' From AuftrKopfX k join AdresseX a +
on k.KundeNr = a.KundeNr +
Where LiefTerm = Current_Date');
Wx_WrkSQLMan('Select Wx_WrkListKeyAndColumns(*On) +
' From AuftrKopfx a');

Source Code 9482: Aufruf Funktion WX_WrkListKeyandColumns – Auflistung der Schlüssel- und definierten Spalten

Wx_GenFltMan() – Generischer Filter

Für die Definition von generischen Filterfeldern für ein vorgegebenes SQL-Statement ist die Angabe einer Referenz-Tabelle/phys.Datei nicht erforderlich.
Die in der Prozedur Wx_GenFltMan() angegebenen Spalten müssen jedoch den in dem vorgegebenen SQL-Statement (in Prozedur WX_WrkSQLMan()) verwendeten Spalten-Namen entsprechen.

Prototype

Wx_GenFltMan - Prototype
***************************************************************************
P* Procedure name: Wx_GenFltMan
P* Purpose: Add generic Filter (For manually defined SQL Statements)
P* --> Up to 10 Fields/Columns within the same File/Table can be
P* Specified/Scanned
P* Returns:
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* Parameters: ParFile => File/Table
***************************************************************************
D Wx_GenFltMan...
D PR OPDesc
D ParField1 Like(FldRef.NameSQL) Const
D Options(*Trim)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*Trim: *NoPass)
D ParField2 Like(FldRef.NameSQL) Const
D Options(*Trim: *NoPass)
D ParField3 Like(FldRef.NameSQL) Const
D Options(*Trim: *NoPass)
D ParField4 Like(FldRef.NameSQL) Const
D Options(*Trim: *NoPass)
D ParField5 Like(FldRef.NameSQL) Const
D Options(*Trim: *NoPass)
D ParField6 Like(FldRef.NameSQL) Const
D Options(*Trim: *NoPass)
D ParField7 Like(FldRef.NameSQL) Const
D Options(*Trim: *NoPass)
D ParField8 Like(FldRef.NameSQL) Const
D Options(*Trim: *NoPass)
D ParField9 Like(FldRef.NameSQL) Const
D Options(*Trim: *NoPass)
D ParField10 Like(FldRef.NameSQL) Const
D Options(*Trim: *NoPass)
D ParFile Like(FldRef.NameSQL) Const
D Options(*Trim: *NoPass)

Source Code 9581: Generischer Filter für manuelle SQL-Statements

Parameter-Felder


  • 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.

Der Spalten-Name muss einer Spalte in dem manuell angegebenen SQL-Statement entsprechen

Für den generischen Filter muss mindestens eine Spalte/Feld angegeben werden.

  • ParOptions Aufbereitungsoptionen

Optionaler Parameter

  • casesensitive Casesensitive Suche

Default Suche ist case insensitive

  • ParField2  Spalte/Feld, die gescannt werden soll

Optionaler Parameter

  • ParField3 bis ParField10  Analog ParField2

Beispiel für den Aufruf

Wx_GenFltMan('NAME1F');
Wx_GenFltMan('KNDNA1': 'casesensitive': 'KNDNA2': 'KNDORT');

Wx_ManFltFld() – Definieren Filter-Feld

Definition von beliebigen Filter-Felder in jedem beliebigen Datentypen für in der Funktion WX_WrkSQLMan() vorgegebene SQL-Statements.

Prototype

Wx_ManFltFld - Prototype
***************************************************************************
P* Procedure name: Wx_ManFltFld
P* Purpose: Define Filter Fields manually
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParDataType => Data Type
P* Parameters: ParLen => Length (Not Size!!!)
P* Parameters: ParDecPos => Decimal Positions
P* Parameters: ParDatFmt => Data Format
P* Parameters: ParCompare => Comparison Operators
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Default Value
*--------------------------------------------------------------------------
D Wx_ManFltFld...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*Trim)
D ParDataType LIke(FldRef.DataType) Const
D Options(*Trim)
D ParLen 10I 0 Options(*NoPass) Const
D ParDecPos 3I 0 Options(*NoPass) Const
D ParDatFmt Like(FldRef.Text10V) Const
D Options(*NoPass: *Trim)
D ParCompare Like(FldRef.Text15V) Const
D Options(*Trim: *NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
D ParValue Like(FldRefCGIUC.DftValue) Const
D Options(*NoPass)

Parameter

  • ParField   Eindeutige Kennung des Filter-Feldes

Die eindeutige Kennung muss dem Namen einer Spalte in dem manuell vorgegebenen SQL-Statement entsprechen.

Basierend auf dieser Kennung werden dem manuellen SQL-Statement WHERE-Bedingungen hinzugefügt.

  • ParMsg   Beschreibung, die links neben dem Filter-Feld angezeigt wird

Die Angabe der Beschreibung kann entweder hardcodiert als Text oder in Form einer Message-Id angegeben werden.

Bei Verwendung einer Message-Id muss die Message-File in der sich die Message-Id befindet der Anwendung zugeweisen sein.

  • ParDataType Datentyp in dem das Arbeitsfeld/Variable definiert wurde

Siehe Gültige Datentypen

  • ParLen   Länge des Filter-Feldes

Optionaler Parameter, muss nur angegeben werden, sofern die Länge nicht allein durch den Datentypen definiert wird.

Ist die Länge erforderlich, muss die Anzahl der Zeichen (nicht Anzahl an Bytes) muss übergeben werden.

- Bei alphanumerischen und Unicode Feldern mit fixer Länge entspricht die Länge der definierten Länge.
Bei alphanumerischen und Unicode Feldern mit variabler Länge entspricht die Länge der maximalen Länge.
Bei gezonten und gepackten numerischen Feldern wird die Anzahl der Ziffern angegeben, d.h. Definition 11P 2 --> 11
Sofern bei Integer- oder Fließkomma-Feldern der SQL-Datentyp übergeben wurde, ist die Längenangabe nicht erforderlich.
Sofern bei Integer-Feldern der RPG Datentyp (I) angegeben wurde, muss die Länge so wie in RPG definiert angegeben werden, d.h. 5I 0→5.
Sofern bei Fließkomma-Feldern der RPG Datentyp (F) verwendet wurde, muss die Länge so wie in RPG definiert angegeben werden, d.h. 8F --> 8.

Für Datums-, Zeit- und Zeitmarken-Felder ist keine Längenangabe erforderlich.

  • ParDecPos   Dezimal-Positionen

Optionaler Parameter, nur für gepackte und gezonte numerische Arbeitsfelder/Variablen erforderlich.

  • ParDatFmt   Datums- und Zeit-Formate

Optionaler Parameter, nur für Datums- und Zeit-Arbeitsfelder/Variablen erforderlich.

Die Angabe ist bei Datums- und Zeit-Feldern auch nur dann erforderlich, wenn diese Filter-Felder in RPG nicht im *ISO-Format definiert wurden.

Gültige Werte für die Datums- und Zeit-Formate sind:

- ISO - ISO-Datums- und Zeit-Format

ISO-Datums-Format=JJJJ-MM-TT
ISO-Zeit-Format =
HH.MM.SS

- *EUR - Europäisches Datum =TT.MM.JJJJ
*USAAmerikanisches Datum =MM/TT/JJJJ

Amerikanische Zeit = HH:MMam/PM

*YMD - Jahr/Monat/Tag Format =JJ-MM-TT
*DMY - Tag/Monat/Jahr Format =TT.MM.JJ
- *MDY - Monat/Tag/Jahr Format = MM/TT/JJ
*HMS - Stunde/Minute/Sekunde = HH:MM:SS


  • ParCompare  Vergleichsoperator

Optionaler Parameter – Unterlassungs-Wert ist = (Gleich)

  • ParOptions   Aufbereitungsoptionen

Optionaler Parameter

  • ParValue   Initital-Wert

Optionaler Parameter

Beispiele für den Aufruf

Wx_ManFltFld('Ort': 'MSG7110': 'VarChar': 35: 0: '': 'LIKELEFT');
Wx_ManFltFld('Wert': 'MSG7123': 'Decimal': 11: 2: '': '>=');
Wx_ManFltFld('LiefTerm': 'MSG1112': 'Date');
Wx_ManFltFld('BestDat': 'Bestell-Datum': 'Decimal': 8: 0: '' : '=': 'DateNum');

Wx_ManFltFldChar() - Definieren alphanumerisches Filter-Feld mit fixer Länge

Definition von alphanumerischen Filter-Feldern mit fixer Länge zu über die Prozedur Wx_WrkSQLMan() vorgegebenen SQL-Statements.
Kann als Alternative zu Prozedur Wx_ManFltFld() gesehen werden. Im Gegensatz zu Wx_ManFltFld() ist der Datentyp fix vorgegeben und wird nicht über Parameter übergeben. Ebenso können nur die für alphanumerische Felder mit fixer Länge benötigten Informationen als Parameter übergeben werden.

Prototyp


Wx_ManFltFldChar - Prototype
***************************************************************************
P* Procedure name: Wx_ManFltFldChar
P* Purpose: Define Filter Fields manually - fixed length (single byte)
P* Character Set
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length (Not Size!!!)
P* Parameters: ParCompare => Comparison Operators
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Default Value
***************************************************************************
D Wx_ManFltFldChar...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*Trim)
D ParLen 10I 0 Const
D ParCompare Like(FldRef.Text15V) Const
D Options(*Trim: *NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
D ParValue Like(FldRefCGI.DftValue) Const
D Options(*NoPass)

Parameter

  • ParField   Eindeutige Kennung des Filter-Feldes

Die eindeutige Kennung muss dem Namen einer Spalte in dem manuell vorgegebenen SQL-Statement entsprechen.

Basierend auf dieser Kennung werden dem manuellen SQL-Statement WHERE-Bedingungen hinzugefügt.

  • ParMsg   Beschreibung, die links neben dem Filter-Feld angezeigt wird

Die Angabe der Beschreibung kann entweder hardcodiert als Text oder in Form einer Message-Id angegeben werden.

Bei Verwendung einer Message-Id muss die Message-File in der sich die Message-Id befindet der Anwendung zugeweisen sein.

  • ParLen   Länge des Filter-Feldes (=Anzahl Zeichen)


  • ParCompare   Vergleichsoperator

Optionaler Parameter – Unterlassungs-Wert ist = (Gleich)

  • ParOptions   Aufbereitungsoptionen

Optionaler Parameter

  • ParValue   Initital-Wert

Optionaler Parameter

Beispiele für den Aufruf

Wx_ManFltFldChar('KndName1': 'MSG7110': 35: 'LIKELEFT');
Wx_ManFltFldChar('Ort': 'Ort': 50);
Wx_ManFltFldChar('PLZ': 'MSG4745': 9);
Wx_ManFltFldChar('Export': 'MSG3344': 1: '=': 'Logical');

Wx_ManFltFldVarChar() – Definieren alphanumerische Filter-Felder mit variabler Länge

Definition von alphanumerischen Filter-Feldern mit variabler Länge zu über die Prozedur Wx_WrkSQLMan() vorgegebenen SQL-Statements.
Kann als Alternative zu Prozedur Wx_ManFltFld() gesehen werden. Im Gegensatz zu Wx_ManFltFld() ist der Datentyp fix vorgegeben und wird nicht über Parameter übergeben. Ebenso können nur die für alphanumerische Felder mit variabler Länge benötigten Informationen als Parameter übergeben werden.

Prototyp

***************************************************************************
P* Procedure name: Wx_ManFltFldVarChar
P* Purpose: Define Filter Fields manually - varying length (single byte)
P* Character Set
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length (Not Size!!!)
P* Parameters: ParCompare => Comparison Operators
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Default Value
***************************************************************************
D Wx_ManFltFldVarChar...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*Trim)
D ParLen 10I 0 Const
D ParCompare Like(FldRef.Text15V) Const
D Options(*Trim: *NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
D ParValue Like(FldRefCGI.DftValue) Const
D Options(*NoPass)
Source Code 10187: Definieren manuelle alphanumerische Filter-Felder mit variabler Länge

Parameter

  • ParFieldEindeutige Kennung des Filter-Feldes

Die eindeutige Kennung muss dem Namen einer Spalte in dem manuell vorgegebenen SQL-Statement entsprechen.
Basierend auf dieser Kennung werden dem manuellen SQL-Statement WHERE-Bedingungen hinzugefügt.

  • ParMsgBeschreibung, die links neben dem Filter-Feld angezeigt wird

Die Angabe der Beschreibung kann entweder hardcodiert als Text oder in Form einer Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die Message-File in der sich die Message-Id befindet der Anwendung zugeweisen sein.

  • ParLen Maximale Länge des Filter-Feldes (=Maximale Anzahl Zeichen)


  • ParCompare:Vergleichsoperator

Optionaler Parameter – Unterlassungs-Wert ist = (Gleich)

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter

  • ParValue:Initital-Wert

Optionaler Parameter

Beispiele für den Aufruf

Wx_ManFltFldVarChar('KndName1': 'MSG7110': 35: 'LIKELEFT');
Wx_ManFltFldVarChar('Ort': 'Ort': 50);
Wx_ManFltFldVarChar('PLZ': 'MSG4745': 9);
Source Code 10288: Definieren manuelle alphanumerische Filter-Felder mit variabler Länge

Wx_ManFltFldUC2() – Definieren Unicode Filter-Felder mit fixer Länge

Definition von Unicode-Filter-Feldern (Double Byte Character Set) mit fixer Länge zu über die Prozedur Wx_WrkSQLMan() vorgegebenen SQL-Statements.
Kann als Alternative zu Prozedur Wx_ManFltFld() gesehen werden. Im Gegensatz zu Wx_ManFltFld() ist der Datentyp fix vorgegeben und wird nicht über Parameter übergeben. Ebenso können nur die für Unicode-Felder mit fixer Länge benötigten Informationen als Parameter übergeben werden.

Prototyp

***************************************************************************
P* Procedure name: Wx_ManFltFldUC2
P* Purpose: Define Filter Fields manually - fixed length (double byte)
P* Character Set
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length (Not Size!!!)
P* Parameters: ParCompare => Comparison Operators
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Default Value
***************************************************************************
D Wx_ManFltFldUC2...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*Trim)
D ParLen 10I 0 Const
D ParCompare Like(FldRef.Text15V) Const
D Options(*Trim: *NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
D ParValue Like(FldRefCGIUC.DftValue) Const
D Options(*NoPass)
Source Code 10389: Definieren manuelle Unicode-Filter-Felder mit fixer Länge

Parameter

  • ParFieldEindeutige Kennung des Filter-Feldes

Die eindeutige Kennung muss dem Namen einer Spalte in dem manuell vorgegebenen SQL-Statement entsprechen.
Basierend auf dieser Kennung werden dem manuellen SQL-Statement WHERE-Bedingungen hinzugefügt.

  • ParMsgBeschreibung, die links neben dem Filter-Feld angezeigt wird

Die Angabe der Beschreibung kann entweder hardcodiert als Text oder in Form einer Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die Message-File in der sich die Message-Id befindet der Anwendung zugeweisen sein.

  • ParLenLänge des Filter-Feldes (=Anzahl Zeichen nicht Anzahl Byte)

Anzahl Byte = tatsächliche Länge = 2x Anzahl Zeichen!!!

  • ParCompare:Vergleichsoperator

Optionaler Parameter – Unterlassungs-Wert ist = (Gleich)

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter

  • ParValue:Initital-Wert (in Unicode = Double Byte Character Set)

Optionaler Parameter

Beispiele für den Aufruf

Wx_ManFltFldUC2('KndName1': 'MSG7110': 35: 'LIKELEFT');
Wx_ManFltFldUC2('Ort': 'Ort': 50);
Wx_ManFltFldUC2('PLZ': 'MSG4745': 9);
Source Code 10490: Definieren manuelle Unicode-Filter-Felder mit fixer Länge

Wx_ManFltFldVarUC2() – Definieren Unicode-Filter-Felder mit variabler Länge

Definition von Unicode-Filter-Feldern (Double Byte Character Set) mit variabler Länge zu über die Prozedur Wx_WrkSQLMan() vorgegebenen SQL-Statements.
Kann als Alternative zu Prozedur Wx_ManFltFld() gesehen werden. Im Gegensatz zu Wx_ManFltFld() ist der Datentyp fix vorgegeben und wird nicht über Parameter übergeben. Ebenso können nur die für Unicode-Filter-Felder mit variabler Länge benötigten Informationen als Parameter übergeben werden.

Prototyp

***************************************************************************
P* Procedure name: Wx_ManFltFldVarUC2
P* Purpose: Define Filter Fields manually - varying length (double byte)
P* Character Set
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length (Not Size!!!)
P* Parameters: ParCompare => Comparison Operators
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Default Value
***************************************************************************
D Wx_ManFltFldVarUC2...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*Trim)
D ParLen 10I 0 Const
D ParCompare Like(FldRef.Text15V) Const
D Options(*Trim: *NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
D ParValue Like(FldRefCGIUC.DftValue) Const
D Options(*NoPass)
Source Code 10591: Definieren manuelle Unicode-Filter-Felder mit variabler Länge

Parameter

  • ParFieldEindeutige Kennung des Filter-Feldes

Die eindeutige Kennung muss dem Namen einer Spalte in dem manuell vorgegebenen SQL-Statement entsprechen.
Basierend auf dieser Kennung werden dem manuellen SQL-Statement WHERE-Bedingungen hinzugefügt.

  • ParMsgBeschreibung, die links neben dem Filter-Feld angezeigt wird

Die Angabe der Beschreibung kann entweder hardcodiert als Text oder in Form einer Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die Message-File in der sich die Message-Id befindet der Anwendung zugeweisen sein.

  • ParLenMaximale Länge des Filter-Feldes (=Maximale Anzahl Zeichen nicht Anzahl Byte)

Anzahl Byte = tatsächliche Länge = 2x Anzahl Zeichen!!!

  • ParCompare:Vergleichsoperator

Optionaler Parameter – Unterlassungs-Wert ist = (Gleich)

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter

  • ParValue:Initital-Wert

Optionaler Parameter

Beispiele für den Aufruf

Wx_ManFltFldVarUC2('KndName1': 'MSG7110': 35: 'LIKELEFT');
Wx_ManFltFldVarUC2('Ort': 'Ort': 50);
Wx_ManFltFldVarUC2('PLZ': 'MSG4745': 9);
Source Code 10692: Definieren manuelle Unicode-Filter-Felder mit variabler Länge

Wx_ManFltFldPack() – Definieren von gepackt-numerischern Filter-Feldern

Definition von gepackt-numerischen Filter-Feldern zu über die Prozedur Wx_WrkSQLMan() vorgegebenen SQL-Statements.
Kann als Alternative zu Prozedur Wx_ManFltFld() gesehen werden. Im Gegensatz zu Wx_ManFltFld() ist der Datentyp fix vorgegeben und wird nicht über Parameter übergeben. Ebenso können nur die für gepackt-numerische Filter-Felder benötigten Informationen als Parameter übergeben werden.

Prototyp

************************************************************************
P* Procedure name: Wx_ManFltFldPack
P* Purpose: Define Filter Fields manually - Packed numeric
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length (Not Size!!!)
P* Parameters: ParDecPos => Decimal Positions
P* Parameters: ParCompare => Comparison Operators
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Default Value
************************************************************************
D Wx_ManFltFldPack...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*Trim)
D ParLen 10I 0 Const
D ParDecPos 3I 0 Options(*NoPass) Const
D ParCompare Like(FldRef.Text15V) Const
D Options(*Trim: *NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
D ParValue Like(FldRef.DftDec) Const
D Options(*NoPass)
Source Code 10793: Definition von manuellen gepackt numerischen Filter-Feldern

Parameter

  • ParFieldEindeutige Kennung des Filter-Feldes

Die eindeutige Kennung muss dem Namen einer Spalte in dem manuell vorgegebenen SQL-Statement entsprechen.
Basierend auf dieser Kennung werden dem manuellen SQL-Statement WHERE-Bedingungen hinzugefügt.

  • ParMsgBeschreibung, die links neben dem Filter-Feld angezeigt wird

Die Angabe der Beschreibung kann entweder hardcodiert als Text oder in Form einer Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die Message-File in der sich die Message-Id befindet der Anwendung zugeweisen sein.

  • ParLenLänge des Filter-Feldes

Bei gezonten und gepackten numerischen Filter-Feldern wird die Anzahl der Ziffern angegeben,

  • Beispiel:Definition 11P 2 --> 11


  • ParDecPosDezimal-Positionen

Optionaler Parameter
Sofern der Parameter nicht angegeben wurde, werden 0 (*Zeros) Nachkommastellen angenommen.

  • ParCompare:Vergleichsoperator

Optionaler Parameter – Unterlassungs-Wert ist = (Gleich)

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter

  • ParValue:Initital-Wert

Optionaler Parameter

Beispiele für den Aufruf

Wx_ManFltFldPack('Menge': 'MSG1122': 7);
Wx_ManFltFldPack('Preis': 'MSG1133': 11: 2: '>=');
Wx_ManFltFldPack('LiefTerm': 'Liefer-Termin': 8: 0: '<=':
'DateNum': %Dec(%Date(): *ISO));
Source Code 10894: Definition von manuellen gepackt numerischen Filter-Feldern

Wx_ManFltFldZone() – Definieren von gezont numerischen Filter-Feldern

Definition von gezont-numerischen Filter-Feldern zu über die Prozedur Wx_WrkSQLMan() vorgegebenen SQL-Statements.
Kann als Alternative zu Prozedur Wx_ManFltFld() gesehen werden. Im Gegensatz zu Wx_ManFltFld() ist der Datentyp fix vorgegeben und wird nicht über Parameter übergeben. Ebenso können nur die für gezoont-numerische Filter-Felder benötigten Informationen als Parameter übergeben werden.

Prototyp

***************************************************************************
P* Procedure name: Wx_ManFltFldZone
P* Purpose: Define Filter Fields manually - Zoneded numeric
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length (Not Size!!!)
P* Parameters: ParDecPos => Decimal Positions
P* Parameters: ParCompare => Comparison Operators
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Default Value
***************************************************************************
D Wx_ManFltFldZone...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*Trim)
D ParLen 10I 0 Options(*NoPass) Const
D ParDecPos 3I 0 Options(*NoPass) Const
D ParCompare Like(FldRef.Text15V) Const
D Options(*Trim: *NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
D ParValue Like(FldRef.DftDec) Const
D Options(*NoPass)
Source Code 10993: Definition von manuellen gezont-numerischen Filter-Feldern

Parameter

  • ParFieldEindeutige Kennung des Filter-Feldes

Die eindeutige Kennung muss dem Namen einer Spalte in dem manuell vorgegebenen SQL-Statement entsprechen.
Basierend auf dieser Kennung werden dem manuellen SQL-Statement WHERE-Bedingungen hinzugefügt.

  • ParMsgBeschreibung, die links neben dem Filter-Feld angezeigt wird

Die Angabe der Beschreibung kann entweder hardcodiert als Text oder in Form einer Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die Message-File in der sich die Message-Id befindet der Anwendung zugeweisen sein.

  • ParLenLänge des Filter-Feldes

Bei gezonten und gepackten numerischen Filter-Feldern wird die Anzahl der Ziffern angegeben,

  • Beispiel:Definition 11P 2 --> 11


  • ParDecPosDezimal-Positionen

Optionaler Parameter
Sofern der Parameter nicht angegeben wurde, werden 0 (*Zeros) Nachkommastellen angenommen.

  • ParCompare:Vergleichsoperator

Optionaler Parameter – Unterlassungs-Wert ist = (Gleich)

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter

  • ParValue:Initital-Wert

Optionaler Parameter

Beispiele für den Aufruf

Wx_ManFltFldZone('Menge': 'MSG1122': 7);
Wx_ManFltFldZone('Preis': 'MSG1133': 11: 2: '>=');
Wx_ManFltFldZone('LiefTerm': 'Liefer-Termin': 8: 0: '<=':
'DateNum': %Dec(%Date(): *ISO));
Source Code 11094: Definition von manuellen gezont-numerischen Filter-Feldern

Wx_ManFltFldInt() – Definieren von Ganzzahligen Filter-Feldern

Definition von ganzzahligen Filter-Feldern zu über die Prozedur Wx_WrkSQLMan() vorgegebenen SQL-Statements.
Kann als Alternative zu Prozedur Wx_ManFltFld() gesehen werden. Im Gegensatz zu Wx_ManFltFld() ist der Datentyp fix vorgegeben und wird nicht über Parameter übergeben. Ebenso können nur die für ganzzahlige Filter-Felder benötigten Informationen als Parameter übergeben werden.

Prototyp

***************************************************************************
P* Procedure name: Wx_ManFltFldInt
P* Purpose: Define Filter Fields manually - Integer Values
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length (Not Size!!!)
P* Parameters: ParCompare => Comparison Operators
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Default Value
***************************************************************************
D Wx_ManFltFldInt...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*Trim)
D ParLen 10I 0 Options(*NoPass) Const
D ParCompare Like(FldRef.Text15V) Const
D Options(*Trim: *NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
D ParValue Like(FldRef.DftBigInt) Const
D Options(*NoPass)
Source Code 11193: Definition von manuellen ganzzahligen Filter-Feldern

Parameter

  • ParFieldEindeutige Kennung des Filter-Feldes

Die eindeutige Kennung muss dem Namen einer Spalte in dem manuell vorgegebenen SQL-Statement entsprechen.
Basierend auf dieser Kennung werden dem manuellen SQL-Statement WHERE-Bedingungen hinzugefügt.

  • ParMsgBeschreibung, die links neben dem Filter-Feld angezeigt wird

Die Angabe der Beschreibung kann entweder hardcodiert als Text oder in Form einer Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die Message-File in der sich die Message-Id befindet der Anwendung zugeweisen sein.

  • ParLenLänge des Filter-Feldes

Zur Definition von Integer-Filter-Feldern sind nur die folgenden Längenangaben zulässig:

  • Small IntegerLänge = 5
  • IntegerLänge = 10
  • Big IntegerLänge = 20


Wird die Länge nicht übergeben wird ein Integer (Länge = 10) Filter-Feld definiert.

  • ParCompare:Vergleichsoperator

Optionaler Parameter – Unterlassungs-Wert ist = (Gleich)

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter

  • ParValue:Initital-Wert

Optionaler Parameter

Beispiele für den Aufruf

Wx_ManFltFldInt('Menge': 'MSG1122': 5);
Wx_ManFltFldInt('Anzahl': 'MSG1133': 10: '>=');
Source Code 11294: Definition von manuellen ganzzahligen Filter-Feldern

Wx_ManFltFldFloat() – Definieren von Fließ-Komma-Filter-Feldern

Definition von Fließkomma-Filter-Feldern zu über die Prozedur Wx_WrkSQLMan() vorgegebenen SQL-Statements.
Kann als Alternative zu Prozedur Wx_ManFltFld() gesehen werden. Im Gegensatz zu Wx_ManFltFld() ist der Datentyp fix vorgegeben und wird nicht über Parameter übergeben. Ebenso können nur die für Fließkomma-Filter-Felder benötigten Informationen als Parameter übergeben werden.

Prototyp

***************************************************************************
P* Procedure name: Wx_ManFltFldFloat
P* Purpose: Define Filter Fields manually - Float/Double Values
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length (Not Size!!!)
P* Parameters: ParCompare => Comparison Operators
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Default Value
***************************************************************************
D Wx_ManFltFldFloat...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*Trim)
D ParLen 10I 0 Options(*NoPass) Const
D ParCompare Like(FldRef.Text15V) Const
D Options(*Trim: *NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
D ParValue 8F Const
D Options(*NoPass)
Source Code 11393: Definition von manuellen Fließkomma-Filter-Feldern

Parameter

  • ParFieldEindeutige Kennung des Filter-Feldes

Die eindeutige Kennung muss dem Namen einer Spalte in dem manuell vorgegebenen SQL-Statement entsprechen.
Basierend auf dieser Kennung werden dem manuellen SQL-Statement WHERE-Bedingungen hinzugefügt.

  • ParMsgBeschreibung, die links neben dem Filter-Feld angezeigt wird

Die Angabe der Beschreibung kann entweder hardcodiert als Text oder in Form einer Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die Message-File in der sich die Message-Id befindet der Anwendung zugeweisen sein.

  • ParLenLänge des Filter-Feldes

Zur Definition von Fließkomma-Variablen sind nur die folgenden Längenangaben zulässig:

  • FloatLänge = 4
  • DoubleLänge = 8


Wird die Länge nicht übergeben wird ein Double (Länge = 8) Filter-Feld definiert.

  • ParCompare:Vergleichsoperator

Optionaler Parameter – Unterlassungs-Wert ist = (Gleich)

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter

  • ParValue:Initital-Wert

Optionaler Parameter

Beispiele für den Aufruf

Wx_ManFltFldFloat('Volumen': 'MSG1144': 8);
Wx_ManFltFldFloat('Entfern': 'MSG1155': 4: '>=');
Source Code 11494: Definition von manuellen Fließkomma-Filter-Feldern

Wx_ManFltFldDate() – Definieren von Datums-Filter-Feldern

Definition von Datums-Filter-Feldern zu über die Prozedur Wx_WrkSQLMan() vorgegebenen SQL-Statements.
Kann als Alternative zu Prozedur Wx_ManFltFld() gesehen werden. Im Gegensatz zu Wx_ManFltFld() ist der Datentyp fix vorgegeben und wird nicht über Parameter übergeben. Ebenso können nur die für Datums-Filter-Felder benötigten Informationen als Parameter übergeben werden.

Prototyp

***************************************************************************
P* Procedure name: Wx_ManFltFldDate
P* Purpose: Define Filter Fields manually
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParDatFmt => Data Format
P* Parameters: ParCompare => Comparison Operators
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Default Value
***************************************************************************
D Wx_ManFltFldDate...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*Trim)
D PInDatFmt Like(FldRef.Text10V) Const
D Options(*NoPass: *Trim)
D ParCompare Like(FldRef.Text15V) Const
D Options(*Trim: *NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
D ParValue D DatFmt(*ISO) Const
D Options(*NoPass)
Source Code 11593: Definition von manuellen Datums-Filter-Feldern

Parameter

  • ParFieldEindeutige Kennung des Filter-Feldes

Die eindeutige Kennung muss dem Namen einer Spalte in dem manuell vorgegebenen SQL-Statement entsprechen.
Basierend auf dieser Kennung werden dem manuellen SQL-Statement WHERE-Bedingungen hinzugefügt.

  • ParMsgBeschreibung, die links neben dem Filter-Feld angezeigt wird

Die Angabe der Beschreibung kann entweder hardcodiert als Text oder in Form einer Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die Message-File in der sich die Message-Id befindet der Anwendung zugeweisen sein.

  • ParDatFmtDatums-Format

Optionaler Parameter
Wird das Datumsformat nicht angegeben, so wird davon ausgegangen, dass das *ISO-Format verwendet wird.
Die folgenden Datumsformate sind zulässig

  • *ISOISO-Datums-Format=JJJJ-MM-TT
  • *EUREuropäisches Datum =TT.MM.JJJJ
  • *USAAmerikanisches Datum =MM/TT/JJJJ
  • *YMDJahr/Monat/Tag Format =JJ-MM-TT
  • *DMYTag/Monat/Jahr Format =TT.MM.JJ
  • *MDYMonat/Tag/Jahr Format = MM/TT/JJ


  • ParCompare:Vergleichsoperator

Optionaler Parameter – Unterlassungs-Wert ist = (Gleich)

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter

  • ParValue:Initital-Wert

Optionaler Parameter

Beispiele für den Aufruf

Wx_ManFltFldDate('LiefTerm': 'MSG1166');
Wx_ManFltFldDate('BestDat': 'MSG1177': '*ISO': '<=': '': %Date());
Source Code 11694: Definition von manuellen Datums-Filter-Feldern

Wx_ManFltFldTime() – Definieren von Zeit-Filter-Feldern

Definition von Zeit-Filter-Feldern zu über die Prozedur Wx_WrkSQLMan() vorgegebenen SQL-Statements.
Kann als Alternative zu Prozedur Wx_ManFltFld() gesehen werden. Im Gegensatz zu Wx_ManFltFld() ist der Datentyp fix vorgegeben und wird nicht über Parameter übergeben. Ebenso können nur die für Zeit-Filter-Felder benötigten Informationen als Parameter übergeben werden.

Prototyp

***************************************************************************
P* Procedure name: Wx_ManFltFldTime
P* Purpose: Define Filter Fields manually
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParCompare => Comparison Operators
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Default Value
***************************************************************************
D Wx_ManFltFldTime...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*Trim)
D ParCompare Like(FldRef.Text15V) Const
D Options(*Trim: *NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
D ParValue T TimFmt(*ISO) Const
D Options(*NoPass)
Source Code 11793: Definition von manuellen Zeit-Filter-Feldern

Parameter

  • ParFieldEindeutige Kennung des Filter-Feldes

Die eindeutige Kennung muss dem Namen einer Spalte in dem manuell vorgegebenen SQL-Statement entsprechen.
Basierend auf dieser Kennung werden dem manuellen SQL-Statement WHERE-Bedingungen hinzugefügt.

  • ParMsgBeschreibung, die links neben dem Filter-Feld angezeigt wird

Die Angabe der Beschreibung kann entweder hardcodiert als Text oder in Form einer Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die Message-File in der sich die Message-Id befindet der Anwendung zugeweisen sein.

  • ParCompare:Vergleichsoperator

Optionaler Parameter – Unterlassungs-Wert ist = (Gleich)

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter

  • ParValue:Initital-Wert

Optionaler Parameter

Beispiele für den Aufruf

Wx_ManFltFldTime('StrTime': 'MSG1188');
Wx_ManFltFldTime('EndTime': 'MSG1199': '<=': '': %Time());
Source Code 11894: Definition von manuellen Zeit-Filter-Feldern

Wx_ManFltFldTimestamp() – Definieren von Zeitmarken-Filter-Feldern

Definition von Zeitmarken-Filter-Feldern zu über die Prozedur Wx_WrkSQLMan() vorgegebenen SQL-Statements.
Kann als Alternative zu Prozedur Wx_ManFltFld() gesehen werden. Im Gegensatz zu Wx_ManFltFld() ist der Datentyp fix vorgegeben und wird nicht über Parameter übergeben. Ebenso können nur die für Zeitmarken-Filter-Felder benötigten Informationen als Parameter übergeben werden.
Prototyp
***************************************************************************
P* Procedure name: Wx_ManFltFldTimestamp
P* Purpose: Define Filter Fields manually
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParCompare => Comparison Operators
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Default Value
***************************************************************************
D Wx_ManFltFldTimestamp...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*Trim)
D ParCompare Like(FldRef.Text15V) Const
D Options(*Trim: *NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
D ParValue Z Const
D Options(*NoPass)

  • Source Code 11993: Definition von manuellen Zeitmarken-Filter-Feldern

Parameter
ParFieldEindeutige Kennung des Filter-Feldes
Die eindeutige Kennung muss dem Namen einer Spalte in dem manuell vorgegebenen SQL-Statement entsprechen.
Basierend auf dieser Kennung werden dem manuellen SQL-Statement WHERE-Bedingungen hinzugefügt.
ParMsgBeschreibung, die links neben dem Filter-Feld angezeigt wird
Die Angabe der Beschreibung kann entweder hardcodiert als Text oder in Form einer Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die Message-File in der sich die Message-Id befindet der Anwendung zugeweisen sein.
ParCompare:Vergleichsoperator
Optionaler Parameter – Unterlassungs-Wert ist = (Gleich)
ParOptionsAufbereitungsoptionen
Optionaler Parameter
ParValue:Initital-Wert
Optionaler Parameter


Beispiele für den Aufruf
Wx_ManFltFldTimestamp('Start': 'MSG1288');
Wx_ManFltFldTimeStamp('Ende': 'MSG1200': '<=':
'': %Timestamp());
Source Code 12094: Definition von manuellen Zeitmarken-Filter-Feldern

Wx_ManFltFieldRef() – Definieren von Filter-Feldern basierend auf Referenz-Feld

Definition von Filter-Feldern basierend auf Referenz-Feld zu über die Prozedur Wx_WrkSQLMan() vorgegebenen SQL-Statements.
Kann als Alternative zu Prozedur Wx_ManFltFld() gesehen werden. Bei der Definition von Filter-Feldern über die Funktion WX_ManFltFieldRef() wird die Definition eines Referenz-Feldes übernommen. Die Tabelle, in der sich das Referenz-Feld befindet, kann über eine der Funktionen Wx_HdrFile() oder Wx_FltFile bereits registriert werden.

Prototyp

***************************************************************************
P* Procedure name: Wx_ManFltFldRef
P* Purpose: Define Fields manually with field reference for Filter Tables
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParRefField => Reference Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParCompare => Comparison
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Value
P* Parameters: ParCorr => Correlation
P* Parameters: ParFile => File
P* Parameters: ParLib => Library
***************************************************************************
D Wx_ManFltFldRef...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D Options(*Trim)
D ParRefField Like(FldRef.NameSQL) Const
D Options(*Trim)
D ParMsg Like(FldRef.MsgData) Const
D Options(*Trim: *NoPass)
D ParCompare Like(FldRef.Text15V) Const
D Options(*Trim: *NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*Trim: *NoPass)
D ParValue Like(FldRefCGIUC.DftValue) Const
D Options(*NoPass)

  • Source Code 12193: Definition von manuellen Filter-Feldern basierend auf Referenz-Feld

Parameter

ParFieldEindeutige Kennung des Filter-Feldes
Die eindeutige Kennung muss dem Namen einer Spalte in dem manuell vorgegebenen SQL-Statement entsprechen.
Basierend auf dieser Kennung werden dem manuellen SQL-Statement WHERE-Bedingungen hinzugefügt.

  • ParRefFieldReferenz-Feld

Das Referenz-Feld muss in einer der Dateien/Tabellen/Views, die über die Funktion Wx_HdrFile() oder Wx_FltFile() definiert wurden hinterlegt

  • ParMsgBeschreibung, die links neben dem Filter-Feld angezeigt wird

Die Angabe der Beschreibung kann entweder hardcodiert als Text oder in Form einer Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die Message-File in der sich die Message-Id befindet der Anwendung zugeweisen sein.

  • ParCompare:Vergleichsoperator

Optionaler Parameter – Unterlassungs-Wert ist = (Gleich)

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter

  • ParValue:Initital-Wert

Optionaler Parameter
Beispiele für den Aufruf
Wx_ManFltFldRef('Januar': 'Monat': 'MSG2255');
Wx_ManFltFldRef('Lieferant': 'KndNr': 'MSG1201': '<=');
Source Code 12294: Definition von manuellen Filter-Feldern basierend auf Referenz-Feldern

Prozeduren zur Ausgabe von Worktables

Nachdem alle Informationen für die Work Table definiert wurden, muss der HTML-Code generiert und das Ergebnis an den Browser geschickt werden.
Vor der Ausgabe der Work-Tables können noch Parameter-Werte (z.Z. maximal 5) die im Folge-Programm gesetzt werden können, angegeben werden.
Das Setzen der Parameter-Werte ist für Work- und Change-Tables identisch und wird deshalb separat in Kapitel 3.13 Ermitteln und Setzen von Parameter-Werten abgehandelt.

Wx_NoRcdTxt() - Anzahl Datensätze ausblenden

Per Default wird bei Work Tables die Gesamt-Anzahl der Datensätze ermittelt und angezeigt.
Durch Aufruf der Prozedur Wx_NoRcdTxt() kann die Anzeige ausgeblendet werden.
Anmerkung:z.Z. gibt es keinen Performance-Unterschied, ob die Anzahl der Datensätze angezeigt werden oder nicht. Um die Anzahl der Datensätze zu ermitteln, muss die komplette SQL-Abfrage ausgeführt werden.
Es ist jedoch geplant, dass, sofern die Anzahl der Datensätze ausgeblendet wird, immer nur die nächsten (z.Z.) 100 Daten-Sätze eingelesen.

Abbildung 22: Ergebnis Aufruf Wx_NoRcdTxt() - Anzahl Datensätze ausblenden

Prototype

*******************************************************************************
P* Procedure name: Wx_NoRcdTxt
P* Purpose: Set No Record Text
P* Returns:
P* Parameters:
********************************************************************************
D Wx_NoRcdTxt...
D PR OpDesc
Source Code 12395: Prototype - Prozedur Wx_NoRcdTxt/( ) - Anzahl Datensätzen ausblenden

Parameter

  • Weder Parameter noch Rückgabe-Wert

Beispiel für den Aufruf

Wx_NoRcdTxt();
Source Code 12496: Aufruf Prozedur Wx_NoRcdTxt() - Anzahl Datensätze ausblenden

Wx_RcdTxt – Beliebiger Satz-Text

Per Default wird bei Work Tables die Gesamt-Anzahl der Datensätze ermittelt und angezeigt.
Standardmäßig wird im Text „xxx Datensätze" angezeigt. Über die Funktion Wx_RcdTxt kann der Begriff „Datensätze" beliebig ausgetauscht werden.
Wahlweise kann eine Message-Id oder ein fixer Text übergeben werden.

Abbildung 23: Funktion Wx_RcdTxt: Beliebiger Satz-Text

Prototype

***************************************************************************
P* Procedure name: Wx_RcdTxt
P* Purpose: Set Text for (Aggregated returned records)
P* Returns:
P* Parameters: ParMsgTxt => Message Text or Message-Id
***************************************************************************
D Wx_RcdTxt...
D PR OpDesc
D ParMsgTxt Like(FldRef.MsgData) Const
Source Code 12597: Prototype - Prozedur Wx_RcdTxt - Satz-Text vorgeben

Parameter

  • ParMsgTxtMessage-Id oder Message-Text als Ersatz für den Standard-Text

Beispiel für den Aufruf

Wx_RcdTxt('MNU0014');
Wx_RcdTxt('Aufträge');
Source Code 12698: Aufruf Prozedur Wx_RcdTxt() – Beliebiger Satz-Text

Wx_WrtWrkTbl() – Worktable ausgeben

Nachdem alle Informationen für die Work Table definiert wurden, muss durch Aufruf der Prozedur Wx_WrtWrkTbl() der HTML-Code generiert und das Ergebnis an den Browser geschickt werden.
Beim Aufruf der Funktion kann ein Fehler-Text, der im Folge-Programm ausgegeben wird und bis zu 5 Parameter-Werte, die ebenfalls vom Folge-Programm verwendet werden können übergeben werden.
Die Prozedur Wx_WrtWrkTbl() kann pro Worktable nur einmalig aufgerufen werden. Mit Aufruf der Prozedur Wx_WrtWrkTbl() wird das Work-Programm automatisch beendet.

Prototype

*************************************************************************
P* Procedure name: Wx_WrtWrkTbl
P* Purpose: Write Work Table
P* Returns:
P* Parameters: ParErrMsg => Error Message-Id or Text (optional)
P* Parameters: ParParm1 => Parameter Value 1 (optional)
P* Parameters: ParParm2 => Parameter Value 2 (optional)
P* Parameters: ParParm3 => Parameter Value 3 (optional)
P* Parameters: ParParm4 => Parameter Value 4 (optional)
P* Parameters: ParParm5 => Parameter Value 5 (optional)
P* Parameters: ParHandle => Handle (optional)
*************************************************************************
D Wx_WrtWrkTbl...
D PR OpDesc
D PErrMsg Like(FldRef.MsgData) Const
D Options(*NoPass)
D ParParm1 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParParm2 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParParm3 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParParm4 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParParm5 Like(FldRef.TextVar) Const
D Options(*NoPass)
D PInHandle 3U 0 Options(*NoPass) Const
Source Code 12799: Prototype - Wx_WrtWrkTbl() - Work Table ausgeben

  • Parameter
  • ParErrMsg Fehler-Text oder Message-Id

Optionaler-Parameter
Der Fehler-Text kann entweder direkt oder als Message-Id angegeben werden.

  • ParParm1 – ParParm5 Parameter-Wert

Optionale Parameter
Es können bis zu 5 alphanumerische Parameter-Werte übergeben werden. Diese Parameter-Werte können in dem Folge-Programm verwendet werden.
Anstatt die gewünschten Parameter-Werte über die Funktion Wx_WrtWrkTbl() zu setzen, ist es auch möglich die Werte über durch Aufruf einer der Funktionen Wx_SetParmXXXX zu setzen (vergl. 3.13 Ermitteln und Setzen von Parameter-Werten).

Beispiel für den Aufruf

Wx_WrtWrkTbl();
Wx_WrtWrkTbl(PGMSDS.MsgTxt);
Wx_WrtWrkTbl('': GblJahr: GblArtikelNr);
Source Code 128100: Aufruf Prozedur Wx_WrtWrkTbl() - Work Table ausgeben

Spezielle Prozeduren für Editierbare Worktables

Wx_GetEdtListXML() – Empfangen alphanumerisches XML-Dokument mit geänderten Werten

Diese Funktion wird für Editierbare Worktables benötigt. Wenn Daten aus Änderungen aus editierbaren Worktables zurückgegeben wurden, muss mit Hilfe der Funktion Wx_GetEdtListXML() ein XML-Dokument, das alle Änderungen enthält in eine alphanumerische Variable ausgegeben werden.

Das XML-Dokument kann aktuell nur maximal 16350 Zeichen beinhalten. Werden mehr Informationen ausgegeben, so werden diese abgeschnitten und das XML-Dokument ist unvollständig.

Der Programmierer muss das empfangene XML-Dokument z.B. mit den RPG-OpCodes XML-INTO in eine Datenstruktur ausgeben und anschließend die Daten verarbeiten.

Weitere Funktionen, die für editierbare Worktables benötigt werden:

Auf der Seite RPGWX-Prozeduren im Überblick - Editierbare Worktables wird diese Programmierung genauer erläutert.


Wx_GetEdtListXML() - Prototyp
***************************************************************************
P* Procedure name: Wx_GetEdtListXML
P* Purpose: Get All changed information as well formed XML document
P* = Unique Key is returned as attribute id in the row element
P* = column names as defined when creating the worktable are
P* for the modified values
P* Returns: Well formed XML document with the modified data
P* Parameters:
*--------------------------------------------------------------------------

    Attention: Currently restricted to 16350 characters
    ***************************************************************************
    D Wx_GetEdtListXML...
    D PR Like(FldRefLA.VarLen) OpDesc

Syntax

dcl-s LocString Like(FldRefLA.VarLen);

Loc_String = Wx_GetEdtListXML();

Parameter

Die Funktion hat keine Eingabe-Parameter.

Die Ausgabe ist ein XML-strukturierter String. Er beinhaltet die Sätze der Worktable mit geänderten Daten.

Beispiel für den Aufruf

D GblXMLDoc   S Like(FldRefLA.VarLen)
D RefDSRow   DS Qualified Based(DummyPtr)
D Id        10I 0
D DCAPP     10A
D DCNAM     10A
D NEWSEQ     5P 0
D DCTXT     30A
D DCKEY     20A
D Rows      DS Qualified Inz
D Row           LikeDS(RefDSRow) Dim(100)
------------------------------------------------------------------------------
/Free
if Wx_isModeEdtList();
  GblXMLDoc = Wx_GetEdtListXML();
  XML-INTO Rows %XML(GblXMLDoc: 'allowmissing=yes allowextra=yes case=any');
endif;
/End-Free

Wx_WrkFldErr() – Fehler in einem Feld der editierbaren Worktable

Diese Funktion wird bei editierbaren Worktables mit einem zur Eingabe freigegeben Feld verwendet. Sofern eine Eingabe fehlerhaft ist, kann durch Ausführung der Funktion WX_WrkFldErr() eine Fehlernachricht für eine einzige Spalte in einer einzigen Zeile ausgegeben werden.

Wichtig ist an dieser Stelle, dass neben dem Spalten-Namen die Id (der eindeutige Schlüssel), genauso wie er im XML-Dokument steht angeben wird. (Über die ID und den Spalten-Namen können die Nachrichten dann zugewiesen werden.

Wx_WrkFldErr() - Prototype
//****************************************************************************************
// Procedure name: Wx_WrkFldErr
// Purpose: Set Field Error
// Returns:
// Parameters: ParMsg => Message-Id or Text
// Parameters: ParId => Unique Id/Key in Work File
// Parameters: ParField => Field
//****************************************************************************************
DCL-PR Wx_WrkFldErr;
ParMsg Like(FldRef.MsgData) Const;
ParId Like(FldRefMA.Varlen) Const;
ParField Like(FldRef.NameSQL) Const;
End-PR;

Syntax

Wx_WrkFldErr(<msg>: <xml-id> : '<columnname');

Parameter

msg Nachrichten-Text oder Message-Id der Fehlermeldung

xml-id - Eindeutige Kennung der Zeile (ID)

wird als char-Wert übergeben
entspricht dem ersten Feld in der Datenstruktur, also der ID für die jeweilige Zeile

columname - Name des Feldes mit der fehlerhaften Eingabe

Beispiele für den Aufruf

DCL-DS RefDSRow Qualified Template Inz;
Id Int(10);
DCAPP Char(10);
DCNAM Char(10);
NEWSEQ Packed(5);
DCTXT Char(30);
DCKEY Char(20);
DCDTA Char(50);
DCICN Char(50);
End-Ds;
DCL-DS Rows Qualified Inz;
Row LikeDS(RefDSRow) Dim(100);
Anz_Row Int(10);
End-Ds;
//------------------------------------------------------------------------
Monitor;
  Clear Rows;
  LocString = Wx_GetEdtListXML();
  XML-INTO Rows %XML(LocString: 'allowmissing=yes allowextra=yes case=any countprefix=Anz_');
  For LocIndex = 1 to Rows.Anz_Row;
    If Rows.Row(LocIndex).Id = *Zeros;
      Leave;
    EndIf;
    If %Len(%Trim(Rows.Row(LocIndex).DCICN)) = *Zeros;
      Wx_WrkFldErr('MSG4711': %Char(Rows.Row(LocIndex).Id): 'DCICN');
    EndIf;

   //weiterer Source Code

   EndFor;

Wx_MultWrkFldErr() – Fehler in einem oder mehreren Feldern der editierbaren Worktable

Diese Funktion wird bei editierbaren Worktables verwendet. Sofern innerhalb der gleichen Zeile mehrere editierbare Spalten mit der gleichen Fehlermeldung bestückt werden sollen, kann dies mit Hilfe der Funktion WX_MultWrkErr.

Wichtig ist auch an dieser Stelle, dass neben den Nahmen der fehlerhaften Spalten die Id (der eindeutige Schlüssel), genauso wie er im XML-Dokument steht, angeben wird. (Über die ID und den Spalten-Namen können die Nachrichten dann zugewiesen werden.

Wx_MultWrkFldErr() - Prototyp
//**********************************************************************
// Procedure name: Wx_MultWrkFldErr
// Purpose: Set Error for Multiple Fields
// Returns:
// Parameters: ParMsg => Message-Id or Text
// Parameters: ParId => Id / Unique Key in the work file
// Parameters: ParField01 => Field 01
// Parameters: ParField02 => Field 02
// Parameters: ParField03 => Field 03
// Parameters: ParField04 => Field 04
// Parameters: ParField05 => Field 05
// Parameters: ParField06 => Field 06
// Parameters: ParField07 => Field 07
// Parameters: ParField08 => Field 08
// Parameters: ParField09 => Field 09
// Parameters: ParField10 => Field 10
// Parameters: ParFile => File
// Parameters: ParLib => Bibliothek
//**********************************************************************
DCL-Proc Wx_MultWrkFldErr Export;
DCL-PI Wx_MultWrkFldErr;
ParMsg Like(FldRef.MsgData) Const;
ParId Like(FldRefMA.VarLen) Const;
ParField01 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField02 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField03 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField04 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField05 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField06 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField07 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField08 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField09 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField10 Like(FldRef.NameSQL) Const Options(*NoPass);
End-PI;

Syntax

Wx_WrkMultFldErr(<msg>: <xml-id> : '<columnname01' : ['columname02' : .. : 'columname10']);

Parameter

msg Nachrichten-Text oder Message-Id der Fehlermeldung

xml-id - Eindeutige Kennung der Zeile (ID)

wird als char-Wert übergeben
entspricht dem ersten Feld in der Datenstruktur, also der ID für die jeweilige Zeile

columname01 - 10 -

Namen der Felder mit der fehlerhaften Eingabe

Die erste Spalte (columname01) muss angegeben werden.
Die übrigen Spalten-Parameter sind optional.

Beispiele für den Aufruf

DCL-DS RefDSRow Qualified Template Inz;
Id Int(10);
DCAPP Char(10);
DCNAM Char(10);
NEWSEQ Packed(5);
DCTXT Char(30);
DCKEY Char(20);
DCDTA Char(50);
DCICN Char(50);
End-Ds;
DCL-DS Rows Qualified Inz;
Row LikeDS(RefDSRow) Dim(100);
Anz_Row Int(10);
End-Ds;
//------------------------------------------------------------------------
Monitor;
  Clear Rows;
  LocString = Wx_GetEdtListXML();
  XML-INTO Rows %XML(LocString: 'allowmissing=yes allowextra=yes case=any countprefix=Anz_');
  For LocIndex = 1 to Rows.Anz_Row;
    If Rows.Row(LocIndex).Id = *Zeros;
    Leave;
  EndIf;
  If %Len(%Trim(Rows.Row(LocIndex).DCTXT)) > *Zeros
  and Rows.Row(LocIndex).DCTXT = Rows.Row(LocIndex).DCICN;
    Wx_MultWrkFldErr('MSG4712' : %Char(Rows.Row(LocIndex).Id) : 'DCICN' : 'DCTXT');
  EndIf;

   //weiterer Source Code

EndFor; 


Modus ermitteln

Wx_isModeReseq() – Resequenzierung

Über die Funktion Wx_isModeReseq(), kann geprüft werden, ob in einer Listanzeige in der die Umsortierung der Datensätze erlaubt ist, der entsprechende Button (Default = Umsortierung) angeklickt wurde.
Sofern die Funktion Wx_isModeReseq() *ON zurückbringt, können die Schlüssel-Werte in der neuen Reihenfolge wahlweise in einem String mit Trennzeichen, einer Feldgruppe mit ganzzahligen Elemente oder einer Feldgruppe mit alphanumerischen Elementen ausgegeben werden. Basierend auf den ausgegebenen Werten kann der Programmierer seine Datensätze basierend auf der neuen Sortierung fortschreiben.

Prototype

***************************************************************************
P* Procedure name: Wx_isModeReseq
P* Purpose: Check Special Mode for Resequencing
P* Returns: True/*ON = Data for Resequencing/ False/*Off no Data Available
P* Parameters: ParReload = Retrieve URL values even if already populated)
***************************************************************************
D Wx_isModeReseq...
D PR N OpDesc
D ParReload N Options(*NoPass) Const
Source Code 217187: Prototype - Funktion Wx_isModeReseq() - Prüfen Resequenzierung-Button geklickt

Parameter

  • Rückgabe-Wert*ON = Modus Resequenzierung (Button geklickt)

*OFF = Anderer Modus
*ON = Ergebnis aus Umsortierung liegt vor

Beispiele für den Aufruf

/Free
If Wx_isModeReseq(); //Ergebnis aus Resequenzierung
Monitor;
GblArrInt = Wx_GetReseqArrInt(); //Empfangen Schlüssel in Feldgruppe
On-Error;
GblString = Wx_GetReseqString(); //Empfangen Schlüssel als String
EndMon;
//Datensätze in neuer Reihenfolge fortscheiben;
EndIf;
//Quell-Code für Worktable
/End-Free
Source Code 218188: Aufruf - Funktion Wx_isModeReseq() - Prüfen Resequenzierung-Button geklickt

Wx_isModeEdtList() – Editierbare Worktable

Die Funktion Wx_isModeEdtList() dient zur Gestaltung von editierbaren Worktables. Sie arbeitet zusammen mit der Funktion Wx_WrkBtnEdtList(). Mit Wx_isModeEdtList() wird geprüft, ob in einer editierbaren Listanzeige, der entsprechende Button angeklickt wurde.

Sofern die Funktion Wx_isModeEdtList() *ON zurückbringt, können geänderten Daten in Form eines XML-Dokuments empfangen werden. Basierend auf den im XML-Dokument ausgegebenen Änderungen kann der Programmierer die Änderungen fortschreiben.

Weitere Funktionen, die für editierbare Worktables benötigt werden:

Auf der Seite RPGWX-Prozeduren im Überblick - Editierbare Worktables wird diese Programmierung genauer erläutert.

Wx_isModeEdtList - Prototype
**************************************************************************
P* Procedure name: Wx_isModeEdtList
P* Purpose: Check Special Mode for editable Worktables
P* Returns: True/*ON = Data for editable Worktables / False/*Off
P* Parameters: ParReload = Retrieve URL values even if already retrieved
*-------------------------------------------------------------------------
* Attention: Currently restricted to 16350 characters
**************************************************************************
D Wx_isModeEdtList...
D PR N OpDesc
D ParReload N Options(*NoPass) Const
/EndIf

Parameter

ButtonGeklickt - Wurde der Button, der mit Wx_WrkBtnEdtList() definiert wurde, geklickt?

*OFF = Anderer Modus
*ON = XML-Dokument mit geänderten Daten liegt vor

Beispiele für den Aufruf der Funktion und die Verarbeitung der eingegebenen Daten

Umsortierung von Datensätzen in einer List-Anzeige

Die Reihenfolge der Datensätze innerhalb von List-Anzeigen kann mittels Drag und Drop geändert werden.
Voraussetzung ist, dass ein Resequenzierung-Button mit Hilfe der Funktion Wx_WrkBtnReseq() definiert wurde. Beim ersten Aufruf wird der Button ausgegraut angezeigt.
Sobald sich die Reihenfolge der Datensätze geändert wird, kann der Button angeklickt werden.
Beim Klick auf den Button werden die Schlüssel-Werte in der neuen Reihenfolge ausgegeben. Dabei ist zu beachten, dass immer die Schlüssel-Werte ALLER Datensätzen in der List-Anzeige ausgegeben werden.
Sofern die Liste nicht mehr als 256 Datensätze beinhaltet, können die Schlüssel-Werte im Verarbeitungsprogramm mit Hilfe der folgenden RPGWX-Funktionen direkt in eine alphanumerische oder numerische Feldgruppe (mit 256 Elementen) ausgegeben werden.

  • Wx_GetReseqArrInt()Ausgabe der Schlüssel-Werte in eine Feldgruppe mit 256 Elementen

und ganzzahligem Datentypen (20U 0)

  • Wx_GetReseqArrChar()Ausgabe der Schlüssel-Werte in eine Feldgruppe mit 256 Elementen

und alphanumerischem Datentypen mit variabler Länge (256A varying)

  • Wx_GetReseqArrUC()Ausgabe der Schlüssel-Werte in eine Feldgruppe mit 256 Elementen

und Unicode Datentypen mit variabler Länge (256C varying)
Sollten in der List-Anzeige mehr als 256 Datensätze enthalten sein, können die Schlüssel-Werte als alphanumerischer String ausgegeben werden. Innerhalb des Strings sind die Schlüssel-Werte durch Hash-Zeichen (#) voneinander getrennt. Der Programmierer muss dann die Schlüssel-Werte selber aus dem String ermitteln. Auch hierbei gibt es Restriktionen: Aktuell kann der String nur maximal 16350 Zeichen lang sein.
Der String mit den umsortierten Schlüssel-Werten kann über die folgenden Funktionen ermittelt werden:

  • Wx_GetReseqString()Alphanumerischer String mit den entsprechenden Schlüssel-Werte
  • Wx_GetReseqStringUC() Unicode String mit den entsprechenden Schlüssel-Werten

Anmerkung: Wird eine Resequenzierung erlaubt, werden ALLE Datensätze in die Listanzeige eingelesen. Das übliche Paging, bei dem jeweils Blöcke von 100 Datensätzen eingelesen und ausgegeben werden ist an dieser Stelle abgeklemmt.
Es werden immer alle Schlüssel-Werte in der neuen Reihenfolge ausgegeben. Sollen die Schlüssel in Feldgruppen ausgegeben werden, darf die List-Anzeige nicht mehr als 256 Zeilen beinhalten.
Werden die Schlüssel-Werte in einem String empfangen, kann dieser String maximal 16.350 Zeichen fassen.
Im Gegensatz zu den üblichen Buttons wird die Steuerung nicht an das vordefiniert Change-Programm übergeben, sondern kommt in das gleiche Programm zurück.
In dem Workprogramm muss mit Hilfe der Funktion Wx_isModeReseq() festgestellt werden, ob Schlüssel-Werte in der neuen Reihenfolge vorhanden sind, die empfangen werden können. Nach der Verarbeitung der Schlüssel-Werte darf das Programm nicht verlassen werden, sondern muss erneut für die Anzeige durchlaufen werden.

Wx_GetReseqArrInt() – Numerische Schlüssel-Werte in neuer Reihenfolge

Sofern Daten aus einer Resequenzierungsoperation (--> Prüfung über Funktion Wx_isModeReseq()) zurückgegeben wurden, können mit Hilfe der Funktion Wx_GetReseqArrInt() bis zu 256 (aktuelle Begrenzung) numerische Schlüssel-Werte in eine Feldgruppe ausgegeben werden.
Enthält die Liste mehr als 256 Datensätze, bricht die Funktion ab. Der Fehler kann über eine Monitor-Group abgefangen werden.

Prototype

***************************************************************************
P* Procedure name: Wx_GetReseqArrInt
P* Purpose: Get Array Integer Key Values in an array ordered in the
P* modified sequence
P* = Will only work for Relative Record No or Integer Key Values
P* = No Decimal Positions will be returned
P* Returns: Array Big Integer Key Values
P* Parameters: POutElem => Number of Elements (Optional)
P* Parameters: ParReload => True=Reload URL (Optional)
P* (independent if already filled or not)
P* Parameters: ParRmvDft => Remove Default Values from Return String
P* Not Passed or True --> Remove Default Value
//-------------------------------------------------------------------------
P* Attention: A maximum of RefElemParms (Currently 256) key values
***********************************************************************
D Wx_GetReseqArrInt...
D PR 20U 0 Dim(RefElemParms) OpDesc
D POutElem 10U 0 Options(*NoPass)
D ParReload N Options(*NoPass) Const
D ParRmvDft N Options(*NoPass) Const
Source Code 221191: Prototype - Funktion Wx_GetReseqArrInt() – Numerische Schlüssel-Werte in neuer Reihenfolge

Parameter

  • Rückgabe-Wert Ganzzahlige Feldgruppe (20U 0) mit 256 Elementen

Für numerische Schlüssel-Werte in der neuen Reihenfolge

  • POutElem Optionaler Ausgabe-Parameter

Anzahl der gefüllten Elemente in der Feldgruppe

Beispiele für den Aufruf

D GblArrInt S 10I 0 Dim(RefElemParms)
D GblNbrElem S 10U 0
D GblIndex S 10I 0
/Free
If Wx_isModeReseq();
Monitor;
GblArrInt = Wx_GetReseqArrInt(GblNbrElem);
If GblNbrElem > *Zeros;
For GblIndex = 1 to GblNbrElem;
EndFor;
EndIf;
On-Error;
GblString = Wx_GetReseqString();
EndMon;
EndIf;
/End-Free
Source Code 222192: Aufruf - Funktion Wx_GetReseqArrInt() – Numerische Schlüssel-Werte in neuer Reihenfolge

Wx_GetReseqArrChar() – alphanumerische Schlüssel-Werte in neuer Reihenfolge

Sofern Daten aus einer Resequenzierungsoperation (--> Prüfung über Funktion Wx_isModeReseq()) zurückgegeben wurden, können mit Hilfe der Funktion Wx_GetReseqArrChar() bis zu 256 (aktuelle Begrenzung) alphanumerische Schlüssel-Werte in eine Feldgruppe ausgegeben werden.
Enthält die Liste mehr als 256 Datensätze, bricht die Funktion ab. Der Fehler kann über eine Monitor-Group abgefangen werden.
Bei zusammengesetzten Schlüsseln, wird je ein String mit allen Schlüssel-Werten für den entsprechenden Datensatz in ein Feldgruppen-Element ausgegeben. Die einzelnen Schlüssel-Werte sind durch das Sonderzeichen Pipe (|) voneinander getrennt. Mit Hilfe der Funktion Wx_SplitStringArr() (3.20.1 Wx_SplitStringArr() – String in Feldgruppe splitten)oder einer eigenen Funktion kann der zusammengesetzte Schlüssel-Wert in eine Feldgruppe aufgesplittet werden.

Prototype

***************************************************************************
P* Procedure name: Wx_GetReseqArrChar
P* Purpose: Get Array Character Key Values in an array ordered in the
P* modified sequence
P* Returns: Array Character Key Values
P* Parameters: POutElem => Number of Elements (Optional)
P* Parameters: ParReload => True=Reload URL (Optional)
P* (independent if already filled or not)
P* Parameters: ParRmvDft => Remove Default Values from Return String
P* Not Passed or True --> Remove Default Values
//-------------------------------------------------------------------------
P* Attention: A maximum of RefElemParms (Currently 256) key values
***************************************************************************
D Wx_GetReseqArrChar...
D PR Like(FldRef.TextVar) OpDesc
D Dim(RefElemParms)
D POutElem 10U 0 Options(*NoPass)
D ParReload N Options(*NoPass) Const
D ParRmvDft N Options(*NoPass) Const
Source Code 223193: Prototype - Funktion Wx_GetReseqArrChar() – alphanumerische Schlüssel-Werte in neuer Reihenfolge

Parameter

  • Rückgabe-WertAlphanumerische Feldgruppe (256A varying) mit 256 Elementen

Für alphanumerische Schlüssel-Werte in der neuen Reihenfolge

  • POutElem Optionaler Ausgabe-Parameter

Anzahl der gefüllten Elemente in der Feldgruppe

Beispiele für den Aufruf

D GblString S 16350A Varying
D GblArrChar S 256A Varying Dim(RefElemParms)
D GblNbrElem S 10U 0
D GblIndex S 3U 0
*--------------------------------------------------------------------------------
/Free
If Wx_isModeReseq();
Monitor;
GblArrChar = Wx_GetReseqArrChar(GblNbrElem);
If GblNbrElem > *Zeros;
For GblIndex = 1 to GblNbrElem;
EndFor;
EndIf;
On-Error;
GblString = Wx_GetReseqString();
EndMon;
EndIf;
/End-Free
Source Code 224194: Aufruf – Funktion Wx_GetReseqArrChar() – alphanumerische Schlüssel-Werte in neuer Reihenfolge

Wx_GetReseqArrUC() – Unicode-Schlüssel-Werte in neuer Reihenfolge

Sofern Daten aus einer Resequenzierungsoperation (--> Prüfung über Funktion Wx_isModeReseq()) zurückgegeben wurden, können mit Hilfe der Funktion Wx_GetReseqArrUC() bis zu 256 (aktuelle Begrenzung) Double-Byte-Unicode-Schlüssel-Werte (RPG-Datentyp C) in eine Feldgruppe ausgegeben werden.
Enthält die Liste mehr als 256 Datensätze, bricht die Funktion ab. Der Fehler kann über eine Monitor-Group abgefangen werden.
Bei zusammengesetzten Schlüsseln, wird je ein String mit allen Schlüssel-Werten für den entsprechenden Datensatz in ein Feldgruppen-Element ausgegeben. Die einzelnen Schlüssel-Werte sind durch das Sonderzeichen Pipe (|) voneinander getrennt. Mit Hilfe der Funktion Wx_SplitStringArrUC2() (3.20.2 Wx_SplitStringArrUC2() – Unicode-Test in Feldgruppe splitten )oder einer eigenen Funktion kann der zusammengesetzte Schlüssel-Wert aufgesplittet werden.

Prototype

***************************************************************************
P* Procedure name: Wx_GetReseqArrUC
P* Purpose: Get Array Unicode Key Values in an array ordered in the m
P* Returns: Array Unicode Key Values
P* Parameters: POutElem => Number of Elements (Optional)
P* Parameters: ParReload => True=Reload URL (Optional)
P* (independent if already filled or not)
P* Parameters: ParRmvDft => Remove Default Values from Return String
P* Not Passed or True --> Remove Default Value
//-------------------------------------------------------------------------
P* Attention: A maximum of RefElemParms (Currently 256) key values can
***************************************************************************
D Wx_GetReseqArrUC...
D PR Like(FldRef.UCVAR) OpDesc
D Dim(RefElemParms)
D POutElem 10U 0 Options(*NoPass)
D ParReload N Options(*NoPass) Const
D ParRmvDft N Options(*NoPass) Const
Source Code 225195: Prototype - Funktion Wx_GetReseqArrUC2r() – Unicode-Schlüssel-Werte in neuer Reihenfolge

Parameter

  • Rückgabe-Wert Double-Byte-Unicode-Feldgruppe (256C varying) mit 256 Elementen

Für Double-Byte-Unicode-Schlüssel-Werte in der neuen Reihenfolge

  • POutElem Optionaler Ausgabe-Parameter

Anzahl der gefüllten Elemente in der Feldgruppe

Beispiele für den Aufruf

D GblString S Like(FldRefLU.VarLen)
D GblArrUC2 S Like(FldRef.UCVar) Dim(RefElemParms)
D GblNbrElem S 10U 0
D GblIndex S 3U 0
*--------------------------------------------------------------------------------
/Free
If Wx_isModeReseq();
Monitor;
GblArrUC2 = Wx_GetReseqArrUC2(GblNbrElem);
If GblNbrElem > *Zeros;
For GblIndex = 1 to GblNbrElem;
EndFor;
EndIf;
On-Error;
GblString = Wx_GetReseqStringUC2();
EndMon;
EndIf;
/End-Free
Source Code 226196: Aufruf – Funktion Wx_GetReseqArrUC() – Unicode-Schlüssel-Werte in neuer Reihenfolge

Wx_GetReseqString() – AlphaString mit Schlüsseln in neuer Reihenfolge

Sofern Daten aus einer Resequenzierungsoperation (--> Prüfung über Funktion Wx_isModeReseq()) zurückgegeben wurden, können mit Hilfe der Funktion Wx_GetReseqString() alle Schlüssel-Werte, die durch ein Hash-Zeichen (#) getrennt wurden, in einem einzigen String ausgegeben werden.
Dies ist erforderlich, sofern die zu sortierende Liste mehr als 256 Zeilen enthält und damit nicht mehr über eine der Funktionen Wx_GetReseqArrInt(), Wx_GetReseqArrChar oder Wx_GetReseqArrUC() direkt in eine Feldgruppe ausgegeben werden kann.
Der Ausgabe-String kann aktuell nur maximal 16350 Zeichen beinhalten. Werden mehr Informationen ausgegeben, so werden diese abgeschnitten.
Der Programmierer muss die Schlüssel-Information basierend auf dem Trennzeichen (#) aufsplitten und verarbeiten.

Prototype

***************************************************************************
P* Procedure name: Wx_GetReseqString
P* Purpose: Get All Occurences for resequencing in a single string
P* = Keys are separated by a #
P* = Programmer has to split the values by himself
P* Returns: Character String
P* Parameters:
***************************************************************************
D Wx_GetReseqString...
D PR Like(FldRefLA.VarLen) OpDesc
Source Code 227197: Prototype - Funktion Wx_GetReseqString() – String mit Schlüssel-Werten in neuer Reihenfolge

Parameter

  • Rückgabe-Wert alphanumerischer String mit allen, durch Hash-Zeichen (#) getrennte Schlüssel-Werten in der neuen Reihenfolge

Beispiele für den Aufruf

D GblString S Like(FldRefLA.VarLen)
*-------------------------------------------------------------------------------
/Free
If Wx_isModeReseq();
GblString = Wx_GetReseqString();
EndIf;
/End-Free
Source Code 228198: Aufruf – Funktion Wx_GetReseqString() –String mit Schlüssel-Werten in neuer Reihenfolge

Wx_GetReseqStringUC() – Unicode-String mit Schlüsseln in neuer Reihenfolge

Sofern Daten aus einer Resequenzierungsoperation (--> Prüfung über Funktion Wx_isModeReseq()) zurückgegeben wurden, können mit Hilfe der Funktion Wx_GetReseqStringUC() alle Schlüssel-Werte, die durch ein Hash-Zeichen (#) getrennt wurden in einem einzigen Double-Byte-Unicode-String (RPG-Datentyp C) ausgegeben werden.
Dies ist erforderlich, sofern die zu sortierende Liste mehr als 256 Zeilen enthält und damit nicht mehr über eine der Funktionen Wx_GetReseqArrInt(), Wx_GetReseqArrChar oder Wx_GetReseqArrUC() direkt in eine Feldgruppe ausgegeben werden kann.
Der Ausgabe-String kann aktuell nur maximal 16350 (Unicode) Zeichen beinhalten. Werden mehr Informationen ausgegeben, so werden diese abgeschnitten.
Der Programmierer muss die Schlüssel-Information basierend auf dem Trennzeichen (#) aufsplitten und verarbeiten.

Prototype

***************************************************************************
P* Procedure name: Wx_GetReseqStringUC
P* Purpose: Get All Occurences for resequencing in a single unicode s
P* = Keys are separated by a #
P* = Programmer has to split the values by himself
P* Returns: Unicode String
P* Parameters:
***************************************************************************
D Wx_GetReseqStringUC...
D PR Like(FldRefLU.VarLen) OpDesc
Source Code 229199: Prototype - Funktion Wx_GetReseqStringUC() – Unicode-String mit Schlüssel-Werten in neuer Reihenfolge

Parameter

  • Rückgabe-WertDouble-Byte-Unicode-String mit allen, durch Hash-Zeichen (#) getrennte Schlüssel-Werten in der neuen Reihenfolge

Beispiele für den Aufruf

D GblString S Like(FldRefLU.VarLen)
*------------------------------------------------------------------------------
/Free
If Wx_isModeReseq();
GblString = Wx_GetReseqStringUC();
EndIf;
/End-Free
Source Code 230200: Aufruf – Funktion Wx_GetReseqStringUC() –Unicode-String mit Schlüssel-Werten in neuer Reihenfolge