9.6 Codebeispiel zu UPDATE
Als Nächstes verwenden wir das Kommando UPDATE im Beispielprogramm Z_TEILNEHMERLISTE09_UPDATE in Listing 9.2.
1 *&---------------------------------------------*
2 *& Report Z_TEILNEHMERLISTE09_UPDATE *
3 *& *
4 *&---------------------------------------------*
5 *& *
6 *& *
7 *&---------------------------------------------*
8
9 REPORT z_teilnehmerliste09_update.
10
11 * Korrekt: Workarea deklarieren
12 DATA: wa_zteilnehmer02 TYPE zteilnehmer02.
13
14 * Veraltet: Tabellenarbeitsbereich deklarieren
15 TABLES zteilnehmer02.
16
17 * Zeichenketten deklarieren
18 DATA: tnr TYPE zteilnehmer02-tnummer.
19
20 * Tabellenzeilen vor der Veränderung der Tabelle
21 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
22 ORDER BY PRIMARY KEY.
23 WRITE: / wa_zteilnehmer02-tnummer,
24 wa_zteilnehmer02-tname,
25 wa_zteilnehmer02-tgeburtsdatum,
26 wa_zteilnehmer02-tgeschlecht,
27 wa_zteilnehmer02-tkurspreis,
28 wa_zteilnehmer02-twaehrung,
29 wa_zteilnehmer02-zzkfztyp,
30 wa_zteilnehmer02-zzkurstitel.
31 ENDSELECT.
32 tnr = wa_zteilnehmer02-tnummer.
33 SKIP.
34
35 * Datensatz ändern aus Workarea
36 tnr = tnr - 2.
37 CLEAR wa_zteilnehmer02.
38 wa_zteilnehmer02-tnummer = tnr.
39 wa_zteilnehmer02-tname = 'Maier'.
40 wa_zteilnehmer02-tgeburtsdatum = '19980808'.
41 wa_zteilnehmer02-tgeschlecht = 'M'.
42 wa_zteilnehmer02-tkurspreis = '888'.
43 wa_zteilnehmer02-twaehrung = 'EUR'.
44 wa_zteilnehmer02-zzkfztyp = 'KOMBI'.
45 wa_zteilnehmer02-zzkurstitel = 'Netzwerktechnik'.
46 UPDATE zteilnehmer02 FROM wa_zteilnehmer02.
47 WRITE: / 'Update aus Workarea
liefert sy-subrc', sy-subrc.
48
49 * Datensatz ändern aus Tabellenarbeitsbereich
50 tnr = tnr - 1.
51 zteilnehmer02-tnummer = tnr.
52 zteilnehmer02-tname = 'Schmidt'.
53 zteilnehmer02-tgeburtsdatum = '19990909'.
54 zteilnehmer02-tgeschlecht = 'M'.
55 zteilnehmer02-tkurspreis = '999'.
56 zteilnehmer02-twaehrung = 'EUR'.
57 zteilnehmer02-zzkfztyp = 'KOMBI'.
58 zteilnehmer02-zzkurstitel = 'Netzwerktechnik'.
59 UPDATE zteilnehmer02.
60 WRITE: / 'Update aus Tabellenarbeitsbereich liefert
sy-subrc', sy-subrc.
61
62 * Tabelleninhalt nach der Veränderung
63 SELECT * FROM zteilnehmer02 INTO wa_zteilnehmer02
64 ORDER BY PRIMARY KEY.
65 WRITE: / wa_zteilnehmer02-tnummer,
66 wa_zteilnehmer02-tname,
67 wa_zteilnehmer02-tgeburtsdatum,
68 wa_zteilnehmer02-tgeschlecht,
69 wa_zteilnehmer02-tkurspreis,
70 wa_zteilnehmer02-twaehrung,
71 wa_zteilnehmer02-zzkfztyp,
72 wa_zteilnehmer02-zzkurstitel.
73 ENDSELECT.
Anmerkungen zum Quellcode
Die Deklaration der Workarea bzw. des Tabellenarbeitsbereichs erfolgt analog zu Listing 9.1. Im Anschluss wird der Inhalt einiger Tabellenzeilen wie im Folgenden beschrieben aktualisiert.
Zeile 21 bis 31
Aus Vergleichsgründen werden alle Sätze der Tabelle vor dem Ändern in der Liste ausgegeben.
Zeile 32
Die zuletzt gelesene, höchste Teilnehmernummer wird in das Feld TNR übertragen; im Beispiel ist es der Wert 8.
Zeile 36
Der Wert für die Teilnehmernummer wird um 2 vermindert, d. h. von 8 auf 6.
Zeile 37
Da im Beispiel die Änderung des sechsten Satzes der Tabelle über den Tabellenarbeitsbereich erfolgen soll, muss die Workarea initialisiert werden.
Zeile 38 bis 45
Die Felder des Satzes werden verändert: Die Teilnehmerin wird ausgetauscht, der Name, das Geburtsdatum, das Geschlecht und der Kurspreis werden neu gesetzt.
Zeile 46 und 47
Das UPDATE des Satzes mit dem entsprechenden Schlüssel auf der Datenbanktabelle erfolgt mit den Werten der Workarea. Sicherheitshalber wird auch hier der Wert des Returncodes in der Liste ausgegeben.
Zeile 50
Die Teilnehmernummer wird für den Wert des Schlüsselfeldes neu festgelegt.
Zeile 51 bis 58
Der Satz wird im Tabellenarbeitsbereich aufgebaut; verändert wird das Geburtsdatum.
Zeile 59 und 60
Die Aktualisierung des Satzes erfolgt mit den Werten des Tabellenarbeitsbereichs. Der Returncode über das Gelingen oder das Misslingen der Änderung wird zur Kontrolle ebenfalls in der Liste ausgegeben.
Zeile 63 bis 73
Zum Vergleich werden alle Sätze der Tabelle noch einmal in die Liste geschrieben. Bei der SELECT-Anweisung verwenden wir wieder die Workarea anstelle des Tabellenarbeitsbereichs.
Ausgabe des Quellcodes
Die Anzahl der Sätze in der Tabelle ist gleich geblieben; zwei Sätze wurden verändert. Beim dritten Satz wurde der alte Inhalt durch Herrn Maier mit den entsprechenden Daten ersetzt, und im zweiten Satz hat sich u. a. das Geburtsdatum geändert (siehe Abbildung 9.2).