Ansicht
Dokumentation

InfoSet Query / SAP Query / Quick Viewer ( RELNBC_ABAP-QUERY-46C )

InfoSet Query / SAP Query / Quick Viewer ( RELNBC_ABAP-QUERY-46C )

RFUMSV00 - Advance Return for Tax on Sales/Purchases   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Kurztext

InfoSet Query / SAP Query / Quick Viewer

Verwendung

Mit Release 4.6C wird die SAP Query als Reporting-Tool für tabellarisches (flaches) Reporting für alle R/3-Systeme einschließlich des Business Information Warehouse (BW) positioniert. Damit im Zusammenhang steht die Schaffung neuer bzw. die Überarbeitung vorhandener Tools sowie die Verwendung einiger neuer Begriffe.

Mit Release 4.6C wird zur Pflege von Queries ein weiteres Tool zur Verfügung gestellt, die InfoSet Query(der Begriff InfoSet ersetzt den Begriff Sachgebiet). Die InfoSet Query hat die Ad-hoc-Query des HR als Vorbild und stellt somit eine Verallgemeinerung der AD-hoc-Query für alle Anwendungen dar. Beachten Sie dazu bitte auch die Release-Information der Anwendung HR.

Die überwiegende Mehrzahl der vorhanden Queries kann mit der InfoSet Query bearbeitet werden (genauere Aussagen dazu werden weiter unten angegeben). Umgekehrt kann jede Query, die mit der InfoSet Query erstellt wurde, mit den bisherigen Tools bearbeitet werden.

Das Tool zur Pflege von InfoSets (Sachgebieten) wurde komplett überarbeitet.

Neben der InfoSet Query als neues Tool wurden eine Reihe von Erweiterungen für Queries und InfoSets (Sachgebiete) realisiert.

  1. Neue Begriffe
  2. InfoSet Query
  • Übersicht

  • Pflege von Queries

  • Protokollierung

  • Aufruf der InfoSet Query

  1. Pflege von InfoSets
  2. Erweiterungen bei der Pflege von InfoSets
  • Generierung und Vorbelegung von Feldgruppen

  • Textfelder

  • Zusatzstrukturen

  • Coding zum Zeitpunkt AT SELECTION-SCREEN

  • Nicht summierbare Felder

  • Anwendungsspezifische Erweiterungen

  1. Erweiterungen bei der Pflege von Queries
  • Rundung in Grundlisten

  • Neue Optionen für Selektionskriterien

  • Dynamische Festlegung der Zahl der Ranglistenplätze

  1. Erweiterungen zur Laufzeit von Queries
  • Verwendung des SAP List Viewers

Neue Begriffe

Die Positionierung der SAP Query als Reporting-Tool, das auch im Business Information Warehouse (BW) eingesetzt wird, hat dazu geführt, daß einige Begriffe neu gebildet wurden.

Der Begriff InfoSetist ein neuer Name für die Sachgebiete. Mit dieser Umbenennung ist keine Einschränkung der Funktionalität der Sachgebiete verbunden. Alle bisherigen Möglichkeiten stehen weiterhin zur Verfügung, und es sind neue Funktionen hinzugekommen.

Im Zusammenhang mit der Umbenennung von Sachgebieten wurde der Begriff Sachgruppedurch Feldgruppeersetzt.

Die Funktion Interaktive Liste, die bei Queries zur Verfügung steht und den ABAP List Viewer zur Anzeige verwendet, wurde in SAP List Viewer umbenannt, da der ABAP List Viewer (ALV) in seiner Langform in SAP List Viewer umbenannt wurde.

InfoSet Query

Übersicht

Beim Entwurf der InfoSet Query wurden die Erfahrungen der Ad-hoc-Query des HR berücksichtigt. Die Grundidee besteht darin, daß ein Benutzer zunächst eine mehr oder weniger detaillierte Vorlage für eine Query liest, anschließend Änderungen nach seinen Wünschen vornimmt und dann die Query ausführt. Die Änderungen betreffen sowohl die zur Verfügung stehenden Selektionskriterien als auch die Werte, die durch die Query gelesen und ausgegeben werden sollen. Die Änderungen sind immer temporär, d.h. wenn die InfoSet Query ohne explizites Sichern verlassen wird, ist die Definition der Query verloren. Es ist jedoch möglich, die Änderungen zu sichern, sofern man die entsprechende Berechtigung besitzt. Dabei kann eine vorhandene Query überschrieben oder eine neue Query angelegt werden.

Alle wichtigen Angaben zur Query, d.h. die zur Verfügung stehenden Felder, die definierten Selektionskriterien und die Query-Ausgabe sollen auf einem Bild zur Verfügung stehen. Graphische Oberflächenelemente und drag&drop machen das Handling einfach und übersichtlich.

Mit der InfoSet Query wird versucht, die verschiedenen Ansätze der Query als Entwicklungstool und als Tool für Ad-hoc-Reporting zu vereinheitlichen. Das heißt, daß dieses Tool für beide Zwecke geeignet ist und die Definition einer Query in beiden Fällen völlig identisch verläuft. Im Abschnitt über den Aufruf der InfoSet Query (siehe unten) wird erläutert, welche Unterschiede zwischen beiden Ansätzen bestehen.

Die InfoSet Query wurde so konzipiert, daß sie aus Rollen heraus gerufen werden kann, um Reporting im Rahmen einer Rolle zu ermöglichen. Beim Aufruf aus einer Rolle heraus wird der Endbenutzer nicht mehr mit den Benutzergruppen der Query konfrontiert, sondern nur noch mit den InfoSets, die der betreffenden Rolle zugewiesen wurden. Auch hier sei auf den Abschnitt über den Aufruf der InfoSet Query (siehe unten) verwiesen.

Mit Einführung der InfoSet Query wird der SAP List Viewer (ALV, früher ABAP List Viewer) zum Standardausgabemedium für die Query. Dies heißt:

  • Wird eine Query abgearbeitet, so wird das Ergebnis immer mit Hilfe des SAP List Viewers angezeigt.
    Dies bedeutet, daß der SAP List Viewer auch die bisherigen interaktiven Funktionen der Query wie Anschluß an EXCEL, Crystal, WORD, Grafik usw. übernimmt.
    Es ist vorläufig auch weiter möglich, eine Liste (und damit die bisherige Standardausgabe) zu erzeugen, um vorhandene Lücken in der Funktionalität (im Vergleich zum bisherigen Standard) abzudecken. Die Query muß dazu aber in einem besonderen Modus gestartet werden.
  • Jede Query, die mit der InfoSet Query erstellt wird, kann nur eine Teilliste enthalten (Grundliste, Statistik oder Rangliste).
    Die Konstruktion von Queries mit mehreren Teillisten wird durch die InfoSet Query nicht unterstützt.
  • Jede Query, die mit der InfoSet Query erstellt wird, kann nur eine einzeilige Liste enthalten.
    Dies bedeutet im Fall von Grundlisten, daß die ausgewählten Felder zur Ausgabe nicht auf mehrere Zeilen verteilt werden können. Dies war jedoch im Fall der Ausgabe durch den List Viewer auch bisher schon der Fall, genauer: die Werte aus mehrzeiligen Listen wurden zur Anzeige im List Viewer in eine Tabelle, d.h. eine einzeilige Liste übertragen.
    Die Konstruktion mehrzeiliger Listen wird durch die InfoSet Query nicht unterstützt.

Außerdem ist es mit der InfoSet Query nicht möglich, lokale Felder zu definieren und zu verwenden.

Aus diesen Aussagen ergibt sich, daß eine vorhandene Query nicht mit Hilfe der InfoSet Query bearbeitet werden sollte, wenn sie

  • mehrere Teillisten enthält oder
  • eine mehrzeilige Grundliste enthält, die sich (auch nach dem bisherigen Stand) nicht durch den SAP List Viewer anzeigen läßt (Derartige Queries verarbeiten in jedem Fall Daten aus parallelen Knoten einer logischen Datenbank.) oder
  • lokale Felder enthält.

Wird eine solche Query als Vorlage für die InfoSet Query verwendet (Funktion Query öffnen, siehe unten), so wird nur der Teil der Query übernommen, der durch die InfoSet Query bearbeitet werden kann (erste Teilliste, erste Zeile einer mehrzeiligen Grundliste, keine lokalen Felder). Dies wird durch Warnungen ausgewiesen. Wird diese Query überschrieben (Funktion Sichern, siehe unten), so sind die nicht übernommenen Teile verloren.

