Geschäftsszenario
- Mit Abfragen können Sie Daten aus einer SAP-Business-One-Firmendatenbank schnell anzeigen und formatieren. Sie können Querys auf verschiedene Arten verwenden, z.B.:
- Zum Erstellen von Ad-hoc-Berichten, die immer wieder ausgeführt werden können. Diese werden als Benutzerabfragen bezeichnet.
- Legen Sie benutzerdefinierte Warnmeldungen und Genehmigungsprozesse in SAP Business One an. Die Query kann nach Bedingungen suchen, die nicht durch vordefinierte Alerts oder Standardgenehmigungsverfahren abgedeckt sind.
- Füllen Sie den Inhalt eines Felds, einschließlich benutzerdefinierter Felder. Die Abfrage wird dem Feld als benutzerdefinierte Werte hinzugefügt (formatierte Suchen) und kann den Feldwert aus den Abfrageergebnissen füllen.
- Dynamische Informationen für Analysen in Dashboards und KPIs anzeigen
- Zum Validieren der Werte, die während der Datenmigration in eine Tabelle oder ein Feld importiert wurden.
- Sie sollten sich darüber im Klaren sein, dass die Abfragetools nicht für die Erstellung komplexer, vollständig formatierter Berichte oder Drucklayouts konzipiert sind. Sie sollten Crystal Reports für diese Zwecke verwenden. Außerdem dürfen Sie die Abfragetools nicht verwenden, um Standardtabellenfelder einzufügen, zu aktualisieren oder zu löschen.
Systeminformationen

Um Abfragen ausführen zu können, müssen Sie die Namen der SAP-Business-One-Tabellen und -Felder kennen. Diese Informationen werden angezeigt, wenn Sie Systeminformationen aktivieren.
Objekte und Tabellen

Ein Objekt kann mehrere Tabellen in der SAP-Business-One-Datenbank umfassen.
Beispielsweise wird das Geschäftspartner-Stammdatenobjekt in mehreren Tabellen in der Datenbank gespeichert, einschließlich der Kopftabelle OCRD. Es gibt zugehörige untergeordnete Tabellen, z.B. OCPR, CRD1, OSLP usw. Diese untergeordneten Tabellen enthalten die Daten, die Sie auf den verschiedenen Registerkarten des Geschäftspartnerdatensatzes sehen.
In SAP Business One haben Tabellennamen eine Länge von 4 Zeichen.
Systeminformationen

Um eine SQL-Abfrage zu entwickeln, müssen Sie die Datenbanktabelle und den Feldnamen für die Selektion kennen.
Wenn Sie ein Objekt in SAP Business One öffnen, können Sie den Tabellennamen für ein Feld ermitteln, indem Sie im Menü Ansicht die Option Systeminformationen aktivieren. Sie können auch die Tastenkombination Strg + Umschalt + I verwenden.
Wenn Sie dann den Mauszeiger über ein Feld im Objekt bewegen, werden die relevanten Tabelleninformationen für das Feld in der Statusleiste unten im Fenster angezeigt.
Sie haben nun den Tabellennamen und den Feldnamen, die Sie in Ihre SQL-Abfrage eingeben müssen.
Es werden weitere Informationen zum Feld angezeigt, z.B. die maximale Länge des Felds.
Das Geschäftspartner-Stammdatenobjekt wird auf der Folie dargestellt. Wenn Sie den Mauszeiger über das Feld Name bewegen, sehen Sie, dass die Tabelle OCRD und der Feldname CardName lautet.
Dokumente und Objekte

Verkaufs- und Einkaufsbelege wie Aufträge, Angebote und Rechnungen haben alle dieselbe Struktur und basieren auf zwei Hauptobjekten:
- das Objekt Dokumente für die Kopfteile des Dokuments
- Das Objekt Document_Lines für den Matrix- oder Zeilenabschnitt des Dokuments
Eine Belegart, z.B. ein Kundenauftrag, umfasst mehrere Tabellen. Die Tabellen sind für jede Belegart unterschiedlich, sodass sich die Tabellenmenge für eine Bestellung von der Gruppe der Tabellen für einen Kundenauftrag unterscheidet.
Beispielsweise verwendet der Kundenauftrag die Datenbanktabelle ORDR für den Kopf und die Tabelle RDR1 für die Zeilen.
Systeminformationen - Positions- und Spaltennummern

