Datenbeschaffung durch ein Programm 
Wenn Sie Auswertungen zu Datenbeständen machen möchten, bei denen Ihnen die automatische Datenbeschaffung von SAP Query nicht ausreicht, so legen Sie ein InfoSet an, bei dem Sie auf dem Bild Titel und Datenbank das Feld Datenbeschaffung durch das Programm markieren, einen Programmnamen eingeben und den Namen einer Struktur eingeben. Die Struktur muß den Satzaufbau des auszuwertenden Datenbestandes beschreiben.
Wird mit der Komponente Pflege von Queries eine Query zu diesem InfoSet angelegt, so wird der Musterreport beim Generieren des Query-Reports als Vorlage verwendet; der Musterreport wird dabei nicht verändert.
Den Musterreport müssen Sie selbst mit dem ABAP-Editor anlegen, bevor Sie zum ersten Mal das InfoSet generieren. Der Musterreport muß syntaktisch korrekt sein und die gleiche Festlegung zur Festpunktarithmetik besitzen, wie das InfoSet. Er ist jedoch nicht dafür gedacht, selbst ausgeführt zu werden.
Der Aufbau des Musterreports und die Reihenfolge seiner Bestandteile sind reglementiert. Der prinzipielle Aufbau eines Musterreports ist im folgenden beschrieben.
Report xxxxxxxx . |
|
Tables tab . |
Definition der DDIC-Struktur über der das InfoSet eingerichtet wurde. In dieser Feldleiste müssen die auszuwertenden Sätze bereitgestellt werden. |
Parameters . |
Definition von Parametern, Selektionskriterien und Feldern. |
Select-Options:… |
|
DATA :… |
|
DATA: BEGIN OF itab OCCURS xxx. |
ggf. Definition einer internen Tabelle itab mit der Struktur tab, in der die auszuwertenden Sätze bereitgestellt werden. |
* <Query_head> |
dieser Kommentar muß immer nach den eigenen Datendeklarationen stehen. |
* Coding zur Bestimmung der Tabelle itab, falls eine solche Tabelle verwendet wird.* Beginn einer Schleife zur satzweisen Bereitstellung der auszuwertenden Daten in der * ggf. Coding zur Datenaufbereitung |
|
* <Query_body> |
Dieser Kommentar muß immer die letzte 'Anweisung' in der Schleife sein. Die Daten müssen in der Feldleiste tab bereitstehen. |
* Ende der Schleife zur satzweisen Datenbeschaffung (ENDSELECT, ENDDO, ENDLOOP,...) |

Werden die Bestandteile des Musterreports falsch plaziert, so werden unter Umständen sinnlose Query-Reports generiert. Die Zeichenketten der beiden Kommentarzeilen *<QUERY_HEAD> und *<QUERY_BODY> sind ab dem Zeichen "<" fest vorgeschrieben, lediglich zwischen Groß- und Kleinschreibung unterscheidet das System nicht.

Die Generierung des InfoSets ist erst möglich, wenn der Musterreport existiert, den oben genannten Konventionen entspricht, syntaktisch fehlerfrei ist und die richtige Festlegung zur Festpunktarithmetik hat.
Bei der Generierung von Query-Reports, bei denen ein Musterreport verwendet wird, werden die Attribute des Musterreports an die generierten Reports vererbt. Damit steht letztlich auch die Möglichkeit zur Verfügung, die Datenbeschaffung mit Hilfe einer logischen Datenbank zu organisieren. Dies sollte aber ein Spezialfall sein, da bei Benutzung einer logischen Datenbank das InfoSet besser direkt über der logischen Datenbank eingerichtet werden sollte.
Die folgende Abbildung zeigt einen Musterreport mit SELECT-Anweisung.

Die folgende Abbildung zeigt einen Musterreport mit LOOP-Anweisung.

Die Daten werden in einer internen Tabelle bereitgestellt, die durch einen Import aus der INDX gefüllt wird. Innerhalb der LOOP-Schleife muß jede gelesene Zeile aus PLANEDATA nach SAPLANE übertragen werden, da das InfoSet über der Struktur SAPLANE angelegt wurde und die Query die Daten in einer Feldleiste mit dem Namen SAPLANE erwartet.
Auf dem Screen zur Pflege von InfoSets stehen Ihnen alle Möglichkeiten zur Verfügung, die Sie bei InfoSets über logischen Datenbanken nutzen können, also z.B. der Anschluß von Zusatz-Tabellen und die Definition von Zusatzfeldern etc. Beachten Sie die am Ende des Abschnitts Sequentieller Bestand genannten Besonderheiten.
InfoSets mit Datenbeschaffung durch ein eigenes Programm bieten Ihnen weitreichende Möglichkeiten. Innerhalb eines Musterreports unterliegen Sie keinen Einschränkungen, wie Sie die Beschaffung Ihrer Daten organisieren. Es sind deshalb sehr komplizierte und komplexe Algorithmen zur Datenbeschaffung möglich. Hier können auch SELECT-Anweisungen verwendet werden, die mandantenübergreifend lesen (Zusatz CLIENT SPECIFIED).