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



Ähnliche Dokumente
10.3. ABAP-Programmierung mit Open- und Native SQL

ABAP/4 - Die Programmiersprache von SAP

Kap. 11 Datenbankzugriff und Pufferung in SAP R/3

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

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

Fachhochschule Deggendorf Platzziffer:...

Kapitel 10: Datenbankzugriff & Pufferung 2

Oracle: Abstrakte Datentypen:

IV. Datenbankmanagement

Gesicherte Prozeduren

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

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

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

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

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

Informatik 12 Datenbanken SQL-Einführung

OPERATIONEN AUF EINER DATENBANK

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

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

Sructred Query Language

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

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

Kap SAP R/3 Dialogprogrammierung

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

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

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

Beispiel 1: Filmdatenbank

Java Kurs für Anfänger Einheit 5 Methoden

Installation von horizont 4 bei Verwendung mehrerer Datenbanken

Information-Design-Tool

10.6 Programmier-Exits für Workitems

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

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

Grundlagen der Informatik 2

Web2Lead. Konfiguration

Referenzielle Integrität SQL

Educase. Release Notes 1.7: Neue Funktionen und Verbesserungen. Base-Net Informatik AG Wassergrabe 14 CH-6210 Sursee

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

Datumsangaben, enthält mindestens Jahr, Monat, Tag

3. Stored Procedures und PL/SQL

ajanzen.com Beispiele für den Umgang mit Feldsymbolen

teischl.com Software Design & Services e.u. office@teischl.com

Kurzanleitung für Umsteiger von DataEase.

Datenmanagement in Android-Apps. 16. Mai 2013

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

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

3 Richtlinienbasierte Verwaltung und Multi-Server- Administration

Shopware 4.1 Kategorien

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

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

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

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Übungen zu C++ Kapitel 1

4D Server v12 64-bit Version BETA VERSION

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Datenbanken Microsoft Access 2010

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

SQL (Structured Query Language) Schemata Datentypen

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

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

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

IAC-Programmierung HELP.BCFESITSIACPROG. Release 4.6C

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

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

SANDBOXIE konfigurieren

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

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

Prozedurale Datenbank- Anwendungsprogrammierung

Zeichen bei Zahlen entschlüsseln

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

desk.modul : WaWi- Export

How to do? Projekte - Zeiterfassung

Artikel Schnittstelle über CSV

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

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

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

Qt-Projekte mit Visual Studio 2005

Grundbegriffe der Informatik

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

Allgemeiner Leitfaden zum Einfügen suchmaschinenoptimierter Texte

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Lehrer: Einschreibemethoden

SEMINAR Modifikation für die Nutzung des Community Builders

Objektorientierte Programmierung

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

Excel Pivot-Tabellen 2010 effektiv

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Handbuch organice SQL-Reportgenerator

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

1 Lieferantenbewertung

Kurzeinführung LABTALK

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

Einführung in Eclipse und Java

Labor 3 - Datenbank mit MySQL

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

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Transkript:

Kap. 5.5: ABAP-Programmierung mit Open- und Native-SQL ABAP - Übersicht Datenbankzugriff aus ABAP-Programmen Open-SQL Native-SQL Vorbereitung der praktischen Übung mit SAP R/3 (Teil II) Kap. 5.5-1 ABAP/4 - 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 /4 symbolisiert, dass es sich um eine 4GL-Sprache handelt neuerdings: nur noch ABAP, um Entwicklung in Richtung Objektorientierung zu betonen Kap. 5.5-2 1

Charakteristik von ABAP Abarbeitung von ABAP-Programmen: ABAP-Sourcen werden kompiliert in Bytecode ( Generieren ) Programmsourcen und Bytecode werden in der Datenbank verwaltet Dies beinhaltet auch Abhängigkeiten zu anderen Schemaobjekten Bytecode wird interpretiert Bei Bedarf erfolgt Neugenerierung vor Interpretation des Bytecodes Release 4.5x: über 250 Schlüsselwörter, Tendenz steigend! Sehr schwach ausgeprägte Orthogonalität Kap. 5.5-3 Tools des R/3 Repository Data Modeler: Datenmodellierung Data Dictionary: Metadatenverwaltung Data Browser: Zugriff auf Datenbanktabellen (nur Anwendungsdaten) Object Browser: Zugriff auf sämtliche Programmobjekte Entwicklungswerkzeuge: ABAP-Editor Screen Painter,... Kap. 5.5-4 2

