cancel
Showing results for 
Search instead for 
Did you mean: 

Auftragsexport (B1 Event) über Abfrage manuell nach GP starten

Former Member
0 Kudos

Hallo liebe SAP-Nutzer,

ich beschäftige mich mit der Verbesserung unserer Prozesse im Zusammenhang mit SAP.

Ich habe hier auch schon ein bisschen was geschafft, auch mit Hilfe dieser Plattform.

Bisher habe ich aber nur mitgelesen, komme aber nun alleine nicht weiter.

Daher würde ich mich freuen wenn Ihr mit helfen könnt?

Wir nutzen SAP Business One Vers. 8.81 in Verbindungen mit einem externen Lagerverwaltungssystem. Dieses ist über das Integration Framework an SAP angeschlossen.

Folgendes Problem habe ich:

Werden neue Aufträge in SAP angelegt werden diese über B1Event sofort an das Lagersystem übertragen.

Im Lagersystem arbeiten wir nicht mit Rückständen. Ist also ein Auftrag im ersten durchlauf nicht komplett bearbeitet, bleibt in SAP ein Rückstand, im Lagersystem ist der Auftrag aber raus.

Möchte ich nun den Rückstand aus SAP ausliefern, muss ich momentan den Auftrag aktualisieren.

Ich füge also in irgendeinem Feld ein Leerzeichen ein und aktualisiere dann.

Dann geht der Auftrag wieder automatisch ans Lagersystem.

Wie kann ich dies automatisieren oder manuell Triggern?

Schön wäre natürlich wenn das zb gehen würde das die Rückstände wieder übertragen werden sobald die Rechnung zu dem Auftrag geschrieben ist.

Oder eben manuell über den Abfragemanager? GB-Code eingeben und alle offenen Aufträge werden erneut übertragen?

Gibt es da Möglichkeiten?

Vielen Dank im Voraus.

Mit freundlichen Grüßen,

Maik

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hallo Maik,

kannst du etwas genauere Infos bezgl. Snyc zwischen LVS und B1 per B1i geben. Was wird alles abgeglichen und welche Belegarten werden zur Übertragung ins LVS genutzt. Wird aus dem LVS zurück in B1 geschrieben? Nutzt Ihr die Bestände im SAP oder verlasst ihr euch nur auf die im externen LVS?

Grüße Steffen

Former Member
0 Kudos

Hallo Steffen,

gerne werde ich versuchen dies näher zu erläutern.

Ins LVS gehen Kundenaufträge, Produktionsaufträge und Bestellungen.

Übertragen werden die Kopfdaten (Adresse, KDN, Auftragsnummer) sowie die einzelnen Auftragspositionen.

Zurückgemeldet wird dann die Menge die ausgeliefert wurde und die Menge die nicht ausgeliefert wurde. Daraus entstehen dann der Auftragsrückstand und der Lieferschein in B1.

Das Bestandsführende System ist das LSV.

Hoffe das hilft weiter.

Vielen Dank schonmal.

Former Member
0 Kudos

Hallo Maik,

prinzipiell hast du verschiedene Möglichkeiten um die Anforderung umzusetzen. Meine Ideen wären:

1. Du kannst den B1i Flow so verändern, dass bei der Rechnungserstellung zum ausgelieferten Auftrag, der Rückstand wieder getriggert wird. Dazu müsste eben die Basisbelege ausgelesen werden. In denen (Auftrag) ist auf Zeilenebene vermerkt, was ausgeliefert wurde und was offen ist. Das Ganze funktioniert nur, wenn die Belegkette eingehalten wird. Solltet Ihr Lieferscheine / Rechnungen ohne Bezug auf die Aufträge erstellen, klappt es nicht.

2. Wenn die Daten aus eurem LVS in B1 zurückgeschrieben werden, wird seitens B1i ein Triggerkennzeichen gesetzt. Dieser sorgt dafür, dass ein weiterer Flow die offenen Zeilen wieder zurück ans LVS gibt. Dies würde nicht nur für Aufträge, sondern eben auch Bestellungen und Produktionsaufträge funktionieren.

