Kap. 11 Datenbankzugriff und Pufferung in SAP R/3



Ähnliche Dokumente
Kapitel 10: Datenbankzugriff & Pufferung 2

10.3. ABAP-Programmierung mit Open- und Native SQL

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

ABAP/4 - Die Programmiersprache von SAP

SAP R/3 Prozessübersicht

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

Fachhochschule Deggendorf Platzziffer:...

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

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

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Gesicherte Prozeduren

IV. Datenbankmanagement

Oracle: Abstrakte Datentypen:

10.1 Abbildung von Anwendungsobjekten auf Datenbankobjekte in ERP-Systemen 10.2 Workshop: Datenmodell, Metadaten, & Abbildung auf RDBMS in SAP R/3

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

Kap SAP R/3 Dialogprogrammierung

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

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Prozedurale Datenbank- Anwendungsprogrammierung

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

10.6 Programmier-Exits für Workitems

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

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

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

Informatik 12 Datenbanken SQL-Einführung

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

Sructred Query Language

DB2 Kurzeinführung (Windows)

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

Datenmanagement in Android-Apps. 16. Mai 2013

Datenbankenseminar: SAP Reporting Vergleich ABAP vs. Quick View. Dipl. WiFo Sven Adolph

4D Server v12 64-bit Version BETA VERSION

> Mozilla Firefox 3. Browsereinstellungen optimieren. Übersicht. Stand Juli Seite. Inhalt. 1. Cache und Cookies löschen

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

Web2Lead. Konfiguration

ObjectBridge Java Edition

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

OPERATIONEN AUF EINER DATENBANK

Prozessarchitektur einer Oracle-Instanz

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

Customer Data Control. - verwalten und steuern -

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Qt-Projekte mit Visual Studio 2005

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Labor 3 - Datenbank mit MySQL

1 Lieferantenbewertung

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

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee Berlin Tel.:+49(0) Fax.:+49(0)

2. Datenbank-Programmierung

Java Kurs für Anfänger Einheit 5 Methoden

Options- und Freitext-Modul Update-Anleitung

Grundlagen von Python

Benutzeranleitung Superadmin Tool

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

Information-Design-Tool

7. Übung - Datenbanken

Business Intelligence Praktikum 1

Artikel Schnittstelle über CSV

SQL (Structured Query Language) Schemata Datentypen

3. Stored Procedures und PL/SQL

SQLJ. Standardisierte Java-DB. DB-Schnittstelle. Spezifikationen. Oracle, IBM, Informix, Sybase,, Tandem, Sun, Microsoft stehen dahinter

Oracle Forms. Aufbau und Bestandteile von Formularen. Erstellen eines neuen Blocks. Starten von Oracle Forms

TimeSafe Leistungserfassung

Kurzanleitung für Umsteiger von DataEase.

SQL: statische Integrität

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

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Business Intelligence Praktikum 1

Anwenderdokumentation AccountPlus GWUPSTAT.EXE

ARAkoll 2013 Dokumentation. Datum:

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Access Grundlagen für Anwender. Susanne Weber. 1. Ausgabe, 1. Aktualisierung, Juni 2013

ajanzen.com Beispiele für den Umgang mit Feldsymbolen

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

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

> Mozilla Firefox 3.5

SQL. Fortgeschrittene Konzepte Auszug

C# - Einführung in die Programmiersprache Arbeiten mit ADO.NET. Leibniz Universität IT Services Anja Aue

IAC-Programmierung HELP.BCFESITSIACPROG. Release 4.6C

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

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

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

Regionaltreffen Rhein Main 26. März 2007

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

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

Titel. SCSM ITIL - CMDB - neue CI Klasse erstellen und benutzen. Eine beispielhafte Installationsanleitung zur Verwendung im Testlab

desk.modul : WaWi- Export

Einführung in Eclipse und Java

SQL - Übungen Bearbeitung der Datenbank Personal (1)

Quartalsabrechnung! " " " " " " " Stufe 1! Beheben von Abrechnungsfehlern" Stufe 2! Neue Abrechnung erstellen"

Arbeiten mit den Mastercam Werkzeug-Managern

