Back to Sagegmbh

Aufruf der Execute-Methode des Data-Service

wiki-spaces-s1-pages-109051919-aufruf-plus-der-plus-execute-methode-plus-des-plus-data-service.md

latest11.0 KB
Original Source

Aufruf der Execute-Methode des Data-Service

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

  • Vollstaendig = liest den vollständigen Satz mit allen Unterelementen

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:

SQL-Anweisungen

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):

  • Anlegen des Ereignisses „evhVKBelegPositionSetArtikel“ mit folgenden Eigenschaften

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

  • analog des vorherigen Beispiels

Zusätzliches benutzerdefiniertes Feld

  • Verkaufsbeleg: Feld = SetStandardlagerort, Beschreibung = SetStandardlagerort, Typ = Ja/Nein , Standardwert = 0
SQL-Anweisungen

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

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

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

Comments

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