Aufruf der Execute-Methode des Data-Service

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

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

ZeileBefehlParameter 1
1WennIsRunningOnServer() = False AND [BPKAbfrageStandardLager] = 1
2Meldungsfeld100065830.ADID_DataServiceExecute_SpeziellesLager.SpeziellesStandardLager
3Wenn[_DialogResult] = 1
4AufrufenKontextMenuBPKSetStandardLager
5EndeWenn
6EndeWenn

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
    • „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)