Wie oben bereits erwähnt, wird innerhalb der InfoSet Query immer mit temporären Queries gearbeitet. Als Vorlage für eine solche temporäre Query dient entweder ein InfoSet (dann sind nur die zur Verfügung stehenden Felder bekannt) oder eine bereits vorhandene Query (in diesem Fall sind auch schon Selektionskriterien und eine Ausgabe definiert). Es handelt sich in jedem Fall aber um eine Vorlage, d.h. mehrere Benutzer können gleichzeitig die gleiche Query als Vorlage benutzen und jeder kann seine gewünschten Änderungen vornehmen, ohne daß sie sich gegenseitig behindern. Erst wenn ein Benutzer beschließt, seine Änderungen zu sichern, wird über einen Dialog festgelegt, wie der derzeitige Zustand seines temporären Objektes gesichert werden soll. Es ist möglich, eine vorhandene Query zu überschreiben oder eine neue Query anzulegen.

In der zu Release 4.6C freigegebenen Fassung der InfoSet Query konnten nicht alle Möglichkeiten der SAP Query mit allen Details übernommen werden. Deshalb muß in einigen Fällen auf die bisherige Transaktion SQ01 verwiesen werden. Ein Wechsel zwischen InfoSet Query und der Transaktion SQ01 ist in der Regel problemlos möglich (siehe unten, Abschnitt über den Aufruf der InfoSet Query). Einige Einschränkungen wurden bereits oben genannt. Ziel weiterer Entwicklungen ist es, alle wichtigen und notwendigen Möglichkeiten in ähnlicher oder neuer Form auch in der InfoSet Query bereitzustellen.

Pflege von Queries

Nach dem Aufruf der InfoSet Query wird ein dreigeteiltes Bild präsentiert, auf dem alle notwendigen Informationen zur Pflege einer Query enthalten sind. Dieses Bild ist abgesehen von einigen Dialogfenstern das einzige Bild der InfoSet Query.

Im linken oberen Teil des Bildes wird der InfoSet dargestellt, mit dem aktuell gearbeitet wird. Es sind verschiedene Darstellungen (als Baum oder einfacher Katalog) möglich. Unter der Darstellung des InfoSets kann sich ein weiteres Fenster befinden, in dem bei Bedarf technische Informationen über ein ausgewähltes Feld angezeigt werden.

Im rechten oberen Teil des Bildes werden die Selektionen dargestellt, die beim Lesen des Datenbestandes zur Abgrenzung verwendet werden. Die Angabe der Selektionen erfolgt in einem Selektions-Control (eingabefähiges ALV-Grid) oder durch ein Selektionsbild.

Im unteren Teil des Bildes wird die Ausgabeliste mit Hilfe eines ALV-Grids dargestellt. Dieses Grid dient als Vorschau auf die zu erwartende Ausgabe und kann zur Festlegung von Optionen wie Sortierung, Summation und Ausgabereihenfolge verwendet werden. Außerdem kann in diesem Grid die Ergebnisliste direkt dargestellt werden.

Die Belegung der Teilbilder nach dem Aufruf der InfoSet Query hängt von der Vorlage ab. Aus den Parametern beim Aufruf (siehe unten, Abschnitt über den Aufruf der InfoSet Query) und, falls diese nicht gesetzt sind, aus den bisherigen Arbeitsschritten (SET/GET Parameter) wird ermittelt, mit welchem InfoSet bzw. welcher Query die Bearbeitung begonnen werden soll. Wird ein InfoSet als Vorlage ermittelt, so ist nur das linke obere Teilbild zur Darstellung des InfoSets belegt. Wird eine Query als Vorlage ermittelt, so sind alle Teilbilder gemäß der bisherigen Definition der Query belegt. Es sei nochmals darauf hingewiesen, daß das Lesen einer Query als Vorlage nicht dazu führt, daß diese Query gesperrt wird, und daß demzufolge die gleiche Query von beliebig vielen Benutzern gleichzeitig als Vorlage benutzt werden kann.

Der linke obere Teil des Bildes enthält die Felder des InfoSets. Bei der Darstellung kann zwischen den Varianten

  • Darstellung der Feldgruppen (Standard),

  • Darstellung der Struktur der logischen Datenbank (falls der InfoSet über einer logischen Datenbank angelegt ist) oder

  • Darstellung als Feldkatalog (Anzeige der Felder einer Feldgruppe oder aller Felder des InfoSets)

gewechselt werden.

Bei den ersten beiden Darstellungen können die Feldgruppen bzw. die Strukturknoten der logischen Datenbank mit den üblichen Baumoperationen aufgeklappt oder zusammengeklappt werden, um den für den aktuellen Arbeitsschritt optimalen Ausschnitt auf den Bildschirm zu stellen. Selektionsfelder des InfoSets, d.h. Felder für die im InfoSet oder der logischen Datenbank eine Selektion definiert wurde, werden zu einer speziellen Feldgruppe (Selektionsfelder aus InfoSet) zusammengefaßt. Zwischen den Darstellungen kann durch entsprechende Drucktasten gewechselt werden.

Jedes Feld des InfoSets ist mit einer Ikone gekennzeichnet. Es können die Ikonen einfaches Feld (ICON_SIMPLE_FIELD) und Feld mit Text(ICON_FIELD_WITH_TEXT)auftreten. Im ersten Fall kann das Feld wie üblich zur Selektion und zur Ausgabe verwendet werden. Im zweiten Fall kann zu jedem Wert des Feldes automatisch ein Text ermittelt werden. Deshalb muß man bei der Auswahl eines solchen Feldes zur Selektion bzw. zur Ausgabe entscheiden, ob man den Wert des Feldes, den zum Wert gehörenden Text oder beides verwenden will. Standardmäßig wird bei einem solchen Feld bei der Auswahl zur Selektion der Wert und bei der Auswahl zur Ausgabe der Text verwendet. Diese Festlegung kann aber über die Funktion Einstellungengeändert werden (siehe unten). Von diesem Standard abweichende Festlegungen bei der Auswahl kann man erzielen, indem das Feld durch Einfachklick markiert und anschließend das Kontextmenü (rechte Maustaste) verwendet wird.

Jedes Feld hat im Baum zwei Spalten mit je einem Ankreuzfeld. Das Markieren des Feldes in der ersten Spalte (Selektion) bewirkt die Auswahl des Feldes zur Selektion (Wert des Feldes). Das Markieren der zweiten Spalte (Ausgabe) bewirkt die Auswahl des Feldes zur Ausgabe (Text des Wertes des Feldes, falls ein solcher existiert, sonst Wert des Feldes).

Außerdem kann die Auswahl eines Feldes zur Selektion oder zur Ausgabe auch durch Markieren und Ziehen des Feldes in den gewünschten Bereich (drag&drop) erfolgen. Damit stehen insgesamt drei Möglichkeiten zur Auswahl zur Verfügung: das Setzen der Ankreuzfelder, drag&drop und die Verwendung des Kontextmenüs. Drag&drop für die Auswahl zur Selektion ist allerdings nicht möglich, wenn der Selektionsteil durch ein Selektionsbild repräsentiert wird. Eine Auswahl kann u.a. dadurch zurückgenommen werden, daß die Markierung des Ankreuzfeldes zurückgenommen wird.

Wenn die InfoSet Query im HTML-Gui läuft, muß die Auswahl anders erfolgen. In diesem Fall müssen die auszuwählenden Felder zunächst durch die Ankreuzfelder markiert werden. Anschließend können die markierten Felder in einem Schritt entweder in den Selektionsteil oder den Ausgabeteil gestellt werden. Dafür existieren zwei verschiedene Drucktasten in der Drucktastenleiste.

Mit der Funktion Spaltengröße anpassen kann eine optimale Spaltenbreite gemäß den vorhandenen Spalteninhalten eingestellt werden. Mit der Funktion Technischer Name ein/aus können die technischen Namen der Felder in einer zusätzlichen Spalte eingeblendet werden.

Der rechte obereTeil des Bildes enthält die Selektionen. Diese können über ein Selektions-Control (eingabefähiges ALV-Grid) oder ein Selektionsbild dargestellt werden.

Wird das Selektions-Control verwendet und ein Feld zur Selektion ausgewählt, so erscheint eine neue Zeile im Control. Die erste Spalte ist eine Markierungsspalte, mit der ein oder mehrere Zeilen markiert werden können. Die markierten Zeilen können dann innerhalb des Controls verschoben (durch drag&drop) oder gelöscht weren (Funktion in der Drucktastenleiste).

