Lösungsmöglichkeit Praktikum 1
Hallo,
anbei erhalten sie eine mögliche Lösung für Praktikum 1.
* Parameter, welche vor ausführung abgefragt werden sollen.
PARAMETER: pa_k TYPE zde_kuerzel.
PARAMETER: pa_sws TYPE zde_sws .
* Sprach Feld mit aktueller Sprache vorbelegt
PARAMETER: pa_spr TYPE spras DEFAULT sy-langu.
- Datenstruktur anlegen, in welcher die Werte der von der
- Abfrage zwischengespeichert werden sollen
* Basiert auf Tabelle hochschule
INCLUDE TYPE ztb_hochschule.
* Fügt zusätzliche Felder von HochschuleT
DATA: beschreibung TYPE ztb_hochschulet-beschreibung,
sprache TYPE ztb_hochschulet-sprache,
END OF hs,
* zählvariable zum feststellen, ob ausgabe erfolgte
count TYPE i VALUE 0.
* Durchgehen aller Einträge der kombinierten Tabelle.
START-OF-SELECTION.
SELECT *
FROM ztb_hochschule INNER JOIN ztb_hochschulet
ON ztb_hochschule~kuerzel = ztb_hochschulet~kuerzel
INTO CORRESPONDING FIELDS OF hs
ORDER BY ztb_hochschule~kuerzel.
- Selectiere Datensätze, wenn:
- kürzel/sws/sprache der Datenbank mit der Übergebene übereinstimmt
- oder nicht eingegeben wurde.
- ( Diese Variante wählte ich, um keine 6 verschiedene
- Select Anweisungen schreiben zu müssen).
( hs-kuerzel = pa_k OR pa_k = '' ) AND
( hs-sws = pa_sws OR pa_sws = '' ) AND
( hs-sprache = pa_spr OR pa_spr = '' ) .
- falls erster Datensatz,
- gebe Überschriften der Tabelle aus.
- 5 besagt, er soll an position 5 Springen
- / besagt, ein Zeilenwechsel einzufügen
- sy-vline: ein senkrechter Strich (für Tabellen)
- sy-uline: eine vertikale linie.
(4) 'K', sy-vline,
(30) 'Beschreibung', sy-vline,
(10) 'Dozent', sy-vline,
(6) 'Raum', sy-vline,
(4) 'SWS', sy-vline,
(8) 'Sprache', sy-vline,
sy-uline.
ENDIF.
* Hochzählen der Datensätze
count = count + 1.
* Ausgabe des Datensatzen als Tabellenzeile
WRITE: AT /5 sy-vline,
(4) hs-kuerzel, sy-vline,
(30) hs-beschreibung, sy-vline,
(10) hs-dozent, sy-vline,
(6) hs-raum, sy-vline,
(4) hs-sws CENTERED, sy-vline,
(8) hs-sprache CENTERED, sy-vline.
ENDIF.
ENDSELECT.
*Prüfen, ob keine Ausgabe gemacht wurde.
IF count = 0 .
- Nachricht über Fehlerklasse ausgeben.
- (selbst angelegt)
ELSE.
WRITE sy-uline.
ENDIF.