Show TOC Anfang des Inhaltsbereichs

Verknüpfung mitausführbaren Programmen  Dokument im Navigationsbaum lokalisieren

Wenn ein ausführbares Programm mit einer logischen Datenbank verknüpft ist, d.h. die logische Datenbank ist in den Programmattributen eingetragen, bilden die Unterprogramme des logischen Datenbankprogramms mit den Ereignisblöcken des ausführbaren Programms ein modularisiertes Gesamtprogramm zum Lesen und Verarbeiten von Daten. Die einzelnen Verarbeitungsblöcke werden  in bestimmter, vorgegebener Reihenfolge von der Laufzeitumgebung aufgerufen. Dabei steuern Struktur, Selektionen und PUT-Anweisungen der logischen Datenbank sowie die GET-Anweisungen des ausführbaren Programms das Laufzeitverhalten.

Diese Grafik wird im zugehörigen Text erklärt

Die Aufrufe der Laufzeitumgebung hängen zum Einen von der Struktur der logischen Datenbank und zum Anderen von der Definition des ausführbaren Programms ab. Die Struktur der logischen Datenbank bestimmt, in welcher Reihenfolge die Unterprogramme der logischen Datenbank aufgerufen werden, die wiederum GET-Ereignisblöcke im ausführbaren Programm aufrufen. Die im ausführbaren Programm definierten GET-Ereignisblöcke bestimmen die Lesetiefe der logischen Datenbank. TABLES- oder NODES-Anweisungen im Deklarationsteil des ausführbaren Programms bestimmen welche der in der logischen Datenbank definierten Eingabefelder auf dem Selektionsbild aufgenommen werden und definieren Schnittstellen-Arbeitsbereiche für die Datenübergabe zwischen logischer Datenbank und ausführbarem Programm.

Der eigentliche Zugriff auf die Datenbank erfolgt über Open SQL-Anweisungen, die in den PUT_TABLE-Unterprogrammen programmiert sind. Die eingelesenen Daten werden über die Schnittstellen-Arbeitsbereiche an das ausführbare Programm übergeben. Nach dem Einlesen der Daten im logischen Datenbankprogramm hat das ausführbare Programm die Möglichkeit diese Daten in den GET-Ereignisblöcken zu verarbeiten. Dadurch wird eine Trennung von Datenauslese und Datenverarbeitung erreicht.

Selektionsbild

Wenn eine logische Datenbank in den Attributen eines ausführbaren Programms angegeben ist, beeinflusst diese das Standardselektionsbild des Programms. Das Standardselektionsbild enthält sowohl die Selektionen (Selektionskriterien und Parameter) der logischen Datenbank als auch die programmspezifischen Selektionen. Das ausführbare Programm bestimmt durch die Deklaration von Schnittstellen-Arbeitsbereichen, welche datenbankspezifischen Selektionen für seine Datenauswertung relevant sind und auf dem Selektionsbild erscheinen sollen.

Laufzeitverhalten

In der folgenden Liste wird näher auf die (in obiger Abbildung dargestellte) Reihenfolge eingegangen, in der die ABAP-Laufzeitumgebung die Unterprogramme der logischen Datenbank und die Ereignisblöcke im ausführbaren Programm aufruft. Dabei werden in der Laufzeitumgebung verschiedene Prozessoren (Selektionsbildprozessor, Reporting-Prozessor) hintereinander ausgeführt. Die jeweils aufgeführten ABAP-Programmzeilen spezifizieren die zu den einzelnen Schritten gehörigen Verarbeitungsblöcke.

...

       1.      Initialisierungen vor der Selektionsbildverarbeitung.

Unterprogramm:

FORM init

Dieses Unterprogramm wird ein einziges mal vor dem ersten Senden des Selektionsbilds aufgerufen.

Ereignisblock:

INITIALIZATION.

Dieses Ereignis tritt ein einziges mal vor dem ersten Senden des Selektionsbilds auf.

       2.      PBO des Selektionsbilds. Initialisierungen vor jedem Senden des Selektionsbilds (z.B. Vorschlagswerte für Schlüsselfelder bestimmen).

Unterprogramm:

FORM pbo.

Dieses Unterprogramm wird vor jedem erneuten Senden des Selektionsbilds aufgerufen.

Ereignisblock:

AT SELECTION-SCREEN OUTPUT.

Dieses Ereignis tritt vor jedem erneuten Senden des Selektionsbilds auf.

       3.      Das Selektionsbild wird vom SAP-GUI angezeigt und der Benutzer gibt Daten in die Eingabefelder ein.

       4.      Eventuell Anforderung von Wertehilfe (F4) und Eingabehilfe (F1).

Unterprogramme:

FORM par_VAL.
FORM selop_VAL.
FORM selop-LOW_VAL.
FORM selop-HIGH_VAL.

Fordert der Benutzer Wertehilfe zu datenbankspezifischen Parametern par oder Selektionskriterien selop an, werden diese Unterprogramme entsprechend aufgerufen.

Fordert der Benutzer Eingabehilfe für diese Parameter an, werden die Unterprogramme mit der Endung _HLP statt _VAL aufgerufen..

Ereignisblöcke:

AT SELECTION-SCREEN ON VALUE-REQUEST FOR par.
AT
SELECTION-SCREEN ON VALUE-REQUEST FOR selop-LOW.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR selop-HIGH.

