Bung 8
This presentation is the property of its rightful owner.
Sponsored Links
1 / 29

Übung 8 PowerPoint PPT Presentation


  • 103 Views
  • Uploaded on
  • Presentation posted in: General

Datenbankzugriff und Modularisierungstechniken. Übung 8. Tabellenzeile mit READ lesen. READ TABLE itab INDEX idx READ TABLE itab WITH KEY comp1 = f1 .... Compn = fn. Beispiel. PARAMETERS: ps_name LIKE zkunden-name LOWER CASE, ps_vname LIKE zkunden-vorname LOWER CASE.

Download Presentation

Übung 8

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Bung 8

Datenbankzugriff und Modularisierungstechniken

Übung 8


Tabellenzeile mit read lesen

Tabellenzeile mit READ lesen

READ TABLE itab INDEX idx

READ TABLE itab

WITH KEY comp1 = f1 .... Compn = fn


Beispiel

Beispiel

PARAMETERS: ps_name LIKE zkunden-name LOWER CASE, ps_vname LIKE zkunden-vorname LOWER CASE.

DATA: it_kunden LIKE TABLE OF zkunden, wa_kunden LIKE zkunden.

START-OF-SELECTION.

SELECT * FROM zkunden

INTO TABLE it_kunden.

READ TABLE it_kunden INTO wa_kunden

WITH KEY name = ps_name vorname = ps_vname.

IF sy-subrc <> 0.

WRITE ' keine Treffer'.

ENDIF.

WRITE:/ wa_kunden-wohnort .


Tabellenzeilen mit modify ndern

MODIFY <itab> FROM <wa> INDEX <idx>.

MODIFY TABLE <itab> FROM <itab>.

MODIFY <itab> FROM <wa>

TRANSPORTING <f1> <f 2> ... WHERE <cond>.

Tabellenzeilen mit MODIFY ändern


Beispiel1

Beispiel

DATA: BEGIN OF line,col1 TYPE i, col2 TYPE i,

END OF line.

DATA itab LIKE TABLE OF line .

DO 4 TIMES.

line-col1 = sy-index.

line-col2 = sy-index * 2.

APPEND line TO itab.

ENDDO.

line-col1 = 2.

line-col2 = 100.

MODIFY itab FROM line TRANSPORTING col2 WHERE ( col1 = 3 ) .

LOOP AT itab INTO line.

WRITE: / line-col1, line-col2.

ENDLOOP.


Move corresponding

Weist Werte zwischen Strukturen komponentenweise zu.

Syntax:

MOVE-CORRESPONDING <struc1> TO <struc2>.

Der Inhalt der Komponenten der Struktur <struc1> wird

den namensgleichen Komponenten der Struktur struc2>

zugewiesen

MOVE-CORRESPONDING


Inner join alias

...

FROM <dbtab1> [AS <alias1>]

INNER JOIN <dbtab2> [AS <alias2>]    ON <alias1~key1>|<dbtab1~key1> = <alias1~key2>|<dbtab1~key2>       

INNER JOIN, ALIAS


Datens tze in datenbanktabelle einf gen

INSERT INTO <dbtable> VALUES <wa>.

INSERT <dbtab> FROM <wa>.

INSERT <dbtab> FROM TABLE <itab> [ACCEPTING DUPLICATE KEYS].

Es werden eine Zeile aus dem Arbeitsbereich <wa>

bzw. mehrere Zeilen aus der internen Tabelle <itab> in

die Datenbanktabelle <dbtab> eingefügt. Der Zusatz

ACCEPTING DUPLICATE KEYS verhindert einen

Laufzeitfehler bei doppelten Primärschlüsseln und

verwirft doppelte Einträge lediglich

Datensätze in Datenbanktabelle einfügen


Beispiel2

PARAMETERS: ps_name LIKE zkunden-name LOWER CASE,

ps_vname LIKE zkunden-vorname LOWER CASE,

ps_wort LIKE zkunden-wohnort LOWER CASE,

ps_kdnr LIKE zkunden-kundennr LOWER CASE.

DATA: wa_kunden LIKE zkunden,

START-OF-SELECTION.

wa_kunden-kundennr = ps_kdnr.

wa_kunden-name = ps_name.

wa_kunden-vorname = ps_vname.

wa_kunden-wohnort = ps_wort.

INSERT INTO zkunden000 VALUES wa_kunden.

IF sy-subrc NE 0.

ROLLBACK WORK.

WRITE: / 'Fehler beim INSERT in die Tabelle ZKUNDEN000!'.

EXIT.

ENDIF.

WRITE: / 'Neuer Kunde mit Nr:', wa_kunden-kundennr.

COMMIT WORK.

Beispiel


Datens tze in datenbanktabelle ndern

Datensätze in Datenbanktabelle ändern

UPDATE <dbtab> SET  <si> = <f> [WHERE <cond>].

Der Zusatz WHERE bestimmt die zu ändernden Zeilen. Ohne den Zusatz WHERE werden alle Zeilen geändert.

UPDATE <dbtab> FROM <wa>.

UPDATE <dbtab> FROM TABLE <itab>.