Entwicklungsumgebung Kap. 5.5-5 ABAP-Editor Entwicklungsumgebung ist selbst ein ABAP-Programm, die Oberfläche des Editors ist also ein Dynpro zeilenorientierte (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 Kontextsensitive Hilfe zu ABAP-Befehlen (Schlüsselworte) mittels F1 Syntaxüberprüfungen (Programm -> Prüfen) Generieren: Erzeugen von Bytecode Kap. 5.5-6 3

Programmtypen Onlineprogramm (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) Kap. 5.5-7 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. Kap. 5.5-8 4

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 Unterprog USING Parameterliste. Anweisungen. FORM Unterprog USING Parameterliste. Anweisungen. ENDFORM. Kap. 5.5-9 ABAP-Datentypen Datendefinition: DATA: feldname TYPE datentyp. DATA: feldname(länge) TYPE datentyp [ VALUE value ]. ABAP-Datentypen: C Text N Numerischer Text T Zeitangabe D Datum F Gleitpunktzahl I Ganze Zahl P Gepackte Zahl (für Festkomma) X Hexadezimalzahl Kap. 5.5-10 5

Datendefinition Like-Operator: Typ von Objekten wird aus dem Data Dictionary übernommen z.b. Variable saldo soll den Typ des Attributs kontostand der Tabelle Zooho00kon besitzen DATA: saldo LIKE zoho00kon-kontostand. Ohne Like-Operator darf nur ABAP-Datentyp gewählt werden, der externen Datentyp aufnimmt z.b. C(n) für CHAR n P((n+2)/2) DECIMALS m für CURR n, m Kap. 5.5-11 (einige) ABAP-Sprachelemente Bildschirmausgabe WRITE Hello world. WRITE: / Hello, world. Zuweisungen field = expression.(mit impliziter Typumwandlung) MOVE A TO B. MOVE-CORRESPONDING A TO B. (unter Berücksichtigung der Feldnamen) Kap. 5.5-12 6

Tabellendeklaration Tabellen, die im Data Dictionary definiert sind (und die aktiviert sind), müssen bei Verwendung in ABAP- Programmen explizit deklariert werden TABLES: zoho00kun, zoho00kto. Zugriff auf Tabellenelemente: WRITE: zoho00kun-name1. mysaldo = zoho00kto-kontostand. Kap. 5.5-13 Open-SQL (Syntax von Select) SELECT [SINGLE [FOR UPDATE]] [DISTINCT] feldliste, aggregatfunktion [INTO [feld (feldliste)] [[CORRESPONDING FIELDS OF] work_area] [[CORRESPONDING FIELDS OF] TABLE itab]] [APPENDING [CORRESPONDING FIELDS OF] TABLE itab] FROM table (table_name) tab AS t1 JOIN tab2 AS t2 ON t1~id = t2~id [BYPASSING BUFFER, UP TO n ROWS, CLIENT SPECIFIED] [WHERE condition] [GROUP BY fieldlist] [ORDER BY fieldlist] Kap. 5.5-14 7

Open-SQL-Befehlssatz 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 Kap. 5.5-15 Open-SQL: Eigenschaften 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. Kap. 5.5-16 8

Open-SQL: Eigenschaften In der FROM-Klausel ist pro Open-SQL-Select-Statement NUR maximal zwei Tabellen erlaubt. Explizite Joins sind in Open-SQL nur zwischen zwei transparenten Tabellen möglich. (Nicht Pool-, Clustertabelle oder View) Join wird an Datenbank weitergeschickt. Abhilfe: View definieren oder Joins in ABAP-Programmen selbst berechnen: TABLES: zautor, zwerk. (Sei Zautor als View definiert) SELECT * FROM zautor. SELECT * FROM zwerk WHERE autorid = zautor-autorid. WRITE: / zautor-nachname, zwerk-titel. ENDSELECT. zwerk ENDSELECT. zautor Kap. 5.5-17 Open-SQL: JOIN Mit Hilfe des Join-Konstukt in Open-SQL Syntax und Möglichkeiten gehen in Richtung Nativ-SQL TABLES: zautor, zwerk. (Sei Zautor als Transparente Tabelle definiert) data: nachname like zautor-nachname, titel like zwerk-titel. SELECT A~nachname, W~titel INTO (nachname, titel) FROM zautor as A JOIN zwaer as W. ON A~autorid = W~autorid. WRITE: / nachname, titel. ENDSELECT. Kap. 5.5-18 9

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! Kap. 5.5-19 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. Kap. 5.5-20 10

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. WRITE : / name. ENDFORM. Kap. 5.5-21 Interaktive Berichte : Eingabeparameter Schlüsselwort Parameters deklariert Eingabeparameter eines Berichts PARAMETERS: name LIKE zautor-nachname. SELECT * FROM zautor WHERE nachname = name. ENDSELECT. Kap. 5.5-22 11

Literatur (Lehrbuchsammlung) B. Matzke. ABAP/4 - Die Programmiersprache des SAP-Systems R/3. 2. Auflage, Addison-Wesley, 1999. R. Kretschmer, W. Weiss. SAP-R/3-Entwicklung mit ABAP/4. 2. Auflage, Sybex Verlag, 1997. Online: www.dbs.ethz.ch/sapr3 Kap. 5.5-23 Praktische Übung Implementierung von Reports in ABAP Aufgabe 1: Open SQL: ZOHOxxRO Skelett vorgegeben (ZOHO00RO) Kopie in eigenen Namensraum Aufgabe 2: Native SQL: ZOHOxxRN Skelett vorgegeben (ZOHO00RN) Aufgabe 3: Neuen Bericht erstellen Wahlweise Open SQL oder Native SQL Kap. 5.5-24 12