- Die Systeminformationen zeigen neben dem Tabellen- und Feldnamen auch die Positionsnummer für ein Kopffeld sowie die Artikel-, Spalten- und Zeilennummer für ein zeilenbasiertes Feld an.
- Beispiel: In einem Kundenauftrag ist die Positionsnummer für das Feld CardCode 4. Die Spaltennummer für das Feld CardCode wird nicht angezeigt, da es sich um ein Kopffeld in der Tabelle ORDR handelt und die Spaltennummer für alle Kopffelder 0 ist.
- Wenn Sie andere Belege öffnen, sehen Sie, dass das Feld CardCode immer 4 ist.
- Warum ist das wichtig? Die Positionsnummer für ein Feld gilt für alle Belegarten, die dieselbe Struktur haben, z.B. Verkaufs- und Einkaufsbelege. In diesen Belegen sind die Positionsnummern identisch, aber die Tabellennamen sind unterschiedlich. Wenn Sie die Positionsnummer anstelle des Feldnamens verwenden, können Sie Abfragen schreiben, die über mehrere Belegarten hinweg funktionieren können, indem Sie dieselbe Positionsnummer referenzieren.
- Im unteren Screenshot auf der Folie sehen Sie, dass das Feld ItemCode in der Kundenauftragsbelegmatrix die Positionsnummer 38 und die Spaltennummer 1 hat. Die Zeilennummer 1 steht für die erste Zeile im Beleg (d.h. Zeilennummern beginnen bei 1).
- Sie stellen fest, dass die Artikel- und Spaltennummer für ein Zeilenfeld in ähnlichen Belegarten identisch sind, z.B. hat der Artikelcode die Positionsnummer 38 und die Spaltennummer 1 in allen Verkaufs- und Einkaufsbelegen.
Systeminformationen - Berechnete Felder

- Sie stellen fest, dass der Tabellen- und Feldname für einige Felder, einschließlich des Einheitspreises und berechneter Felder wie Summen und Steuern, nicht angezeigt wird. Diese Felder werden im Beleg konkateniert mit dem Währungssymbol angezeigt, wohingegen der Betrag in der Datenbank ohne das Währungssymbol gespeichert wird.
- Sie können diese Felder weiterhin in einer Query verwenden. Sie können die Positionsnummer verwenden, um auf das Feld zu verweisen, oder Sie können den Datenbankfeldnamen aus der Datenbanktabellenreferenz abrufen.
Datenbanktabellenreferenz

Sie finden die Datenbanktabellen-Referenzdatei REFDB im Ordner SAP Business One SDK > Hilfe . Wenn Sie die Data Transfer Workbench installiert haben, können Sie sie über das Menü Hilfe öffnen.
Zusätzlich zu den Feldnamen für ein Objekt stellt die Referenzdatei Folgendes bereit:
- Die Beschreibung
- Der Typ des Felds (z.B. Int, VarChar, Numeric, Text usw.).
- Die maximale Länge eines Felds
- Wenn das Feld ein Fremdschlüssel ist, gibt es eine Verknüpfung zur zugehörigen Tabelle.
- einen Vorschlagswert, falls vorhanden
- Einschränkungen für die Feldwerte
Abfragewerkzeuge

SAP stellt zwei Abfragewerkzeuge bereit, die Sie bei der Entwicklung der Abfragesyntax unterstützen.
Abfragewerkzeuge

- Werkzeuge zum Erstellen und Verwalten von Benutzerabfragen finden Sie unter dem Menü Extras in der oberen Menüleiste der Clientanwendung.
- SAP Business One bietet zwei Werkzeuge, den Abfragegenerator und den Abfrageassistenten, um Sie beim Erstellen von Abfragen mit der strukturierten Abfragesprache (SQL) zu unterstützen. SQL ist ein standardisierter Satz von Befehlen für den Zugriff auf und die Formatierung von Daten in relationalen Datenbanken. Beide Werkzeuge liefern am Ende die gleichen Ergebnisse, und es ist in erster Linie eine Frage Ihrer eigenen Vorliebe, welches Werkzeug Sie verwenden.
Abfrageassistent

- Wie der Name schon sagt, führt Sie der Abfrageassistent Schritt für Schritt durch den Prozess zum Erstellen einer Abfrage, ohne dass Sie SQL-Befehle und Syntax schreiben müssen. Sie sollten dieses Werkzeug verwenden, wenn Sie wenig Erfahrung mit SQL haben. Der Abfrageassistent ist ein mehrstufiger Assistent.
- Um eine Abfrage über den Abfrageassistenten auszuführen, wählen Sie im letzten Schritt die Drucktaste Fertigstellen.
- Die generierte Abfrage und die Ergebnisse der Abfrage werden im Vorschaufenster der Abfrage angezeigt.
Abfragebeispiel mit Abfrageassistent

