ABAP/4 - Die Programmiersprache von SAP



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

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

Kap. 11 Datenbankzugriff und Pufferung in SAP R/3

Kapitel 10: Datenbankzugriff & Pufferung 2

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

Fachhochschule Deggendorf Platzziffer:...

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

Oracle: Abstrakte Datentypen:

IV. Datenbankmanagement

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

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

Gesicherte Prozeduren

Sructred Query Language

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

Kap SAP R/3 Dialogprogrammierung

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

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

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

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

Informatik 12 Datenbanken SQL-Einführung

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

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

MySQL: Einfaches Rechnen.

ajanzen.com Beispiele für den Umgang mit Feldsymbolen

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

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

OPERATIONEN AUF EINER DATENBANK

10.6 Programmier-Exits für Workitems

Beispiel 1: Filmdatenbank

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

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

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

Übungen zu C++ Kapitel 1

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

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

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

Datenmanagement in Android-Apps. 16. Mai 2013

3 Richtlinienbasierte Verwaltung und Multi-Server- Administration

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

Zeichen bei Zahlen entschlüsseln

Artikel Schnittstelle über CSV

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

Datenbanken Microsoft Access 2010

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

Referenzielle Integrität SQL

Web2Lead. Konfiguration

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

Kurzanleitung für Umsteiger von DataEase.

Java Kurs für Anfänger Einheit 5 Methoden

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

Qt-Projekte mit Visual Studio 2005

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

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

Grundlagen der Informatik 2

Labor 3 - Datenbank mit MySQL

4D Server v12 64-bit Version BETA VERSION

Datenbanken Kapitel 2

Snippets - das Erstellen von "Code- Fragmenten" - 1

Information-Design-Tool

SANDBOXIE konfigurieren

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

desk.modul : WaWi- Export

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

Schnittstellenbeschreibung zur Importschnittstelle der Vollmachtsdatenbank

How to do? Projekte - Zeiterfassung

SQL (Structured Query Language) Schemata Datentypen

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

Installation von horizont 4 bei Verwendung mehrerer Datenbanken

IAC-Programmierung HELP.BCFESITSIACPROG. Release 4.6C

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

Prozedurale Datenbank- Anwendungsprogrammierung

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

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

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

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

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Visuelles Programmieren. mit der neuen. Moskito Workbench

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!.

Access Verbrecherdatenbank Teil 3

Datumsangaben, enthält mindestens Jahr, Monat, Tag

SQL-Befehlsliste. Vereinbarung über die Schreibweise

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

Allgemeiner Leitfaden zum Einfügen suchmaschinenoptimierter Texte

1 Lieferantenbewertung

Benutzer Verwalten. 1. Benutzer Browser

Grundlagen von Python

Excel Pivot-Tabellen 2010 effektiv

bilder.tibs.at Upload-Assistent

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Datenbanksysteme 2 Frühjahr-/Sommersemester Mai 2014

SQL Server 2008 Standard und Workgroup Edition

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

CL-Mini-ABF. Kurzbeschreibung. Installation und Vorbereitung. Stand Ihre HTK-Filiale Michelstadt

SQL und MySQL. Kristian Köhntopp

Auswerten mit Excel. Viele Video-Tutorials auf Youtube z.b.

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

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

1 Einsatz des SAP Code Inspectors Konfiguration und Funktionen des SAP Code Inspectors... 67

Options- und Freitext-Modul Update-Anleitung

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 Text N Numerischer Text T Zeitangabe D Datum F Gleitpunktzahl I Ganze Zahl P Gepackte Zahl (für Festkomma) X 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 Selektiert nur einzelnen Satz [FOR UPDATE] ] Setzt gleich Sperre [DISTINCT] feldliste, aggregatfunktion [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. 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 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. WRITE : / name. ENDFORM. 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