Selektionen bearbeiten 

Um die Selektionen einer logischen Datenbank zu bearbeiten, d. h. anzuzeigen oder zu ändern, wählt man Selektionen auf dem Einstiegsbild des Logical Database Builders oder navigiert von anderen Komponenten in den ABAP Editor für das Selektions-Include.

Der Name des Selektions-Includes ist DB<ldb>SEL, wobei <ldb> der Name der logischen Datenbank ist. Dieses Include-Programm darf nicht explizit über eine INCLUDE-Anweisung in das Datenbankprogramm eingebunden werden. Die Laufzeitumgebung bindet das Selektions-Include bei der Generierung in das Datenbankprogramm und die zugehörigen Programme ein.

Ruft man die Bearbeitung der Selektionen auf und es gab es vorher noch kein Selektions-Include, wird dieses vom System generiert. Dabei werden automatisch SELECT-OPTIONS-Anweisungen für alle Datenbanktabellen der Struktur (Knoten vom Typ T) vorgegeben. Für jede Datenbanktabelle werden dabei Selektionskriterien für jedes ihrer Primärschlüsselfelder vorgeschlagen.

Die SELECT-OPTIONS-Anweisungen sind auskommentiert und enthalten vorerst Fragezeichen (?) anstelle der Namen der Selektionskriterien. Für jedes gewünschte Selektionskriterium muß der Namen eingegeben und das Kommentarzeichen '*' gelöscht werden.

Falls eine Suchhilfe für die logische Datenbank angegeben ist, wird eine entsprechende PARAMETERS-Anweisung mit dem Zusatz AS SEARCH PATTERN vorgesehen. Auf dem Selektionsbild erscheint dann ein Rahmen Selektion über Suchhilfe mit Eingabefeldern für die Suchhilfe-Kennung und den Suchstring. Außerdem ist eine Drucktaste für komplexe Suchhilfen aktiv. Drückt man diese Taste, so kann man Mehrfachselektionen zur Abgrenzung jedes einzelnen Feldes angeben.

Schließlich werden, falls bei Definition der Struktur vorgesehen, SELECTION-SCREEN-Anweisungen für freie Abgrenzungen und Feldselektionen für Knoten vom Typ T oder S generiert.

Zusätzlich zu den vorgeschlagenen Elementen kann das Selektionsbild mit folgenden Anweisungen erweitert werden:

· Mit der Anweisung

SELECTION-SCREEN DYNAMIC SELECTIONS FOR NODE|TABLE <node>.

können weitere Knoten für freie Abgrenzungen vorgesehen werden. Falls der Knoten vom Typ T ist, kann statt NODE auch TABLE geschrieben werden. Der Benutzer kann dann zur Laufzeit festlegen, für welche Komponenten des Knotens er Abgrenzungen eingeben will. Die dynamischen Angaben müssen im Datenbankprogramm speziell behandelt werden.

· Mit der Anweisung

SELECTION-SCREEN FIELD SELECTION FOR NODE|TABLE <node>.

können weitere Knoten für Feldselektion vorgesehen werden. Falls der Knoten vom Typ T ist, kann statt NODE auch TABLE geschrieben werden. Ein ausführbares Programm kann durch eine Feldliste in der GET-Anweisung steuern, welche Felder des Knotens die logische Datenbank ihm zur Verfügung stellen soll. Beim Funktionsbaustein LDB_PROCESS muß der Parameter FIELD_SELECTION entsprechend übergeben werden. Die Angaben des Verwenders müssen im Datenbankprogramm speziell behandelt werden.

· Über die Anweisungen

SELECTION-SCREEN BEGIN OF VERSION <dynnr>
...
SELECTION-SCREEN EXCLUDE <f>.
...
SELECTION-SCREEN BEGIN OF VERSION <dynnr>.

können verschiedene Versionen des Selektionsbilds mit Dynpronummern <dynnr> kleiner 1000 erstellt werden. Dabei werden Eingabefelder von Selektionskriterien oder Parametern <f> ausgeblendet. Ein ausführbares Programm kann dadurch mit einer passenden Selektionsbildversionen arbeiten.

Um das Selektions-Include auf Syntaxfehler zu prüfen, wählt man Prüfen auf dem Einstiegsbild. Die Syntax des Selektions-Includes ebenfalls überprüft, wenn beim Editieren des Datenbankprogramms Prüfen gewählt wird.

Die logische Datenbank TEST_LDB habe folgende Struktur:

Dann sieht der generierte Vorschlag für das Selektions-Include so aus:

*-----------------------------------------------------------*
* Include DBTEST_LDBSEL
* It will be automatically included into the database program
*-----------------------------------------------------------*
* If the source is automatically generated,
* please perform the following steps:
* 1. Replace ? by suitable names (at most 8 characters).
* 2. Activate SELECT-OPTIONS and PARAMETERS (delete stars).
* 3. Save source code.
* 4. Edit database program.
*
* Hint: Syntax-Check is not possible within this Include!
* It will be checked during syntax-check of database program.
*-----------------------------------------------------------*

* SELECT-OPTIONS : ? FOR LFA1-LIFNR.

* Parameter for search pattern selection (Type SY-LDB_SP):
* PARAMETERS p_sp AS SEARCH PATTERN FOR TABLE LFA1.

* SELECT-OPTIONS :
* ? FOR LFB1-LIFNR,
* ? FOR LFB1-BUKRS.

* SELECT-OPTIONS :
* ? FOR LFC1-LIFNR,
* ? FOR LFC1-BUKRS,
* ? FOR LFC1-GJAHR.

* SELECT-OPTIONS :
* ? FOR BKPF-BUKRS,
* ? FOR BKPF-BELNR,
* ? FOR BKPF-GJAHR.

* Enable DYNAMIC SELECTIONS for selected nodes :
* Enable FIELD SELECTION for selected nodes :

Sind die Knoten LFA1 und LFB1 für freie Abgrenzungen und der Knoten LFC1 für Feldselektion vorgesehen, werden zusätzlich noch folgende Programmzeilen generiert:

SELECTION-SCREEN DYNAMIC SELECTIONS FOR TABLE LFA1.

SELECTION-SCREEN DYNAMIC SELECTIONS FOR TABLE LFB1.

SELECTION-SCREEN FIELD SELECTION FOR TABLE LFC1.

Dieses automatisch erzeugte Selektions-Include kann beispielsweise folgendermaßen modifiziert werden:

* Selection criteria:

  SELECT-OPTIONS SLIFNR  FOR LFA1-LIFNR.

  SELECT-OPTIONS SBUKRS  FOR LFB1-BUKRS.

  SELECT-OPTIONS SGJAHR  FOR LFC1-GJAHR.

  SELECT-OPTIONS SBELNR  FOR BKPF-BELNR.

* Self-defined parameters:

  PARAMETERS PSTIDA LIKE SY-DATUM FOR NODE BKPF.

* Dynamic selections for LFA1 und LFB1:

  SELECTION-SCREEN DYNAMIC SELECTIONS FOR NODEE: LFA1, LFB1.

* Field selection for LFB1 and LFC1:

  SELECTION-SCREEN FIELD SELECTION FOR NODE: LFB1, LFC1.

Aus den angebotenen Selektionskriterien wird eine Auswahl getroffen und diese wird mit Namen versehen. Ein zusätzlicher Parameter PSTIDA wird deklariert und mit dem Knoten BKPF verbunden. Für die Tabellen LFA1 und LFB1 werden freie Abgrenzungen vorgesehen. Die Tabellen LFB1 und LFC1 werden für Feldselektion vorgesehen.