- Im ersten Schritt des Assistenten drücken Sie die Tabulatortaste, um die Liste der Datenbanktabellen anzuzeigen, und wählen die gewünschte Tabelle aus (zugehörige Tabellen werden angezeigt und können ausgewählt werden).
- Anschließend drücken Sie im nächsten Schritt die Tabulatortaste, um die Felder anzuzeigen und auszuwählen. Alle Felder aus der Tabelle werden angezeigt, und Sie können Teilnamen im Feld Suchen eingeben. Doppelklicken Sie auf ein Feld, um es für die Abfrage auszuwählen. Markieren Sie jedes Feld in einer separaten Zeile im Schritt des Assistenten.
- Das System generiert die SQL-Anweisungen im Hintergrund, sodass Sie keine genauen SQL-Syntaxkenntnisse benötigen. Da dies jedoch über einen Assistenten erfolgt, sind mehrere Schritte erforderlich, um die Abfrage zu erstellen.
- Sie finden den Abfrageassistenten einfacher zu verwenden, wenn Sie mit SAP-Business-One-Tabellen und ihren Beziehungen zueinander wenig vertraut sind. Wenn Sie eine Tabelle auswählen, zeigt der Abfrageassistent alle Tabellen an, die sich auf die von Ihnen ausgewählte Tabelle beziehen, sodass Sie Daten aus mehreren Tabellen auswählen können. Wenn Sie mehrere Tabellen für Ihre Abfrage auswählen, kümmert sich der Assistent um die Tabellen-Joins.
- Die generierte Abfragesyntax wird auf der Folie angezeigt.
Abfragegenerator

- Mit dem zweiten Werkzeug, dem Abfragegenerator, können Sie die SQL in einem einzigen Bild erstellen. Wenn Sie über grundlegende SQL-Kenntnisse verfügen, finden Sie den Abfragegenerator viel schneller als der Abfrageassistent.
- Sie wählen die Tabellen und dann die Felder aus, und die Abfrage wird auf der rechten Seite des Fensters angezeigt.
- Um die zusammengesetzte Abfrage im Abfragegenerator auszuführen, wählen Sie die Drucktaste Ausführen.
- Die Abfrageergebnisse werden im Fenster für die Abfragevorschau angezeigt.
Query-Beispiel mit Abfragegenerator

- Um die Abfrage zu generieren, geben Sie den Tabellennamen in das Textfeld oben links im Fenster ein, oder drücken Sie die Tabulatortaste in diesem Feld, um die vollständige Liste der Tabellen anzuzeigen.
- Drücken Sie erneut die Tabulatortaste, um eine Liste aller Felder in der Tabelle anzuzeigen. Doppelklicken Sie, um jedes Feld aus der angezeigten Liste auszuwählen. Die Elemente der Abfrage werden erstellt und auf der rechten Seite des Werkzeugfensters angezeigt.
- Wie der Abfrageassistent stellt der Abfragegenerator automatisch den Inner Join bereit, wenn Sie mehr als eine Tabelle für eine Abfrage auswählen. Obwohl die Liste der Tabellen, die sich auf Ihre ausgewählte Tabelle beziehen, nicht angezeigt wird, werden Felder, die Schlüssel zu zugehörigen Tabellen sind, fett angezeigt. Sie können das fett markierte Feld per Drag&Drop in die Tabellenauswahlspalte ziehen, und der Abfragegenerator öffnet die zugehörige Tabelle, sodass Sie Felder aus dieser Tabelle auswählen können.
Fenster Abfragevorschau

Im Fenster Abfragevorschau werden die Abfragesyntax und die Ergebnisse angezeigt.
Die von den integrierten Abfragetools generierte SQL-Syntax hängt von der zugrunde liegenden Datenbank ab, entweder von der SQL-Server-Datenbank oder von SAP HANA. Die Ergebnisse werden jedoch identisch sein.
Im Vorschaufenster der Abfrage haben Sie die Möglichkeit, die erstellte Abfrage zu bearbeiten. Klicken Sie auf das Bleistiftsymbol, um die Abfragesyntax zu bearbeiten. Im Bearbeitungsmodus können Sie Ihre eigene Abfrage von Grund auf neu schreiben und ausführen.
Im Fenster für die Abfragevorschau können Sie auch Abfragen zur Wiederverwendung sichern. Dies wird später in diesem Kurs besprochen.
Abfragesyntax

