Back to Sagegmbh

Aufruf einer VBA-Methode des Applikations-Service

wiki-spaces-s1-pages-109314067-aufruf-plus-einer-plus-vba-methode-plus-des-plus-applikations-service.md

latest10.1 KB
Original Source

Aufruf einer VBA-Methode des Applikations-Service

By Andreas Langmaack (Unlicensed)

Jan 29, 2020

4 min

Add a reaction

|

Beschreibung

|

Aufruf einer Methode in einem AddIn mit Übergabe des aktuellen Belegobjektes aus der neuen Erfassung

| | --- | --- | |

Funktionsaufruf

|

Sage.Wawi.gsAppServiceCall

| |

Parameter 1 Funktionsaufruf

|

<AddIn-Name>:<Funktionsname> (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. für die 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

|

Leerzeichen oder Argumentliste, kann im AddIn mit oBag.sItem("sAppInfo") abgerufen werden (String)

| |

Parameter 4 Funktionsaufruf

|

| |

Parameter 5 Funktionsaufruf

|

| |

Parameter 6 Funktionsaufruf

|

| |

Bemerkungen

|

Auftretende Fehler müssen mit oBag.sItem("Result") zurückgegeben werden. Erfolgt der Aufruf innerhalb eines Makros via "AufrufenKontextMenu", kann die lokale Variable [_Canceled] abgefragt werden (ist bei oBag.sItem("Result") <> "" und oBag.sItem("Result") <> "0" gleich True).

|

Beispiel

Der Belegmatchcode soll mittels einer AddIn-Funktion erzeugt werden.

Folgende Metadaten sind anzulegen (AddIn- und Funktionsname nach Ihren Bedürfnissen, hier für das Template-AddIn implementiert).

Folgende Metadaten sind anzulegen:

  • Anlegen des Kontextmenüs „VKBelegErfassung“ mit „Anhängen an Kontextmenü der Partner-Kennung“ = „Sage.Wawi“

  • Anlegen des Kontextmenüeintrags „BPKMatchcodeGenerieren“ mit folgenden Eigenschaften

  • Anlegen des Kontextmenüeintrags „BPKBelegmatchcode“ mit folgenden Eigenschaften

Hinweis für Developer Partner

WDB-Eintrag 203334:

Anhang ADID.AppServiceCall.VkBeleg.Generic.rar und OLAppDesignerImDetail80.rar

Wie im VBA-Code ersichtlich, erfolgt die Übergabe des Objektes mittels ClientParameterbag. Auch das „Result“ wird nach Beendigung des Aufrufes aus diesem Objekt gelesen. Das bedeutet, dass dieses Objekt nicht zerstört werden darf. Ruft man also andere Funktionen auf, die den ClientParameterbag neu initialisieren (goStack.oBag), bzw. man ruft Funktionen auf, die einen ClientParameterbag als Parameter verwenden, muss der übergeben ClientParameterbag gesichert werden. Dazu benutzt man die Funktion goStack.Push (Sichern) und goStack.Pull (Rücksichern).

|

Beschreibung

|

Aufruf einer Methode in einem AddIn mit Übergabe des aktuellen Buchungssatzobjektes aus der neuen Erfassung

| | --- | --- | |

Funktionsaufruf

|

Sage.Rewe.gsAppServiceCall

| |

Parameter 1 Funktionsaufruf

|

<AddIn-Name>:<Funktionsname> (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. für die 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

|

Leerzeichen oder Argumentliste, kann im AddIn mit oBag.sItem("sAppInfo") abgerufen werden (String)

| |

Parameter 4 Funktionsaufruf

|

| |

Parameter 5 Funktionsaufruf

|

| |

Parameter 6 Funktionsaufruf

|

| |

Bemerkungen

|

Auftretende Fehler müssen mit oBag.sItem("Result") zurückgegeben werden. Erfolgt der Aufruf innerhalb eines Makros via "AufrufenKontextMenu", kann die lokale Variable [_Canceled] abgefragt werden (ist bei oBag.sItem("Result") <> "" und oBag.sItem("Result") <> "0" gleich True).

Die Codierung in Access erfolgt analog dem obigen Beispiel. Das COM-Objekt, welches übergeben wird, ist „Buchungssatz“.

|

|

Beschreibung

|

Aufruf einer Methode in einem AddIn mit Übergabe des aktuellen Fertigungsauftragsobjektes aus der neuen Erfassung

| | --- | --- | |

Funktionsaufruf

|

Sage.Pps.gsAppServiceCall

| |

Parameter 1 Funktionsaufruf

|

<AddIn-Name>:<Funktionsname> (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. für die 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

|

Leerzeichen oder Argumentliste, kann im AddIn mit oBag.sItem("sAppInfo") abgerufen werden (String)

| |

Parameter 4 Funktionsaufruf

|

| |

Parameter 5 Funktionsaufruf

|

| |

Parameter 6 Funktionsaufruf

|

| |

Bemerkungen

|

Auftretende Fehler müssen mit oBag.sItem("Result") zurückgegeben werden. Erfolgt der Aufruf innerhalb eines Makros via "AufrufenKontextMenu", kann die lokale Variable [_Canceled] abgefragt werden (ist bei oBag.sItem("Result") <> "" und oBag.sItem("Result") <> "0" gleich True).

Die Codierung in Access erfolgt analog dem obigen Beispiel. Das COM-Objekt, welches übergeben wird, ist „FaBeleg“.

|

|

Beschreibung

|

Aufruf einer Methode in einem AddIn mit Übergabe des aktuellen Datensatzes aus den neuen Stammdaten

| | --- | --- | |

Funktionsaufruf

|

Sage.System.gsAppServiceCallGeneric

| |

Parameter 1 Funktionsaufruf

|

<AddIn-Name>:<Funktionsname> (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. für die 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

|

Leerzeichen oder Argumentliste, kann im AddIn mit oBag.sItem("sAppInfo") abgerufen werden (String)

| |

Parameter 4 Funktionsaufruf

|

| |

Parameter 5 Funktionsaufruf

|

| |

Parameter 6 Funktionsaufruf

|

| |

Bemerkungen

|

Auftretende Fehler müssen mit oBag.sItem("Result") zurückgegeben werden. Erfolgt der Aufruf innerhalb eines Makros via "AufrufenKontextMenu", kann die lokale Variable [_Canceled] abgefragt werden (ist bei oBag.sItem("Result") <> "" und oBag.sItem("Result") <> "0" gleich True).

Die Übergabe des aktuellen Datensatzes erfolgt in einem XML-String.

|

Beispiel

Aus dem Artikelstamm soll ein Aufruf erfolgen, der die Eigenschaften „Länge“, „Breite“ und „Höhe“ setzt. Wurden die Daten von dem Programm geändert, dann soll der aktuelle Datensatz ohne Rückfrage gespeichert werden.

Zusatz: die Funktionalität der Ermittlung und Übergabe ist komplett in Access implementiert.

Folgende Metadaten sind anzulegen:

  • Anlegen des Kontextmenüs „Artikelstamm“ mit „Anhängen an Kontextmenü der Partner-Kennung“ = „Sage.Wawi“

  • Anlegen des Kontextmenüeintrags „BPKDimensionenSetzen“ mit folgenden Eigenschaften

  • Anlegen des Kontextmenüeintrags „BPKDimensionen“ mit folgenden Eigenschaften

Zu hinterlegende Makros:

|

Zeile

|

Befehl

|

Parameter 1

|

Parameter 2

| | --- | --- | --- | --- | |

1

|

FestlegenLokaleVar

|

[_BPKDatensatzSpeichern]

|

False

| |

2

|

AufrufenKontextMenu

|

BPKDimensionenSetzen

|

| |

3

|

#Kommentar

|

[_BPKDatensatzSpeichern] wird im Accessaufruf gesetzt

|

| |

4

|

Wenn

|

[_BPKDatensatzSpeichern] = True

|

| |

5

|

#Kommentar

|

Parameter 1 = False, da keine Abfrage kommen soll

|

| |

6

|

DatensatzSpeichern

|

False

|

| |

7

|

EndeWenn

|

|

|

Im Addin ist folgender Verweis zu setzen: Microsoft XML, v6.0

Hinweis für Developer Partner

WDB-Eintrag 203334:

Anhang ADID.AppServiceCall.VkBeleg.Generic.rar und OLAppDesignerImDetail80.rar

Wie im VBA-Code ersichtlich, erfolgt die Übergabe des Objektes mittels ClientParameterbag. Auch das „Result“ wird nach Beendigung des Aufrufes aus diesem Objekt gelesen. Das bedeutet, dass dieses Objekt nicht zerstört werden darf. Ruft man also andere Funktionen auf, die den ClientParameterbag neu initialisieren (goStack.oBag), bzw. man ruft Funktionen auf, die einen ClientParameterbag als Parameter verwenden, muss der übergeben ClientParameterbag gesichert werden. Dazu benutzt man die Funktion goStack.Push (Sichern) und goStack.Pull (Rücksichern).

Collapse action bar

View all comments

Open Details Panel

Create page

Open Rovo Chat

Comments

Add a reaction

Anonymous

Oct 28, 2021

Eine Frage zum Parameter 1: <AddIn-Name>:<Funktionsname> (String)

Muss die Versionsnummer auch Teil des AddIn-Namens sein oder gilt nur der VBA-Projektname des AddIns?
Bisher haben wir die Versionsnummer immer mit angegeben: OLAbfFerkinghoffAddIn81:gINOEtikettendruckEK
Bei Übernahme auf Version. 9.0 müsste man dann die Parameterwerte überarbeiten.
Oder hat man hier die Möglichkeit einen Platzhalter für die Sage-Versionsnummer (ähnl. wie früher im AC-Scripting) zu verwenden?

Anonymous

Oct 28, 2021

Ergänzung: Das AddIn heißt OLAbfFerkinghoffAddIn81.mde, der VBA-Projektname lautet jedoch nur “OLAbfFerkinghoffAddIn”.

ReplyHide reply

Add a comment