Die zweite Spalte spezifiziert die Selektion näher. Durch die Ikone einfaches Feld (ICON_SIMPLE_FIELD) bzw. Textfeld( ICON_TEXT_FIELD) wird gekennzeichnet, ob zur Selektion der Wert eines Feldes oder der Text des Wertes eines Feldes verwendet werden soll.

Die dritte Spalte enthält den Feldnamen. In der vierten Spalte können die Selektionsoptionen (Einzelwert, Größer oder gleich, usw.) gepflegt werden. Die Spalte enthält eine Drucktaste, über die die Auswahl vorgenommen werden kann. Falls keine Auswahl vorgenommen wird, wird Einzelwert selektieren angenommen. Wenn die gewählte Selektionsoption nur einen Wert benötigt (z.B. bei Einzelwert selektierenoder Muster), so kann dieser in der fünften Spalte angegeben werden. Damit kann der überwiegende Teil aller benötigten Selektionen beschrieben werden.

Die sechste Spalte enthält eine Drucktaste, die kompliziertere Selektionen (Mehrfachselektion) erlaubt. Es sind mehrere Einzelwerte und Intervalle erlaubt.

Anstelle des Selektions-Controls kann ein Selektionsbild verwendet werden. Das Selektionsbild hat den Vorteil, daß im Falle von Selektionen, die von einer logische Datenbank realisiert werden, bereits bei der Eingabe von Werten entsprechende Prüfungen ablaufen. Außerdem können die von einer logischen Datenbank vorgedachten Gruppierungen der Selektionsfelder sowie Auswahlknöpfe und Drucktasten nur auf einem Selektionsbild dargestellt werden. Das Umschalten zwischen beiden Darstellungen erfolgt durch Funktionen aus dem Menü Zusätze.

Im unterenTeil des Bildes wird die Ausgabeliste mit Hilfe eines ALV-Grids dargestellt. Wenn Felder aus dem InfoSet wie oben beschrieben zur Ausgabe ausgewählt werden, werden sie zunächst an die vorhandenen Felder angehängt, es sei denn es wird mit drag&drop gearbeitet (in diesem Fall kann die richtige Stelle in der Ausgabeliste sofort bestimmt werden). Festlegungen wie aufsteigende oder absteigende Sortierung, Summen und Zwischensummen werden innerhalb des ALV-Grids mit Hilfe der dafür vorgesehenen Drucktasten vorgenommen. Die Vorgehensweise ist genauso wie in jedem anderen ALV-Grid. Das Ergebnis einer solchen Operation wird sofort visualisiert.

Zur Anzeige werden zunächst Beispieldaten verwendet, die entweder rein zufällig bestimmt oder aus einem Vorrat möglicher Werte zufällig ausgewählt werden. Über die Funktion Daten aktualisieren ist es möglich, echte Daten zur Anzeige zu bringen. Die Funktion bewirkt, daß die Query gemäß den vorgegebenen Selektionen ausgeführt wird und die ermittelten Daten in das ALV-Grid übernommen werden. In diesem Fall enthält das ALV-Grid praktisch bereits ein komplettes und gemäß den Selektionen korrektes Ergebnis der Query. Es stehen deshalb auch die üblichen Funktionen des ALV-Grids wie EXCEL, Textverarbeitung usw. zur Verfügung. Es können aber weitere Veränderungen in der Ausgabeliste vorgenommen werden. Wenn diese Veränderungen dazu führen, daß neu selektiert werden muß, um eine korrekte Liste zu erhalten (z.B. weil ein neues Feld hinzugefügt wurde), so werden die erwähnten Laufzeitfunktionen inaktiv geschaltet und wieder Beispieldaten zur Anzeige verwendet. Es muß dann erneut die Funktion Daten aktualisieren aufgerufen werden, um eine aktuelle Ergebnisliste zu erhalten.

Es gibt mehrere Möglichkeiten, eine Query (wie in der Ausgabeliste definiert) gemäß den Selektionen (wie im Selektionsteil angegeben) auszuführen. Die erste Möglichkeit ist die soeben erwähnte Funktion Daten aktualisieren,mit der die Ergebnisliste direkt in der InfoSet Query angezeigt werden kann. Die zweite Möglichkeit ist die Funktion Ausgabe. Diese Funktion startet die Query und zeigt das Ergebnis in einem Vollbild an. Dies entspricht der bisher üblichen Art, Queries abzuarbeiten. Die Funktion Ausgabe arbeitet so, daß die im Selektionsteil angegebenen Selektionen berücksichtigt werden, daß das Selektionsbild der Query nicht prozessiert wird und daß das Ergebnis mit dem SAP List Viewer (ALV) angezeigt wird. Diese Festlegungen können jedoch mit der Funktion Einstellungengeändert werden. Es kann festgelegt werden, daß nach dem Start das Selektionsbild angezeigt werden soll und daß eine andere Ausgabeform anstelle des SAP List Viewers (EXCEL, Crystal usw.) gewählt werden. Dies entspricht den Einstellungen über die direkte Weitergabe der Liste, wie sie bisher auf dem Selektionsbild vorgenommen werden konnte.

Mit Hilfe der Funktion Einstellungenkann weiterhin festgelegt werden, ob die im unteren Teil des Bildes angezeigte Liste ein Grundliste, eine Statistik oder eine Rangliste ist. Bei der Verwendung von Crystal aus Ausgabemedium kann außerdem festgelegt werden, ob der Crystal-Report neu generiert werden oder sich auf ein vorhandenes Template beziehen soll. Dies bezieht sich aber nur auf den Fall, daß Crystal direkt von der Query gestartet wird. Wenn Crystal über den SAP List Viewer gerufen wird (dies sollte der Standardweg sein), müssen die im SAP List Viewer festgelegten Konventionen beachtet werden.

Außerdem kann jeder Benutzer über die Funktion Einstellungen festlegen, ob bei der Auswahl eines Feldes zur Selektion bzw. zur Ausgabe standardmäßig der Wert oder, falls vorhanden, der Text verwendet werden soll.

Mit den Funktionen Neue Queryund Query öffnenkann über einen Dialog eine neue Vorlage gewählt werden. Im Falle der Funktion Neue Querykann ein InfoSet, im Falle der Funktion Query öffneneine Query ausgewählt werden. Welche InfoSets und Queries zur Verfügung stehen, hängt vom Kontext ab, in dem die InfoSet Query aufgerufen wurde (vgl. unten, Abschnitt über Aufruf der InfoSet Query). Falls der Aufruf aus einer Rolle erfolgte, stehen genau die der Rolle zugeordneten InfoSets zur Verfügung und außerdem die Queries, die von Benutzern der Rolle angelegt wurden. Falls der Aufruf nicht aus einer Rolle erfolgte, gelten die bisher üblichen Regelungen über die Benutzergruppen. Deshalb kann in einem solchen Fall bei den Funktionen Neue Queryund Query öffnenzunächst die Benutzergruppe ausgewählt werden. Diese Auswahl legt dann fest, welche Infosets und Queries zur Verfügung stehen.

Im Menü Querystehen die zuletzt bearbeiteten Queries als Menüeinträge zur Verfügung (History). Man kann eine in diesem Menü aufgeführte Query als Vorlage wählen, indem man den entsprechenden Menüpunkt anklickt.

Nachdem eine neue Vorlage gewählt wurde, können die gewünschten Änderungen an der Vorlage durchgeführt werden. Die Query kann ausgeführt werden, um Ergebnislisten zu ermitteln. Der Prozess des Änderns und Ausführens kann wiederholt werden. Soll eine Änderung gespeichert werden, so können die Funktionen Sichernund Sichern alsverwendet werden. Diese Funktionen stehen aber nur zur Verfügung, wenn der Benutzer die Berechtigung zum Ändern von Queries besitzt (Berechtigung für das Berechtigungsobjekt S_QUERY mit dem Wert 02 für das Feld ACTVT).

Die Wirkungsweise der Funktionenen Sichernund Sichern alshängt von der Vorgeschichte ab.

Die Funktion Sichern überschreibt immer die zuletzt gesicherte Query, falls bereits einmal gesichert wurde, ansonsten arbeitet sie wie die Funktion Sichern als. Bei der Funktion Sichern alswird immer ein Dialog geführt, in dem der Name der zu sichernden Query sowie der Langtext eingegeben werden kann. Wird dabei der Name einer vorhandenen Query gewählt, so wird diese Query überschrieben. Falls die InfoSet Query aus einem Kontext gerufen wurde, der mit den bisher üblichen Benutzergruppen arbeitet, kann hier ggf. auch die Benutzergruppe ausgewählt werden.