Die beiden Abfragewerkzeuge unterstützen Sie bei der Entwicklung der Abfrage, aber Sie benötigen auch einige grundlegende Kenntnisse der Elemente, aus denen sich die SQL-Abfragesyntax zusammensetzt.
Grundelemente einer Query

Eine Abfrage oder die zugrunde liegende SQL-Anweisung enthält eines oder mehrere der grundlegenden Elemente, die auf der Folie aufgeführt sind:
- Auswahl von Feldern. Sie können auch Berechnungsfelder angeben, die das Ergebnis einer Addition, Subtraktion, Multiplikation oder Division zweier Felder anzeigen.
- Bedingungen für die Selektion (Where-Klausel)
- Sortierreihenfolge (order by -Klausel)
- Gruppieren und Zusammenfassen (group by-Klausel)
Die Beispielabfrage oben rechts im Bild zeigt Informationen zu offenen Bestellungen an, die in der letzten Woche hinzugefügt wurden. Die Query selektiert Daten aus der Bestelltabelle OPOR. Die Ergebnisse der Abfrage, ein einfacher Snapshot aus der Datenbank, werden angezeigt. Die Summe der Zeilen wird nicht angezeigt. Sie können diese jedoch dem Bericht hinzufügen, indem Sie die Strg -Taste gedrückt halten und zweimal mit der Maus klicken.
Beachten Sie, dass bei SQL die Groß- und Kleinschreibung nicht beachtet wird. Daher müssen die Befehle nicht in Großbuchstaben geschrieben werden. Bei Tabellennamen und Feldnamen, die Kleinbuchstaben enthalten, müssen Sie in der SAP-HANA-Syntax doppelte Anführungszeichen um die Feldnamen einfügen.
Alle in diesem Kurs gezeigten Abfragebeispiele beziehen sich auf SAP HANA. Eine Liste der Unterschiede in der SQL-Syntax für SAP HANA finden Sie im Dokument Best Practices of SQL in the SAP HANA Database.
Query-Elemente - Where-Klausel

- Mit der optionalen Where-Klausel können Sie nur Datensätze filtern, die bestimmte Kriterien erfüllen. Obwohl die Abfragetools Ihnen dabei helfen, die grundlegenden Elemente der Abfrage zusammenzustellen, benötigen Sie einige Kenntnisse der SQL-Syntax, um die Where-Klausel zu vervollständigen.
- In die Where-Klausel können Sie Folgendes aufnehmen:
- Feste Bedingungen als Vergleiche. In unserer Beispielabfrage werden beispielsweise nur offene Bestellungen (DocStatus 'O') angezeigt.
- Berechnungen und Funktionen. In der Beispielabfrage wurde eine Berechnung hinzugefügt, um nur Bestellungen zu berücksichtigen, die in den letzten 7 Tagen gebucht wurden. Der Wert für das Buchungsdatum (DocDate) wird mit dem aktuellen Datum - 7 abgeglichen. Mit der Funktion ADD_DAYS wird das aktuelle Datum minus 7 berechnet.
- Variablen. Variablen werden als [%0], [%1], [%2] usw. angegeben. Wenn Sie eine Variable einschließen, wird der Benutzer bei der Ausführung der Abfrage aufgefordert, einen Wert als Parameter einzugeben.
- Mit den Operatoren AND und OR können mehrere Bedingungen verknüpft werden. In der Beispielabfrage verwenden wir den Operator AND, da beide Kriterien erfüllt sein müssen.
Hinweis: Die angezeigte Beispielabfrage verwendet das Feld DocStatus als Kriterium. In der Datenbank hat dieses Feld eine feste Liste zulässiger Werte (Constraints). Um die möglichen Werte für ein Feld wie DocStatus herauszufinden, haben Sie zwei Möglichkeiten:
- Führen Sie eine Abfrage für die Tabelle aus, und wählen Sie den Feldnamen aus. In den Ergebnissen sehen Sie die möglichen Werte, die bereits in der Datenbank gespeichert sind.
- Eine Liste der zulässigen Werte (Constraints) finden Sie unter Datenbanktabellenreferenz.
Query-Elemente - Where-Klausel (Forts.)

