Aufruf der Execute-Methode des Data-Service
Beschreibung | Serviceaufruf in den neuen Erfassungen |
---|---|
Funktionsaufruf | Sage.System.DataServiceExecute |
Parameter 1 Funktionsaufruf | Serviceaufrufname (String) |
Parameter 2 Funktionsaufruf | Lese-/Schreib-Optionen in der Form [Lese-Option] : [Schreib-Option] (String) Lese-Optionen
Schreib-Optionen
|
Parameter 3 Funktionsaufruf | Parameterliste (String) |
Parameter 4 Funktionsaufruf | |
Parameter 5 Funktionsaufruf | |
Parameter 6 Funktionsaufruf | |
Bemerkungen | Der Aufruf des Services erfolgt über die DCM EKBelegProxyServiceCall/VKBelegProxyServiceCall bzw. BuchungProxyServiceCall. Daher brauchen hier kein Assembly- und Klassenname angegeben werden. |
Beispiel Belegerfassung
Für bestimmte Artikel soll in der Erfassung ein sich ändernder extern ermittelter Lagerort gezogen werden. Die Zuordnung zum Artikel erfolgt programmatisch, kann also nicht im Artikelstamm eingestellt werden. Kann zu einem solchen Artikel kein Lagerort automatisch gefunden werden, kann der Anwender auf Nachfrage bei diesen Positionen ein Standardlagerort zuordnen lassen (also unabhängig von dem Lagerort im Artikelstamm).
Für das Beispiel wird der Demomandant verwendet.
Vorarbeiten
Benutzerdefinierte Felder für
- Lager: Feld = BPKSpeziellesLager, Beschreibung = Spezielles Lager, Typ = Zahl (Integer), Standardwert = 0
- Artikel: Feld = BPKSpeziellesLager, Beschreibung = BPKSpeziellesLager, Typ = Zahl (Integer) , Standardwert = 0
- Verkaufsbelegposition: Feld = BPKSpeziellesLager, Beschreibung = BPKSpeziellesLager, Typ = Zahl (Integer) , Standardwert = 0
- Verkaufsbelegposition: Feld = BPKStatusSetLager, Beschreibung = StatusSpeziellesLager, Typ = Zahl (Integer) , Standardwert = 0
Um entsprechende Daten zu haben führen Sie diese SQL-Anweisung im Managementstudio des SQL-Servers aus:
UPDATE KHKLagerorte SET USER_BPKSpeziellesLager = 0 WHERE Mandant = 123 UPDATE KHKLagerorte SET USER_BPKSpeziellesLager = -1 WHERE Mandant = 123 AND Lagerkennung = 'Neben01' UPDATE KHKLagerorte SET USER_BPKSpeziellesLager = 1 WHERE Mandant = 123 AND Lagerkennung = 'Neben02' UPDATE KHKArtikel SET USER_BPKSpeziellesLager = 0 WHERE Mandant = 123 UPDATE KHKArtikel SET USER_BPKSpeziellesLager = 1 WHERE Mandant = 123 AND Artikelnummer = '00200050' UPDATE KHKArtikel SET USER_BPKSpeziellesLager = 2 WHERE Mandant = 123 AND Artikelnummer = '01200011' UPDATE KHKVKBelegePositionen SET USER_BPKSpeziellesLager = 0 WHERE Mandant = 123 UPDATE KHKVKBelegePositionen SET USER_BPKStatusSetLager = 0 WHERE Mandant = 123
Bedeutung der Werte:
- Lager
- 0 = normaler Lagerort
- -1 = spezieller Standardlagerort
- 1-n = spezieller Lagerort
- Artikel
- 0 = Lagerort aus Artikelstamm
- 1-n = spezieller Lagerort
- Verkaufsbelegposition BPKStatusSetLager
- 0 = Lagerort aus Artikelstamm
- 1 = spezieller Lagerort oder spezieller Standardlagerort
- 2 = spezieller Lagerort laut Artikelstamm, aber in Lagerorte nicht gefunden
Schritt 1: benutzerdefinierte Felder im Artikelstamm und in der Belegerfassung für den Anwender verstecken
Folgende Metadaten sind anzulegen:
Artikel
- Anlegen des Daten-Edit-Elementes „ediArtikelstamm“ mit „Anhängen an Daten-Edit-Element der Partner-Kennung“ = „Sage.Wawi“
- Anlegen des Daten-Element-Register „Grundlagen“ und aktivieren von „Feld-Attribute anhängen?“
- Anlegen der Daten-Element-Feldgruppe „Grundlagen“ und aktivieren von „Feld-Attribute anhängen?“
- Anlegen der Daten-Edit-Element-Feldes „KHKArtikel_USER_BPKSpeziellesLager“ mit aktivieren von „Feld-Attribute anhängen?“ und „Sichtbarkeit“ = „Versteckt“
Verkaufsbelegposition
- Anlegen des Multi-Daten-Edit-Elementes „mdeVKBelegPositionen“ mit „Anhängen an Multi-Data-Edit-Element der Partner-Kennung“ = „Sage.Wawi“
- Anlegen der Vorlage „Standard“ und aktivieren von „Feld-Attribute anhängen?“
- Anlegen der Multi-Daten-Edit-Element-Feldes „KHKVKBelegePositionen_USER_BPKSpeziellesLager“ mit aktivieren von „Feld-Attribute anhängen?“ und „Sichtbarkeit“ = „Versteckt“
- Anlegen der Multi-Daten-Edit-Element-Feldes „KHKVKBelegePositionen_USER_BPKStatusSetLager“ mit aktivieren von „Feld-Attribute anhängen?“ und „Sichtbarkeit“ = „Versteckt“
Schritt 2: Flag für die Abfrage
Folgende Metadaten sind anzulegen:
- Anlegen der Datenstruktur „strVKBeleg“ mit „Anhängen an Datenstruktur der Partner-Kennung“ = „Sage.Wawi“
- Anlegen des Datenstrukturfeldes „BPKAbfrageStandardLager“ mit „Datentyp“ = „Integer“ und „Standard-Wert“ = „0“
- Anlegen des Daten-Edit-Elementes „ediVKBelegerfassung“ mit „Anhängen an Daten-Edit-Element der Partner-Kennung“ = „Sage.Wawi“
- Anlegen des Daten-Element-Register „Belegkopf“ und aktivieren von „Feld-Attribute anhängen?“
- Anlegen der Daten-Element-Feldgruppe „Kunde“ und aktivieren von „Feld-Attribute anhängen?“
- Anlegen der Daten-Edit-Element-Feldes „BPKAbfrageStandardLager“ mit „Sichtbarkeit“ = „Versteckt“
Schritt 3: Datentransfer des Flags zwischen Client und Server
Folgende Metadaten sind anzulegen (nur wenn nicht bereits in anderen Lösungen vorhanden, oder in OL.DCM eingetragen):
- Anlegen des Ereignisses „evhVKBelegProxyContainerToBeleg“ mit folgenden Eigenschaften
- „Name des Ereignisses“ = „VKBelegProxyContainerToBeleg“
- „Name der Assembly“ = <Ihr-Assemblyname> hier jetzt „$[SharedPath]ADID.DSE.SpeziellesLager.dll”
- „Name der Klasse” = <Ihr-Klassenname> hier jetzt „ADID.DSE.SpeziellesLager.DcmHandler.DcmListener”
- Anlegen des Ereignisses „evhVKBelegProxyBelegToContainer“ mit folgenden Eigenschaften
- „Name des Ereignisses“ = „VKBelegProxyBelegToContainer“
- „Name der Assembly“ = <Ihr-Assemblyname> hier jetzt „$[SharedPath]ADID.DSE.SpeziellesLager.dll”
- „Name der Klasse” = <Ihr-Klassenname> hier jetzt „ADID.DSE.SpeziellesLager.DcmHandler.DcmListener”
Schritt 4: spezielles Lager beim Einfügen von neuen Positionen zuordnen und eventuell Abfrage-Flag setzen
Folgende Metadaten sind anzulegen (nur wenn nicht bereits in anderen Lösungen vorhanden, oder in OL.DCM eingetragen):
- Anlegen des Ereignisses „evhVKBelegPositionSetArtikel“ mit folgenden Eigenschaften
- „Name des Ereignisses“ = „VKBelegPositionSetArtikel“
- „Name der Assembly“ = <Ihr-Assemblyname> hier jetzt „$[SharedPath]ADID.DSE.SpeziellesLager.dll”
- „Name der Klasse” = <Ihr-Klassenname> hier jetzt „ADID.DSE.SpeziellesLager.DcmHandler.DcmListener”
Schritt 5: Serviceaufruf
Folgende Metadaten sind anzulegen:
- Anlegen des Kontextmenüs „VKBelegErfassung“ mit „Anhängen an Kontextmenü der Partner-Kennung“ = „Sage.Wawi“ (Serviceaufruf erfolgt auf Belegebene, da alle Positionen behandelt werden sollen)
- Anlegen des Kontextmenüeintrags „BPKSetStandardLager“ mit folgenden Eigenschaften
- „Position in Sortierung“ = „0“
- „Funktionsaufruf“ = „DataServiceExecute.Sage.System“
- „Parameter 1 Funktionsaufruf“ = „BPKSetStandardLager“ (muss nicht identisch zum Name des Eintrags sein)
- „Parameter 2 Funktionsaufruf“ = „Vollstaendig : Ersetzen“
- „für Wawi?“ aktivieren
- Anlegen des Ereignisses „evhVKBelegProxyServiceCall“ mit folgenden Eigenschaften (nur wenn nicht bereits in anderen Lösungen vorhanden, oder in OL.DCM eingetragen)
- „Name des Ereignisses“ = „VKBelegProxyServiceCall“
- „Name der Assembly“ = <Ihr-Assemblyname> hier jetzt „$[SharedPath]ADID.DSE.SpeziellesLager.dll”
- „Name der Klasse” = <Ihr-Klassenname> hier jetzt „ADID.DSE.SpeziellesLager.DcmHandler.DcmListener”
Schritt 6: Meldung ausgeben und Service aufrufen
Folgende Metadaten sind anzulegen:
- Anlegen der Meldung „SpeziellesStandardLager“ mit folgenden Eigenschaften
- „Titel“ = „Zuordnung Standard Lagerort“
- „Meldungstext“ = „Bei einigen Positionen konnte kein spezieller Lagerort zugeordnet werden. Soll bei diesen Positionen der spezielle Standardlagerort zugewiesen werden?“
- „Typ“ = „Konfirmation mit drei Schaltflächen“
- „Standard-Schaltfläche“ = „1“
- „mit Abbrechen-Schaltfläche?“ deaktivieren
- „Schaltflächen-Text 1“ = „Ja“
- „Schaltflächen-Text 2“ = „Nein“
- Im Ereignis „Vor Änderung“ der Datenstruktur „strVKBeleg“ Makros hinterlegen (siehe Screenshot)
Zu hinterlegende Makros:
Zeile | Befehl | Parameter 1 |
---|---|---|
1 | Wenn | IsRunningOnServer() = False AND [BPKAbfrageStandardLager] = 1 |
2 | Meldungsfeld | 100065830.ADID_DataServiceExecute_SpeziellesLager.SpeziellesStandardLager |
3 | Wenn | [_DialogResult] = 1 |
4 | AufrufenKontextMenu | BPKSetStandardLager |
5 | EndeWenn | |
6 | EndeWenn |
PartnerId und PackageId im Makro „Meldungsfeld“ entsprechend Ihren Metadaten.
Hinweis für Developer Partner
WDB-Eintrag 203334:
Anhang ADID.DSE.SpeziellesLager.rar
Sage selber verwendet statt Meldungsdialoge, Hinweise im Meldungsstack. Nachfolgend wird die Implementierung für das gleiche Beispiel ohne Meldungsdialog beschrieben.
Vorarbeiten
- analog des vorherigen Beispiels
Zusätzliches benutzerdefiniertes Feld
- Verkaufsbeleg: Feld = SetStandardlagerort, Beschreibung = SetStandardlagerort, Typ = Ja/Nein , Standardwert = 0
UPDATE KHKVKBelege SET USER_SetStandardlagerort = 0 WHERE Mandant = 123
Schritt 1
- analog des vorherigen Beispiels
Zusätzliches benutzerdefiniertes Feld verstecken
- Anlegen des Daten-Edit-Elementes „ediVKBelegerfassung“ mit „Anhängen an Daten-Edit-Element der Partner-Kennung“ = „Sage.Wawi“
- Anlegen des Daten-Element-Register „Belegkopf“ und aktivieren von „Feld-Attribute anhängen?“
- Anlegen der Daten-Element-Feldgruppe „Kunde“ und aktivieren von „Feld-Attribute anhängen?“
- Anlegen der Daten-Edit-Element-Feldes „KHKVKBelege_USER_BPKSetStandardlagerort“ mit aktivieren von „Feld-Attribute anhängen?“ und „Sichtbarkeit“ = „Versteckt“
Schritt 2 und Schritt 3 entfallen
Neuer Schritt 2: spezielles Lager beim Einfügen von neuen Positionen zuordnen
Folgende Metadaten sind anzulegen (nur wenn nicht bereits in anderen Lösungen vorhanden, oder in OL.DCM eingetragen):
- Anlegen des Ereignisses „evhVKBelegPositionSetArtikel“ mit folgenden Eigenschaften
- „Name des Ereignisses“ = „VKBelegPositionSetArtikel“
- „Name der Assembly“ = <Ihr-Assemblyname> hier jetzt „$[SharedPath]DCMAufrufe.dll”
- „Name der Klasse” = <Ihr-Klassenname> hier jetzt „DCMAufrufe.AufrufeWawi”
Neuer Schritt 3: Validierung vor dem Speichern
Folgende Metadaten sind anzulegen (nur wenn nicht bereits in anderen Lösungen vorhanden, oder in OL.DCM eingetragen):
- Anlegen des Ereignisses „evhVKBelegProxyBelegValidateSave“ mit folgenden Eigenschaften
- „Name des Ereignisses“ = „VKBelegProxyBelegValidateSave“
- „Name der Assembly“ = <Ihr-Assemblyname> hier jetzt „$[SharedPath]DCMAufrufe.dll”
- „Name der Klasse” = <Ihr-Klassenname> hier jetzt „DCMAufrufe.AufrufeWawi”
Neuer Schritt 4: Serviceaufruf
Folgende Metadaten sind anzulegen:
- Anlegen des Kontextmenüs „VKBelegErfassung“ mit „Anhängen an Kontextmenü der Partner-Kennung“ = „Sage.Wawi“ (Serviceaufruf erfolgt auf Belegebene, da alle Positionen behandelt werden sollen)
- Anlegen des Kontextmenüeintrags „BPKSetStandardLager“ mit folgenden Eigenschaften
- „Funktionstitel“ = „Standardlagerort zuweisen“
- „Funktionskurztitel“ = „Standardlagerort zuweisen“
- „Position in Sortierung“ = „1“
- „Schaltflächenposition“ = „0“
- „Festlegung Aktivierung durch Feld“ = „[KHKVKBelege_USER_BPKSetStandardlagerort] = True“
- „Funktionsaufruf“ = „DataServiceExecute.Sage.System“
- „Parameter 1 Funktionsaufruf“ = „BPKSetStandardLager“ (muss nicht identisch zum Name des Eintrags sein)
- „Parameter 2 Funktionsaufruf“ = „Vollstaendig : Ersetzen“
- „für Wawi?“ aktivieren
- Anlegen des Ereignisses „evhVKBelegProxyServiceCall“ mit folgenden Eigenschaften (nur wenn nicht bereits in anderen Lösungen vorhanden, oder in OL.DCM eingetragen)
- „Name des Ereignisses“ = „VKBelegProxyServiceCall“
- „Name der Assembly“ = <Ihr-Assemblyname> hier jetzt „$[SharedPath]DCMAufrufe.dll”
- „Name der Klasse” = <Ihr-Klassenname> hier jetzt „DCMAufrufe.AufrufeWawi”
Hinweis für Developer Partner
WDB-Eintrag 203334:
Anhang ADID.DSE.SpeziellesLager.rar
Weiteres Beispiel in Erweiterungen vor dem Speichern eines Beleges (Mit Interaktion des Anwenders)