Übungen zu C++ Kapitel 1

SANDBOXIE konfigurieren

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Updatehinweise für die Version forma 5.5.5

Robot Karol für Delphi

Transkript:

Kap. 11 Datenbankzugriff und Pufferung in SAP R/3 11.1 Datenbankzugriff 11.2 Pufferung auf Anwendungsebene 11.3 Workshop: ABAP-Programmierung in SAP R/3 Open SQL Native SQL Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 1

Kapitel 11: Datenbankzugriff & Pufferung 2 11.1 Datenbankzugriff in ERP-Systemen Standard-ERP-Software deckt zwar in den meisten Fällen einen sehr grossen Teil der benötigten betriebswirtschaftlichen Funktionalität ab, erfordert aber häufig zusätzliche unternehmensspezifische Erweiterungen (Eigenentwicklungen) Die Hersteller von ERP-Systemen bauen für die Implementierung ihrer Anwendungslogik eine eigene Infrastruktur auf Werkzeuge für die Datenmodellierung (siehe Kapitel 10) Übersetzung von Anwendungsobjekten zu Datenbankobjekten (s. Kap. 10) Entwicklungsumgebung, Compiler, Debuggingtools Eigene Programmiersprache, zumeist mit integriertem Datenbankzugriff (fourth generation language, 4GL) Eigene Bibliotheken Laufzeitumgebung

Kapitel 11: Datenbankzugriff & Pufferung 3 Erweiterung von ERP Systemen Client-GUI Client-GUI Client-GUI Client-GUI Betriebswirtschaftliche Data Anwendungslogik Dictionary Standard Betriebswirtschaftliche Anwendungslogik Datenbank-Abstraktion Individuelle Erweiterungen

Datenbankzugriff in SAP R/3 Open SQL SQL-Dialekt von SAP, Datenbank-unabhängig Nutzt SAP-internes Data Dictionary (zur Auflösung von Views, Überprüfung von Konsistenzbedingungen, etc.) und Tabellenpuffer (Zwischenspeichern von Datensätzen auf Anwendungsserver-Ebene) Native SQL SQL-Dialekt der unterliegenden Datenbank Anfragen werden an der DB-Schnittstelle vorbei direkt an die Datenbank weitergeleitet Ohne Verwendung des SAP-internen Data Dictionarys Kein Zugriff auf Pool-Tabellen und Cluster-Tabellen, da die Semantik der Abbildung nicht verfügbar ist Nur Zugriff auf Anwendungsdaten möglich Umgehung der anwendungsspezifischen betriebswirtschaftlichen Konsistenzprüfungen Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 4

Kapitel 11: Datenbankzugriff & Pufferung 5 Rückblick: Dialog-Workprozess & DB-Schnittstelle Dialog-Workprozess DynPro-Interpreter Shared Memory ABAP-Interpreter Native SQL Tabellenpuffer Datenbank- Schnittstelle Open SQL Data Dictionary

Kapitel 11: Datenbankzugriff & Pufferung 6 DB-Zugriff mit Open SQL... Data Dictionary Abbildungsregeln, Constraints, 3 Tabellen-Puffer Tabelle KNA1 7 Tabelle KNA1 BEGIN SELECT END Programm-Puffer 1 2 SELECT ABAP- Interpreter 6 Datenbankschnittstelle Native SQL 4 5 Optimierung- & Zugriffsmodul Shared Memory Dialog-Workprozess DBMS

DB-Zugriff mit Open SQL 1. Der ABAP-Interpreter des Workprozesses liest ein Open SQL-Statement eines ABAP-Programms 2. Der ABAP-Prozessor reicht das Open SQL-Statement an die Datenbank-Schnittstelle weiter 3. Falls die Daten nicht im Puffer sind, generiert die Datenbank- Schnittstelle den entsprechenden Native SQL-Befehl. Ansonsten wird das Datum aus dem Puffer gelesen (Schritt 6) 4. Die Datenbank-Schnittstelle reicht den Native SQL-Befehl an das DBMS weiter 5. Das DBMS liefert Daten zurück 6. Die Datenbank-Schnittstelle gibt die Daten an den ABAP-Interpreter 7. Bei Pufferung werden die gelesenen Daten in den Puffer geschrieben Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 7