- Variablen geben dem Benutzer die Flexibilität, die Parameter beim Ausführen der Abfrage zu ändern.
- Variablen werden einfach in eckigen Klammern mit %0 als erste Variable, %1 mit der zweiten Variable usw. definiert.
- Im Beispiel wird das Buchungsdatum BelDatum als Filter verwendet, aber wir haben eine variable Bedingung hinzugefügt. Wenn Sie die Abfrage ausführen, werden Sie aufgefordert, das Buchungsdatum einzugeben. Das vom Benutzer eingegebene Datum wird in der Where-Klausel verwendet und mit dem Buchungsdatum aus der Bestellung verglichen. Nur Datensätze, deren Buchungsdaten nach dem Parameterdatum liegen, werden in die Abfrageergebnisse einbezogen.
Query-Elemente - Sortieren

- Optional können Sie die Abfrageergebnisse sortieren, indem Sie der Abfrage die Order By-Klausel hinzufügen.
- Die Ergebnisse werden standardmäßig in aufsteigender Reihenfolge (ASC) mithilfe des angegebenen Felds sortiert. In diesem Beispiel werden die Ergebniszeilen (Bestellungen) nach Buchungsdatum (DocDate) sortiert.
- Sie können nach absteigender Reihenfolge sortieren, indem Sie das Schlüsselwort DESC hinzufügen.
- Sie können nach mehreren Feldern sortieren, und diese Felder können entweder Teil der SELECT-Klausel oder anderer Felder in einer der Tabellen der Abfrage sein.
Query-Elemente - Nach Klausel gruppieren

- Mit der optionalen GROUP BY-Klausel können Sie die Abfrageergebnisse gruppiert oder zusammengefasst nach einem bestimmten Feld anzeigen, z.B. nach Geschäftspartner. In unserem Beispiel wurde die ursprüngliche Abfrage neu geschrieben, um das Element Gruppieren nach zu verwenden, und wird neben der ursprünglichen Abfrage auf der Folie angezeigt.
- Die gruppierten Ergebnisse werden in Sets gesammelt, wobei das Feld oder die Felder Gruppieren nach als gemeinsamer Wert verwendet werden.
- Gruppieren nach wird in der Regel in Verbindung mit einer mathematischen Funktion wie Anzahl oder Summe verwendet. In der Beispielabfrage zählt die Funktion Count die Anzahl der Bestellungen, und die SUM-Funktion berechnet die Belegsumme aus jeder Bestellung.
- Die ausgewählten Felder werden gemäß den in der GROUP BY-Klausel angegebenen Feldern konsolidiert. Daher werden die Ergebnisse in der Beispielabfrage nach Lieferant (CardCode) konsolidiert, und die Abfrage zeigt eine konsolidierte Zeile für jeden Lieferanten mit der Anzahl und dem Gesamtbetrag aller offenen Bestellungen für den Lieferanten an.
- Beachten Sie, dass die Spaltenüberschriften für die Felder angegeben werden müssen, die gezählt und summiert werden, da die Spaltenüberschriften für diese Felder nicht in der Datenbank vorhanden sind.
- Wenn Sie die GROUP BY-Klausel verwenden, müssen Felder, die Sie in der Select-Anweisung verwenden, auch entweder in der Group-By-Klausel oder in der Aggregatfunktion (Count oder SUM) angezeigt werden. Aus diesem Grund haben wir das Feld CardName in der Group-by-Klausel angegeben.
Tabellenaliase und Joins

- Wenn Sie mehr als eine Tabelle in Ihrer Abfrage angeben, müssen Sie normalerweise Joins zwischen jeder Tabelle erstellen. Die Werkzeuge Abfrageassistent und Abfragegenerator erleichtern Ihnen dies, indem sie den Inner Join automatisch bereitstellen, wenn Sie mehr als eine Tabelle für eine Abfrage auswählen. Wenn Sie beispielsweise die Bestelltabelle (OPOR) und auch die Geschäftspartner-Stammdatentabelle (OCRD) auswählen, verknüpfen die Abfragewerkzeuge diese Tabellen über den Geschäftspartnercode, der beiden Tabellen gemeinsam ist.
- Die Abfragetools fügen automatisch einen Alias für jede Tabelle hinzu, z.B. T0, T1 usw. Wenn die Abfrage mehr als eine Tabelle referenziert, können Sie so die relevante Tabelle für ein Feld identifizieren.
- Wenn Sie eine Tabelle auswählen, zeigt der Abfrageassistent alle Tabellen an, die sich auf die von Ihnen ausgewählte Tabelle beziehen. Im Abfragegenerator werden Felder, die Schlüssel zugehöriger Tabellen sind, fett angezeigt. Sie können das fett markierte Feld per Drag&Drop in die Tabellenauswahlspalte ziehen, und der Abfragegenerator öffnet die zugehörige Tabelle, sodass Sie Felder aus dieser Tabelle auswählen können.
Berichtsspaltenüberschriften

