Anfang des Inhaltsbereichs

Beispiel einer logischen Datenbank Dokument im Navigationsbaum lokalisieren

Wir betrachten eine logische Datenbank TEST_LDB.

Struktur

Diese Grafik wird im zugehörigen Text erklärt

Selektionen im Selektions-Include

   SELECT-OPTIONS: slifnr   FOR lfa1-lifnr,
                   sbukrs   FOR lfb1-bukrs,
                   sgjahr   FOR lfc1-gjahr,
                   sbelnr   FOR bkpf-belnr.

Datenbankprogramm

*-------------------------------------------------------*
* DATENBANKPROGRAMM DER LOGISCHEN DATENBANK TEST_LDB
*-------------------------------------------------------*
PROGRAM sapdbtest_ldb DEFINING DATABASE test_ldb.
TABLES: lfa1,
        lfb1,
        lfc1,
        bkpf.

*-------------------------------------------------------*
* Selektionsbild initialisieren (verarbeitet vor PBO)
*-------------------------------------------------------*
FORM init.
 ....
ENDFORM.                                "INIT

*-------------------------------------------------------*
* PBO des Selektionsbildes (immer vor Selektionsbild)
*-------------------------------------------------------*
FORM pbo.
 ....
ENDFORM.                                "PBO

*-------------------------------------------------------*
* PAI des Selektionsbildes (verarbeitet immer nach ENTER)
*-------------------------------------------------------*
FORM pai USING fname mark.
  CASE fname.
    WHEN 'SLIFNR'.
     ....
    WHEN 'SBUKRS'.
     ....
    WHEN 'SGJAHR'.
     ....
    WHEN 'SBELNR'.
     ....
  ENDCASE.
ENDFORM.                                "PAI

*-------------------------------------------------------*
* Ereignis GET LFA1 aufrufen
*-------------------------------------------------------*
FORM put_lfa1.
  SELECT * FROM lfa1
           WHERE lifnr      IN slifnr.
    PUT lfa1.
  ENDSELECT.
ENDFORM.                                "PUT_LFA1

*-------------------------------------------------------*
* Ereignis GET LFB1 aufrufen
*-------------------------------------------------------*
FORM put_lfb1.
  SELECT * FROM lfb1
           WHERE lifnr      =  lfa1-lifnr
             AND bukrs      IN sbulrs.
    PUT lfb1.
  ENDSELECT.
ENDFORM.                                "PUT_LFB1

*-------------------------------------------------------*
* Ereignis GET LFC1 aufrufen
*-------------------------------------------------------*
FORM put_lfc1.
  SELECT * FROM lfc1
           WHERE lifnr      =  lfa1-lifnr
             AND bukrs      =  lfb1-bukrs
             AND gjahr      IN sgjahr.
    PUT lfc1.
  ENDSELECT.
ENDFORM.                                "PUT_LFC1

*-------------------------------------------------------*
* Ereignis GET BKPF aufrufen
*-------------------------------------------------------*
FORM put_bkpf.
  SELECT * FROM bkpf
           WHERE bukrs      =  lfb1-bukrs
             AND belnr      IN sbelnr
             AND gjahr      IN sgjahr.
    PUT bkpf.
  ENDSELECT.
ENDFORM.                                "PUT_BKPF  

Die PROGRAM-Anweisung hat den Zusatz DEFINING DATABASE TEST_LDB. Damit wird die Zugehörigkeit des Datenbankprogramms zur logischen Datenbank TEST_LDB definiert.

Die Knoten der Struktur werden hier mit der TABLES-Anweisung deklariert. Dies erzeugt die notwendigen Schnittstellen-Arbeitsbereiche als Tabellenarbeitsbereiche. Die Anweisung NODES ist für Datenbanktabellen als Knoten gleichwertig einsetzbar. Falls die Knoten keine Datenbanktabellen sind, müssen sie mit NODES deklariert werden. Die Schnittstellen-Arbeitsbereiche werden vom Datenbankprogramm und dem Verwender gemeinsam genutzt und dienen dadurch als die Schnittstelle für die Datenübergabe. Mit Verwender ist hier entweder direkt ein verknüpftes ausführbares Programm oder der Funktionsbaustein LDB_PROCESS gemeint.

In den Unterprogrammen INIT und PBO können Initialisierungen des Selektionsbilds vorgenommen werden.

Im Unterprogramm PAI können die Benutzereingaben auf dem Selektionsbild z.B. einer Berechtigungsprüfung unterzogen werden. Aber auch andere Prüfungen, wie für Plausibilität oder Wertebereich sind möglich. Für den negativen Ausgang einer Prüfung kann hier ein Fehlerdialog kodiert, und das entsprechende Feld wird wieder eingabebereit gemacht werden.

In den Unterprogrammen PUT_<node> werden die Datenbanktabellen entsprechend der vom Benutzer eingegebenen Selektionskriterien ausgelesen und die zugehörigen GET-Ereignisse ausgelöst. Dieses Programm soll nur den prinzipiellen Aufbau einer logischen Datenbank zeigen. Es sind keinerlei Maßnahmen zur Optimierung der Antwortzeiten unternommen worden. Die zeitliche Abfolge der Unterprogrammaufrufe wird durch die Struktur der logischen Datenbank bestimmt:

Diese Grafik wird im zugehörigen Text erklärt

 

 

 

 

 

Ende des Inhaltsbereichs