Beim Sichern der Query wird eine Sperre auf die gerade gesicherte Query gesetzt. Dies bedeutet, daß ein anderer Benutzer der InfoSet Query die gesicherte Query zwar als Vorlage verwenden kann, er kann diese Query aber nicht überschreiben. Dies heißt aber auch, daß das Sichern einer Query unter einem bestimmten Namen nur möglich ist, wenn diese Query gerade nicht durch einen anderen Benutzer gesperrt ist.

Zusammengefasst arbeiten die Funktionen Sichernund Sichern alsfolgendermaßen:

  • Wird die Funktion Sicherndas erste Mal nach dem Laden einer Vorlage (Neue Queryund Query öffnen) ausgeführt, so arbeitet sie wie die Funktion Sichern als, d.h. es wird ein Dialogfenster prozessiert, in dem der Name der zu sichernden Query eingegeben werden kann. Als Vorschlag wird ein neuer Name vorgegeben, falls die Vorlage ein InfoSet war, anderenfalls wird der Name der Query vorgeschlagen, die als Vorlage verwendet wurde. Die gesicherte Query wird gesperrt.
  • Wird die Funktion Sichernnicht zum ersten Mal nach dem Laden einer Vorlage ausgeführt, so wird zum Sichern der Name der Query verwendet, der auch beim vorangegangenen Sichern verwendet wurde. Die bereits bestehende Sperre auf die Query bleibt erhalten. Ein Dialog findet in diesem Fall nicht statt.
  • Wird die Funktion Sichern alsausgeführt, so wird zunächst ein Dialogfenster prozessiert, in dem der Name der zu sichernden Query eingegeben werden kann. Als Vorschlag dient der Name der Query, die als Vorlage verwendet wurde bzw. die zuletzt gesichert wurde. Die Query wird unter den im Dialog festgelegten Namen gesichert, und es wird eine Sperre auf diese Query gesetzt. Falls zuvor eine andere Query gesperrt war, so wird diese Sperre zurückgenommen, d.h. die bisher gesperrte Query kann von einem anderen Benutzer bearbeitet werden.
  • Wird mit Hilfe einer der Funktionen Neue Queryoder Query öffneneine neue Vorlage gelesen und besteht zu diesem Zeitpunkt aufgrund einer vorangehenden Sicherung eine Sperre auf eine bestimmte Query, so wird diese Sperre zurückgenommen.

Die standardmäßige Arbeitsweise mit der InfoSet Query wird darin bestehen, daß die gelesene Vorlage verändert und anschließend, falls notwendig, in mehreren Schritten gesichert wird. Dazu kann immer die Funktion Sichernverwendet werden. Beim ersten Sichern wird der Name der Query abgefragt und in allen weiteren Schritten wird unter diesem Namen erneut gesichert. Da beim ersten Sichern außerdem eine Sperre gesetzt wird, sind alle weiteren Sicherungen problemlos möglich, weil diese Query nicht von einem anderen Benutzer gesperrt werden kann.

Die Funktion Sichern als wird benötigt, wenn eine Query kopiert und dann bearbeitet werden soll.

Beim Sichern einer Query werden auch die aktuellen Selektionen aus dem Selektions-Control bzw. dem Selektionsbild mit berücksichtigt. Dazu wird für diese Query eine Standard-Variante mit dem Namen STANDARDbzw. SAP&STANDARD(für nicht temporäre Queries aus dem globalen Arbeitsbereich) definiert und abgespeichert. Falls eine solche Variante bereits existiert, so wird sie überschrieben.

Falls ein Benutzer nicht die Berechtigung zum Ändern von Queries besitzt (siehe oben), so kann er mit der InfoSet Query Vorlagen lesen und ändern sowie die so geänderte Fassung der Vorlage ausführen. Er kann aber seine Änderungen nicht als Query und damit als neue Vorlage abspeichern.

Mit den Funktionen Springen -> Variantenpflegeund Springen -> Berichtszuordnung ist es möglich, für eine Query Varianten bzw. Einträge in die Berichts-Berichts-Schnittstelle zu pflegen. Diese Pflege erfolgt für die Query, die zuletzt gesichert wurde, bzw., wenn nach dem Lesen der Vorlage noch kein Sichern erfolgte, für die Query, die als Vorlage verwendet wurde. Das heißt, daß die Pflege von Varianten und Einträgen in die in die Berichts-Berichts-Schnittstelle unmittelbar nach der Funktion Query öffnenfür diese Query möglich ist.

Mit der Funktion Query -> Löschen kann die Query, die zuletzt gesichert wurde, bzw., wenn nach dem Lesen der Vorlage noch kein Sichern erfolgte, die Query, die als Vorlage verwendet wurde, gelöscht werden. Allerdings bleibt die Query als Vorlage für den Benutzer erhalten, d.h. er kann mit dieser Query noch weiter arbeiten. Erst wenn eine neue Vorlage gewählt oder die Pflege verlassen wird, ist diese Query für den Benutzer endgültig verloren.

Protokollierung

Die Arbeit mit der InfoSet Query kann protokolliert werden. Wenn dies erwünscht ist, können folgende Angaben pro Abarbeitung einer Query in die Datenbanktabelle AQPROT geschrieben werden:

  • Arbeitsbereich und InfoSet

  • Benutzer, Datum und Uhrzeit

  • alle Selektionsfelder einschließlich der Werte zur Selektion

  • alle Ausgabefelder

Diese Protokollierung erfolgt nur beim Aufruf einer Query aus der InfoSet Query heraus. In allen anderen Fällen (Start über einen Menüeintrag, über die Transaktion SQ01 oder über einen der dafür zur Verfügung stehenden Funktionsbausteine) erfolgt keine Protokollierung.

Die Einstellung der Protokollierung erfolgt über die Funktion Springen -> Weitere Funktionen -> Protokollierung einstellenauf dem Einstiegsbild der Transaktion zur Pflege von InfoSets (SQ02). Eine entsprechende Funktion ist auch im Customizing zu finden. Die Funktion führt auf ein Table Control, in dem für die Datenbanktabelle AQPROTCUST Einträge gepflegt werden können. Die Datenbanktabelle enthält die Felder Arbeitsbereich(mögliche Werte sind SPACE für den Standardbereich und Gfür den globalen Bereich) und InfoSet. Sollen alle Arbeiten, die mit der InfoSet Query vorgenommen werden, protokolliert werden, so ist ein Satz in die Tabelle einzutragen, der als InfoSet den Wert * enthält. Sollen nur Arbeiten mit bestimmten InfoSets protokolliert werden, so ist für jeden dieser InfoSets ein Satz in die Tabelle einzutragen.

Über die Funktion Springen -> Weitere Funktionen -> Protokolle verwaltenauf dem Einstiegsbild der Transaktion SQ02 kann ein Report gestartet werden, mit dem Protokolle aus der Protokolltabelle gelöscht werden können.

Die Auswertung der Protokolle kann zum Beispiel mit Hilfe von Queries erfolgen.

Es existiert das Business Add-In (BAdI) AQ_QUERY_PROT, mit dessen Hilfe eine eigene Protokollierung angeschlossen werden kann. Dem Protokollbaustein werden die gleichen Informationen übergeben, die auch der Standardprotokollierung zur Verfügung stehen, und es gelten die gleichen Festlegungen, wann die Protokollierung erfolgt. Über die eigene Protokollierung können kundenspezifische Filter oder eine andere Ablage des Protokolls realisiert werden.

Aufruf der InfoSet Query

Ein Ziel bei der Entwicklung der InfoSet Query war es, dieses Tool aus verschiedenen Kontexten aufrufen zu können. Aus diesem Grund wurde darauf verzichtet, eine neue Transaktion für die InfoSet Query anzulegen. Vielmehr existieren einige Funktionsbausteine und Reports, die den Aufruf der InfoSet Query mit verschiedener Parametrisierung erlauben.

Beim Aufruf der InfoSet Query muß der Aufrufer zunächst zwei Entscheidungen treffen, erstens wie die Zugriffsrechte geregelt werden sollen und zweitens welche Art von Reporting betrieben werden soll. Wenn im folgenden von Benutzergruppen die Rede ist, sind damit immer die Benutzergruppen der SAP Query gemeint.

Regelung der Zugriffsrechte

Die Zugriffsrechte können durch Rollen oder durch Benutzergruppen geregelt werden. Die Regelung mit Hilfe einer Rolle sollte langfristig die einzige Regelung werden. Die Benutzergruppen sind dann nur noch ein technisches Mittel für die Administration.

