Als langjähriger Anwender und Befürworter von SAP Business One (SAP B1) habe ich mich stets gerne in der Community engagiert, sei es durch das Beantworten von Fragen, das Verfassen von Blogbeiträgen oder das Entwickeln von Wikis. Es war eine Freude, mein Wissen zu teilen, nicht zuletzt dank Mentoren, die mich dazu ermutigten. Nach einer Auszeit und einer jüngsten Kontaktaufnahme durch eine Anwenderin namens Pia, die Unterstützung bei einer SQL-Abfrage benötigte, spürte ich den Drang, mein Engagement fortzusetzen. Oft sind es die kleinen, unscheinbaren Erkenntnisse, die anderen enorm weiterhelfen können – genau das ist mein Ziel mit diesem Beitrag über ein grundlegendes, aber oft missverstandenes Detail in SAP B1: die Unterscheidung zwischen LineNum
und VisOrder
.
Die Welt der SAP B1-Entwicklung und -Anpassung entwickelt sich ständig weiter, und während man manchmal von den “guten alten Zeiten” spricht, bedeutet das meist, dass Fortschritt im Gange ist. Meine Rückkehr dient dazu, sowohl Neulingen als auch erfahrenen Nutzern weiterhin nützliche Informationen zu liefern. Dieser Artikel mag keine bahnbrechenden Neuigkeiten enthalten, aber er beleuchtet einen wichtigen Aspekt, der Ihre SQL-Fähigkeiten bei der Arbeit mit SAP Business One maßgeblich verbessern kann.
LineNum vs. VisOrder: Eine grundlegende Abgrenzung für SAP B1-SQL
In den allermeisten Fällen verwenden Entwickler bei der Erstellung von SQL-Abfragen in SAP B1 das Feld LineNum
. Dieses LineNum
ist ein interner Systemzähler in SAP B1, der es ermöglicht, komplexe JOINs durchzuführen, um beispielsweise die Standardfunktion “Beziehungsplan” von SAP B1 nachzubilden. Wenn Sie eine abgeschlossene Verkaufsbestellung öffnen, mit der rechten Maustaste klicken und “Beziehungsplan” auswählen, sehen Sie alle zugehörigen Lieferungen und möglicherweise Links zu Ausgangsrechnungen, Verkaufsangeboten usw. LineNum
ist ein zentraler Bestandteil der JOIN-Bedingung, die verwendet wird, um Informationen ähnlich dem Beziehungsplan zu erstellen. (In einem weiteren Blogbeitrag werde ich die Verwendung von LineNum
in Kombination mit BaseLine
detaillierter erläutern).
Das Problem entsteht, wenn Endbenutzer, die sehr versiert in der Überprüfung und dem Testen von SQL-Abfragen sind, feststellen, dass LineNum
möglicherweise nicht die tatsächliche Zeilennummer auf einem angezeigten Dokument widerspiegelt. Dies kann dazu führen, dass der Endbenutzer die SQL-Abfrage ablehnt, da es schwierig wäre, die Ergebnisse der SQL-Abfrage mit den Informationen in SAP Business One in Beziehung zu setzen oder zu überprüfen. Glauben Sie mir, in meinen vielen Jahren in diesem Bereich habe ich unzählige Fälle erlebt, in denen ein Endbenutzer eine SQL-Abfrage aufgrund einer solchen kleinen Dateninkonsistenz abgelehnt hat.
Wenn Sie jedoch VisOrder
verwenden, ist Ihre SQL-Abfrage jedes Mal korrekt. VisOrder
steht für “Visual Order” und entspricht der tatsächlich angezeigten Zeilennummer auf dem SAP B1-Dokument, während der Endbenutzer Ihre SQL-Abfrage überprüft und testet. Dies ist besonders wichtig für die Benutzerfreundlichkeit und die Nachvollziehbarkeit der Daten in SAP B1 Sap-Umgebungen.
Der Unterschied zwischen LineNum und VisOrder in der SAP B1 Praxis
Nehmen wir ein Beispiel, das häufig im Alltag mit SAP Business One vorkommt: Ein Endbenutzer verwendet die Funktion “Kopieren nach”, um eine Lieferung in eine Ausgangsrechnung zu übernehmen. Die Lieferung enthält möglicherweise vier Zeilen. Der Endbenutzer stellt jedoch fest, dass es ein Problem mit der Preisgestaltung der angezeigten Zeilen 1 und 2 gibt, das später untersucht werden muss. Um den Cashflow nicht durch eine Verzögerung der Fakturierung zu beeinträchtigen, löscht der Endbenutzer die Zeilen 1 und 2, um diese später abzurechnen, und fakturiert nur die angezeigten Zeilen 3 und 4.
Um den Beziehungsplan in SAP Business One korrekt darzustellen, behält SAP B1 die ursprüngliche LineNum
in INV1
bei (um zur ursprünglichen Basis-Lieferzeile zurückzukehren) und erstellt die Ausgangsrechnung, wobei das Datenfeld VisOrder
in INV1
mit neuen Nummern gefüllt wird. Genau das geschah mit der Ausgangsrechnung Nummer 2121599, wie Sie im folgenden Screenshot sehen können:
Screenshot Vergleich LineNum und VisOrder in SAP Business One Ausgangsrechnung 2121599
Überprüfen Sie LineNum und VisOrder in Ihrem SAP B1-System
Sie können den Unterschied in Ihrem eigenen SAP B1-System leicht nachvollziehen. Führen Sie die folgende SQL-Abfrage aus. Verwenden Sie einen angemessenen Datumsbereich (z.B. das gesamte Jahr 2018) oder einen längeren Zeitraum, wenn Sie möchten, da solche Fälle nicht unbedingt häufig vorkommen. Sie werden jedoch möglicherweise feststellen, dass dies öfter geschieht, als Sie denken. Wenn es keine Unterschiede gibt, haben Sie Glück und außergewöhnliche Vertriebsmitarbeiter – jeder Kunde, mit dem ich zusammengearbeitet habe, hatte irgendwann solche Abweichungen.
Wichtiger Hinweis für SAP B1 SQL: Beachten Sie, dass Sie zur korrekten Anzeige des Wertes 1 zur VisOrder
addieren müssen. Aus irgendeinem Grund haben sich technische Experten entschieden, bei Null zu beginnen. Fragen Sie mich nicht warum – ich bin kein Techniker und habe keine Ahnung. Sie werden in der unten stehenden SQL-Abfrage sehen, was ich meine und wie Sie vorgehen müssen.
SELECT
T1.DocNum AS 'AR Rechnungsnummer',
T1.DocDate AS 'Buchungsdatum',
T0.LineNum + 1 AS 'Interne Zeilennummer',
T0.VisOrder + 1 AS 'Angezeigte Zeilennummer',
(T0.LineNum - T0.VisOrder) AS 'Differenz zwischen LineNum und VisOrder'
FROM INV1 T0
LEFT OUTER JOIN OINV T1
ON T0.DocEntry = T1.DocEntry
WHERE
T1.DocDate >= '[%0]'
AND T1.DocDate <= '[%1]'
Fazit und Ausblick für Ihre SAP Business One SQL-Fähigkeiten
Mit diesem kleinen, aber hoffentlich hilfreichen Informationsschnipsel setze ich mein Engagement fort, um Ihnen bei der Verfeinerung Ihrer SQL-Fähigkeiten in SAP B1 SAP zu helfen. Es mag nicht weltbewegend sein, aber es kann Ihnen oder jemand anderem helfen, präzisere Abfragen zu erstellen und die Datenintegrität aus Endbenutzersicht zu gewährleisten, was in jeder SAP Business One Implementierung von großer Bedeutung ist.
Ich verspreche Ihnen, es wird noch viel interessanter werden, wenn ich erst einmal richtig in Fahrt komme! Bleiben Sie dran für weitere Einblicke und Tipps rund um SAP Business One.