Kapitel 11: Datenbankzugriff & Pufferung 8 Übersetzung von Open SQL nach Native SQL... Optimierungsmodul Open SQL- Query 1 7 Query mit Binding- Variable in Native SQL übersetzen 7 2 Variablen von Query trennen 2 Wert zur Binding Variable 3 6 5 Native SQL-Query mit Binding Variable 4 Ausführungsplan mit Binding Variable Query-Puffer Ausführungsplan mit Binding Variable 7 Erste Ausführung der Query Wiederholte Ausführung der Query ABAP- Interpreter Datenbankschnittstelle 7 Zugriffsmodul Dialog-Workprozess DBMS

Übersetzung Open SQL nach Native SQL 1. Der ABAP-Interpreter übergibt die Open SQL-Anweisung der Datenbankschnittstelle 2. Die Datenbank-Schnittstelle ersetzt im Selektionsprädikat die aktuellen Werte durch Binding-Variablen 3. Übersetzung des Open SQL-Statements mit Binding-Variablen in Native SQL 4. Das DBMS erstellt einen Ausführungsplan (für Querytyp wegen der Binding-Variablen) 5. Der Ausführungsplan wird im DBMS gepuffert 6. Zur Ausführung der Anfrage werden die Binding-Variablen durch anfragespezifische Werte ersetzt 7. Bei erneuter Anfrage kann auf den gepufferten Plan zurückgegriffen werden (nur neues Füllen der Binding-Variablen nötig) Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 9

Kapitel 11: Datenbankzugriff & Pufferung 10 DB-Zugriff mit Native SQL... Data Dictionary Tabellen-Puffer Abbildungsregeln, Constraints, Tabelle KNA1 BEGIN EXEC SQL ENDEXEC END Programm-Puffer 1 EXEC SQL ENDEXEC ABAP- Interpreter Datenbankschnittstelle 2 3 Optimierungs- & Zugriffsmodul Shared Memory Dialog-Workprozess DBMS

DB-Zugriff mit Native SQL 1. Der ABAP-Interpreter liest den EXEC SQL-Block eines ABAP-Programms 2. Der ABAP-Interpreter reicht den Befehlsblock direkt an das DBMS weiter, ohne das SAP Data Dictionary zu konsultieren 3. Das DBMS optimiert den Befehlsblock, generiert einen Ausführungsplan, führt die Anfrage aus und gibt das Ergebnis an den aufrufenden ABAP-Interpreter zurück Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 11

Kapitel 11: Datenbankzugriff & Pufferung 12 11.2 Pufferung auf Anwendungsebene Die Übersetzung von Anwendungsobjekten in das Datenmodell der Datenbank ist zumeist recht aufwändig Indirektion über das Data Dictionary Anwendungsobjekte müssen unter Umständen erst zusammengebaut werden, z.b. durch Joins in der Datenbank oder durch das Zusammenführen von Datensätzen auf Anwendungsebene Der Zugriff auf die Datenbank ist in der Regel über eine Netzwerkverbindung realisiert Dadurch höhere Zugriffszeit als auf lokale Daten Abhilfe: Puffer für Anwendungsobjekte innerhalb von ERP-Systemen Anwendungspuffer oberhalb des Datenbankpuffers Caching von Anwendungsobjekten, nicht von Datenbankobjekten

Kapitel 11: Datenbankzugriff & Pufferung 13 Pufferung in ERP Systemen Client-GUI Client-GUI Client-GUI Client-GUI Standard Betriebswirtschaftliche Anwendungslogik Data Dictionary Individuelle Erweiterungen Betriebswirtschaftliche Puffer für Anwendungslogik Anwendungsobjekte Datenbank-Abstraktion

Kapitel 11: Datenbankzugriff & Pufferung 14 SAP R/3: Datenpufferung im Applikationsserver Effizienter Zugriff auf Daten durch Zwischenpufferung Client Caching (aus der Sicht der DB) Ein Tabellenpuffer pro Applikationsserver Physisch im gemeinsamen Hauptspeicher platziert Zugriff auf Cache nur für Open SQL möglich Tabellenpuffer wird automatisch verwendet. Ausnahme: explizite Umgehung mittels SELECT SINGLE... BYPASSING BUFFER Native SQL greift immer direkt auf die Datenbank zu