Fordert der Benutzer Wertehilfe zu programmspezifischen Parametern par oder Selektionskriterien selop an, werden die entsprechenden Ereignisse ausgelöst.

Fordert der Benutzer Hilfe für diese Parameter an, werden die Ereignisse mit dem Zusatz ON HELP-REQUEST statt ON VALUE-REQUEST ausgelöst.

       5.      PAI des Selektionsbilds. Überprüfung ob die Benutzereingaben korrekt, vollständig und plausibel sind. Außerdem die Berechtigsüberprüfung des Benutzers. Im Fehlerfall können ein Dialog mit dem Benutzer geführt und Felder für wieder eingabebereit gemacht werden.

Unterprogramme:

FORM pai USING fname mark.

Die Schnittstellenparameter FNAME und MARK werden von der Laufzeitumgebung übergeben.

FNAME enthält den Namen eines Selektionskriteriums oder Parameters auf dem Selektionsbild.

Falls MARK = space, hat der Benutzer eine einfache Einzelwert- oder Intervallselektion eingegeben.

Falls MARK = '*', hat der Benutzer auch Eintragungen auf dem Bild Mehrfachselektion vorgenommen.

Mit der Kombination FNAME = '*' und MARK = 'ANY' können bei einer Benutzeraktion alle Eingaben auf einmal überprüft werden.

Ereignisblöcke:

AT SELECTION-SCREEN ON fname.

Ereignis zur Verarbeitung eines bestimmten Eingabefelds.

AT SELECTION-SCREEN ON END OF fname.

Ereignis zur Verarbeitung von Mehrfachselektionen.

AT SELECTION-SCREEN.

Ereignis zur Verarbeitung aller Benutzereingaben.

       6.      Arbeiten vor dem Lesen von Daten.

Unterprogramm:

BEFORE EVENT 'START-OF-SELECTION'.

Die logische Datenbank kann vor dem Lesen der Daten Aktionen ausführen, wie z.B. interne Tabellen initialisieren etc.

Ereignisblock:

START-OF-SELECTION.

Erstes Reporting-Ereignis nach der Selektionsbildverarbeitung. In diesem Ereignisblock können vorbereitende Arbeiten im Programm ausgeführt werden.

       7.      Lesen von Daten in der logischen Datenbank und Verarbeitung im ausführbaren Programm.

Unterprogramm:

FORM PUT_node.

Die logische Datenbank liest die ausgewählten Daten des Knotens node.

Ereignisblock:

GET table [LATE].

Dieses Ereignis wird durch die PUT-Anweisung in obigem Unterprogramm ausgelöst. In diesem Ereignisblock können die zu node gelesenen Daten im entsprechenden Schnittstellen-Arbeitsbereich verarbeitet werden.

       8.      Arbeiten nach dem Lesen von Daten.

Unterprogramm:

AFTER EVENT 'END-OF-SELECTION'.

Die logische Datenbank kann nach dem Lesen der Daten Aktionen ausführen, wie z.B. Speicherplatz freigeben.

Ereignisblock:

END-OF-SELECTION.

Letztes Reporting-Ereignis. In diesem Ereignisblock können alle zwischengespeicherten Daten bearbeitet werden (z.B. Sortieren).

       9.      Falls während obiger Schritte eine Liste beschrieben wurde, übernimmt der Listenprozessor in der Laufzeitumgebung die Kontrolle und zeigt die Liste an.

Beispiel

Sei TABLE1 der Wurzelknoten und TABLE2 dessen einziger Nachfolger einer logischen Datenbank. Die hierarchische Schachtelung der Verarbeitungsschritte zum Lesen der Daten und deren Verarbeitung ist dann folgendermaßen:

START-OF-SELECTION.

  FORM put_table1.

  GET table1.

    FORM put_table2.

    GET table2.

  GET table1 LATE.

END-OF-SELECTION.

Berechtigungsprüfungen in logischen Datenbanken

Berechtigungsprüfungen mit der Anweisung AUTHORITY-CHECK sind in den folgenden Unterprogrammen des Datenbankprogramms bzw. Ereignisblöcken des ausführbaren Programms sinnvoll:

·        Unterprogramme im Datenbankprogramm:

¡        PAI

¡        AUTHORITY_CHECK_table

·        Ereignisblöcke im ausführbaren Programm:

¡        AT SELECTION-SCREEN

¡        AT SELECTION-SCREEN ON fname

¡        AT SELECTION-SCREEN ON END OF fname

¡        GET table

Wo die Berechtigungsprüfungen genau plaziert werden, ob im Datenbankprogramm oder im Report, hängt u.a. von folgendem ab:

·        Der Struktur der logischen Datenbank.

Es sollte z.B. eine Buchungskreisberechtigung nur geprüft werden, wenn zur Laufzeit auch eine Zeile mit dem Feld Buchungskreis gelesen wird.

·        Performance.

Wiederholte Prüfungen z.B. innerhalb von SELECT-Schleifen sollten vermieden werden.

Auf alle Fälle bietet die Trennung von Datenbankzugriffen und Anwendungslogik die Möglichkeit, alle Berechtigungsprüfungen zentral im logischen Datenbankprogramm zu programmieren. Dies erleichtert die Pflege von großen Programmsystemen.

Ende des Inhaltsbereichs