Bei der Regelung der Zugriffsrechte durch eine Rolle wird technisch so verfahren, daß einer Rolle zunächst genau eine Benutzergruppe zugeordnet wird. Dieser Benutzergruppe müssen wie bisher üblich durch den Administrator die InfoSets zugeordnet werden, die innerhalb der Benutzergruppe (und damit innerhalb der Rolle) zum Reporting verwendet werden dürfen. Es ist aber nicht mehr notwendig, die Benutzer in die Benutzergruppe einzutragen, da deren Zuordnung bereits über die Zuordnung zur Rolle vorgenommen wurde. Das bedeutet, daß ein Benutzer, der einer Rolle zugeordnet wird, damit automatisch in die Benutzergruppe übernommen wird, die der Rolle zugeordnet ist. Die Zuordnung zur Benutzergruppe gilt aber nur, wenn der Benutzer die InfoSet Query über die Rolle aufruft. Bei allen anderen Zugängen zur SAP Query gelten die bisherigen Festlegungen.

Wenn ein Benutzer das Recht haben soll, Queries zu speichern, so muß er die Änderungsberechtigung für Queries (Berechtigungsobjekt S_QUERY, Wert 02 für Feld ACTVT) besitzen. Anderenfalls kann er innerhalb der Rolle mit den vorhandenen Vorlagen arbeiten, er kann aber keine neuen Vorlagen erzeugen.

Bei der Regelung der Zugriffsrechte durch eine Rolle wird der Endanwender mit dem Begriff der Benutzergruppe nicht mehr konfrontiert. Er ruft die InfoSet Query über einen Menüeintrag auf und hat dann eine Reihe von InfoSets zur Verfügung, mit deren Hilfe er Queries erstellen kann. Wie ein Menüeintrag zu erstellen ist, wird weiter unten beschrieben. Über die Benutzergruppe wird vom Administrator nur noch festgelegt, welche InfoSets verwendet werden dürfen.

Die Regelung der Zugriffsrechte über Benutzergruppen entspricht vollständig den bisherigen Festlegungen, d.h. pro Benutzergruppe wird festgelegt, welche InfoSets verwendet werden dürfen und welche Benutzer zur Benutzergruppe gehören. Außerdem muß an die Benutzer, die das Recht haben sollen, Queries zu speichern, die Änderungsberechtigung (siehe oben) vergeben werden.

Art des Reportings

Mit der InfoSet Query ist es möglich, eine Unterscheidung zwischen Entwicklung und Ad-hoc-Reporting vorzunehmen. Im Fall der Entwicklung sollen Queries erstellt werden, die längerfristig bestehen bleiben, als eigenständige Reports aus Menüs usw. gerufen werden und ggf. auch verteilt werden sollen. Im Falle des Ad-hoc-Reportings werden Queries normalerweise nach einer Benutzung nicht mehr benötigt, was natürlich nicht ausschließt, daß Queries, die durch Ad-hoc-Reporting entstehen, auch gespeichert werden können.

Im Falle der Reporting-Art 'Entwicklung' wird immer der globale Arbeitsbereich verwendet und der Anschluß an den Workbench Organizer (WBO) ist aktiv. Dies entspricht der bisher üblichen Art der Arbeit der SAP Query im globalen Arbeitsbereich. Alle bekannten Festlegungen gelten weiterhin.

Im Falle des Ad-hoc-Reporting kann der Arbeitsbereich (global oder Standard) ausgewählt werden. Im Falle des Standardbereiches entspricht dies der bisher üblichen Art der Arbeit der SAP Query in diesem Bereich. Im Fall des globalen Bereiches werden aber grundsätzlich Queries mit temporärer Entwicklungsklasse ($TMP) angelegt und der Anschluß an den Workbench Organizer ist nicht aktiv. Das bedeutet, daß im Falle des Ad-hoc-Reporting niemals ein Dialog mit dem Workbench Organizer erfolgt.

Bausteine zum Aufruf der InfoSet Query

Gemäß den möglichen Festlegungen zur Regelung der Zugriffsrechte und zur Reporting-Art existieren insgesamt vier Funktionsbausteine bzw. vier Reports mit den jeweils gleichen Namen:

  • SAP_QUERY_DEVELOPMENT_ROLE:,,Zugriff über Rolle, Entwicklung
    Parameter sind die Rolle (notwendig), ein InfoSet (wahlweise) und eine Query (wahlweise). Der Rolle muß eine Benutzergruppe aus dem globalen Arbeitsbereich zugeordnet sein. Wird ein InfoSet angegeben, so muß er der Benutzergruppe zugeordnet sein. Wird eine Query angegeben, so muß sie zur Benutzergruppe gehören.
  • SAP_QUERY_AD_HOC_ROLE:,,,,Zugriff über Rolle, Ad-hoc-Reporting
    Es liegen die gleichen Parameter mit den gleichen Einschränkungen vor wie bei SAP_QUERY_DEVELOPMENT_ROLE, allerdings kann die zugeordnete Benutzergruppe auch aus dem Standardbereich stammen.
  • SAP_QUERY_DEVELOPMENT:,,,,Zugriff über Benutzergruppe, Entwicklung
    Parameter sind eine Benutzergruppe, ein InfoSet und eine Query (alle wahlweise). Die Benutzergruppe muß aus dem globalen Arbeitsbereich stammen. Sind mehr als ein Parameter gesetzt, so müssen die Werte zusammenpassen. Sind also beispielsweise Benutzergruppe und InfoSet angegeben, so muß der InfoSet der Benutzergruppe zugeordnet sein.
  • SAP_QUERY_AD_HOC:,,,,,,Zugriff über Benutzergruppe, Ad-hoc-Reporting
    Es liegen die gleichen Parameter mit den gleichen Einschränkungen vor wie bei SAP_QUERY_DEVELOPMENT, allerdings kann zusätzlich der Arbeitsbereich ausgewählt werden.

Wahlweise Parameter werden benutzt, um bei Aufruf der InfoSet Query eine Vorlage zu ermitteln. Sind diese Parameter nicht gesetzt, so wird versucht, aus den zuletzt vom Benutzer bearbeiteten Objekten (Rolle, Benutzergruppe, InfoSet) einen sinnvollen Vorschlag für die Vorlage bereitzustellen.

Die Reports rufen direkt die Funktionsbausteine und stellen Wertehilfen für die Parameter zur Verfügung. Ansonsten ist es gleichgültig, ob die Funktionsbausteine oder die Reports zum Aufruf der InfoSet Query verwendet werden. Die Reports sind allerdings notwendig, wenn es darum geht, Menüeinträge zu erzeugen.

Aufruf aus der Transaktion SQ01

Die InfoSet Query kann aus der bisher verwendeten Transaktion zur Pflege von Queries (SQ01) aufgerufen werden. Dies ist ein spezielles Beispiel für die zuvor beschriebene Technik des Aufrufs und demonstriert außerdem die enge Verbindung zwischen den bestehenden Tools. (Es sei jedoch nochmals daruf hingewiesen, daß der übliche Weg zum Aufruf der InfoSet Query über eine Rolle erfolgen sollte.)

Auf dem Einstiegsbild der Transaktion SQ01 wird wie üblich eine Query ausgewählt und dann die Funktion InfoSet Queryaufgerufen. Dadurch wird die ausgewählte Query als Vorlage für die InfoSet Query verwendet. Es ist zu beachten, daß bei diesem Aufruf aus der Transaktion SQ01 keine Sperre auf die ausgewählte Query gesetzt wird, wie es der Fall wäre, wenn die Funktion Ändern gewählt wird.

Wird die InfoSet Query aus dem Standardbereich gerufen, so wird Ad-hoc-Reporting realisiert (siehe oben SAP_QUERY_AD_HOC). Wird sie aus dem globalen Bereich gerufen, so wird Entwicklung von Queries realisiert (siehe oben SAP_QUERY_DEVELOPMENT). Beides entspricht den bisher üblichen Festlegungen.

Abarbeitung von Queries

Die Abarbeitung von Queries mit längerer Lebensdauer sollte wie bisher erfolgen, d.h. vorzugsweise dadurch, daß die betreffenden Queries in Menüs plaziert werden. Die InfoSet Query sollte für die Abarbeitung nur benutzt werden, wenn zuvor temporäre Änderungen an einer Query (als Vorlage) vorgenommen werden müssen.

Einbinden der InfoSet Query in eine Rolle