Wenn eine Abfrage ausgeführt wird, werden Überschriften für die Berichtsspalten aus den Datenbankspaltennamen übernommen. So ändern Sie eine Spaltenüberschrift im Abfragebericht:
- Geben Sie im Abfrageassistenten einfach den gewünschten Text in die Spalte Überschrift des Assistentenbildschirms ein.
- Verwenden Sie im Abfragegenerator das Schlüsselwort "as", gefolgt vom neuen Überschriftstext in doppelten Anführungszeichen. Geben Sie diesen Text direkt in das Auswahlfeld ein.
Abfragesyntax - Aktives Fenster

- In vielen Situationen muss die Abfrage auf Felder im aktiven Fenster verweisen. Im Beispiel ist das aktive Fenster durch eine blaue Linie oben im Formular oder Dokument gekennzeichnet.
- Dies gilt für Abfragen, die in Genehmigungsverfahren und mit benutzerdefinierten Werten verwendet werden. In diesen beiden Situationen wird die Abfrage ausgeführt, während ein Beleg vom Benutzer im aktiven Fenster verarbeitet wird.
- Wenn sich eine Abfrage auf ein Feld im aktiven Fenster statt auf ein Feld aus der Datenbank beziehen muss, müssen Sie ein $-Zeichen einfügen und eckige Klammern um die Tabelle und den Feldnamen setzen, um anzugeben, dass sich das Feld im aktiven Fenster befindet.
- Im gezeigten Beispiel haben Sie einem Feld im Kundenauftrag eine Abfrage als benutzerdefinierte Werte hinzugefügt. Die Abfrage ruft den Kontostand des Kunden aus dem Stammdatensatz ab und zeigt den Saldo in einem benutzerdefinierten Feld im Kundenauftrag an. Der Kundenauftrag ist das aktive Fenster, da der Benutzer daran arbeitet. Daher enthält die Referenz auf CardCode die spezielle Syntax. Die Abfrage gleicht den CardCode aus dem aktiven Fenster mit dem CardCode in den Stammdaten ab.
- Der Stammdatensatz in diesem Beispiel befindet sich nicht im aktiven Fenster. Felder, auf die von der Datenbank zugegriffen wird, z.B. das Saldofeld aus dem Stammdatensatz, benötigen nicht das Zeichen $.
- Weitere Informationen zu Abfragen und Genehmigungsprozessen finden Sie im Kurs Genehmigungsprozesse. Weitere Informationen zu Queries und benutzerdefinierten Werten finden Sie im Kurs Benutzerdefinierte Werte.
Syntax für Referenz auf aktives Fenster

- Wenn Sie ein Feld im aktiven Fenster referenzieren, können Sie entweder die Tabellen- und Feldnamensyntax oder die Artikel- und Spaltennummersyntax verwenden.
- Die Folie zeigt ein Beispiel für eine Abfrage, die in einem Genehmigungsprozess verwendet wird. Wenn Sie die Tabellen- und Feldnamensyntax für das aktive Fenster verwenden, enthält die Abfrage den Tabellennamen und kann daher nur mit einer einzigen Belegart verwendet werden. In diesem Fall kann die Abfrage nur ausgeführt werden, um Bestellungen zu genehmigen, da die Tabelle OPOR explizit in der Abfrage enthalten ist.
Hinweis: Abfragen, die in Genehmigungsprozessen verwendet werden, müssen immer ein echtes Ergebnis auswählen. Wenn in SAP HANA SQL keine FROM-Klausel in der Anweisung vorhanden ist, verwenden Sie FROM DUMMY.
Syntax für Referenz auf aktives Fenster

