Anfang des Inhaltsbereichs

Verknüpfung mit ausführbaren Programmen Dokument im Navigationsbaum lokalisieren

Wenn ein ausführbares Programm vom Typ 1 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 werde in bestimmter vorgegebener Reihenfolge von der Laufzeitumgebung aufgerufen (siehe Abbildung unter Logische Datenbanken und Contexte). Dabei steuern Struktur, Selektionen und PUT-Anweisungen der logischen Datenbank sowie die GET-Anweisungen des ausführbaren Programms das Laufzeitverhalten.

Selektionsbild

Wenn eine logischen Datenbank in den Attributen eines ausführbaren Programms angegeben ist, beinflußt 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

Die folgende Liste zeigt die Reihenfolge, 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, Reportingprozessor) hintereinander ausgeführt. Die jeweils aufgeführten ABAP-Programmzeilen spezifizieren die zu den einzelnen Schritten gehörigen Verarbeitungsblöcke.

  1. Initialisierungen vor der Selektionsbildverarbeitung.
  2. 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.

  3. PBO des Selektionsbilds. Initialisierungen vor jedem Senden des Selektionsbilds (z.B. Vorschlagswerte für Schlüsselfelder bestimmen).
  4. 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.

  5. Das Selektionsbild wird vom SAP-GUI angezeigt und der Benutzer gibt Daten in die Eingabefelder ein.
  6. Eventuell Anforderung von Wertehilfe (F4) und Eingabehilfe (F1).
  7. 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.

  8. 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.
  9. 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 zut Verarbeitung eines bestimmten Eingabefelds.

    AT SELECTION-SCREEN ON END OF <fname>.

    Ereignis zur Verarbeitung von Mehrfachselektionen.

    AT SELECTION-SCREEN.

    Ereignis zur Verarbeitung aller Benutzereingaben.

  10. Arbeiten vor dem Lesen von Daten.
  11. 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.

  12. Lesen von Daten in der logischen Datenbank und Verarbeitung im ausführbaren Programm.
  13. 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.

  14. Arbeiten nach dem Lesen von Daten.
  15. 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).

  16. 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:

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

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

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