Es wird die Zeile mit dem Inhalt von <wa> überschrieben, die den gleichen Primärschlüssel hat, wie der Arbeitsbereich <wa>, bzw. es werden alle Zeilen mit einer Zeile der internen Tabelle <itab> überschrieben, die den gleichen Primärschlüssel wie diese Zeilen haben. Der Arbeitsbereich <wa> bzw. die Zeilen von <itab> müssen mindestens die gleiche Länge und die gleiche Ausrichtung wie die Zeilen der Datenbanktabelle haben.


Beispiel3

PARAMETERS: ps_name LIKE zkunden-name LOWER CASE,

ps_vname LIKE zkunden-vorname LOWER CASE,

ps_wort LIKE zkunden-wohnort LOWER CASE.

START-OF-SELECTION.

UPDATE zkunden000 set wohnort = ps_wort

where name = ps_name and vorname = ps_vname.

IF sy-subrc NE 0.

ROLLBACK WORK.

WRITE: / 'Fehler beim UPDATE der Tabelle ZKUNDEN000!'.

EXIT.

ENDIF.

COMMIT WORK.

SKIP.

WRITE: 'Wohnort des kunde:', ps_name, 'ist geändert worden'.

Beispiel


Datens tze in datenbanktabelle l schen

DELETE FROM <dbtab> WHERE <cond>.

Alle Zeilen der Datenbanktabelle <dbtab>, die den Bedingungen der WHERE-Klausel genügen, werden gelöscht.

Syntax

DELETE <dbtab> FROM <wa>.

DELETE <dbtab> FROM TABLE <itab>.

Es wird die Zeile gelöscht, die den gleichen Primärschlüssel hat, wie der

Arbeitsbereich <wa>, bzw. es werden alle Zeilen aus der Datenbanktabelle

gelöscht, die den gleichen Primärschlüssel haben, wie eine der Zeilen

der internen Tabelle <itab>. Der Arbeitsbereich <wa> bzw. die Zeilen von

<itab> müssen mindestens die gleiche Länge und die gleiche Ausrichtung

wie der Primärschlüssel der Datenbanktabelle haben.

Datensätze in Datenbanktabelle löschen


Modularisierungstechniken

Die Modularisierung dient ;

der Les- und Pflegbarkeit von ABAP-Programmen,

der Vermeidung von Redundanzen,

der Wiederverwendbarkeit von Funktionalität und

der Kapselung von Daten

Modularisierungstechniken


Modularisierungstechniken1

Verarbeitungsblöcke, die durch das ABAP-Laufzeitsystem

aufgerufen werden:

Ereignisblöcke

Dialogmodule

Verarbeitungsblöcke, die aus ABAP-Programmen

aufgerufen werden:

Unterprogramme

Funktionsbausteine

Methoden

Die aus ABAP-Programmen aufrufbaren

Verarbeitungsblöcke heißen Prozeduren

Modularisierungstechniken 


Bung 8

Zusätzlich zur Modularisierung in Verarbeitungsblöcken

bietet ABAP die Möglichkeit der Quelltext-Modularisierung,

die es erlaubt ABAP-Anweisungen entweder lokal in Makros

oder global in Include-Programmen zusammenzufassen.

Quelltext-Module


Prozeduren

Unterprogramme

Unterprogramme dienen hauptsächlich der lokalen Modularisierung.

Unterprogramme enthalten mehrfach verwendete Funktionalität innerhalb eines

Programms zusammen und führen mehrfach benötigte Aufgaben aus.

Funktionsbausteine

Funktionsbausteine dienen ausschließlich der globalen Modularisierung, also dem

Aufruf aus anderen Programmen. Funktionsbausteine enthalten Funktionalität,

die systemweit von verschiedenen Programmen verwendet wird.

Funktionsbausteine können nur in Funktionsgruppen definiert, aber aus allen

Programmen aufgerufen werden.

Methoden

Methoden enthalten die Funktionalität bzw. das Verhalten von Klassen und

deren Instanzen in ABAP Objects, der objektorientierten Erweiterung von ABAP.

Prozeduren 


Unterprogramme

Unterprogramme sind Prozeduren, die in jedem ABAP-

Programmen definiert und aus jedem ABAP-Programm

aufgerufen werden können. Unterprogramme dienen

hauptsächlich dem internen Aufruf, also um lokal häufig

benutzte Programmteile oder Algorithmen nur einmal schreiben

zu müssen. Der globalen Wiederverwendung von Funktionalität

dienen Funktionsbausteine.

Unterprogramme 


Definition von unterprogrammen

Ein Unterprogramm ist ein Verarbeitungsblock, der zwischen den

Anweisungen FORM und ENDFORM eingeschlossen ist:

FORM <subr> [USING   ... [VALUE(]<pi>[)] [TYPE <t>|LIKE <f>].. ]          [CHANGING... [VALUE(]<pi>[)] [TYPE <t>|LIKE <f>]... ].

 ...

ENDFORM.

<subr> ist der Name des Unterprogramms. Die optionalen Zusätze USING

und CHANGING definieren die Parameterschnittstelle. Wie alle Verarbeitungsblöcke

