Um die Frage richtig beantworten zu können, müsste in der Tat erst die Frage von
@KMoeser beantwortet werden.
Geht es um eine Messagebox? Dann schauen Sie in die Hilfe. Dort ist ein Beispiel für Messagebox vor dem Speichern.
Benötigen Sie die BelId, BelPosId? Dann wird es umfangreich und dazu haben wir auch leider noch kein Beispiel. Der Ansatz wäre die Antwort von
@KMoeser.
Ist es eine allgemeine Frage, dann schauen Sie hier:
Vor dem Speichern des Beleges (Beispiel für VK, EK aber analog)
Anhängen an strVKBeleg.Sage.Wawi
Makro "Vor Änderung":
Wenn IsRunningOnServer()=False
...dann sind Sie vor dem Speichern auf dem Client. Hier können Sie einen Aufruf einer VBA-Methode des Applikationsservice ausführen (mit Übergabe des Belegobjektes), oder einen lokalen .Net-Dll-Applikationsservice mit dem aktuellen DataContainer (wie daraus ein Belegobjekt erzeugt werden kann, ist in der Hilfe beschrieben).
Nach dem Speichern des Beleges
Anhängen an strVKBeleg.Sage.Wawi
Makro "Nach Einfügen" und/oder "Nach Änderung"
Wenn IsRunningOnServer()=False
...dann sind Sie nach dem Speichern auf dem Client.
Hier muss man die Anwendereingabe in "mit Abschluss drucken und schließen" beachten.
Ist "mit Abschluss drucken und schließen" (Feldname IstAbschlussEndgueltig) = False, dann können Sie wie bei "Vor Änderung" verfahren.
Ist "mit Abschluss drucken und schließen" = True, dann müssen Sie die lokalen Variablen _Handle, _Erfassungsart und _Kennzeichen (ist das Belegkennzeichen) auswerten und gegebenenfalls den Beleg laden.
Ein Alternative dazu ist, die mit einem Hotfix ausgelieferte CM DataServiceVK/EKAfterSave. Hier erhalten Sie in beiden Fällen das Belegobjekt über den goStack. Außerdem wird die CM vor dem Drucken ausgeführt, falls das auch eine Rolle spielen sollten. Das wäre bei "mit Abschluss drucken und schließen" = True nicht der Fall. Da würde das angehängte Makro erst nach dem Druck ausgeführt.