Datenbeschaffung durch ein Programm 
Um Auswertungen zu Datenbeständen durchzuführen, die über die automatische Datenbeschaffung von SAP Query hinausgehen, können Sie ein Datenleseprogramm benutzen.
Das Datenleseprogramm kann entweder Bestandteil des InfoSets oder ein eigenständiges externes Programm sein.
Hinweis
Auf dem Bild InfoSet: Einstieg können Sie über ein InfoSet, das ein externes Datenleseprogramm verwendet, in ein InfoSet mit integriertem Datenleseprogramm überführen.
Sie haben ein InfoSet angelegt und auf dem Dialogfenster InfoSet: Titel und Datenbank eine Bezeichnung und eine Berechtigungsgruppe eingegeben.
Weitere Informationen finden Sie unter Datenquelle zuordnen.
Wählen Sie auf dem Dialogfenster InfoSet: Titel und Datenbank das Feld Datenbeschaffung durch Programm.
Geben Sie eine Datenstruktur ein. Die Struktur muß den Satzaufbau des auszuwertenden Datenbestandes beschreiben.
Die Option integriertes Programm ist die Standardeinstellung. Dies ist die in den meisten Anwendungsfällen geeignete Wahl.
Wenn Sie allerdings ein externes Programm verwenden möchten, geben Sie den Programmnamen in das Eingabefeld zu externes Programm ein.
Achtung
Wenn Sie ein InfoSet mit Datenbeschaffung durch ein externes Programm transportieren, müssen Sie dafür sorgen, daß InfoSet und externes Programm zusammen transportiert werden.
Wählen Sie
Weiter.
Legen Sie ein Datenleseprogramm an, bevor Sie das InfoSet zum ersten Mal generieren.
Verwenden Sie für ein
integriertes Datenleseprogramm den Editor der InfoSet-Pflege
externes Datenleseprogramm den ABAP Editor
Das Datenleseprogramm muß
in seinem Aufbau bestimmten Konventionen entsprechen
syntaktisch fehlerfrei sein
die gleiche Festlegung zur Festpunktarithmetik besitzen wie das InfoSet (bei einem externen Datenleseprogramm)
Das Datenleseprogramm ist jedoch nicht dafür gedacht, selbst ausgeführt zu werden.
Der prinzipielle Aufbau eines Datenleseprogramms und die Reihenfolge seiner Bestandteile sind wie folgt festgelegt:
Report xxxxxxxx. |
|
Tables tab. |
Definition der DDIC-Struktur, über der das InfoSet eingerichtet wird. 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. INCLUDE STRUCTURE tab. DATA: END of itab. |
Gegebenenfalls Definition einer internen Tabelle itab mit der Struktur tab, in der die auszuwertenden Sätze bereitgestellt werden. |
* <Query_head> |
Kommentar als Abschluß der eigenen Datendeklarationen. |
* Coding zur Bestimmung der Tabelle itab, wenn eine solche Tabelle verwendet wird. * Beginn einer Schleife zur satzweisen Bereitstellung der auszuwertenden Daten in der Feldleiste tab (Select, DO, LOOP) * Gegebenenfalls Coding zur Datenaufbereitung |
|
* <Query_body> |
Kommentar als Abschluß der Anweisungen in der Schleife. Die Daten müssen in der Feldleiste tab bereitstehen. |
* Ende der Schleife zur satzweisen Datenbeschaffung (ENDSELECT, ENDDO, ENDLOOP) |
Achtung
Wenn Sie die Bestandteile des Musterreports falsch anordnen, werden unter Umständen sinnlose Query-Reports generiert.
Die Zeichenketten der beiden Kommentarzeilen *<QUERY_HEAD> und *<QUERY_BODY> sind ab dem Zeichen "<" fest vorgeschrieben. Zwischen Groß- und Kleinschreibung unterscheidet das System allerdings nicht.
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. Sie können auch SELECT-Anweisungen verwenden, die mandantenübergreifend lesen (Zusatz CLIENT SPECIFIED).
Interne und externe Datenleseprogramm können auch Abgrenzungen enthalten. Diese werden auf dem Bild InfoSet: ändern bzw. anzeigen in der Übersicht der Abgrenzungen (
) als Standardabgrenzungen angezeigt. Das System überprüft das Programm regelmäßig auf Abgrenzungen:
ein internes Datenleseprogramm bei jeder Änderung des Datenleseprogramms
ein externes Datenleseprogramm beim Aufruf der Transaktion SQ02 für das InfoSet
In der Pflege eines InfoSets mit Datenbeschaffung durch ein eigenes Programm stehen Ihnen alle Möglichkeiten zur Verfügung, die Sie auch bei InfoSets über anderen Datenquellen nutzen können.
Weitere Informationen finden Sie unter Besonderheiten.
Hinweis
Wenn eine Query zu einem InfoSet mit Datenbeschaffung durch Programm angelegt wird, so wird der Musterreport beim Generieren des Query-Reports als Vorlage verwendet. Die Attribute des Musterreports werden an die generierten Reports vererbt. Der Musterreport selbst wird dabei nicht verändert.
Damit steht letztlich auch die Möglichkeit zur Verfügung, die Datenbeschaffung mit Hilfe einer logischen Datenbank zu organisieren. In der Regel empfehlen wir dafür allerdings, das InfoSet direkt über der logischen Datenbank anzulegen.
Der folgende Text zeigt einen Musterreport mit SELECT-Anweisung.
Syntax
*-------------------------------------------------------* * data retrieval program for functional area FLDP * *-------------------------------------------------------* report aq00flcp. tables saplane. select-options type for saplane-planetype. *<Query_head> select * from saplane where planetype in type. *<Query_body> endselect.
Der folgende Text zeigt einen Musterreport mit LOOP-Anweisung.
Syntax
*-------------------------------------------------------* * data retrieval program for functional area FLDX * *-------------------------------------------------------* report aq00fldx. tables: saplane, indx. data: planedata like saplane occurs 100 with header line. select-options type for planedata-planetype. *<Query_head> import planedata from database indx(pl) id 'PLANEDAT'. loop at planedata where planetype in type. move-corresponding planedata to saplane. *<Query_body> endloop.
Die Daten werden in einer internen Tabelle bereitgestellt, die durch einen Import aus der INDX gefüllt wird. Weil das InfoSet über der Struktur SAPLANE angelegt wird und die Query die Daten in einer Feldleiste mit dem Namen SAPLANE erwartet, wird innerhalb der LOOP-Schleife jede gelesene Zeile aus PLANEDATA nach SAPLANE übertragen.