können Unterprogramme nicht geschachtelt werden.

Es empfiehlt sich insbesondere bei ausführbaren Programmen vom Typ 1

die Definition aller Unterprogramme am Ende des Programmtextes anzuordnen,

damit nicht versehentlich unausführbare Anweisungen dadurch entstehen, daß ein

Unterprogramm einen Ereignisblock an der falschen Stelle abschließt.

Definition von Unterprogrammen


Die parameterschnittstelle

Parameter mit Referenzübergabe

Diese Parameter werden ohne die Angabe VALUE hinter USING oder CHANGING aufgeführt:

FORM <subr> USING    ... <pi> [TYPE <t>|LIKE <f>] ...             CHANGING ... <pi> [TYPE <t>|LIKE <f>] ...

Eingabeparameter mit Wertübergabe

Diese Parameter werden mit der Angabe VALUE hinter USING

aufgeführt:

FORM <subr> USING    ... VALUE(<pi>) [TYPE <t>|LIKE <f>] ...

Ausgabeparameter mit Wertübergabe

Diese Parameter werden mit der Angabe VALUE hinter CHANGING

aufgeführt:

FORM <subr> CHANGING ... VALUE(<pi>) [TYPE <t>|LIKE <f>] ...

Die Parameterschnittstelle


Aufruf von unterprogrammen

Unterprogramme werden über

PERFORM... [USING   ... <pi>... ]             [CHANGING... <pi>... ].

PERFORM <subr>(<prog>) [USING   ... <pi>... ]                        [CHANGING... <pi>... ] [IF FOUND].

Der Programmname <prog> wird statisch angegeben. Durch

Die Verwendung der Option IF FOUND läßt sich ein

Laufzeitfehler verhindern, wenn das Programm <prog> kein

Unterprogramm <sub> enthält. Dann ignoriert das System die PERFORM-Anweisung

Aufruf von Unterprogrammen


Funktionsbausteine

Funktionsbausteine sind Prozeduren, die nur innerhalb

spezieller ABAP-Programme, den sogenannten

Funktionsgruppen vom Typ F, definiert, aber aus allen

ABAP-Programmen aufgerufen werden können.

Funktionsgruppen sind Behälter für thematisch

zusammengehörige Funktionsbausteine. Das Anlegen

von Funktionsgruppen und von Funktionsbausteinen

erfolgt mit dem Werkzeug Function Builder der

ABAP Workbench

Funktionsbausteine


Funktionsgruppen

Funktionsgruppen sind Behälter bzw. Rahmenprogramme für Funktionsbausteine.

Funktionsgruppen können nicht ausgeführt werden.

Beim Aufruf eines Funktionsbausteins wird die gesamte Funktionsgruppe, in der sich der Funktionsbaustein befindet, in den internen Modus des aufrufenden Programms geladen, falls sie sich noch nicht dort befindet .

Funktionsgruppen 


Funktionsbausteinaufruf in abap

CALL FUNCTION <baustein>     [EXPORTING  f1 = a 1.... f n = a n]      [IMPORTING  f1 = a 1.... f n = a n]      [CHANGING   f1 = a 1.... f n = a n]      [TABLES     f1 = a 1.... f n = a n]      [EXCEPTIONS e1 = r 1.... e n = r n

[OTHERS = ro]].

Funktionsbausteinaufruf in ABAP


Bung1

Übung1

Erstellen Sie ZDEPOTmaxnn, der für jede Wertpapierkennnummer WKN das Depot mit der größten Anzahl dieser Aktien ermittelt und ausgibt (s. Abbildung)


Bung2

Übung2

  • Erstellen Sie mit dem Report Zkundenwpapiernn eine Liste der Depotposten von Kunden, deren Name und Vorname als Selektionsparameter eingelesen werden

  • (s. Abbildung).

  • Auf die Liste sollen folgende Felder erscheinen:

  • Kundenname

  • Kundenvorname

  • Wertpapiernummer

  • Anzahl der Wertpapiere


Bung21

Übung2


Bung3

Programmieren Sie Reports: zdeletenn, zinsertnn

Und zupdatenn zum löschen, einfügen und ändern

von Kundendaten. Wenden Sie Selektionsbilder an um

diese Aufgabe zu erfüllen.

Beim Ändern der Kundendaten sollen nur Wohnort des

Kunden geändert werden.

Ihre Tabelle Zkunden_nn soll von den Reports genutzt

werden.

Übung3


Bung 4 form schnittstelle

Übung 4 FORM-Schnittstelle

Erstellen Sie eine Report ZFORMINTABnn, der für eine vom Anwender einzugebende Depotnummer (s. Abbildung), die Wertpapierkennnummer und die Anzahl der darin enthaltenen Wertpapiere über ein FORM-Unterprogramm ausgibt.


Bung 5 funktionsbaustein

Übung 5 Funktionsbaustein

Erstellen Sie eine Funktionsgruppe ZUEBUNGnn mit einem darin enthaltenen Funktionsbaustein ZKURSnn, der von 3 Aktienkursen den Durchschnittkurs berechnet. Der einzugebende Kurs soll immer grösser als Null sein.


  • Login