PMS32 Online- Hilfereferenz
Inventur -Pos
Eingabe des Datums oder Auswahl in der Kalendermaske mit STRG+F2 oder durch Mausklick auf den Button rechts neben dem Datumsfeld.
Dies ist das Datum an dem die gezählte Menge der Inventur (ZMENGE) in das Buchungsjournal (I21, Lagerbewegungsdaten) übertragen wurde. Dieses Feld wird automatisch vom System gefüllt und ist nicht editierbar.
Mengeneingabe in der entsprechenden Einheit vornehmen. Bei Mengenfeldern mit verschiedenen Einheiten, kann die Einheit mit F2 ausgewählt werden. Beispiel: Menge einer Baugruppenposition.
Hier sehen Sie den Buchungsbestand zum Zeitpunkt der Freigabe zum Zählen (Maske=I4003)
Preisfeld in Firmenwährung. Diese Feld enthält einen Wert in Firmenwährung.
Dieser Wert wird aus dem Lagerjournal (I01) zum Zeitpunkt der Freigabe zum Zählen (Maske=I4003) ermittelt.
Das folgende Beispiel zeigt die Berechnung des gleitenden Durchschnittspreises:
Artikel A ist mit 100 Stück auf dem Lager. Stückpreis 10 €uro.
Durchschnittspreis für diesen "alten" Artikel: (100 * 10) / 100 = 10 €uro.
Von Artikel A werden 100 neu bestellt mit einem Stückpreis von 20 €uro.
Durchschnittspreis für diesen "neuen" Artikel: (100 * 20) / 100 = 20 €uro.
Gleitender Durchschnittspreis über alle 200 Artikel A:
((100 * 10) + (100 * 20)) / 200 = 15 €uro
Textfelder, sind variable Speicherfelder in denen Informationen bis zu einer Größe von 2GB gespeichert werden können. Die Unterscheidung der Textfelder liegt in ihrem Namen. NOTIZ z.B. wird ausschlieslich für Notizen benutzt. Andere Textfelder wiederum werden beim Erstellen von Vorgängen bzw. Bestellungen aus Stammfeldern übernommen. Im Vorgang: B01.BEZ => E11.BEZ, B01.LANG => E11.LANG. In den Textfeldern können folgende Funktionen über Funktionstasten oder ein ShortCut - Menü (Rechte Maustaste) aufgerufen werden: F2 - Sprung in die Maske C40 - Langtexte, F3 - Auswahl aus C40 - Langtexte und F4 - vergrößerte Eingabe in einer separaten Maske. Diese Funktionen können je nach Textfeld variieren!
Jeder einzelnen Position in einer Inventurliste wird eine eindeutige Nummer zugeornet, mit der das System diese Position für jede Positionsliste identifizieren kann.
Datum und Uhrzeit der Erstellung der Inventurliste
Datum- Uhrzeitfeld. Eingabe des Datums incl. der Uhrzeit. Die Eingabemakse richtet sich nach der Einstellung der Systemvorgaben Ihres Rechnersystems! "Regions- und Sprachoptionen".
Datum und Uhrzeit des Ausdrucks der Inventurliste
Datum- Uhrzeitfeld. Eingabe des Datums incl. der Uhrzeit. Die Eingabemakse richtet sich nach der Einstellung der Systemvorgaben Ihres Rechnersystems! "Regions- und Sprachoptionen".
Datum und Uhrzeit des Inventurbeginns
Datum- Uhrzeitfeld. Eingabe des Datums incl. der Uhrzeit. Die Eingabemakse richtet sich nach der Einstellung der Systemvorgaben Ihres Rechnersystems! "Regions- und Sprachoptionen".
Datum und Uhrzeit der Inventurbeendung
Datum- Uhrzeitfeld. Eingabe des Datums incl. der Uhrzeit. Die Eingabemakse richtet sich nach der Einstellung der Systemvorgaben Ihres Rechnersystems! "Regions- und Sprachoptionen".
Datum und Uhrzeit der Mengeneingabe
Datum- Uhrzeitfeld. Eingabe des Datums incl. der Uhrzeit. Die Eingabemakse richtet sich nach der Einstellung der Systemvorgaben Ihres Rechnersystems! "Regions- und Sprachoptionen".
Datum und Uhrzeit der Inventurbuchung
Datum- Uhrzeitfeld. Eingabe des Datums incl. der Uhrzeit. Die Eingabemakse richtet sich nach der Einstellung der Systemvorgaben Ihres Rechnersystems! "Regions- und Sprachoptionen".
Datum und Uhrzeit der Stornierung
Datum- Uhrzeitfeld. Eingabe des Datums incl. der Uhrzeit. Die Eingabemakse richtet sich nach der Einstellung der Systemvorgaben Ihres Rechnersystems! "Regions- und Sprachoptionen".
Preisfeld in Firmenwährung. Diese Feld enthält einen Wert in Firmenwährung.
Enthält den EK-Netto aus dem Artikelstamm
Geschäftsjahr der Inventur. Der Wert kann mit 4 Stellen angegeben werden. Inventuren des gleichen Geschäftsjahres bewirken einen Filter auf Artikel die im gleichen Geschäftsjahr schon gezählt wurden. Damit müssen Artikel nicht mehrmals innerhalb des gleichen Geschäftsjahres gezählt werden.
Relationales Feld (Lookup) in den Artikelstamm. Der Feldinhalt wird meistens durch F2 bzw. F3 - Auswahl gefüllt.
Relationales Feld zum Artikelstamm. Dieses Feld ist ein Lookup- relationales Feld in den Artikelstamm (B01). Bei SQL Abfragen wird dieses Feld zur Verknüpfung der eigentlichen Tabelle mit dem Artikelstamm benötigt. Ein Beispiel: SELECT b01.artnr, i33.menge_i FROM i33, b01 WHERE i33.idb01 = b01.idb01 AND ...
*/ Dieses Feld ist ein relationales Feld zur Tabelle: B01 - Artikelstamm */ Evetuell ist dieses Feld NICHT gefüllt, dann besteht keine relationale Verbindung zwischen I41 und B01... */ Eine SQL - Abfrage zum Ermitteln von Quelle und Ziel: SELECT I41.IDB01 AS _Quelle, B01.IDB01 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") LEFT OUTER JOIN (My.Clients.Path.cDbfDir+"B01.DBF") ON I41.IDB01=B01.IDB01 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Der obige Cursor enthält alle Datensätze der Tabelle I41 im Feld _Quelle und nur vorhandene Datensätze der Tabelle B01 */ Besteht keine relationale Verbindung, so ist der Inhalt der Cursorspalte _Ziel = .NULL. */ Die 'gleiche' Abfrage in der NUR relationale Daten vonhanden sind: SELECT I41.IDB01 AS _Quelle, B01.IDB01 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") INNER JOIN (My.Clients.Path.cDbfDir+"B01.DBF") ON I41.IDB01=B01.IDB01 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Geht auch so... SELECT I41.IDB01 AS _Quelle, B01.IDB01 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") , (My.Clients.Path.cDbfDir+"B01.DBF") ; WHERE I41.IDB01=B01.IDB01 AND I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Es gibt auch einen Zugriff über die My - Struktur, die ein Tabellen-Objekt zurückgibt... LOCAL loB01 AS Object loB01 = My.Bussines.Strain.Misc.oB01[I41.IDB01] IF !EMPTY(loB01.IDB01) */ Dann wurde der Datensatz in der Tabelle B01 gefunden! */ Weiterer Code kann hier stehen... ENDIF
Lookup in : Lagerplätze (C01). Eine Änderung erfolgt durch F3 - Auswahl. Der Srung zu Stammtabelle erfolgt mit F2
Lookup- bzw. relationale Felder werden benötigt um Tabellen mittels SQL Select oder einer Relation zu verbinden. Durch die Namensgebung der Lookupfelder kann aus dem Feldnamen "meistens" die Zieltabelle der Relation bestimmt werden. Alle Relationen werden in PMS32 über sogenannte ID- Felder hergestellt, wobei die Zieltabelle ab der dritten Stelle des Feldnamens bis zur fünften Stelle des Feldnames angegeben ist. Aus ein paar Beispielen: D51.IDB01 => B01, I40.IDC42VKB => C42, I50.IDC25B => C25. Mit der Formel aus dem Codeblock kann zu "fast" allen ID Feldern die entsprechende Zieltabelle ermittelt werden. Spezial- Lookupfelder wie z.B.: I20.IDZWI oder I23.IDAUFA... benötigen zur Bestimmung die entsprechende IP, mit der über die Systemtabelle Y01 die entsprechende Zieltabelle ermittelt werden kann.
*/ Dieses Feld ist ein relationales Feld zur Tabelle: C01 - Lagerplätze
*/ Evetuell ist dieses Feld NICHT gefüllt, dann besteht keine relationale Verbindung zwischen I41 und C01...
*/ Eine SQL - Abfrage zum Ermitteln von Quelle und Ziel:
SELECT I41.IDC01 AS _Quelle, C01.IDC01 AS _Ziel ;
FROM (My.Clients.Path.cDbfDir+"I41.DBF") LEFT OUTER JOIN ("C01") ON I41.IDC01=C01.IDC01 ;
WHERE I41.... ;
INTO CURSOR qI41 NOFILTER READWRITE
*/ Der obige Cursor enthält alle Datensätze der Tabelle I41 im Feld _Quelle und nur vorhandene Datensätze der Tabelle C01
*/ Besteht keine relationale Verbindung, so ist der Inhalt der Cursorspalte _Ziel = .NULL.
*/ Die 'gleiche' Abfrage in der NUR relationale Daten vonhanden sind:
SELECT I41.IDC01 AS _Quelle, C01.IDC01 AS _Ziel ;
FROM (My.Clients.Path.cDbfDir+"I41.DBF") INNER JOIN ("C01") ON I41.IDC01=C01.IDC01 ;
WHERE I41.... ;
INTO CURSOR qI41 NOFILTER READWRITE
*/ Geht auch so...
SELECT I41.IDC01 AS _Quelle, C01.IDC01 AS _Ziel ;
FROM (My.Clients.Path.cDbfDir+"I41.DBF") , ("C01") ;
WHERE I41.IDC01=C01.IDC01
AND I41.... ;
INTO CURSOR qI41 NOFILTER READWRITE
Relationales Feld (Lookup) in die Einheitenabelle. Der Feldinhalt wird meistens durch F2 bzw. F3 - Auswahl gefüllt.
Relationales Feld (Lookup) in die Einheitenabelle. Der Feldinhalt wird meistens durch F2 bzw. F3 - Auswahl gefüllt. Hier kann die Einheit des Artikels mit F3 geändert werden. Bitte beachten Sie in diesem Zusammenhang, dass eventuell bei einer Änderung der Einheit auch eine Änderung des Umrechnungsfaktors zur Basiseinheit vorgenommen werden muss. Siehe dazu auch die Umrechnungsfaktoren der Mengeneinheiten.
*/ Dieses Feld ist ein relationales Feld zur Tabelle: C19 - Einheiten-Basiseinheiten */ Evetuell ist dieses Feld NICHT gefüllt, dann besteht keine relationale Verbindung zwischen I41 und C19... */ Eine SQL - Abfrage zum Ermitteln von Quelle und Ziel: SELECT I41.IDC19MELA AS _Quelle, C19.IDC19 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") LEFT OUTER JOIN (My.Clients.Path.cDbfDir+"C19.DBF") ON I41.IDC19MELA=C19.IDC19 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Der obige Cursor enthält alle Datensätze der Tabelle I41 im Feld _Quelle und nur vorhandene Datensätze der Tabelle C19 */ Besteht keine relationale Verbindung, so ist der Inhalt der Cursorspalte _Ziel = .NULL. */ Die 'gleiche' Abfrage in der NUR relationale Daten vonhanden sind: SELECT I41.IDC19MELA AS _Quelle, C19.IDC19 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") INNER JOIN (My.Clients.Path.cDbfDir+"C19.DBF") ON I41.IDC19MELA=C19.IDC19 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Geht auch so... SELECT I41.IDC19MELA AS _Quelle, C19.IDC19 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") , (My.Clients.Path.cDbfDir+"C19.DBF") ; WHERE I41.IDC19MELA=C19.IDC19 AND I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Es gibt auch einen Zugriff über die My - Struktur, die ein Tabellen-Objekt zurückgibt... LOCAL loC19 AS Object loC19 = My.Bussines.Strain.Misc.oC19[I41.IDC19MELA] IF !EMPTY(loC19.IDC19) */ Dann wurde der Datensatz in der Tabelle C19 gefunden! */ Weiterer Code kann hier stehen... ENDIF
Lookup in : Benutzer (C65). Eine Änderung erfolgt durch F3 - Auswahl. Der Srung zu Stammtabelle erfolgt mit F2
Lookup- bzw. relationale Felder werden benötigt um Tabellen mittels SQL Select oder einer Relation zu verbinden. Durch die Namensgebung der Lookupfelder kann aus dem Feldnamen "meistens" die Zieltabelle der Relation bestimmt werden. Alle Relationen werden in PMS32 über sogenannte ID- Felder hergestellt, wobei die Zieltabelle ab der dritten Stelle des Feldnamens bis zur fünften Stelle des Feldnames angegeben ist. Aus ein paar Beispielen: D51.IDB01 => B01, I40.IDC42VKB => C42, I50.IDC25B => C25. Mit der Formel aus dem Codeblock kann zu "fast" allen ID Feldern die entsprechende Zieltabelle ermittelt werden. Spezial- Lookupfelder wie z.B.: I20.IDZWI oder I23.IDAUFA... benötigen zur Bestimmung die entsprechende IP, mit der über die Systemtabelle Y01 die entsprechende Zieltabelle ermittelt werden kann.
*/ Dieses Feld ist ein relationales Feld zur Tabelle: C65 - Benutzer */ Evetuell ist dieses Feld NICHT gefüllt, dann besteht keine relationale Verbindung zwischen I41 und C65... */ Eine SQL - Abfrage zum Ermitteln von Quelle und Ziel: SELECT I41.IDC65 AS _Quelle, C65.IDC65 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") LEFT OUTER JOIN (My.Clients.Path.cSysDir+"C65.DBF") ON I41.IDC65=C65.IDC65 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Der obige Cursor enthält alle Datensätze der Tabelle I41 im Feld _Quelle und nur vorhandene Datensätze der Tabelle C65 */ Besteht keine relationale Verbindung, so ist der Inhalt der Cursorspalte _Ziel = .NULL. */ Die 'gleiche' Abfrage in der NUR relationale Daten vonhanden sind: SELECT I41.IDC65 AS _Quelle, C65.IDC65 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") INNER JOIN (My.Clients.Path.cSysDir+"C65.DBF") ON I41.IDC65=C65.IDC65 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Geht auch so... SELECT I41.IDC65 AS _Quelle, C65.IDC65 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") , (My.Clients.Path.cSysDir+"C65.DBF") ; WHERE I41.IDC65=C65.IDC65 AND I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Es gibt auch einen Zugriff über die My - Struktur, die ein Tabellen-Objekt zurückgibt... LOCAL loC65 AS Object loC65 = My.Bussines.Strain.Misc.oC65[I41.IDC65] IF !EMPTY(loC65.IDC65) */ Dann wurde der Datensatz in der Tabelle C65 gefunden! */ Weiterer Code kann hier stehen... ENDIF
Relationales Feld (Lookup) in die Lagerorttabelle. Der Feldinhalt wird meistens durch F2 bzw. F3 - Auswahl gefüllt.
Relationales Feld zur Lagerorttabelle. Dieses Feld ist ein Lookup- relationales Feld in die Lagerorttabelle (C66). Bei SQL Abfragen wird dieses Feld zur Verknüpfung der eigentlichen Tabelle mit der Lagerorttabelle benötigt. Ein Beispiel: SELECT c66.match, i20.menge_s FROM i20,c66 WHERE i20.idc66 = c66.idc66 AND ...
*/ Dieses Feld ist ein relationales Feld zur Tabelle: C66 - Lagerorte */ Evetuell ist dieses Feld NICHT gefüllt, dann besteht keine relationale Verbindung zwischen I41 und C66... */ Eine SQL - Abfrage zum Ermitteln von Quelle und Ziel: SELECT I41.IDC66 AS _Quelle, C66.IDC66 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") LEFT OUTER JOIN (My.Clients.Path.cDbfDir+"C66.DBF") ON I41.IDC66=C66.IDC66 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Der obige Cursor enthält alle Datensätze der Tabelle I41 im Feld _Quelle und nur vorhandene Datensätze der Tabelle C66 */ Besteht keine relationale Verbindung, so ist der Inhalt der Cursorspalte _Ziel = .NULL. */ Die 'gleiche' Abfrage in der NUR relationale Daten vonhanden sind: SELECT I41.IDC66 AS _Quelle, C66.IDC66 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") INNER JOIN (My.Clients.Path.cDbfDir+"C66.DBF") ON I41.IDC66=C66.IDC66 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Geht auch so... SELECT I41.IDC66 AS _Quelle, C66.IDC66 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") , (My.Clients.Path.cDbfDir+"C66.DBF") ; WHERE I41.IDC66=C66.IDC66 AND I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Es gibt auch einen Zugriff über die My - Struktur, die ein Tabellen-Objekt zurückgibt... LOCAL loC66 AS Object loC66 = My.Bussines.Strain.Misc.oC66[I41.IDC66] IF !EMPTY(loC66.IDC66) */ Dann wurde der Datensatz in der Tabelle C66 gefunden! */ Weiterer Code kann hier stehen... ENDIF
Lookup in : Buchungsjournal (I21). Eine Änderung erfolgt durch F3 - Auswahl. Der Srung zu Stammtabelle erfolgt mit F2
Lookup- bzw. relationale Felder werden benötigt um Tabellen mittels SQL Select oder einer Relation zu verbinden. Durch die Namensgebung der Lookupfelder kann aus dem Feldnamen "meistens" die Zieltabelle der Relation bestimmt werden. Alle Relationen werden in PMS32 über sogenannte ID- Felder hergestellt, wobei die Zieltabelle ab der dritten Stelle des Feldnamens bis zur fünften Stelle des Feldnames angegeben ist. Aus ein paar Beispielen: D51.IDB01 => B01, I40.IDC42VKB => C42, I50.IDC25B => C25. Mit der Formel aus dem Codeblock kann zu "fast" allen ID Feldern die entsprechende Zieltabelle ermittelt werden. Spezial- Lookupfelder wie z.B.: I20.IDZWI oder I23.IDAUFA... benötigen zur Bestimmung die entsprechende IP, mit der über die Systemtabelle Y01 die entsprechende Zieltabelle ermittelt werden kann.
*/ Dieses Feld ist ein relationales Feld zur Tabelle: I21 - Buchungsjournal */ Evetuell ist dieses Feld NICHT gefüllt, dann besteht keine relationale Verbindung zwischen I41 und I21... */ Eine SQL - Abfrage zum Ermitteln von Quelle und Ziel: SELECT I41.IDI21 AS _Quelle, I21.IDI21 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") LEFT OUTER JOIN (My.Clients.Path.cDbfDir+"I21.DBF") ON I41.IDI21=I21.IDI21 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Der obige Cursor enthält alle Datensätze der Tabelle I41 im Feld _Quelle und nur vorhandene Datensätze der Tabelle I21 */ Besteht keine relationale Verbindung, so ist der Inhalt der Cursorspalte _Ziel = .NULL. */ Die 'gleiche' Abfrage in der NUR relationale Daten vonhanden sind: SELECT I41.IDI21 AS _Quelle, I21.IDI21 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") INNER JOIN (My.Clients.Path.cDbfDir+"I21.DBF") ON I41.IDI21=I21.IDI21 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Geht auch so... SELECT I41.IDI21 AS _Quelle, I21.IDI21 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") , (My.Clients.Path.cDbfDir+"I21.DBF") ; WHERE I41.IDI21=I21.IDI21 AND I41.... ; INTO CURSOR qI41 NOFILTER READWRITE
Lookup in : Buchungsjournal (I21). Eine Änderung erfolgt durch F3 - Auswahl. Der Srung zu Stammtabelle erfolgt mit F2
Lookup- bzw. relationale Felder werden benötigt um Tabellen mittels SQL Select oder einer Relation zu verbinden. Durch die Namensgebung der Lookupfelder kann aus dem Feldnamen "meistens" die Zieltabelle der Relation bestimmt werden. Alle Relationen werden in PMS32 über sogenannte ID- Felder hergestellt, wobei die Zieltabelle ab der dritten Stelle des Feldnamens bis zur fünften Stelle des Feldnames angegeben ist. Aus ein paar Beispielen: D51.IDB01 => B01, I40.IDC42VKB => C42, I50.IDC25B => C25. Mit der Formel aus dem Codeblock kann zu "fast" allen ID Feldern die entsprechende Zieltabelle ermittelt werden. Spezial- Lookupfelder wie z.B.: I20.IDZWI oder I23.IDAUFA... benötigen zur Bestimmung die entsprechende IP, mit der über die Systemtabelle Y01 die entsprechende Zieltabelle ermittelt werden kann.
*/ Dieses Feld ist ein relationales Feld zur Tabelle: I21 - Buchungsjournal */ Evetuell ist dieses Feld NICHT gefüllt, dann besteht keine relationale Verbindung zwischen I41 und I21... */ Eine SQL - Abfrage zum Ermitteln von Quelle und Ziel: SELECT I41.IDI21B AS _Quelle, I21.IDI21 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") LEFT OUTER JOIN (My.Clients.Path.cDbfDir+"I21.DBF") ON I41.IDI21B=I21.IDI21 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Der obige Cursor enthält alle Datensätze der Tabelle I41 im Feld _Quelle und nur vorhandene Datensätze der Tabelle I21 */ Besteht keine relationale Verbindung, so ist der Inhalt der Cursorspalte _Ziel = .NULL. */ Die 'gleiche' Abfrage in der NUR relationale Daten vonhanden sind: SELECT I41.IDI21B AS _Quelle, I21.IDI21 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") INNER JOIN (My.Clients.Path.cDbfDir+"I21.DBF") ON I41.IDI21B=I21.IDI21 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Geht auch so... SELECT I41.IDI21B AS _Quelle, I21.IDI21 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") , (My.Clients.Path.cDbfDir+"I21.DBF") ; WHERE I41.IDI21B=I21.IDI21 AND I41.... ; INTO CURSOR qI41 NOFILTER READWRITE
Lookup in : Buchungsjournal (I21). Eine Änderung erfolgt durch F3 - Auswahl. Der Srung zu Stammtabelle erfolgt mit F2
Lookup- bzw. relationale Felder werden benötigt um Tabellen mittels SQL Select oder einer Relation zu verbinden. Durch die Namensgebung der Lookupfelder kann aus dem Feldnamen "meistens" die Zieltabelle der Relation bestimmt werden. Alle Relationen werden in PMS32 über sogenannte ID- Felder hergestellt, wobei die Zieltabelle ab der dritten Stelle des Feldnamens bis zur fünften Stelle des Feldnames angegeben ist. Aus ein paar Beispielen: D51.IDB01 => B01, I40.IDC42VKB => C42, I50.IDC25B => C25. Mit der Formel aus dem Codeblock kann zu "fast" allen ID Feldern die entsprechende Zieltabelle ermittelt werden. Spezial- Lookupfelder wie z.B.: I20.IDZWI oder I23.IDAUFA... benötigen zur Bestimmung die entsprechende IP, mit der über die Systemtabelle Y01 die entsprechende Zieltabelle ermittelt werden kann.
*/ Dieses Feld ist ein relationales Feld zur Tabelle: I21 - Buchungsjournal */ Evetuell ist dieses Feld NICHT gefüllt, dann besteht keine relationale Verbindung zwischen I41 und I21... */ Eine SQL - Abfrage zum Ermitteln von Quelle und Ziel: SELECT I41.IDI21BS AS _Quelle, I21.IDI21 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") LEFT OUTER JOIN (My.Clients.Path.cDbfDir+"I21.DBF") ON I41.IDI21BS=I21.IDI21 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Der obige Cursor enthält alle Datensätze der Tabelle I41 im Feld _Quelle und nur vorhandene Datensätze der Tabelle I21 */ Besteht keine relationale Verbindung, so ist der Inhalt der Cursorspalte _Ziel = .NULL. */ Die 'gleiche' Abfrage in der NUR relationale Daten vonhanden sind: SELECT I41.IDI21BS AS _Quelle, I21.IDI21 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") INNER JOIN (My.Clients.Path.cDbfDir+"I21.DBF") ON I41.IDI21BS=I21.IDI21 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Geht auch so... SELECT I41.IDI21BS AS _Quelle, I21.IDI21 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") , (My.Clients.Path.cDbfDir+"I21.DBF") ; WHERE I41.IDI21BS=I21.IDI21 AND I41.... ; INTO CURSOR qI41 NOFILTER READWRITE
Lookup in : Inventur (I40). Eine Änderung erfolgt durch F3 - Auswahl. Der Srung zu Stammtabelle erfolgt mit F2
Lookup- bzw. relationale Felder werden benötigt um Tabellen mittels SQL Select oder einer Relation zu verbinden. Durch die Namensgebung der Lookupfelder kann aus dem Feldnamen "meistens" die Zieltabelle der Relation bestimmt werden. Alle Relationen werden in PMS32 über sogenannte ID- Felder hergestellt, wobei die Zieltabelle ab der dritten Stelle des Feldnamens bis zur fünften Stelle des Feldnames angegeben ist. Aus ein paar Beispielen: D51.IDB01 => B01, I40.IDC42VKB => C42, I50.IDC25B => C25. Mit der Formel aus dem Codeblock kann zu "fast" allen ID Feldern die entsprechende Zieltabelle ermittelt werden. Spezial- Lookupfelder wie z.B.: I20.IDZWI oder I23.IDAUFA... benötigen zur Bestimmung die entsprechende IP, mit der über die Systemtabelle Y01 die entsprechende Zieltabelle ermittelt werden kann.
*/ Dieses Feld ist ein relationales Feld zur Tabelle: I40 - Inventur */ Evetuell ist dieses Feld NICHT gefüllt, dann besteht keine relationale Verbindung zwischen I41 und I40... */ Eine SQL - Abfrage zum Ermitteln von Quelle und Ziel: SELECT I41.IDI40 AS _Quelle, I40.IDI40 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") LEFT OUTER JOIN (My.Clients.Path.cDbfDir+"I40.DBF") ON I41.IDI40=I40.IDI40 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Der obige Cursor enthält alle Datensätze der Tabelle I41 im Feld _Quelle und nur vorhandene Datensätze der Tabelle I40 */ Besteht keine relationale Verbindung, so ist der Inhalt der Cursorspalte _Ziel = .NULL. */ Die 'gleiche' Abfrage in der NUR relationale Daten vonhanden sind: SELECT I41.IDI40 AS _Quelle, I40.IDI40 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") INNER JOIN (My.Clients.Path.cDbfDir+"I40.DBF") ON I41.IDI40=I40.IDI40 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Geht auch so... SELECT I41.IDI40 AS _Quelle, I40.IDI40 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") , (My.Clients.Path.cDbfDir+"I40.DBF") ; WHERE I41.IDI40=I40.IDI40 AND I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Es gibt auch einen Zugriff über die My - Struktur, die ein Tabellen-Objekt zurückgibt... LOCAL loI40 AS Object loI40 = My.Bussines.Strain.Misc.oI40[I41.IDI40] IF !EMPTY(loI40.IDI40) */ Dann wurde der Datensatz in der Tabelle I40 gefunden! */ Weiterer Code kann hier stehen... ENDIF
Primärschlüssel der Tabelle : Inventur -Pos
Primärfelder einer Tabelle indentifizieren den Datensatz der Tabelle. Der Feldinhalt ist immer eindeutig und kann niemals mehrfach vorkommen. Primärfelder können aus einem Feld der Tabelle oder aus mehreren Feldern der Tabelle bestehen.
*/ Das Feld IDI41 ist das Primärschlüsselfeld der Tabelle I41 - Inventur -Pos */ Dieses Feld kann in anderen Tabellen als relationaler Schlüssel zu dieser Tabelle dienen */ An einem SQL - Beispiel eines beschreibbaren Cursors... */ Die Daten des Cursors können zwar geändert werden, die Änderungen werden jedoch NICHT in die Datenbank zurückgeschrieben! SELECT I41.* FROM (My.Clients.Path.cDbfDir+"I41.DBF") ; WHERE I41.IDI41 = m.idi41 ; INTO CURSOR qI41 NOFILTER READWRITE */ Werden die Daten über die die Methode _SqlRead() abgerufen, so kann der Pfad als Datenbank-Verweis angegeben werden... IF poThis._SqlRead([SELECT I41.* FROM CDBFDIR!I41 WHERE IDI41=']+m.idi41+['],"qI41",2) */ Hier könnte Code stehen... */ Siehe auch: My.Clients.SQL.SQLRead(tnDataSession,tcSQLStatement,tcAlias,tvTable) ENDIF
Relationales Feld (Lookup) in die Projekttabelle. Der Feldinhalt wird meistens durch F2 bzw. F3 - Auswahl gefüllt.
Relationales Feld zur Projekttabelle. Dieses Feld ist ein Lookup- relationales Feld in die Projekttabelle (K10). Bei SQL Abfragen wird dieses Feld zur Verknüpfung der eigentlichen Tabelle mit der Projekttabelle benötigt. Ein Beispiel: SELECT k10.prjnr, i21.menge, i21.preis FROM i21,k10 WHERE i21.idk10 = k10.idk10 AND ...
*/ Dieses Feld ist ein relationales Feld zur Tabelle: K10 - Projekte */ Evetuell ist dieses Feld NICHT gefüllt, dann besteht keine relationale Verbindung zwischen I41 und K10... */ Eine SQL - Abfrage zum Ermitteln von Quelle und Ziel: SELECT I41.IDK10 AS _Quelle, K10.IDK10 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") LEFT OUTER JOIN (My.Clients.Path.cDbfDir+"K10.DBF") ON I41.IDK10=K10.IDK10 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Der obige Cursor enthält alle Datensätze der Tabelle I41 im Feld _Quelle und nur vorhandene Datensätze der Tabelle K10 */ Besteht keine relationale Verbindung, so ist der Inhalt der Cursorspalte _Ziel = .NULL. */ Die 'gleiche' Abfrage in der NUR relationale Daten vonhanden sind: SELECT I41.IDK10 AS _Quelle, K10.IDK10 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") INNER JOIN (My.Clients.Path.cDbfDir+"K10.DBF") ON I41.IDK10=K10.IDK10 ; WHERE I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Geht auch so... SELECT I41.IDK10 AS _Quelle, K10.IDK10 AS _Ziel ; FROM (My.Clients.Path.cDbfDir+"I41.DBF") , (My.Clients.Path.cDbfDir+"K10.DBF") ; WHERE I41.IDK10=K10.IDK10 AND I41.... ; INTO CURSOR qI41 NOFILTER READWRITE */ Es gibt auch einen Zugriff über die My - Struktur, die ein Tabellen-Objekt zurückgibt... LOCAL loK10 AS Object loK10 = My.Bussines.Strain.Misc.oK10[I41.IDK10] IF !EMPTY(loK10.IDK10) */ Dann wurde der Datensatz in der Tabelle K10 gefunden! */ Weiterer Code kann hier stehen... ENDIF
Diese Feld dient als Timestamp Feld innerhalb der Tabelle und wird vom System verwendet.
Dieses Feld führt ein sogenanntes Änderungskennzeichen mit.
Bei jeder Änderung an dem Datensatz der Tabelle wird dieses Feld um 1 nach oben gezählt.
Bei einem Wert der größer 999 ist wird wieder bei 0 angefangen.
*/ Ein Beispiel für die Berechnung: REPLACE ... , LASTUPD WITH (LASTUPD+1)%1000 UPDATE .... , LASTUPD = (LASTUPD+1)%1000
Diese Feld dient als Timestamp Feld innerhalb der Tabelle und wird vom System verwendet.
Dieses Feld enthält das letzte Änderungsdatum des Datensatzes.
*/ Ein Beispiel für die Berechnung: REPLACE ... , LDATUM WITH My.xDate UPDATE .... , LDATUM = My.xDate
Diese Feld dient als Timestamp Feld innerhalb der Tabelle und wird vom System verwendet.
Dieses Feld enthält das Programm der letzten Änderung des Datensatzes.
*/ Ein Beispiel für die Berechnung: REPLACE ... , LPRG WITH My.lProgram UPDATE .... , LPRG = My.lProgram
Diese Feld dient als Timestamp Feld innerhalb der Tabelle und wird vom System verwendet.
Dieses Feld enthält den Benutzer der letzten Änderung des Datensatzes.
*/ Ein Beispiel für die Berechnung: REPLACE ... , LWER WITH My.cUser UPDATE .... , LWER = My.cUser
Diese Feld dient als Timestamp Feld innerhalb der Tabelle und wird vom System verwendet.
Dieses Feld enthält die Uhrzeit der letzten Änderung des Datensatzes.
*/ Ein Beispiel für die Berechnung: REPLACE ... , LZEIT WITH My.xTime UPDATE .... , LZEIT = My.xTime
Diese Feld dient als Timestamp Feld innerhalb der Tabelle und wird vom System verwendet.
Dieses Feld enthält das Neuanlagedatum des Datensatzes.
My.xDate gibt das aktuelle Datum zurück.
Bitte verwenden Sie nicht DATE()!
*/ Ein Beispiel für die Berechnung: INSERT INTO ... (...,NDATUM) VALUES (...,My.xDate)
Diese Feld dient als Timestamp Feld innerhalb der Tabelle und wird vom System verwendet.
Dieses Feld enthält das Programm der Neuanlage des Datensatzes.
My.lProgram gibt das aktuelle Programm zurück.
*/ Ein Beispiel für die Berechnung: INSERT INTO ... (...,NWER) VALUES (...,My.cUser)
Diese Feld dient als Timestamp Feld innerhalb der Tabelle und wird vom System verwendet.
Dieses Feld enthält den Benutzer der Neuanlage des Datensatzes.
My.cUser gibt den angemeldeten Benutzer (C65) zurück.
*/ Ein Beispiel für die Berechnung: INSERT INTO ... (...,NWER) VALUES (...,My.cUser)
Diese Feld dient als Timestamp Feld innerhalb der Tabelle und wird vom System verwendet.
Dieses Feld enthält das Neuanlageuhrzeit des Datensatzes.
My.xTime gibt das aktuelle Uhrzeit zurück.
Bitte verwenden Sie nicht TIME()!
*/ Ein Beispiel für die Berechnung: INSERT INTO ... (...,NZEIT) VALUES (...,My.xTime)
Mengeneingabe in der entsprechenden Einheit vornehmen. Bei Mengenfeldern mit verschiedenen Einheiten, kann die Einheit mit F2 ausgewählt werden. Beispiel: Menge einer Baugruppenposition.
SMENGE ist die Menge, die als Mülleimermenge vom Lagerbestand abgebucht wird.
NEUE TATSÄCHLICHE MENGE = ZMENGE - SMENGE (im Buchungsjournal)
SMENGE wird IMMER zum I41.BPREIS im Buchungsjournal gebucht.
Storniert. Diese Option gibt an, ob die Position oder der ganze Vorgang storniert wurde.
Storniert. Diese Option gibt an, ob die Position oder der ganze Vorgang storniert wurde. Der Wert ist vom Benutzer "meistens" nicht zu ändern, sondern wird vom System gesetzt. Wird eine Position bzw. ein Vorgang storniert, so ist "meistens" der Stornogrund, siehe Feld GRUND, anzugeben. Vorgänge bzw. Positionen werden Storniert, wenn diese z.B. vorher verbucht, siehe GEBUCHT, wurden. Dann dürfen die Positionen nicht mehr gelöscht werden.
Preisfeld in Firmenwährung. Diese Feld enthält einen Wert in Firmenwährung.
Neuer Verrechnungspreis, wenn der tatsächliche Verrechnungspreis Null ist.
Eingabe des Datums oder Auswahl in der Kalendermaske mit STRG+F2 oder durch Mausklick auf den Button rechts neben dem Datumsfeld.
Datum, an dem die Inventurerfassung begonnen wurde. (Maske=I4005)
Datumsfeld. Hier können Sie wenn erlaubt ein Datum eingeben oder mit dem Button rechts neben dem Feld ein Datum aus der Kalendermaske auswählen. Bitte beachten Sie, dass Datumseingaben vor dem 01.01.1600 als falsches Datum interpretiert werden!
Mengeneingabe in der entsprechenden Einheit vornehmen. Bei Mengenfeldern mit verschiedenen Einheiten, kann die Einheit mit F2 ausgewählt werden. Beispiel: Menge einer Baugruppenposition.
Zählmenge bei der Erfassung der Inventur (Maske=I4005)
Mengenfeld. Hier kann eine Menge eingegeben werden. Bitte beachten Sie, dass die Mengeneingabe immer größer oder gleich Null sein muss. Negative Mengen können im System eigentlich nicht vorkommen oder werden direkt vom System berechnet.
Siehe auch : Hauptmenü / Hauptindex / Such Index / Cursor Index / Programm Module / Tabellen Index / Tabellenmodule / Masken Index / Programmcode Index / Servicepacks / My.Struktur / Funktionen / Sonstiges Index
Lokale Benutzerhilfe : Meine eigene Hilfe / Zurück zur PMS32 - Hilfe
Dateiversion:1.0.04#3648 - H.U.DD#SSFF 02.12.2022
Senden Sie Ihren Kommentar zu diesem Thema an das Entwicklungsteam von PMS32
Weitere Informationen finden Sie unter der aktuellen
PMS32 WEB-Hilfe
Die Informationen dieser Mitteilung sind vertraulich und nur für Sie bestimmt. Unbefugtes Weiterleiten,
Veröffentlichen, Kopieren usw. sind untersagt und werden gerichtlich verfolgt.
© PMS Compelec GmbH 2022 ® el-Projekt