10.3. ABAP-Programmierung mit Open- und Native SQL



Ähnliche Dokumente
ABAP/4 - Die Programmiersprache von SAP

Kap. 5.5: ABAP-Programmierung mit Open- und Native-SQL

Kap. 11 Datenbankzugriff und Pufferung in SAP R/3

Kapitel 10: Datenbankzugriff & Pufferung 2

Fachhochschule Deggendorf Platzziffer:...

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

IV. Datenbankmanagement

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Oracle: Abstrakte Datentypen:

ajanzen.com Beispiele für den Umgang mit Feldsymbolen

10.6 Programmier-Exits für Workitems

Kap SAP R/3 Dialogprogrammierung

Sructred Query Language

Datenbanken Microsoft Access 2010

Gesicherte Prozeduren

Datenmanagement in Android-Apps. 16. Mai 2013

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Beispiel 1: Filmdatenbank

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Datenbanken Kapitel 2

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

MySQL: Einfaches Rechnen.

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.

Access Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli inkl. zusätzlichem Übungsanhang ACC2010-UA

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten.

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Handbuch organice SQL-Reportgenerator

Sie sollen eine Datenbank für Befragungen mittels Online-Fragebögen zu unterschiedlichen Themen erstellen:

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

GSD-Radionik iradionics Android-App

8 Access-Abfragen migrieren

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

GEONET Anleitung für Web-Autoren

Shopware 4.1 Kategorien

Universität Duisburg-Essen Informationssysteme Prof. Dr.-Ing. N. Fuhr. Praktikum Datenbanken / DB2 Woche 8: Trigger, SQL-PL

Informatik 12 Datenbanken SQL-Einführung

Lehrer: Einschreibemethoden

Objektorientierte Programmierung

Tritt beim Aufruf ein Fehler aus, so wird eine MessageBox mit dem Fehlercode und der Kommandozeile angezeigt.

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Updateseite_BuV-PlugIn-NERZ-Gesamt

Neue Zugangsdaten für sg-online erstellen

SQL - Übungen Bearbeitung der Datenbank Personal (1)

Datenmigration. Tipps und Tricks

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Gezielt über Folien hinweg springen

Bibliografische Informationen digitalisiert durch

Erstellen von x-y-diagrammen in OpenOffice.calc

Views in SQL. 2 Anlegen und Verwenden von Views 2

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

PVS Grobkonzept: Strukturelle und funktionale Erweiterungen bei der Verwaltung der Arbeitszeit und der organisatorischen Zuordnung

OPERATIONEN AUF EINER DATENBANK

Anwendungsbeispiele Sign Live! Secure Mail Gateway

Mit "Apps für wmx/r" die WM-Daten optimal nutzen

Herzlich willkommen zum Kurs "MS Word 2003 Professional"

Feiertage in Marvin hinterlegen

SQL Cockpit & SAP HANA Prüfen Sie Ihre SQL Abfragen auf HANA-Tauglichkeit

Im Original veränderbare Word-Dateien

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Datenbanken für Online Untersuchungen

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Viele Bilder auf der FA-Homepage

Zeichen bei Zahlen entschlüsseln

Kap. 5.7: SAP R/3 - Transaktionsverwaltung und Dialogprogrammierung

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Urs Meier Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Handbuch zum Statistiktool Pentaho Stand: Dezember 2013

PKV- Projektanlage Assistent