Kurz:

1. Flow übergibt Daten von B1 an LVS - Trigger sind update / create Event für die entsprechenden Belege, sowie die zeitliche Überprüfung eines Status UDF (Teillieferung)

2. Flow überträgt die Daten zurück von LVS an B1 und beschreibt das Status UDF (Erledigt oder eben Teillieferung)

Da der erste Flow eben nicht nur auf die SAP Events schaut, sondern auch das UDF prüft, wird der Beleg wieder zurück übertragen.

3. Kleine Individualprogrammierung mittels der du ein Event an den B1i senden kannst. Dann hättest du einen Button auf dem Beleg, welcher die Übertragung anstößt.

Ich persönlich würde die 2. Möglichkeit nutzen. Diese ist automatisiert und erfordert keinen weiteren Eingriff. Wenn du lieber selbst bestimmen möchtest was zurück an B1i geht, solltet Ihr einen kleinen Button erstellen. Mittels Coresuite Customize geht das relativ einfach.

Grüße Steffen

Former Member
0 Kudos

Hallo Steffen,

vielen Dank für deine Bemühungen.

Ich bin deiner Meinung, wenn ich Sie denn richtig verstehe 😃

Deine Möglichkeit 3. ist sicher nett, aber man müsste immer noch in jeden Beleg einzeln reingehen.

Zu 2. muss ich noch dazu erwähnen, das Bestellungen erst im LVS verschwinden wenn Sie vollständig abgearbeitet sind, hier werden also auch Teilmengen übertragen und der Rest bleibt bestehen.

Wir hatten am Anfang dieser Schnittstelle auch mal Verbindungabbrüche und damit einhergehenden Datenverlust....

Dann hatten manchmal Datensätze in der LVS-DB den Status ``übertragen´´, sind aber in B1 nie angekommen.

Hier war das dann recht einfach den Status mittels SQL wieder auf ``zu übertragen´´ zu setzen.

In der Art und Weise wollte ich das auch in anderer Richtung probieren.

Ich weiß aber leider nicht welches das richtige Feld ist für die Triggerkennzeichnung.

Was dazu noch wichtig wäre: Die erneute Übertragung ans LVS funktioniert nur, wenn die Aufträge im LVS vollständig ausgebucht sind. Dies erfolgt erst mittels Tagesabschluss. Automatisch jeden Abend oder auch manuell zwischendurch möglich.

In diesem Punkt war meine erste Frage also nicht korrekt.

Eine automatische Übertragung bei Rechnungserstellung ist dann vllt. garnicht möglich.

Ich fände im Moment ein Button (oder Abfragemanger) Danz gut, der dann alle offenen Kundenaufträge erneut übertragen lässt oder nach vorheriger Auswahl der Kundennummern.

Mit freundlichem Gruß,

Maik

Former Member
0 Kudos

Hi Maik,

zu meiner dritten Möglichkeit:

Prinzipiell ist es doch das, was du haben möchtest. Nur eben nicht auf Belegebene, sondern per Auswahlkontext mit Checkbox. In diesem kannst du die nochmals zu übertragenen Belege oder von mir aus auch Kunden mit offenen Belegen anhaken. Nach Bestätigung werden diese Belege an B1i getriggert und entsprechend der offenen Mengen abgearbeitet.

zum Thema Automatisierung:

Auch diese ist möglich. Frage ist da nur, wie man einen sinnvollen Trigger für euren Tagesabschluss im LVS (manuell oder eben abends) erstellen könnte. Ausschlaggebend zur Prüfung wäre dann der ein Eintrag in der Datenbank des LVS. Adhoc fällt mir da ein, dass man per Timer ein Query als Trigger ausführen könnte. (Voraussetzung das LVS setzt auf MS-SQL und ist vom B1i aus zu erreichen)