Im folgenden sollen die Schritte zusammengefaßt werden, die zum Einbinden der InfoSet Query in eine Rolle notwendig sind.

  1. Es wird eine Benutzergruppe ausgewählt oder neu angelegt, die mit der Rolle verbunden werden soll. Dieser Benutzergruppe werden alle InfoSets zugeordnet, die einem Benutzer der Rolle später für das Reporting zur Verfügung stehen sollen.
    Falls die Rolle die Entwicklung von Queries (kein Ad-hoc-Reporting) unterstützen soll, muß eine Benutzergruppe aus dem globalen Bereich ausgewählt werden. Weiterhin sollten dann die Benutzergruppe und alle zugeordneten InfoSets nicht-temporäre Entwicklungsklassen besitzen, damit die Entwicklung transportierbarer Queries möglich ist.
    Hinweis: Die Zuordnung von InfoSets zur Benutzergruppe kann jederzeit geändert werden. Eine Zuordnung von Benutzern ist nicht notwendig.
  2. Für den Report SAP_QUERY_DEVELOPMENT_ROLE bzw. SAP_QUERY_AD_HOC_ROLE (je nach gewünschter Reporting-Art) muß eine Variante angelegt werden, in der der Parameter Rollegenau mit dem Namen der betreffenden Rolle belegt wird. Über die Belegung der anderen Parameter kann von Fall zu Fall entschieden werden.
  3. Der Rolle wird die ausgewählte Benutzergruppe zugeordnet. Dazu wird in der Transaktion zur Rollenpflege (PFCG) auf dem Reiter Personalisierungder Schlüssel SAP_QUERY_USERGROUPdurch Doppelklick ausgewählt. Es erscheint ein Dialogfenster, in dem die Benutzergruppe eingetragen werden kann.
  4. In das Menü der Rolle wird der Report SAP_QUERY_DEVELOPMENT_ROLE bzw. SAP_QUERY_AD_HOC_ROLE aufgenommen. Dazu wird in der Transaktion zur Rollenpflege (PFCG) auf dem Reiter Menüüber die Funktion Bericht einfügender betreffende Report (als ABAP Report) mit der zuvor erfaßten Variante (siehe Punkt 2) eingefügt. Das Auswahlknopf Selektionsbild überspringensollte immer gesetzt werden.

Nach diesen Aktionen steht die InfoSet Query als Menüeintrag für die Rolle zur Verfügung. Über die der Rolle zugeordnete Benutzergruppe werden die zur Verfügung stehenden InfoSets bestimmt. Über die sonstigen Parameter des Reports kann festgelegt werden, mit welcher Vorlage die Arbeit der InfoSet Query beginnt.

Pflege von InfoSets

Wie bereits erwähnt, werden die Sachgebiete ab Release 4.6C als InfoSetsbezeichnet. Außerdem wurde die Pflegetransaktion für InfoSets (SQ02) komplett überarbeitet und es wurden einige funktionale Erweiterungen vorgenommen. Hier soll zunächst kurz dargestellt werden, wie die Pflege eines InfoSets mit der überarbeiteten Transaktion erfolgt. Im nächsten Abschnitt wird dann auf die funktionalen Erweiterungen eingegangen.

Das Einstiegsbild der Transaktion SQ02 ist unverändert. Der Dialog beim Anlegen eines InfoSets wurde übersichtlicher gestaltet und beinhaltet einige neue Optionen, auf die im nächsten Abschnitt eingegangen wird. Die Definition von Tabellen-Joins ist ebenfalls unverändert geblieben.

Das Bild zur Pflege der Feldgruppen(bisher Sachgruppen) wurde jedoch voll ständig überarbeitet. Es ist jetzt in drei Teile geteilt.

Im linkenTeil des Bildes wird die Struktur der Datenquelle (logische Datenbank, Tabellen-Join, Tabelle) mit den entsprechenden Erweiterungen (Zusatztabellen, Zusatzfelder) als Baum dargestellt. Jedes Feld ist mit einer Ikone gekennzeichnet. Es sind die Ikonen einfaches Feld (ICON_SIMPLE_FIELD) und Feld mit Text(ICON_FIELD_WITH_TEXT)möglich. Im ersten Fall können für ein Feld nur dessen Werte bereitgestellt werden. Im zweiten Fall kann zu jedem Wert des Feldes automatisch ein Text beschafft werden. Jedem Feld sind zwei Spalten zugeordnet, die den technischen Namen des Feldes und die Zuordnung zu einer Feldgruppe enthalten.

Im rechten oberenTeil des Bildes werden die Feldgruppen als Baum dargestellt. Jedem Feld sind die gleichen Ikonen wie in der Datenquelle (links) und die technischen Namen in einer gesonderten Spalte zugeordnet. Die Baumdarstellung ermöglicht hier wie auch bei der Datenquelle durch die Operationen zum Aufklappen und Komprimieren die Auswahl des gewünschten Ausschnittes auf dem Bildschirm.

Das Anlegen und Ändern von Feldgruppen ist über spezielle Funktionen möglich, die oberhalb der Feldgruppen auf Drucktasten liegen. Die Auswahl von Felder in die Feldgruppen erfolgt dadurch, daß in der Datenquelle zunächst die auszuwählenden Felder durch einen Einfachklick markiert werden. Anschließend können diese Felder durch drag&drop in die gewünschte Feldgruppe übernommen werden. Es ist allerdings auch möglich, die gewünschte Feldgruppe durch einen Einfachklick zu markieren und die Funktion Felder in Feldgruppen einfügenaufzurufen.

Außerdem ist es möglich, die Reihenfolge der Feldgruppen sowie die Reihenfolge der Felder innerhalb einer Feldgruppe durch drag&drop festzulegen

Ein Doppelklick auf einem Feld in der Datenquelle oder in einer Feldgruppe führt dazu, daß im unteren rechtenTeil des Bildes alle technischen Informationen zu diesem Feld angezeigt werden. Hier können Langtexte und Überschriften bei Bedarf geändert werden.

Bei Aufruf der Funktionen Zusätze, Abgrenzungenund Codingwird im rechten Teil des Bildes entsprechende Pflegebilder eingeblendet. Das Vorgehen entspricht hier im wesentlichen dem bisherigen Vorgehen und soll deshalb nicht weiter erläutert werden. Bei der Pflege von Abgrenzungen kann allerdings über Ankreuzfelder festgelegt werden, welche Abgrenzungen bei Verwendung des InfoSets als Vorlage sofort in das Selektions-Control übernommen werden sollen. Damit kann einem Benutzer des InfoSets innnerhalb der InfoSet Query ein Vorschlag für die sinnvollerweise zu benutzenden Abgrenzugen gemacht werden.

Auf die Funktion Anwendungsspezifische Erweiterungenwird im nächsten Abschnitt eingegangen.

Erweiterungen bei der Pflege von InfoSets

Bei der Überarbeitung der Pflegetransaktion wurden auch eine Reihe funktionaler Erweiterungen vorgenommen. Alle diese Erweiterungen werden von der InfoSet Query genutzt, stehen aber auch in den bisherigen Tools zur Pflege von Queries zur Verfügung.

Generierung und Vorbelegung von Feldgruppen

Beim Anlegen eines InfoSets werden Feldgruppen vorgeneriert. Das bedeutet, daß bereits Feldgruppen existieren, wenn nach dem Dialog zur Bestimmung der Datenquelle das Bild zur Pflege von Feldgruppen zum ersten Mal prozessiert wird. Im einzelnen gelten folgende Festlegungen.

  • Wurde der InfoSet über einer einzelnen Tabelle angelegt, so existiert genau eine Feldgruppe, deren Langtext mit dem Langtext der Tabelle übereinstimmt. Über ein Dialogfenster kann festgelegt werden, ob alle Tabellenfelder, nur die Schlüssselfelder der Tabelle oder keine Tabellenfelder in die Feldgruppe eingetragen werden sollen.
  • Wurde der InfoSet über einem Tabellen-Join angelegt, so wird für jede Tabelle des Joins genau eine Feldgruppe angelegt, deren Langtext mit dem Langtext der korrespondierenden Tabelle übereinstimmt. Über ein Dialogfenster kann festgelegt werden, ob alle Tabellenfelder, nur die Schlüssselfelder der Tabelle oder keine Tabellenfelder in die jeweiligen Feldgruppen eingetragen werden sollen.
  • Wurde der InfoSet über einer logischen Datenbank angelegt, so wird für den Fall, daß die logische Datenbank höchsten vier Knoten enthält, für jeden Knoten genau eine Feldgruppe angelegt. Enthält die logische Datenbank mehr als vier Knoten, so kann zunächst in einem Dialog festgelegt werden, für welche Knoten eine Feldgruppe bereitgestellt werden soll. Dazu wird in einem Dialogfenster der Strukturbaum der logischen Datenbank angezeigt. Hier kann jeder Knoten, für den eine Feldgruppe bereitgestellt werden soll, durch ein Ankreuzfeld markiert werden.
    Die bereitgestellten Feldgruppen besitzen die gleichen Langtexte wie die korrespondierenden Knoten. Sie sind jedoch leer, d.h. ihnen sind keine Felder zugeordnet.