7HVWHQYRQ6$3$QZHQGXQJHQPLWGHP([WHQGHG &RPSXWHU$LGHG7HVW7RROH&$77

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

Referenzielle Integrität SQL

Übungen zu C++ Kapitel 1

MMS - Update auf Version 4.4

Erstellen einer Datenbank. Datenbankabfragen

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Modellierung und Programmierung 1

Process4.biz Release Features Übersicht. Repository. Das Schützen von Diagrammen wurde optimiert (check-in, check-out)

teamsync Kurzanleitung

PocketPC.ch Review. SBSH ilauncher 3.1. Erstelldatum: 3. Dezember 2007 Letzte Änderung: 3. Dezember PocketPC.ch_Review_iLauncher.

Probeklausur im Modul Informationstechnik 1, WS 2003/04. Studiengang IWD 1. Semester Seite 1 von 5

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Zwischenablage (Bilder, Texte,...)

Transkript:

10.3. ABAP-Programmierung mit Open- und Native SQL G ABAP Übersicht G Datenbankzugriff aus ABAP-Programmen Open SQL Native SQL G Vorbereitung der praktischen Übung mit SAP R/3 (Teil II) Kapitel 10: Datenbankzugriff & Pufferung 1

ABAP/4 - Die Programmiersprache von SAP G Ursprung im R/2-System: Allgemeiner Berichts-Aufbereitungs-Prozessor Für Reporting-Zwecke G Ständige Erweiterung der Sprache im R/3-System Advanced Business Application Programming Language Alle betriebswirtschaftlichen Anwendungen in ABAP implementiert Nur kleiner Systemkern in C /4 symbolisiert, dass es sich um eine 4GL-Sprache handelt Neuerdings: nur noch ABAP, um Entwicklung in Richtung Objektorientierung zu betonen Kapitel 10: Datenbankzugriff & Pufferung 2

Charakteristik von ABAP G Abarbeitung von ABAP-Programmen: ABAP-Sourcen werden kompiliert in Bytecode ( Generieren ) Bytecode wird interpretiert Programmsourcen und Bytecode werden in der Datenbank verwaltet Dies beinhaltet auch Abhängigkeiten zu anderen Schemaobjekten Bei Bedarf erfolgt Neugenerierung vor Interpretation des Bytecodes Wenn z.b. bei Überprüfung der Abhängigkeiten festgestellt wird, dass ein benötigtes Objekt in einer neueren Version vorliegt G Release 4.5x: über 250 Schlüsselwörter, Tendenz steigend! G Sehr schwach ausgeprägte Orthogonalität Kapitel 10: Datenbankzugriff & Pufferung 3

Tools des R/3 Repository G Data Modeler Datenmodellierung G Data Dictionary Metadatenverwaltung G Data Browser Zugriff auf Datenbanktabellen (nur Anwendungsdaten) G Object Navigator Zugriff auf sämtliche Programmobjekte G Entwicklungswerkzeuge ABAP-Editor Screen Painter,... G Business Workflow Definitionswerkzeuge Laufzeitwerkzeuge Kapitel 10: Datenbankzugriff & Pufferung 4

Entwicklungsumgebung G ABAP-Editor Ist selbst ein ABAP-Programm, die Oberfläche des Editors ist also ein Dynpro Etwas gewöhnungsbedürftige Oberfläche Sehr gute Integration in die komplette Entwicklungsumgebung (SAP Repository, andere Tools) Doppelklick auf Name eines Schemaobjektes öffnet das entsprechende Tool (z.b. Data Dictionary für Tabellen) Hilfe zu ABAP-Befehlen (Schlüsselworte) mittels F1 Integration von Syntaxüberprüfungen (Programm Prüfen Syntax) Bytecode-Erzeugung (Programm Generieren) Kapitel 10: Datenbankzugriff & Pufferung 5

Programmtypen G Ausführbares Programm (Typ 1) Für Reports Nur Programme von diesem Typ können direkt abgearbeitet werden G Modulpool (Typ M) Für Dialoganwendungen (Verarbeitungsschritte von DynPros) Nur über Transaktionsnummer aufrufbar G Funktionsgruppe(Typ F) Sammlung von Funktionen G Include-Programm (Typ I) G Subroutinepool (Typ S) G Klassen und Interfacedefinition (Typ K,J) Kapitel 10: Datenbankzugriff & Pufferung 6

Aufbau von ABAP-Anweisungen Wie so viele Sprachen besitzt ABAP den, Anspruch der natürlichen Sprache zu ähneln. In ABAP bedeutet dies konkret dass jede, Anweisung mit einem Punkt beendet werden, muss (eine Anweisung heisst daher Satz). Wenn ein Satz, aus mehreren Teilen besteht dann muss jeder, dieser Teile mit einem Komma abgetrennt, werden. Ein: Doppelpunkt besagt dass, Schlüsselwort für mehrere Parameter gilt. Kapitel 10: Datenbankzugriff & Pufferung 7

Grobstruktur von Reports REPORT Zreportname. * Ein Stern als erstes Zeichen markiert * eine Kommentarzeile TYPES:.... alles folgende gilt auch DATA:.... als Kommentar TABLES:.... PARAMETERS:.... Anweisungen. Perform Unterprogramm USING Parameterliste. Anweisungen. FORM Unterprogramm USING Parameterliste. Anweisungen. ENDFORM. Kapitel 10: Datenbankzugriff & Pufferung 8

ABAP: Datendefinition G Datendefinition DATA: feldname TYPE datentyp. DATA: feldname(länge) TYPE datentyp [ VALUE value ]. G ABAP-Datentypen: C N T D F I P X Text Numerischer Text Zeitangabe Datum Gleitpunktzahl Ganze Zahl Gepackte Zahl (für Festkomma) Hexadezimalzahl Kapitel 10: Datenbankzugriff & Pufferung 9

ABAP: Datendefinition G Like-Operator: Typ von Objekten wird aus dem Data Dictionary übernommen z.b. Variable saldo soll den Typ des Attributs kontostand der Tabelle ZOHO00KON besitzen DATA: saldo LIKE zoho00kon-kontostand. G Ohne Like-Operator darf nur ABAP-Datentyp gewählt werden, der den externen Datentyp aufnimmt (ABAP-Datentypen und Datentypen des Dictionarys bzw. der unterliegenden Datenbank sind nicht vollständig kompatibel) z.b. C(n) für CHAR n P((n+2)/2) DECIMALS m für CURR n, m Kapitel 10: Datenbankzugriff & Pufferung 10

(einige) ABAP-Sprachelemente G Bildschirmausgabe WRITE Hello world. WRITE: / Hello, world. / Startet Ausgabe in neuer Zeile G Zuweisungen field = expression. MOVE A TO B. (mit impliziter Typumwandlung) Für die Freunde von Assembler MOVE-CORRESPONDING A TO B. Zuweisungen der Inhalte von Elementen gleichen Namens zwischen zwei Strukturen z.b. SAP-Tabellen Kapitel 10: Datenbankzugriff & Pufferung 11

Tabellendeklaration G Tabellen, die im Data Dictionary definiert (und die aktiviert) sind, müssen bei Verwendung in ABAP-Programmen explizit deklariert werden TABLES: ZOHO00KUN, ZOHO00KTO. G Zugriff auf Tabellenelemente: WRITE: Kundenname:, ZOHO00KUN-name1. mysaldo = ZOHO00KTO-kontostand. Kapitel 10: Datenbankzugriff & Pufferung 12

Open-SQL (Syntax von des Select-Statements) SELECT [SINGLE [FOR UPDATE] ] [DISTINCT] feldliste, aggregatfunktion Selektiert nur einzelnen Satz Setzt gleich Sperre [INTO [feld (feldliste)] [[CORRESPONDING FIELDS OF] work_area] [[CORRESPONDING FIELDS OF] TABLE itab] ] [APPENDING Ergebnis wird an interne Tabelle angehängt [CORRESPONDING FIELDS OF] TABLE itab] FROM table (table_name) tab AS t1 JOIN tab2 Join zweier Tabellen AS t2 ON t1~id = t2~id Joinbedingung; ~ für Aliasse [BYPASSING BUFFER, Umgehen des Tabellenpuffers UP TO n ROWS, Einschränken der Ergebnismenge CLIENT SPECIFIED] Abschalten der autom. Verwendung... der Mandantennummer Kapitel 10: Datenbankzugriff & Pufferung 13

Open-SQL (Syntax von des Select-Statements)... [WHERE condition FOR ALL ENTRIES IN itab WHERE condition] Angabe einer Menge von Vergleichswerten in Tabelle itab [GROUP BY fieldlist] [HAVING condition] [ORDER BY fieldlist ORDER BY PRIMARY KEY] Beliebige ABAP-Anweisungen. [ENDSELECT.] ENDSELECT ist nicht erforderlich bei - SELECT SINGLE Statements, bei - Aggregatfunktionen ohne GROUP BY und bei - INTO TABLE-Konstrukten Alle Anweisungen nach Ende des SELECT Statements, aber VOR dem ENDSELECT werden für JEDEN Datensatz ausgeführt! Kapitel 10: Datenbankzugriff & Pufferung 14

Open-SQL-Befehlssatz G SELECT G INSERT G MODIFY G UPDATE G DELETE Einfügen Ändern oder einfügen Ändern Löschen G Indikatorvariable SY-SUBRC Status der Open-SQL-Anweisung z.b. SY-SUBRC = 0 Select erfolgreich SY-SUBRC = 4 Kein Tupel gefunden Kapitel 10: Datenbankzugriff & Pufferung 15

Open-SQL: Eigenschaften G Anfrageergebnise werden tupelweise zurückgegeben Select-Statement muss mit ENDSELECT. abgeschlossen werden Zwischen SELECT...ENDSELECT. wird über alle Ergebnistupel iteriert (besitzt Cursor-ähnliche Semantik) TABLES: zautor. SELECT * FROM zautor. WRITE: / zautor-nachname, zautor-vorname. ENDSELECT. Kapitel 10: Datenbankzugriff & Pufferung 16

Open-SQL: Eigenschaften G In der FROM-Klausel sind pro Open-SQL-Select-Statement nur maximal zwei Tabellen erlaubt Explizite Joins sind in Open-SQL nur zwischen zwei transparenten Tabellen möglich (Pool- oder Clustertabellen sowie Projektionsviews sind nicht erlaubt) Join wird an die Datenbank weitergeschickt G Alternative: View definieren (Join in View-Definition einbetten) oder Joins in ABAP-Programmen selbst berechnen: TABLES: zautor, zwerk. zautor und zwerk nicht transparent SELECT * FROM zautor. SELECT * FROM zwerk WHERE autorid = zautor-autorid. WRITE: / zautor-nachname, zwerk-titel. ENDSELECT. zwerk ENDSELECT. zautor Kapitel 10: Datenbankzugriff & Pufferung 17

Open-SQL: Join G Join-Konstukt in Open-SQL (recht neue Erweiterung) erlaubt einen Equi-Join zweier transparenter Tabellen TABLES: zautor, zwerk. DATA: nachname like zautor-nachname, titel like zwerk-titel. Beides transparente Tabellen SELECT A~nachname W~titel INTO (nachname, titel) FROM zautor as A JOIN zwerk as W ON A~autorid = W~autorid. WRITE: / nachname, titel. ENDSELECT. Kapitel 10: Datenbankzugriff & Pufferung 18

Open-SQL: Aggregatfunktionen G Folgende Aggregatfunktionen sind in Open-SQL erlaubt (mit der bekannten Semantik) AVG ( feldname ) COUNT ( DISTINCT feld ) COUNT ( * ) MAX ( feld ) MIN ( feld ) SUM ( feld ) Blanks sind wichtig! Kapitel 10: Datenbankzugriff & Pufferung 19

Native SQL... G Statement im Dialekt der unterliegenden Datenbank G Geklammert in EXEC SQL.... ENDEXEC. G Hostvariablen für Rückgabewerte müssen explizit angegeben werden, z.b. DATA: name like zautor-nachname. EXEC SQL. SELECT nachname INTO :name FROM zautor WHERE ID=5 ENDEXEC. Kapitel 10: Datenbankzugriff & Pufferung 20

Native SQL G Mandant muss immer explizit angegeben werden... and mandt = 800 G Kein Cursor möglich Abhilfe: Bei EXEC SQL kann Unterprogramm angegeben werden, das für jedes Ergebnistupel aufgerufen wird. EXEC SQL PERFORMING ausgabe.... ENDEXEC. FORM ausgabe. ENDFORM. WRITE : / name. Kapitel 10: Datenbankzugriff & Pufferung 21

Interaktive Berichte : Eingabeparameter G Schlüsselwort Parameters deklariert Eingabeparameter eines Berichts PARAMETERS: name LIKE zautor-nachname. SELECT * FROM zautor WHERE nachname = name. ENDSELECT. Kapitel 10: Datenbankzugriff & Pufferung 22

Literatur (Lehrbuchsammlung) G B. Matzke. ABAP/4 - Die Programmiersprache des SAP-Systems R/3. 2. Auflage, Addison-Wesley, 1999. G R. Kretschmer, W. Weiss. SAP-R/3-Entwicklung mit ABAP/4. 2. Auflage, Sybex Verlag, 1997. G Online: www.dbs.ethz.ch/sapr3 Kapitel 10: Datenbankzugriff & Pufferung 23

Praktische Übung G Implementierung von Reports in ABAP (mit Datenbankzugriff) Aufgabe 1: Skelett des Programms vorgegeben (ZOHO00RO) Kopie in eigenen Namensraum (ZOHOxxRO) Implementierung mittels Open SQL Aufgabe 2: Skelett des Programms vorgegeben (ZOHO00RN) Kopie in eigenen Namensraum (ZOHOxxRN) Implementierung mittels Native SQL Aufgabe 3: Neuen Bericht erstellen Wahlweise Open SQL oder Native SQL Kapitel 10: Datenbankzugriff & Pufferung 24