- Wenn Sie stattdessen die Artikelnummern- und Spaltensyntax verwenden, kann die Abfrage mit mehreren Belegarten ähnlicher Struktur verwendet werden. Diese Abfrage kann beispielsweise in einem Genehmigungsprozess verwendet werden, in dem mehrere Verkaufs- und Einkaufsbelege in der Genehmigungsvorlage ausgewählt sind.
- Das System identifiziert jedes Feld eines Belegs eindeutig über den Index und die Spaltennummer des Feldes.
- Wenn Sie ein Kopffeld mit der Artikel- und Spaltensyntax referenzieren, setzen Sie die Spaltennummer auf 0.
- Das Feld wird als Zeichenfolge abgerufen. Wenn Sie also ein anderes Format benötigen, müssen Sie das Format nach der Spaltennummer angeben:
- 0 - Dies ist das Standardformat für Zeichenfolgen.
- Zahl - gibt das Ergebnis als numerische Zahl zurück, die Sie in Berechnungs- oder Vergleichsoperatoren verwenden können. Im Beispiel der Folie wird das Ergebnis mit 500 verglichen. Da das Feld BelSumme sowohl den Betrag als auch das Währungssymbol enthält, wird der Betrag extrahiert, wenn Sie hier numerisch angeben.
- Währung – gibt das Währungssymbol aus einem Feld zurück, das sowohl den Betrag als auch das Währungssymbol enthält, z. B. BelSumme.
- Datum – sollte nur verwendet werden, wenn das Feld ein Datumsfeld ist. Das Datum wird in einem Format zur Verwendung in Berechnungs- oder Vergleichsoperatoren zurückgegeben.
Speichern und Verwalten von Abfragen

Nachdem Sie eine Abfrage angelegt haben, können Sie sie zur Wiederverwendung sichern.
Abfrage sichern

- Sie können eine Abfrage aus dem Abfragevorschaufenster heraus sichern. Wenn Sie eine Abfrage speichern, müssen Sie eine Kategorie auswählen. Die Kategorie Allgemein steht Ihnen zur Verfügung. Wenn Sie jedoch viele Benutzerabfragen hinzufügen möchten, sollten Sie zusätzliche Kategorien anlegen, um die Abfragen zu verwalten.
- Abfragen, die Sie sichern, befinden sich als Benutzerabfragen. Um eine gespeicherte Benutzerabfrage auszuführen, wählen Sie in SAP Business One das Menü Werkzeuge, und wählen Sie dann die Kategorie und den Abfragenamen aus.
Abfragemanager

- Wie der Name schon sagt, können Sie mit dem Abfragemanager die von Ihnen gespeicherten Benutzerabfragen verwalten.
- Sie können Abfragen nach Kategorie speichern und organisieren. Sie können Abfragen auch löschen.
- Die Systemkategorie ist für von SAP ausgelieferte Queries. Zum Speichern von Benutzerabfragen steht Ihnen die Kategorie Allgemein zur Verfügung, und Sie können zusätzliche Kategorien anlegen.
- Um eine neue Kategorie anzulegen, wählen Sie die Drucktaste Kategorien verwalten. Wählen Sie dann Hinzufügen, um die neue Kategorie hinzuzufügen, und sichern Sie Ihre Abfrage. In diesem Beispiel legen wir eine neue Kategorie mit der Bezeichnung „Einkauf" an.
Abfrageberechtigungsgruppen

- Wenn Sie eine neue Kategorie anlegen, müssen Sie sie mindestens einer Abfrageberechtigungsgruppe zuordnen, sonst können Sie die neue Kategorie nicht sichern.
- Nur Benutzer, die Zugriff auf eine Abfrageberechtigungsgruppe erhalten haben, können die für die Kategorie gespeicherten Abfragen ausführen. Auf diese Weise können Sie steuern, welche Benutzer auf die gesicherte Benutzerabfrage zugreifen und diese ausführen können.
Betrachten wir das hier bereitgestellte Beispiel:
- Sie sehen, dass die Abfrageberechtigungsgruppen 1 und 2 der Abfragekategorie Verkauf zugeordnet sind. Die Abfrageberechtigungsgruppen 2 und 3 sind der Kategorie Einkauf zugeordnet.
- Die Benutzer Bill und Donna sind der Abfrageberechtigungsgruppe 1 zugeordnet.
- Die Benutzer Sophie und Tim sind der Abfrageberechtigungsgruppe 2 zugeordnet.
- Julie und Juan sind der Abfrageberechtigungsgruppe 3 zugeordnet.
- Daher können Bill und Donna alle Abfragen ausführen, die in der Kategorie Verkauf gesichert sind, indem sie mit der Abfrageberechtigungsgruppe 1 verknüpft sind. Sophie und Tim können alle Abfragen ausführen, die sowohl in der Kategorie Verkauf als auch in der Kategorie Einkauf gespeichert sind, da beide Kategorien mit der Abfrageberechtigungsgruppe 2 verknüpft sind. Julie und Juan können alle Abfragen ausführen, die in der Einkaufskategorie gespeichert sind, die mit der Abfrageberechtigungsgruppe 3 verknüpft ist.
Benutzerberechtigung für Abfragekategorie