Kapitel 11: Datenbankzugriff & Pufferung 15 Pufferungsstrategien Pufferungsstrategie im Data Dictionary für jede Tabelle individuell definiert (nur bei transparenten Tabellen & Pool-Tabellen) Siehe technische Angaben im Data Dictionary, Übung 7 Pufferungsarten Vollständig Komplette Tabelle im Tabellenpuffer Generisch Pufferung nach Präfix des Primärschlüssels Meist ist dies die Mandantennummer, dadurch werden nur relevante Daten gepuffert Einzeln Nur einzelne Tupel im Puffer

Kapitel 11: Datenbankzugriff & Pufferung 16 Verschiedene Arten der Tabellenpufferung Dialog-Workprozess Shared Memory ABAP-Interpreter SELECT * FROM Kontovollmacht WHERE KtoNr = 01 AND Name = Leuenberger KtoNr Name Vorname 01 Leuenberger Moritz Datenbankschnittstelle Vollständige Pufferung KtoNr Name Vorname 01 Leuenberger Moritz 01 Metzler Ruth 02 Blocher Christoph 01 Schmid Samuel 03 Maurer Esther 03 Ledergerber Elmar 02 Schmid Samuel 04 Hingis Martina Tabellen-Puffer Generische Pufferung KtoNr Name Vorname 01 Leuenberger Moritz 01 Metzler Ruth 01 Schmid Samuel Einzelsatz-Pufferung KtoNr Name Vorname 01 Leuenberger Moritz KtoNr Name Vorname 01 Leuenberger Moritz 01 Metzler Ruth 02 Blocher Christoph 01 Schmid Samuel 03 Maurer Esther 03 Ledergerber Elmar 02 Schmid Samuel 04 Hingis Martina Tabelle Kontovollmacht in der Datenbank Schlüssel der Tabelle Kontovollmacht KtoNr Name Generischer Schlüssel

Kapitel 11: Datenbankzugriff & Pufferung 17 Puffer-Synchronisation Datenänderungen durch alle Workprozesse, die zu einem Applikationsserver gehören, werden synchron in den Puffer und in die DB geschrieben Aber: bei mehreren Applikationsservern gibt es auch mehrere Tabellenpuffer! Bei Datenänderungen werden die Puffer aller Applikationsserver NICHT synchron aktualisiert Hierfür gibt es periodische Updates im System (ca. alle 1-2 min); während dieser Zeit sind die Puffer inkonsistent! Daher: Pufferung nur von Tabellen, die nicht häufig geändert werden (z.b. Stammdaten-Tabellen) Für alle anderen Tabellen ist im Data Dictionary die Pufferung auszuschalten!

Kapitel 11: Datenbankzugriff & Pufferung 18 11.3. ABAP-Programmierung mit Open- und Native SQL ABAP Übersicht Datenbankzugriff aus ABAP-Programmen Open SQL Native SQL Vorbereitung der praktischen Übung (Ü8) mit SAP R/3 (Teil II)

Kapitel 11: Datenbankzugriff & Pufferung 19 ABAP - Die Programmiersprache von SAP Ursprung im R/2-System: Allgemeiner Berichts-Aufbereitungs-Prozessor Für Reporting-Zwecke 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 Früher hiess die Sprache ABAP/4 um zu symbolisieren, dass es sich um eine 4GL-Sprache handelt Neuerdings: nur noch ABAP bzw. ABAP Objects, um Entwicklung in Richtung Objektorientierung zu betonen

Charakteristik von ABAP 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 Release 4.5x: über 250 Schlüsselwörter, Tendenz steigend! Sehr schwach ausgeprägte Orthogonalität Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 20