Beide Lösungen sind relativ einfach umzusetzen. Die Anpassung von B1i Flows und Automatisierung ist etwas aufwändiger und sollte natürlich vom ursprünglichen Entwickler vorgenommen werden.

Ein Addon zur Auslösung des Triggers zu schreiben, wäre, sofern du es selbst oder an eine Drittfirma vergibst, die schnellere Möglichkeit. Obgleich nicht die eleganteste.

Mal eine blöde Frage nebenbei, wer hat die B1i Flows geschrieben? Wenn es Übertragungsprobleme anfänglich gab, stelle ich mir persönlich die Frage nach der Richtigkeit des Flows; oder liegt dies an Hardware Diskrepanzen?

Grüße Steffen

Former Member
0 Kudos

Hallo Steffen,

vielen Dank abermals für deine Antwort.

Zuerst zu deiner letzten Frage. Die B1i-Flows hat ein SAP B1-Partner für uns geschrieben. Leider nicht ganz erfolgreich. Wenn wir denn sagen würden, das jetzt alles okay ist, dann hat sich aber die Richtigkeit des Flows erst im Livebetrieb nach und nach ergeben.

Lief halt nicht so gut, deswegen würde ich gerne die Option mit dem Button / Auswahlkontext nach GP versuchen. Also, das nach Auswahl des GP alle offenen Aufträge an B1i getriggert werden.

Kannst Du mir dazu sagen was ich mir anschauen könnte um in das Thema näher reinzukommen?

Vor allem, wie offenen Aufträge an B1i getriggert werden können?

Gruß,

Maik

Former Member
0 Kudos

Hallo Maik,

um ein solches Addon zu schreiben, benötigst du einmal die Doku vom SDK (DI API / UI API). Weiterhin solltest du dich mit dem B1i auseinandersetzen. Wirklich gute Literatur gibt es dazu eigentlich gar nicht, zumindest kenne ich keine.

Ich denke eine Anpassung des Flows könnte notwendig werden.

Wenn du nur einen Butto im GP Stamm haben willst mit denen alle offenen Aufträge getriggert werden, ist es etwas unkomplizierter. Wobei ich einen Button erstellen würde, welcher ein Grid aufruft in dem alle GP bezogenen offenen Aufträge angezeigt werden. Dann kann man dort auswählen welche getriggert werden sollen. Offene Aufträge können ja momentan schon per Update event getriggert werden, das macht also schonmal keine Sorgen.

Ob du nun pauschal alle oder nur ausgewählte Triggern willst, spielt für das Addon erstmal kaum eine Rolle. (Ist nur eine Einschränkung in der Menge an Auftragsnummern die verarbeitet werden soll.) Der Aufruf beim Klick auf den Button müsste ungefähr wie folgt ausschauen:

1. Query aller offenen Aufträge für den grad offenen GP

2. (Optional) Anzeigen des Ergebnis in einem Grid mit Auswahlmöglichkeit

3. Auf alle geladenen und gewählten Aufträge ein Update setzen

Den Rest sollte, sofern der Flow korrekt geschrieben ist, von alleine geschehen.

Was das Verhalten von B1i angeht und den Eventhandler, so kommt es ein wenig auf die Einrichtung an. Es stecken einige Funktionen für den Handler in den StoredProcedures der B1 Datenbank vom SQL Server.

Es scheint mir, als ob du nicht wirklich zufrieden mit der Leistung deines Partners bist. Vielleicht sollte sich jemand mal die Flows anschauen, der B1i Erfahrung hat. Unter Umständen ist eine Automatisierung / Anpassung / Korrektur gar nicht so wild.

Grüße

Former Member
0 Kudos

Hallo Steffen,

okay, jetzt habe ich schon mal einen Überblick und ein paar Denkanstöße.

Mal schauen was draus wird!

Danke auf jeden Fall schon mal.

Mit freundlichen Grüßen,

Maik

Answers (0)