[REPORTLINKS]
In dieser Sektion können Verknüpfungen (Links) hinterlegt werden, die automatisch in infra-Dokumente eingebettet und im infra-Previewfenster angezeigt werden, zum Beispiel Verknüpfungen des Felds «Teilenummer» zum Bearbeitungsprogramm für Teile oder Teilestammlisten usw.
Dabei werden Informationen mit einem eindeutigen Bezug zur infra-Datenbank, für die hier eine Verknüpfung hinterlegt ist, blau und unterstrichen im Dokument dargestellt, zum Beispiel die ausgegebene Teilenummer.
Ein linker (!) Mausklick auf einen derartig hervorgehobenen Text öffnet ein Popup-Menü, in dem alle für dieses Objekt in der Sektion [REPORTLINKS] hinterlegten Verknüpfungen angezeigt werden.
In der Globalvariablen "GV_reportlinkobject" wird der im Dokument angeklickte Text zur weiteren Verarbeitung - zum Beispiel in einer IMA-Datei - zur Verfügung gestellt.
Weitere Informationen können über einen speziellen Operator in der Drucksteuertabelle in der Globalvariablen "GV_reportlinkdata" zur Verfügung gestellt werden (siehe unten).
Syntax für die Reportlinks und Prototypen:
Feldname[.lfdNr] = Popup-Einträge
Gilt für alle Tabellen und Programme
Feldname[.lfdNr] = Prototyp (Verweis auf Prototyp)
Gilt für alle Tabellen und Programme
Tabelle.Feldname[.lfdNr] = Popup-Einträge
Gilt für diese Tabelle und alle Programme
Tabelle.Feldname[.lfdNr] = Prototyp (Verweis auf Prototyp)
Gilt für diese Tabelle und alle Programme
Programm.Feldname[.lfdNr] = Popup-Einträge
Gilt für dieses Programm und das Feld
Programm.Feldname[.lfdNr] = Prototyp (Verweis auf Prototyp)
Gilt für dieses Programm und das Feld
Programm.Tabelle.Feldname[.lfdNr] = Popup-Einträge
Gilt für dieses Programm und das Feld in dieser Tabelle
Programm.Tabelle.Feldname[.lfdNr] = Prototyp (Verweis auf Prototyp)
Gilt für dieses Programm und das Feld in dieser Tabelle
Verweis auf Prototyp[.lfdNr] = Popup-Einträge
Prototypen, auf die verwiesen wird
Verweis aus MIL[.lfdNr] = Popup-Einträge
Verweis aus MIL[.lfdNr] = Prototyp (Verweis auf Prototyp)
Der Verweisname wird in der Drucksteuertabelle vergeben (situationsabhängige Verweise).
Um den Bezug zu den Ausgabefeldern im infra-Previewfenster herzustellen, werden die Feld- und Tabellennamen aus dem infra-DataDictionary benutzt. Die Namen der Tabellen (Datenbankdateien) werden im infra-Datenbankstatus in Klammern hinter der Bezeichnung einer Datenbankdatei in der Auswahlliste angezeigt. Die Feldnamen stehen in der Spalte "Feldname" in der Liste der Felder einer Datenbankdatei. Soll beispielsweise ein Bezug zur Kundennummer aus der Kundenstammtabelle hergestellt werden, wäre die Syntax "KUNDE.Knd=...". Als Verknüpfung kann mittels "Prototyp (Verweis auf Prototyp)" auch auf einen Prototyp verwiesen werden. Der Prototyp selbst wird in derselben Syntax hinterlegt wie die direkt angegebenen Links, aber auf der linken Seite steht der "Verweis auf Prototyp" (siehe Beispiel weiter unten).
Die Verknüpfungen können sehr allgemein gehalten werden, wenn lediglich ein Feldname als Schlüssel benutzt wird. Soll zum Beispiel überall dort eine Verknüpfung zur Verfügung gestellt werden, wo eine Teilenummer in einer Liste bzw. einem Dokument ausgegeben wird, reicht das Wort "Teil" als Schlüsselbegriff. Soll diese Verknüpfung nur für ein bestimmtes infra-Programm (zum Beispiel PDV124), aber dort für alle Teilenummern - egal aus welcher Tabelle (Datenbankdatei) - gelten, muss als Schlüsselbegriff "PDV124.Teil" angegeben werden. Weitere Eingrenzungen sind über die Tabellennamen möglich, so dass schließlich eindeutige eindeutige Verknüpfungen für ein ganz bestimmtes Programm ermöglicht werden (zum Beispiel "PDV124.STUELIS.Member").
Die Syntax der Popup-Einträge entspricht den Einträgen der Sektion [POPUP]. Dabei können einem Schlüsselbegriff gleichzeitig mehrere Popup-Einträge zugeordnet werden (geschweifte Klammern). Durch die Verwendung einer laufenden Nummer ("lfdNr") kann aber auch jeder einzelne Eintrag im Popup-Menü mit einem eigenen Schlüssel in der Sektion [REPORTLINKS] eingetragen werden. Das ist besonders dann sinnvoll, wenn einzelne Standard-Einträge individuell beim Anwender ersetzt werden sollen.
Achtung:
Für individuelle Anpassungen dürfen nur die laufenden Nummern ab 9000 verwendet werden. Bis 8999 sind diese für den Standard reserviert.
Prototyp-Verweise
Um den Aufwand für die Erstellung und die Pflege zu reduzieren, können ReportLinks für gleichartige Felder über einen Verweis auf einen Prototypen erfolgen, anstatt alle Menüeinträge des jeweiligen ReportLinks zu duplizieren. Zum Beispiel sollen für die Teilenummer immer dieselben Links benutzt werden, unabhängig davon, ob über den Feldnamen «Teil», «Owner» oder «Member» verwiesen wird. Für einen ReportLink-Eintrag können mehrere Verweise auf Prototypen angegeben werden. Über selbstdefinierte Begriffe, die nicht mit Feldnamen der infra-Datenbank übereinstimmen dürfen, können ReportLink-Vorlagen geschaffen werden, auf die dann bei den eigentlichen ReportLink-Feldern verwiesen wird.
Prototyp-Verweise können nicht mehrstufig verschachtelt werden.
Eine Mischung aus Verweisen auf Prototypen und "direkten" Links ist zulässig.
Beispiel
[REPORTLINKS]
// Prototyp fuer Teilenummern
PT_Teil.1000 = "111 Teilestamm",RL_111.ima,CbpProcessMakroFile
PT_Teil.1001 = "113 Teilestammliste",RL_113.ima, CbpProcessMakroFile
// Prototyp fuer Bezug von Teilenummern zu Stueckliste
PT_Stueli.1000 = "121 Stückliste bearbeiten",RL_121.ima,CbpProcessMakroFile
PT_Stueli.1001 = "122 Baukastenstückliste",RL_122.ima, CbpProcessMakroFile
PT_Stueli.1002 = "124 Strukturstückliste",RL_124.ima, CbpProcessMakroFile
PT_Stueli.1003 = "127 Teileverwendungsliste",RL_127.ima, CbpProcessMakroFile
// Reportlink fuer Feld-ID Teil (Teilenummer) in allen Dateien
Teil.1000=Prototyp(PT_Teil)
Teil.1001=Prototyp(PT_Stueli)
// Reportlink fuer Feld-ID Owner (Teilenummer) in allen Dateien
Owner.1000=Prototyp(PT_Teil)
Owner.1001=Prototyp(PT_Stueli)
Beispiel
PDV124.Teil.9000="Baukasten bearbeiten",pdv121.ima,CBpProcessMakroFile
Sehr sinnvoll sind in diesem Zusammenhang Verknüpfungen mit einer IMA-Datei (siehe Kapitel 16.01 Makrogesteuerte Abläufe).
Durch folgenden Eintrag wird für die Strukturstückliste eine Verknüpfung zwischen der Teilenummer des aufgelösten Teils einer IMA-Datei hergestellt, über die das Programm PDV121 zur Bearbeitung des zum aufgelösten Teil gehörigen Baukastens aufgerufen werden kann:
PDV124.Teil="Baukasten bearbeiten",pdv121.ima,CBpProcessMakroFile
Die folgende IMA_Datei (pdv121.ima) zeigt den Aufruf des Programms PDV121 und die Verwendung der Globalvariablen GV_reportlinkobject zur Übernahme des angeklickten Textobjekts in ein Eingbefeld:
// Variablen definieren
GwCore obj = NULL;
GwCore dialog = NULL;
// 121 starten
execute_callback(this,"CBsGotoModProc","121");
// auf 121 Dialog warten
dialog = find_frame("PDV121_1");
while(!dialog)
{
wait(1);
dialog = find_frame("PDV121_1");
}
// Teilenummer versorgen
obj = child(dialog,"PDV121_1_F1");
while(!obj)
{
wait(1);
obj = child(dialog,"PDV121_1_F1");
}
wait(1);
set_text(obj,do_infra_macro(obj,"GV(GV_reportlinkobject)"));
update_buffer(obj);
// Okay
obj = child(dialog,"PB_OKAY");
while(!is_sensitive(obj))
wait(1);
activate_control(obj);
ReportLinks mit zusätzlicher Datenübergabe, zum Beispiel aus IMA-Dateien
Mit dem Operator "C:$RLDATA" für Drucksteuertabellen (MILs) können zusätzliche Daten zur Verwendung beim Aufruf eines ReportLinks übergeben werden. Die Daten werden in der Globalvariable "GV_reportlinkdata" abgelegt und können zum Beispiel in der durch den ReportLink aufgerufenen IMA-Datei ausgewertet werden. Das ist dann sinnvoll, wenn anhand des eigentlichen ReportLink-Objekts (zum Beispiel einer Beleg- oder Auftragsnummer) in der IMA-Datei nicht erkannt werden kann, ob es sich um eine Bestellung, einen Kundenauftrag oder einen Fertigungsauftrag handelt. Oder aber es soll zusätzlich zu einer Teilenummer das Lager übergeben werden, um den betreffenden Lagerstamm zu lesen.
ReportLinks abhängig von Situation
Mit dem Operator "C:$RLDATA" für Drucksteuertabellen (MILs) können nicht nur wie oben beschrieben zusätzliche Daten zur Verwendung beim Aufruf eines ReportLinks übergeben werden. durch die Angabe eines zusätzlichen Parameters (/INI) zum Operator wird der Wert dazu verwendet, einen eigenen Verweisschlüssel für die Sektion [REPORTLINKS] zu definieren und den Standard-Mechanismus (Zugriff über Feldname) zu übersteuern. So lassen sich situations- bzw. datenabhängige Verweise realisieren, wenn zum Beispiel ein bestimmtes Feld bei der Druckausgabe für unterschiedliche Inhalte benutzt wird (siehe Beispiel).
Hinweis
Der selbstdefinierte Verweisschlüssel darf nicht als Feldname in infra:NET vorkommen.
Beispiel
Die Vorgangsnummer in Modul 375 "Teile-Dispositionskarte" ist abhängig von der jeweiligen Dispositionsart eine Bestell-, Kundenauftrags- oder Fertigungsauftragsnummer. Bei der Verwendung des Feldnamens (DISPBEW.Auftrag) für die Definition von ReportLinks lässt sich keine Unterscheidung für die zu hinterlegenden Links realisieren, so dass alle Links für die unterschiedlichen Dispositionsarten angegeben werden müssen. Das ist für den Benutzer nicht besonders komfortabel, da je nach angeklickter Vorgangsnummer immer nur einige der angezeigten ReportLinks sinnvoll genutzt werden könnten.
Um dies zu umgehen, wird bei der Druckausgabe mit dem C:$RLDATA-Operator für die Vorgangsnummer ein dynamischer Verweisschlüssel für die Sektion [REPORTLINKS] angegeben. Danach werden die anzuzeigenden ReportLinks nicht mehr über den Feldnamen gesucht, sondern über diesen Verweis. In der Drucksteuertabelle (MIL) muss der C:$RLDATA-Operator unmittelbar vor Ausgabe der Vorgangsnummer angegeben werden:
{MBP375,100}
...
C:$RLDATA(Trim(MBP375Vorgang_)Trim(LBUF(255,390,1)),/INI)#
V:2,255,392,I23F11#
...
Der Begriff, der an den C:$RLDATA-Operator übergeben wird, setzt sich in diesem Fall aus 2 Teilen zusammen: dem festen Text "MBP375Vorgang_" und der Dispositionsart aus dem Erfassungspuffer des Programms, mit der Eintrag in der INI-Datei sprechender ist. Die Trim-Makros sind notwendig, um die beiden Teilbegriffe lückenlos aneinander zu reihen.
Als ReportLinks können dann zum Beispiel folgende Einträge für die unterschiedlichen Dispositionsarten hinterlegt werden:
[REPORTLINKS]
MBP375Vorgang_K.1000 = "435 Kundenaufträge",RL_435.ima, CbpProcessMakroFile
MBP375Vorgang_F.1000 = "531 Fertigungsaufträge",RL_531.ima, CbpProcessMakroFile
MBP375Vorgang_B.1000 = "731 Einkaufsvorgänge",RL_731.ima, CBpProcessMakroFile