Kapitel 11: Datenbankzugriff & Pufferung 21 Tools des R/3 Repository Data Modeler Datenmodellierung Data Dictionary Metadatenverwaltung Data Browser Zugriff auf Datenbanktabellen (nur Anwendungsdaten) Object Navigator Zugriff auf sämtliche Programmobjekte Entwicklungswerkzeuge ABAP-Editor Screen Painter Menu Painter (Definition von Buttons & Menüeinträgen)

Kapitel 11: Datenbankzugriff & Pufferung 22 Entwicklungsumgebung 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) Dokumentation: http://sapr4.ethz.ch

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

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. Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 24

Kapitel 11: Datenbankzugriff & Pufferung 25 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 11: Datenbankzugriff & Pufferung 26 ABAP: Datendefinition Datendefinition DATA: feldname TYPE datentyp. DATA: feldname(länge) TYPE datentyp [ VALUE value ]. 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 11: Datenbankzugriff & Pufferung 27 ABAP: Datendefinition 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. 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

(einige) ABAP-Sprachelemente Bildschirmausgabe WRITE Hello world. WRITE: / Hello, world. / Startet Ausgabe in neuer Zeile Zuweisungen field = expression.(mit impliziter Typumwandlung) MOVE A TO B. 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 Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 28

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

Objektorientierung : ABAP Objects... SAP R/3 unterstützt ab Version 4.5 objektorientierte Aspekte Programmlokale Klassen (anstelle von Unterprogrammen) Globale, systemweit verfügbare Klassen (Class Builder) CLASS myaccount DEFINITION PUBLIC SECTION. METHODS: withdraw IMPORTING amount VALUE TYPE F, deposit IMPORTING amount VALUE TYPE F, get_balance EXPORTING VALUE TYPE F.... PRIVATE SECTION. DATA: account_number TYPE C(8), balance TYPE F(8,2) VALUE 0. ENDCLASS. Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 30

Kapitel 11: Datenbankzugriff & Pufferung 31... Objektorientierung : ABAP Objects CLASS myaccount IMPLEMENTATION METHOD withdraw.... ENDMETHOD.... ENDCLASS. Instanziierung und Methodenaufruf DATA: account-object TYPE REF TO myaccount, withdraw_value TYPE F(8,2). withdraw_value = 100. CREATE OBJECT account-object. CALL METHOD account-object->withdraw EXPORTING amount = withdraw_value....

Kapitel 11: Datenbankzugriff & Pufferung 32 Open-SQL (Syntax von 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 11: Datenbankzugriff & Pufferung 33 Open-SQL (Syntax von 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!

Open-SQL-Befehlssatz SELECT INSERT MODIFY UPDATE DELETE Einfügen Ändern oder einfügen Ändern Löschen Indikatorvariable SY-SUBRC Status der Open-SQL-Anweisung z.b. SY-SUBRC = 0 Select erfolgreich SY-SUBRC = 4 Kein Tupel gefunden Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 34

Open-SQL: Eigenschaften Anfrage-Ergebnise 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. Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 35

Open-SQL: Eigenschaften 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 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. ENDSELECT. SELECT * FROM zwerk WHERE autorid = zautor-autorid. WRITE: / ENDSELECT. zautor-nachname, zwerk-titel. zwerk zautor Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 36

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

Open-SQL: Aggregatfunktionen 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! Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 38

Native SQL... Statement im Dialekt der unterliegenden Datenbank Geklammert in EXEC SQL.... ENDEXEC. 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. Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 39

Native SQL Mandant muss immer explizit angegeben werden... and mandt = 800 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. Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 40

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

Praktische Übung (Ü8) Implementierung von Reports in ABAP (mit Datenbankzugriff) Aufgabe 1: Skelett des Programms vorgegeben (ZOHO00ReportOpenSQL) Kopie in eigenen Namensraum (ZOHOxxReportOpenSQL) Implementierung mittels Open SQL Aufgabe 2: Skelett des Programms vorgegeben (ZOHO00ReportNativeSQL) Kopie in eigenen Namensraum (ZOHOxxReportNativeSQL) Implementierung mittels Native SQL Aufgabe 3: Neuen Bericht erstellen Wahlweise Open SQL oder Native SQL Objektverwaltung höherer Ordnung (OHO) SS 2003 Kapitel 11: Datenbankzugriff & Pufferung 42