wiki-spaces-s1-pages-109051919-aufruf-plus-der-plus-execute-methode-plus-des-plus-data-service.md
By Andreas Langmaack (Unlicensed)
Oct 26, 2018
5 min
Add a reaction
|
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
Ersetzen = Ersetzt den kompletten Datensatz mit allen Unterobjekten
Neu = wie Ersetzen, aber es werden neu initialisierte Daten zurückgegeben (z. B. Anfordern eines neuen Templates, oder ein neuer Beleg bei der Beleg-Vorgangsübernahme)
Ignorieren = Die Rückgabe wird ignoriert. Ermöglicht damit einen schreibgeschützten Dienst-Aufruf in Bezug auf die Daten im Client
| |
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
Artikel
Verkaufsbelegposition BPKStatusSetLager
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
Anlegen des Ereignisses „evhVKBelegProxyBelegToContainer“ mit folgenden Eigenschaften
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):
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
Anlegen des Ereignisses „evhVKBelegProxyServiceCall“ mit folgenden Eigenschaften (nur wenn nicht bereits in anderen Lösungen vorhanden, oder in OL.DCM eingetragen)
Schritt 6: Meldung ausgeben und Service aufrufen
Folgende Metadaten sind anzulegen:
Anlegen der Meldung „SpeziellesStandardLager“ mit folgenden Eigenschaften
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
Zusätzliches benutzerdefiniertes Feld
UPDATE KHKVKBelege SET USER_SetStandardlagerort = 0 WHERE Mandant = 123
Schritt 1
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):
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):
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
Anlegen des Ereignisses „evhVKBelegProxyServiceCall“ mit folgenden Eigenschaften (nur wenn nicht bereits in anderen Lösungen vorhanden, oder in OL.DCM eingetragen)
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)
Collapse action bar
View all comments
Open Details Panel
Create page
Open Rovo Chat
Add a reaction
Anonymous
Jul 3, 2019
Kann man im Parameter 3 die NamedParameter des DataServiceExecute übergeben?
Aus der Dokumentation (online & offline) geht dies nicht klar hervor.
Andreas Langmaack (Unlicensed)
Jul 10, 2019
Die Parameter (FunctionCallParameter) 1-3 stecken in den NamedParameters. Mit der Abfrage auf FunctionCallParameter3 bekommen Sie also die Parameterliste, die Sie im Code dann weiter splitten müssen. Ein Beispiel finden Sie im Kochbuch im Rezept 12.
ReplyHide reply
Anonymous
Jan 19
Laut Kommentar zur 9.02 wurde die möglichkeit des Asynchronen Aufrufs mit Parameter4=True eingebaut, wird aber hier nicht erwähnt. https://sagegmbh.atlassian.net/wiki/spaces/S1/pages/2584477697
Reply
Add a comment