Die vordefinierten und ggf. vorbelegten Feldgruppen können beliebig geändert werden. Es können Langtexte verändert, Feldgruppen gelöscht oder neu hinzugenommen werden. Es wird jedoch empfohlen, die vorgegebene 1:1 Zuordnung zwischen den Feldgruppen und den Tabellen bzw. Knoten zu übernehmen und zu erhalten.

Die Technik der Bereitstellung vordefinierter Inhalte wurde im Rahmen der Pflege von InfoSets bereits früher über den InfoSet-Generator für HR InfoSets (logische Datenbanken PNP, PCH und PAP) realisiert. Die vorliegende Generierung stellt eine Verallgemeinerung dieser Technik dar. Der InfoSet-Generator für HR InfoSets bleibt aber weiter aktiv, d.h. wenn InfoSets über den logischen Datenbanken PNP, PCH oder PAP angelegt werden, so wird dieser Generator zur Bereitstellung der vordefinierten Inhalte verwendet.

Damit existieren zwei verschiedene Generatoren für InfoSets. Weitere Generatoren sind möglich, die entweder generell für alle InfoSets oder aber nur für bestimmte Datenquellen verwendet werden können. Auf die Technik, wie solche Generatoren anzuschließen sind, wird weiter unten (Anwendungsspezifische Erweiterungen) eingegangen.

Textfelder

In den obigen Abschnitten wurde bereits erwähnt, daß ab Release 4.6C eine Möglichkeit geschaffen wurde, zu Werten von Feldern automatisch Texte zu bestimmen. Dazu werden verschiedene Verfahren verwendet (Prüftabellen, Festwerte usw.). Bei der Verwendung eines solchen Feldes in einer Query kann dann entschieden werden, ob der Wert oder der zugeordnete Text zu verwenden ist.

Bei der Pflege eines InfoSets wird für jedes Feld der Datenquelle untersucht, ob für einen Feldwert ein Text beschafft werden kann oder nicht. Das Ergebnis dieser Untersuchung wird durch eine Ikone vor dem Feld dargestellt (Ikonen einfaches Feld oder Feld mit Text, vgl. oben). Ansonsten ergeben sich keine weiteren Besonderheiten für Felder mit Texten. Falls ein solches Feld in eine Feldgruppe übernommen wird, stehen dem Benutzer des InfoSets stets Wert und Text zur Verfügung. Wenn ein solches Feld aus einer Feldgruppe entfernt wird, steht weder der Wert noch der Text weiter zur Verfügung. Das bedeutet, daß man z.B. nicht nur den Text eines solchen Feldes in eine Feldgruppe übernehmen kann.

Die neue Technik der automatischen Bereitstellung von Texten kann auch für bereits vorhandene InfoSets genutzt werden. Dazu muß allerdings einmal pro InfoSet auf dem Einstiegsbild der Transaktion SQ02 die Funktion InfoSet -> Weitere Funktionen -> Textfelder aktualisieren aufgerufen werden. Anschließend stehen in diesem InfoSet für alle Felder, bei denen dies möglich ist, Texte zur Verfügung.

Unter bestimmten Umständen ist es denkbar, daß die automatische Bereitstellung von Texten nicht erwünscht ist. In diesem Fall kann beim Anlegen des InfoSets auf dem ersten Dialogfenster durch Markieren des entsprechenden Ankreuzfeldes die automatische Texterkennung abgeschaltet werden. Außerdem kann für ein bereits vorhandenes InfoSet die Texterkennung ausgeschaltet werden, indem auf dem Einstiegsbild der Transaktion SQ02 die Funktion InfoSet -> Weitere Funktionen -> Textfelder löschen aufgerufen wird. Diese Funktion führt aber nur dann zum Erfolg, wenn noch keines der Textfelder in einer Query verwendet wird.

Das Standardverfahren zur Erkennung von Texten ist relativ umfangreich und kompliziert. Trotzdem wird es Fälle geben, wo dieses Verfahren nicht ausreicht. Es ist deshalb genauso wie bei den Generatoren möglich, andere Verfahren zur Texterkennung zu verwenden (siehe unten, Anwendungsspezifische Erweiterungen).

Zusatzstrukturen

Jeder InfoSet beruht auf einer Datenquelle, die durch Zusatzinformationen angereichert werden kann. Als Zusatzinformationen waren bisher Zusatztabellenund Zusatzfelder möglich. Dabei haben die Zusatzfelder die Einschränkung, daß sie einen einfachen (skalaren) Datentyp besitzen müssen.

Ab Release 4.6C sind die sogenannten Zusatzstrukturenzu den Zusatzinformationen hinzugekommen. Zusatzstrukturen sind faktisch Zusatzfelder mit einem nicht skalaren Datentyp, wobei dieser Datentyp immer eine (flache) Struktur aus dem Data Dictionary sein muß.

Eine Zusatzstruktur wird auf ähnliche Art wie eine Zusatztabelle oder ein Zusatzfeld angelegt. Bei der Definition der Zusatzstruktur muß die Struktur aus dem Data Dictionary und die Berechnungsvorschrift angegeben werden. Eine Zusatzstruktur muß auf die gleiche Art wie ein Zusatzfeld einem Knoten der Datenquelle zugeordnet werden. In diesem Knoten der Datenquelle sind dann jedoch alle Einzelfelder aus der Zusatzstruktur zu finden. Zusatzstrukturen stellen damit ein einfaches Mittel dar, mehrere Zusatzfelder ein einem Schritt gemeinsam zu berechnen.

Coding zum Zeitpunkt AT SELECTION-SCREEN

Für jede Abgrenzung, die im InfoSet definiert oder von der logischen Datenbank bereitgestellt wird, kann Coding zum Zeitpunkt AT SELECTION-SCREEN erfaßt werden, um Prüfungen zu realisieren. Dazu muß auf dem Übersichtbild für die vorhandenen Abgrenzungen der Cursor auf eine Abgrenzung gestellt und dann die Funktion Prüfcoding zum Elementaufgerufen werden.

Im Zusammenhang mit dem neuen Zeitpunkt für Abgrenzungen wurde auch die Semantik der Selektionskriterien, die im InfoSet selbst angelegt werden, geändert. Über das FOR-Feld, das jedem Selektionskriterium zugeordnet werden muß, wird eine Zuordnung des Selektionskriteriums zu einem Knoten der Datenquelle vorgenommen. Das Selektionskriterium wird jetzt nur noch dann auf das Selektionsbild einer Query gestellt, wenn der entsprechende Knoten der Datenquelle in der Query in irgendeiner Weise angesprochen wird.

Das Coding zum Zeitpunkt AT SELECTION-SCREEN muß für jede Abgrenzung getrennt erfaßt werden. Bei der Generierung eines Query-Reports wird sichergestellt, daß das Prüfcoding für alle Abgrenzungen in einem gemeinsamen Zeitpunkt AT SELECTION-SCREEN zusammengefaßt wird und daß nur die Abgrenzungen berücksichtigt werden, die auch auf dem Selektionsbild erscheinen.

Nicht summierbare Felder

Für jedes numerische Feld existiert die Möglichkeit, dieses Feld als nicht summierbar zu kennzeichen. Dazu müssen die technischen Informationen für dieses Feld im unteren rechten Teil des Bildes angezeigt werden. Dort existiert ein entsprechendes Ankreuzfeld.

Ein nicht summierbares numerisches Feld wird in der Query wie ein zeichenartiges Feld behandelt.

Anwendungsspezifische Erweiterungen

Die SAP Query ist ein generisches Tool, das für alle Anwendungen innerhalb von SAP Systemen für Reporting-Aufgaben verwendet werden kann. Dieser generische Ansatz hat bisher verhindert, daß spezielles Wissen einer Anwendung (spezielle Anwendungslogik) innerhalb der SAP Query ausgenutzt werden konnte.

Eine Ausnahme war allerdings die Anwendung HR. Eine Reihe von spezifischen HR-Lösungen sind in die SAP Query integriert (InfoSet Generierung, Zeilengruppen in Queries usw.). Allerdings sind diese Lösungen fest codiert. d.h. Änderungen oder Ergänzungen sind nur dadurch möglich, daß an der SAP Query Modifikationen vorgenommen werden.