Einem Benutzer wird im Fenster Allgemeine Berechtigungen die Berechtigung für eine Abfrageberechtigungsgruppe erteilt. Sie finden diese Berechtigung unter Reports > Abfragegenerator. Sie sehen 15 Abfrageberechtigungen - Gesicherte Abfragen - Gruppennr. 1 - 15. Diese sind für Sie sofort einsatzbereit. Sie können zusätzliche Abfrageberechtigungsgruppen im Abfragemanager anlegen.
Im Folienbeispiel erhält der Benutzer bob die Berechtigung, die Berechtigungsgruppen 1 und 2 schreibgeschützt abzufragen. Derselbe Benutzer erhält auch die Gesamtberechtigung für die Gruppe "Benutzerabfragen für Alerts", bei der es sich um eine neue Berechtigungsgruppe handelt, die der Liste hinzugefügt wurde.
Da die Berechtigung auf Kategorieebene erteilt wird, kann der Benutzer bob jede Abfrage ausführen, die in einer Kategorie gespeichert ist, die mit einer dieser ausgewählten Berechtigungsgruppen verknüpft ist.
Wenn Sie den Zugriff auf gespeicherte Benutzerabfragen sichern möchten, müssen Sie Abfragekategorien und Abfrageberechtigungsgruppen sorgfältig planen.
Beachten Sie, dass Abfrageberechtigungsgruppen nicht mit den Berechtigungsbenutzergruppen übereinstimmen, die zum Zuordnen allgemeiner Berechtigungen zu mehreren Benutzern verwendet werden. Weitere Informationen zu allgemeinen Berechtigungen finden Sie im zugehörigen Kurs Allgemeine Berechtigungen und Benutzergruppen. Sie können die Berechtigung auch mehreren Benutzern einer Benutzergruppe gleichzeitig zuordnen.
Weitere Abfrageberechtigungen

Neue Benutzer haben keine Berechtigung, neue Benutzerabfragen oder Abfragekategorien anzulegen, es sei denn, sie sind Superuser. Dies dient dem Schutz von Informationen in der Datenbank. Die erforderlichen Berechtigungen sind:
- Neue Abfragen: neue Abfragen mit dem Abfragegenerator anlegen
- Kategorien erstellen/bearbeiten: Kategorien im Abfragemanager erstellen und bearbeiten
- Abfrageassistent: Abfragetool verwenden
- Abfragemanager: Verwenden Sie den Abfragemanager, um gespeicherte Abfragen zu verwalten.
- Berichtseinplanung: eine gespeicherte Abfrage als Bericht einplanen
Hinweis: Um Dashboards und interaktive Sichten in SAP HANA anzuzeigen, müssen Berechtigungen für den Themenbereich Analytics festgelegt werden.
Zusammenfassung
Im Folgenden finden Sie einige wichtige Punkte, die Sie dieser Sitzung entnehmen sollten. Nehmen Sie sich eine Minute Zeit, um die folgenden wichtigen Punkte zu prüfen:
- SQL-Abfragen können verwendet werden, um Ad-hoc-Berichte zu erstellen, als ersten Schritt, um einen komplizierteren Bericht mit Benutzerwarnungen und Genehmigungsverfahren zu entwerfen, und während des Implementierungsprojekts, um migrierte Daten zu validieren, die in Tabellen importiert wurden.
- Systeminformationen können dabei helfen, Tabellen- und Feldnamen oder Artikel- und Spaltennummern zu identifizieren. Verwenden Sie den Befehl Ansicht > Systeminformationen, um die Anzeige der Systeminformationen zu aktivieren.
- Für die Erstellung von SQL-Abfragen stehen zwei Werkzeuge zur Verfügung: der Abfrageassistent und der Abfragegenerator. Probieren Sie beide Tools aus, um zu sehen, welche Sie bevorzugen.
- Sie können Abfragen als Benutzerabfragen speichern und nach Kategorie organisieren. Mit dem Abfragemanager können Sie gespeicherte Benutzerabfragen organisieren und verwalten.
- Benutzer benötigen die Berechtigung zum Ausführen gesicherter Benutzerabfragen. Zuerst wählen Sie eine Abfrageberechtigungsgruppe für die Kategorie aus, in der die Abfrage gesichert wurde, und ordnen dann im Fenster für allgemeine Berechtigungen der Abfrageberechtigungsgruppe der Kategorie einen Benutzer zu.
- Eine spezielle Syntax wird für Abfragen verwendet, die ausgeführt werden, während ein Dokument im aktiven Fenster verarbeitet wird. Dies gilt hauptsächlich für Abfragen, die in Genehmigungsprozessen verwendet werden.