Mit Release 4.6C wird begonnen, die SAP Query so zu erweitern, daß auch anwendungsspezifische Logik ausgewertet werden kann, ohne allerdings Modifikationen an der SAP Query vornehmen zu müssen. Die Vorgehensweise ist vergleichbar mit einem Business AddIn (BAdI).

Zu verschieden Zeitpunkten z.B. beim Erstellen eines InfoSets oder auch zur Laufzeit einer Query werden spezielle Interface-Methoden gerufen. Diese Interface-Methoden werden entweder von einer Basisklasse implementiert (Standard) oder aber von einer speziellen Klasse, die zusätzliche Anwendungslogik enthält. Sollen die Queries über einem InfoSet für einen bestimmten Service nicht die Basisfunktionalität, sondern anwendungsspezifische Funktionalität nutzen, so kann die Klasse, die das entsprechende Interface implementiert hat, im InfoSet hinterlegt werden. Das InfoSet wird damit zum Träger aller Informationen über anwendungsspezifische Logik.

Ein konkretes Beispiel soll das Verfahren verdeutlichen:

Für die automatische Textidentifizierung beim Erstellen eines InfoSets und für das Lesen der entsprechenden Texte zur Laufzeit der Queries werden die Interface-Methoden IDENTIFY_TEXT bzw. READ_TEXT des Interfaces IF_TEXT_IDENTIFIER gerufen. Dieses Interface wird von der Basisklasse CL_TEXT_IDENTIFIER implementiert, und als Default wird auch diese Implementierung verwendet. In einem bestimmten Anwendungskontext könnten aber eventuell durch zusätzliche Logik Texte ermittelt werden, die durch die Basisklasse nicht identifiziert werden. Dies leistet z.B. die Klasse CL_HR_TEXT_IDENTIFIER im HR-Umfeld. Prinzipiell können die Anwendungsklassen entweder das Interface IF_TEXT_IDENTIFIER neu implementieren oder von der Basisklasse abgeleitet sein. Im InfoSet wird die entsprechende Klasse für die Textidentifizierung angegeben; im allen Queries über diesem InfoSet wird zum Lesen der Texte ebenfalls die entsprechende Implementierung der Interface-Methode gerufen.

Mit dem Programm RS_TEXT_IDENTIFY_TEXT kann man die Identifizierung von Texten testen. Die Klasse CL_TEXT_IDENTIFIERwertet im wesentlichen das Data Dictionary aus. Es kann vorkommen, dass zu bestimmten Feldern Texte existieren, die Beziehung zwischen Wertfeld und Textfeld aber nicht im DDIC ersichtlich ist. Für diese Fälle lassen sich im Customizing Ausnahmen definieren: Man kann z.B. einen Funktionsbaustein zur Beschaffung des Textes angeben, oder aber auch direkt den Text für ein Feld in einer Tabelle hinterlegen. Wie man bei der Definition von Ausnahmen vorzugehen hat, ist in der Dokumentation zum Programm RS_TEST_DENTIFY_TEXTbeschrieben.

Zu Release 4.6C folgende Interfaces definiert:

  • Texterkennung
    Interface:,,,,IF_TEXT_IDENTIFIER
    Methoden:,,,,IDENTIFY_TEXT, READ_TEXT
    Basisklasse:,,CL_TEXT_IDENTIFIER
    Automatische Texterkennung. Eine spezielle Klasse kann auf dem Einstiegspopup beim Anlegen eines InfoSets (Taste "weitere Optionen") eingetragen werden.
  • InfoSet Generator
    Interface:,,,,IF_QUERY_INFOSET_GENERATOR
    Methoden:,,,,MODIFY_INFOSET
    Basisklasse:,, CL_QUERY_DATASOURCE_GENERATOR
    Generierung und Vorbelegung von Feldgruppen (siehe oben). Eine spezielle Klasse kann auf dem Einstiegspopup beim Anlegen eines InfoSets (Taste "weitere Optionen") eingetragen werden.

In der InfoSet-Pflege werden die eingetragenen Serviceklassen auf dem Reiter Anwendungsspezifische Erweiterungenangezeigt.

Erweiterungen bei der Pflege von Queries

In diesem Abschnitt werden einige Erweiterungen in der Funktionalität von Queries beschrieben. Die ersten zwei Funktionalitäten stehen nicht in der InfoSet Query zur Verfügung. Die unten angegebenen Erläuterungen beziehen sich deshalb auf die Bearbeitung von Queries mit Hilfe der Transaktion SQ01.

Rundung in Grundlisten

Bei der Ausgabe von numerischen Werten in Grundlisten können diese gerundet werden. Dies erfolgt in der gleichen Art, wie es bisher schon bei Statistiken und Ranglisten möglich ist: für ein numerisches Feld kann die Zahl der Stellen (vor dem Komma) angegeben werden, auf die das Feld zu runden ist. Diese Zahl muß entweder bei den Einstellungen zum Feld innerhalb des Query-Painters oder auf dem Bild Ausgabeoptionen für Felder eingegeben werden.

Die Rundung erfolgt nur bei der Ausgabe des Feldes in die Liste. Intern wird immer der orginale, d.h. nicht gerundete Wert benutzt. Deshalb werden auch die nicht gerundeten Werte zur Summation bzw. zur Weitergabe an folgende Tools (wie ALV und EXCEL) verwendet.

Neue Optionen für Selektionskriterien

In der Baumdarstellung der Datenfelder im Query-Painter bzw. auf dem Bild Selektionsfelderkonnte bisher für jedes Feld festgelegt werden, daß es als Selektionskriterium zur Verfügung gestellt werden soll. Auf dem Bild Selektionsfelderkonnte außerdem der Selektionstext auf dem Selektionsbild festgelegt werden.

Jetzt kann auf diesem Bild zusätzlich die Reihenfolge dieser Selektionskriterien durch Eingabe einer Reihenfolgenummer festgelegt werden. Allerdings werden in der Query definierte Selektionskriterien wie bisher immer nach den Selektionskriterien der logischen Datenbank bzw. des InfoSets angeordnet. Weiterhin kann festgelegt werden, daß für ein Selektionskriterium nur die Einzelwerteingabe erlaubt wird, d.h. daß dieses Selektionskriterium praktisch als Parameter fungiert

Dynamische Festlegung der Zahl der Ranglistenplätze

Die Anzahl der auszugebenden Plätze einer Rangliste wird bei der Definition der Rangliste festgelegt. Ab Release 4.6C wird auf dem Selektionsbild einer Query, die mindestens eine Rangliste enthält, standardmäßig ein Parameter Anzahl der Ranglistenplätze bereitgestellt. Hier kann zur Laufzeit der Query dynamisch die Zahl der auszugebenden Ranglistenplätze für alleRanglisten der Query angegeben werden. Wird dieser Parameter nicht gesetzt, so gelten die in der Definition der jeweiligen Rangliste angegebenen Werte.

Erweiterungen zur Laufzeit von Queries

Verwendung des SAP List Viewers

Wie bereits mehrfach erwähnt wurde, wird der SAP List Viewer zu Release 4.6C zum Standardausgabemedium der SAP Query. Damit verbunden ist eine Umgestaltung des Selektionsbildes. Der Rahmen Direkte Weitergabe der Liste wurde in Ausgabeform umbenannt. Als erster Auswahlknopf und damit als Standard steht der Knopf SAP List Viewer zur Verfügung. Der bisherige Auswahlknopf keine Weitergabe wurde in ABAP Liste umbenannt.

Dem Auswahlknopf SAP List Viewer ist ein Eingabefeld zugeordnet, in das eine Layoutvariante des SAP List Viewers für die betreffende Query eingetragen werden kann. Eine Wertehilfe für dieses Eingabefeld steht zur Verfügung. Über die Pflege von Layoutvarianten wird auf die Dokumentation des SAP List Viewers verwiesen. Es ist damit möglich, Varianten für Queries anzulegen, die spezielle Layoutvarianten des SAP List Viewers verwenden.

Das Eingabefeld für die Layoutvariante steht zu Release 4.6C nur zur Verfügung, wenn die Query aus dem Einstiegsbild der Transaktion SQ01 oder aus dem Menü gestartet wurde. Wird die Query aus der InfoSet Query oder aus einem Pflegebild der Transaktion SQ01 gestartet, so steht dieses Eingabefeld nicht zur Verfügung.

Auswirkungen auf den Datenbestand

Auswirkungen auf die Datenübernahme

Auswirkungen auf die Systemverwaltung

Auswirkungen auf das Customizing

Weitere Informationen






BAL_S_LOG - Application Log: Log header data   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 76538 Date: 20240523 Time: 183046     sap01-206 ( 1816 ms )