Best Practice Leitfaden Development

Größe: px
Ab Seite anzeigen:

Download "Best Practice Leitfaden Development"

Transkript

1 Best Practice Leitfaden Development Praxistipps rund um das Thema ABAP Development Deutschsprachige SAP-Anwendergruppe e.v. DSAG-Arbeitskreis SAP NetWeaver Development Stand 31. Januar 2013

2 2 Best Practice Leitfaden Development Praxistipps rund um das Thema ABAP Development Version 0.11 Stand 31. Januar 2013 DSAG e. V. Deutschsprachige SAP-Anwendergruppe

3 3 Autoren > Peter Lintner, Senior Consultant, Allgemeines Rechenzentrum GmbH > Steffen Pietsch, Vice President, IBSolution GmbH > Markus Theilen, IT-Koordinator, EWE AG > Jürgen Wachter, Process Coordinator Development, comgroup GmbH > Michael Werner, SAP Anwendungsberater (Inhouse), LTS AG Andernach > Andreas Wiegenstein, Managing Director und Chief Technology Officer (CTO), Virtual Forge GmbH Weitere Informationen zu den Autoren finden Sie auf Seite 57. Copyright 2013 DSAG e.v. HINWEIS: Die vorliegende Publikation ist urheberrechtlich geschützt (Copyright). Alle Rechte liegen, soweit nicht ausdrücklich anders gekennzeichnet bei: DEUTSCHSPRACHIGE SAP ANWENDERGRUPPE E.V. Altrottstraße 34 a Walldorf Deutschland Best Practice Leitfaden Development, 31. Januar 2013, DSAG e. V. Tel.: Fax: Internet: Jedwede unerlaubte Verwendung ist nicht gestattet. Dies gilt insbesondere für die Vervielfältigung, Bearbeitung, Verbreitung, Übersetzung oder die Verwendung in elektronischen Systemen / digitalen Medien.

4 4 Inhaltsverzeichnis 1 Einleitung Motivation Positionierung 7 2 Programmierrichtlinien Namenskonvention Namensraum Einheitlicher und lesbarer Quellcode: Pretty Printer Obsolete Anweisungen Syntax-Check und Code Inspector Feste Codierung: Keine magic numbers Tipps beim Arbeiten mit Transporten Berechtigungsprüfung im Quellcode Programmiermodell: objektorientiert vs. prozedural Weitere Quellen (Programmierrichtlinien/ABAP) 14 3 Performance Vermeidungsprinzip Vorhandene Werkzeuge nutzen Performance-Optimierungen nur an kritischen und relevanten Stellen Datenmodell und Datenzugriff Datenmodell und Indizes Rahmenbedingungen bei Datenbankzugriffen Datenbankzugriffe Interne Tabellen und Referenzen Feldsymbole Parameterübergabe Weiterführende Quellen 21 4 Robustheit Fehlerbehandlung SY(ST)-SUBRC-Prüfungen MESSAGE-Anweisung Klassenbasierte Ausnahmen Nicht behandelbare Ausnahmen Korrekte Implementierung von Datenbank-Änderungen Sperrobjekte Verbuchungskonzept Protokollierung Praxisbeispiele 26

5 Unvollständige Fallunterscheidungen Wichtige sonstige SY(ST)-SUBRC-Prüfungen Weiterführende Quellen 27 5 ABAP-Sicherheit und Compliance Prüfungsrelevante Sicherheitsmechanismen im SAP-Standard Berechtigungsprüfung (A) Mandantentrennung (B) Nachvollziehbarkeit (C) Dreisystemlandschaft (D) Kontrollierte Ausführung von Betriebssystemkommandos (E) Kontrollierte Ausführung von SQL-Befehlen (F) Sicherheitsschwachstellen Compliance-Probleme durch ABAP Testwerkzeuge Weiterführende Quellen 33 6 Dokumentation Dokumentation unabhängig von Entwicklungsobjekten Dokumentation von Entwicklungsobjekten Dokumentation im Quelltext Dokumentation und Kommentierung von Anweisungen/Anweisungsblöcken Dokumentation von Änderungen Programmkopf 36 Best Practice Leitfaden Development, 31. Januar 2013, DSAG e. V. 7 Umsetzbarkeit und Durchsetzbarkeit Umsetzbarkeit Motivation für einen Prozess Erstellung und Pflege des Prozesses Durchsetzbarkeit Manuelle Prüfungen Automatische Prüfungen Werkzeuge Erfahrungen und Tipps aus der Praxis Qualitätssicherung des Quellcodes Zeit und Budget Qa Probleme Entscheidungsfindung bei Modifikationen Erfahrungsbericht aus der Praxis: Comgroup GmbH 44

6 6 Inhaltsverzeichnis 8 Infrastruktur und Lifecycle Management Infrastruktur Sandbox Entwicklungssystem Qualitätssicherungssystem Produktion Transportwesen Rückbau von Neuentwicklungen Sicherstellung der Konsistenz von Neuentwicklungen/Erweiterungen Change Management Softwarewartbarkeit Anpassungen der SAP-Funktionalität Testbarkeit von Anwendungen 55 9 Die Autoren Anhang: Namenskonventionen Allgemeine Namenskonventionen Attribute Methoden Signatur von Methoden Funktionsgruppen und -bausteine Enhancements Formulare Jobs Datenelemente 62

7 1 einleitung SAP-Software zeichnet sich als Standardsoftware durch ein hohes Maß an Flexibilität und Erweiterbarkeit aus. In nahezu allen Unternehmen, die SAP-Software einsetzen, finden sich kundenspezifische Anpassungen und Ergänzungen. Die SAP-Software unterliegt damit sowohl auf Herstellerals auch auf Kundenseite der kontinuierlichen Anpassung und Erweiterung an sich wandelnde Kundenbedürfnisse. Das hohe Maß an Flexibilität und Erweiterbarkeit von SAP-Software bringt Vor- und Nachteile mit sich: Die Software kann optimal an kundenspezifische Anforderungen angepasst und damit die Wertschöpfung durch den Einsatz deutlich gesteigert werden. Zeitgleich birgt die Erweiterbarkeit das Risiko kundenspezifischer Entwicklungen, die komplex, aufwendig wartbar und fehleranfällig sind. Das Ziel dieses Dokuments ist es, Praxistipps und Denkanstöße zu liefern, um kundenspezifische Entwicklungen wartbar und effizient zu gestalten. 1.1 Motivation Die Arbeit der Deutschsprachigen SAP-Anwendergruppe e.v. (DSAG) fußt auf drei Säulen Wissensvorsprung, Einflussnahme und Netzwerk. Das vorliegende Dokument wurde von Mitgliedern des DSAG-Arbeitskreises SAP NetWeaver Development initiiert und adressiert die erste Säule und damit den Wissensvorsprung für Anwender und Partner. 7 Best Practice Leitfaden Development, 31. Januar 2013, DSAG e. V. Als Autorenteam ist es unser Anliegen, das in den Unternehmen verteilt und implizit vorliegende Wissen zum Thema Entwicklung in einem kompakten Dokument anderen DSAG-Mitgliedern zur Verfügung zu stellen. Unser Wunsch ist, dass dieses Dokument lebt und mit Ihrem Erfahrungsschatz einer kontinuierlichen Verbesserung unterliegt. Wir freuen uns auf Ihr Feedback (am besten per an 1.2 Positionierung Es existieren bereits von der SAP und einer ganzen Reihe von Fachverlagen sehr gute Publikationen zu Anwendungsentwicklung und Erweiterung der SAP-Plattform. Insbesondere haben auch Autoren der SAP mit dem Buch ABAP-Programmierrichtlinien, SAP Press 2009 bereits einen Vorstoß in Richtung von Empfehlungen unternommen, die über reine Beschreibungen der Sprache ABAP und der zugehörigen Werkzeuge hinausgehen. Der Mehrwert dieses Dokuments liegt in der Zusammenfassung bewährter Vorgehensweisen, Praxistipps und erprobter Regelwerke aus den Anwenderunternehmen. Diese Guideline soll Ihnen als Anwender, Entwickler, Entwicklungs-, Projekt- oder IT-Leiter Anregungen und Hilfestellung geben, um das Rad nicht immer wieder neu erfinden zu müssen, sondern auf die Erfahrungen anderer aufbauen zu können. Dabei erheben die in dieser Guideline vorgestellten Empfehlungen nicht den Anspruch auf Vollständigkeit oder absolute Verallgemeinerung, sondern stellen eine Auswahl von Praxistipps dar. Als Autorenteam haben wir uns darum bemüht, im Spannungsfeld zwischen Überblickswissen und Detailtiefe den richtigen Mix zu finden. Daher verweisen wir an entsprechenden Stellen auf weiterführende Quellen, um nicht ausführlich diskutierte Themen redundant wiederzugeben. Die erste Auflage dieser Guideline ist auf den Bereich ABAP-Entwicklung fokussiert. Bei entsprechendem Feedback und Ihrer aktiven Unterstützung kann der Fokus auf die JAVA-Entwicklung und weitere Themen ausgeweitet werden.

8 8 2 Programmierrichtlinien Dieses Kapitel beschreibt erprobte und empfohlene Programmierrichtlinien für Anwendungen, die mit Hilfe der Programmiersprache ABAP erstellt werden. Es wird beschrieben, wie mit Standard- SAP-Mitteln und Disziplin sauber lesbarer und verständlicher ABAP Code entwickelt werden kann. Dies erleichtert die Wartung des Codes bzw. ermöglicht, dass verschiedene interne und externe Personen effizient an der (Weiter-) Entwicklung und Wartung eines Programms zusammenarbeiten. 2.1 Namenskonvention Namenskonventionen beschreiben die einheitliche und verbindliche Vorgabe zur Benennung von Softwareobjekten (z.b. Klassen, Funktionsbausteinen) bzw. zur Benennung von Objekten im Quellcode (z.b. Variablen). Wir empfehlen ausdrücklich eine Namenskonvention als Richtlinie für Entwicklungen im SAP- System vorzugeben. Das Ziel der Verwendung einer einheitlichen Namenskonvention ist die deutliche Steigerung der Wartbarkeit kundenspezifischer Anpassungen und Erweiterungen. In der Konsequenz führt dies zu geringeren Wartungsaufwänden bzw. -kosten und einer schnelleren Problemlösung im Fehlerfall. Die explizit formulierte Namenskonvention sollte Bestandteil der internen Ausbildung sein, um neue Mitarbeiter mit den Grundregeln und Unternehmensspezifika vertraut zu machen. Zudem hat es sich bewährt, diese Namenskonvention zum Vertragsgegenstand für externe Entwickler und Partnerunternehmen zu machen. Automatisierte Überprüfungen stellen die Einhaltung sicher (vgl. Kapitel 7). BEST PRACTICE: Eine exemplarische Namenskonvention als Vorlage finden Sie im Anhang. 2.2 Namensraum Die Trennung von Kundenobjekten und SAP-Objekten kann über die Präfixe Y oder Z sowie über einen eigenen Namensraum erfolgen. Die Syntax lautet wie folgt: Z Y /<kundeneigener Namensraum>/ Der kundeneigene Namensraum kann bei SAP registriert werden und ist nach Bestätigung weltweit eindeutig und für das jeweilige Unternehmen zur Verwendung registriert. Dieses Vorgehen unterstützt bei der konfliktfreien Vergabe von Namen für Softwareobjekte. Der Vorteil des kundeneigenen Namensraums liegt in der garantierten Überschneidungsfreiheit beim Import fremder Objekte in das eigene SAP-System (z.b. beim Einsatz von Fremdanwendungen, die per Transportauftrag eingespielt werden) und bei Zusammenführungen von SAP Systemen im Rahmen einer Post-Merger Integration. Durch die Reservierung des Namensraums ist sichergestellt, dass auf keinem fremden, d.h. nicht registrierten System ein Softwareobjekt mit dem gleichen Präfix erstellt werden kann. Der Nachteil bei der Verwendung des kundeneigenen Namensraums liegt darin, dass durch die durchgängige Verwendung des Präfixes bereits mehrere Zeichen verbraucht werden. Dies kann insbesondere bei Objekten, die nur wenige Zeichen zur Benennung bieten, zu Schwierigkeiten führen. Darüber hinaus unterstützen nicht alle Objekttypen, z.b. Berechtigungsobjekte, die Verwendung von Namensräumen.

9 9 BEST PRACTICE: Wir empfehlen ausdrücklich die Verwendung eines kundeneigenen Namensraums. WEITERE QUELLEN: 1. (Namensraum einrichten) 2. Best-Built Applications: 2.3 Einheitlicher und lesbarer Quellcode: Pretty Printer Übersichtlicher, leserlicher Code erleichtert jedem Entwickler die (erneute) Einarbeitung in Quellcode. Als einfachste und schnellste Möglichkeit, um Code gut lesbar zu machen und zu halten, kann der Pretty Printer aus der ABAP-Entwicklungsumgebung genutzt werden. Mit einem einzigen Knopfdruck wird der ausgewählte Quelltext einheitlich formatiert. Er bietet verschiedene Möglichkeiten, die über die Einstellungen der Workbench konfigurierbar sind. Bereits eine eingerückte Darstellung macht Source Code deutlich lesbarer. Es wird empfohlen, Schlüsselwörter groß darzustellen. Denn dadurch kann man Quelltext auch in ausgedruckter Form und ohne Syntaxeinfärbung noch leicht verstehen. Der Pretty Printer ermöglicht auf einfachem Weg die Erstellung von einheitlichem Quellcode trotz unterschiedlicher Entwickler. Um die Lesbarkeit des Quelltextes zu erhöhen, empfehlen wir, auf mehrere Anweisungen in einer Codezeile zu verzichten. Best Practice Leitfaden Development, 31. Januar 2013, DSAG e. V. Wir empfehlen, die Option Standardkommentare einfügen zu deaktivieren, da die erzeugten Kommentare bei Änderungen nicht automatisch angepasst werden und redundante Informationen enthalten. BEST PRACTICE: Wir empfehlen, den Pretty Printer zu verwenden und die Einstellungen als einheitliche Vorgabe zu definieren. Modularisierung Programme, in denen logische Verarbeitungseinheiten nicht aufgeteilt werden, sind in weiterer Folge schwer lesbar und damit schwer wart- und erweiterbar. Eine Modularisierungseinheit (Form-Routine, Methode, Funktionsbaustein) soll logisch zusammengehörende Anweisungen zusammenfassen, dabei ist jedoch zu beachten, dass die einzelnen Einheiten nicht triviale Funktionalitäten abdecken. Modularisierungseinheiten mit sehr wenigen Anweisungen sind jedoch zu vermeiden. Die Modularisierung dient dazu, trotz Komplexität in der Aufgabenstellung, den Programmcode übersichtlich zu gestalten. Zudem sind Programmabschnitte mit derselben Logik zu vermeiden. Für die praktische Umsetzung kann es hilfreich sein, vor Beginn des Programmierens die ersten Codezeilen mittels Kommentaren in logische Blöcke aufzuteilen und erst anschließend auszuprogrammieren. Wo es möglich und sinnvoll ist, ist es ratsam, vom prozeduralen Programmiermodell auf objektorientierte Programmierung überzugehen, um zukunftssicher zu entwickeln und Objekte zu kapseln. Insbesondere bei neuen Projekten sollte nur noch objektorientiert entwickelt werden. Im Rahmen der Einführung von ABAP Objects fand eine Bereinigung der Sprache und Vereinheitlichung der Konstrukte statt. Die Verwendung von ABAP Objects führt damit zu einer Steigerung der Wartbarkeit.

10 10 2 Programmierrichtlinien Trennung von Präsentations- und Anwendungslogik In allen Programmen sollte stets eine Trennung von Präsentations- und Anwendungslogik erfolgen. Dies erlaubt es, Ergebnisse und Funktionen der Anwendungslogik durch verschiedene UIs (User Interfaces) dem Benutzer anzuzeigen sowie über eine einheitliche Schnittstelle anderen Systemen bereitzustellen. Diese Aussage ist für alle gängigen UI-Technologien gültig, wobei der Grad der Unterstützung bzw. Einhaltung dieser logischen Trennung unterschiedlich ist. In einer WebDynpro ABAP-Realisierung ist schon vom Framework eine Trennung zwischen Modell- und UI-Logik vorgesehen. Bei klassischen Dynpros und BSPs wird die Trennung nicht in gleicher Weise forciert, aber grundsätzlich kann und sollte die Trennung auch in diesen Umgebungen umgesetzt werden. Allerdings gibt es hierfür keine technische Prüfung im Gegensatz zu WebDynpro, wo entsprechende Prüfungen im Code Inspector realisiert sind. Ein typisches Beispiel für eine klare Trennung von Anwendungslogik und UI sind Plausibilisierungsregeln. Wenn die Plausibilisierung von Eingaben in einer bestimmten UI-Technologie entwickelt wird, müssen diese Prüfungen bei einem Wechsel auf eine andere UI-Technologie neu entwickelt werden. Um dies zu vermeiden, müssen die Funktionen zur Prüfung von Eingaben oder Parametern unabhängig von der verwendeten UI erstellt und gepflegt werden. Internationalisierung Sprachabhängige Texte in Programmen dürfen nicht hart codiert werden, sondern müssen in Textelementen (Programmtexte, Klassentexte, Online-Text-Repository [OTR]), Standardtexten oder Nachrichtenklassen hinterlegt werden. Da alle Eigenentwicklungen den Anspruch haben sollten, weltweit eingesetzt zu werden, sollten die wichtigsten Sprachen übersetzt werden. Zudem müssen sprachabhängige (customizebare) Texte in eigenen Texttabellen abgelegt werden. Diese Texttabelle besitzt dieselben Schlüsselattribute wie die eigentliche Customizing-Tabelle. Zusätzlich muss das erste Schlüsselattribut nach dem Mandantenfeld das Sprachenattribut sein (Datenelement SPRSL oder SPRAS). Zudem muss die Fremdschlüsselbeziehung als jene der Texttabelle gekennzeichnet werden. BEST PRACTICE: Wir empfehlen, den Code Inspector für die Suche nach nicht übersetzbaren Texten zu verwenden. BEST PRACTICE: Um spätere Übersetzungen einfach zu gestalten, sollte die Länge der Feldbezeichner und Textelemente möglichst lang gewählt werden. Als Faustregel für die Länge von Textelementen hat sich bewährt, die 1,5-fache Länge der nativen Beschreibung vorzusehen. Dynamische Programmierung In der klassischen, statischen Entwicklung werden Entwicklungsobjekte und der Quellcode zur Designzeit definiert und im SAP-System statisch hinterlegt. Zur Laufzeit wird der vorgegebene Programmcode ausgeführt. Im Gegensatz dazu ermöglicht die dynamische Programmierung die Flexibilisierung des Quellcodes. Folgendes Beispiel verdeutlicht die dynamische Programmierung: Im Programmcode wird der Name einer aufzurufenden ABAP-Klasse nicht statisch hinterlegt, sondern es wird zur Laufzeit die Klasseninstanz aufgerufen, deren Name durch den Inhalt einer Variablen definiert ist. Dieser Name kann z.b. aufgrund von Benutzereingaben variieren. Der Vorteil dieser Methodik liegt in der gesteigerten Flexibilität. Der Nachteil liegt in der signifikant steigenden Komplexität und insbesondere in den damit einhergehenden Sicherheitsrisiken.

11 11 Vorteil: > Deutliche Steigerung der Flexibilität > Beispiel 1: Eigener Aufbau von User Exits durch die statische Definition einer abstrakten Klasse inkl. Methodensignatur wird das Grundgerüst für einen User Exit vorgegeben. Anschließend können mehrere konkrete Implemetierungen dieser abstrakten Klasse angelegt werden. Innerhalb Quellcodes wird z.b. aus einer Customizing-Tabelle der Name der zu verwendenden konkreten Klassenimplementierung gelesen und diese aufgerufen. Somit können unterschiedliche Implementierungsvarianten per Customizing aktiviert/deaktiviert werden. > Beispiel 2: Dynamische WHERE-Bedingung Nachteil: zur Laufzeit wird die WHERE-Bedingung für eine Datenbankoperation, z.b. SELECT, in einer string-variablen erstellt. Dadurch können komplizierte CASE-Abfragen vermieden werden, die abhängig von den Eingaben verschiedene OSQL-Befehle ausführen. Best Practice Leitfaden Development, 31. Januar 2013, DSAG e. V. > Durch die Nutzung von dynamischen Aufrufen geht der Verwendungsnachweis innerhalb der ABAP- Entwicklungsumgebung verloren. Problematisch sind dann Änderungen an den Aufrufzielen. Ein Entwickler, der beispielsweise die Übergabeparameter eines Funktionsbausteins ändert, der von einem Programm dynamisch aufgerufen wird, bemerkt diese Verwendung über den Verwendungsnachweis nicht. > Bei der dynamischen Programmierung ist i.d.r. zur Designzeit keine syntaktische Prüfung möglich; bei fehlerhafter Belegung der variablen Inhalte (z.b. fehlerhafte Klammerung innerhalb einer dynamischen WHERE-Klausel, fehlerhafter Name einer Klasse) kommt es zu einem ungeplanten Abbruch des Programms (Kurzdump). > Dynamische Programmierung birgt hohe Sicherheitsrisiken, insbesondere dann, wenn die dynamischen Inhalte durch ungeschützten Zugriff beeinflussbar sind (z.b. wenn der Name einer aufzurufenden Klasse /eines Funktionsbausteins oder einer WHERE-Bedingung durch Benutzereingaben beeinflusst werden kann, Stichwort: Code Injection). BEST PRACTICE: Dynamische Programmierung sollte nur sehr dosiert und kontrolliert zum Einsatz kommen. Programmcode, der dynamische Anteile enthält, sollte nach dem Vier-Augen-Prinzip kontrolliert und dokumentiert werden, denn er stellt ein potenzielles Sicherheitsrisiko dar. Im Kapitel 5.2 wird das Thema dynamische Programmierung auch im Kontext Sicherheit behandelt.

12 12 2 Programmierrichtlinien Auditierbarkeit von ABAP Code Es muss jederzeit möglich sein, durch manuelle Untersuchungen oder statische Codeanalyse- Tools den selbst geschriebenen ABAP Code auf Mängel zu untersuchen. Alle Methoden, ABAP- Coding unsichtbar zu machen, sind daher unzulässig, da sie solche Untersuchungen behindern oder gar gezielt dafür verwendet werden könnten, Hintertüren in ein System zu schleusen. Verschleierter Code kann auch mit dem Debugger nicht mehr untersucht werden. Es wird an dieser Stelle explizit darauf verzichtet, die Techniken zu erläutern, mit denen Code versteckt werden kann. BEST PRACTICE: Verwenden Sie insbesondere in der Entwicklung im eigenen Unternehmen keine Techniken, um Ihren Quellcode zu verstecken. 2.4 Obsolete Anweisungen Obwohl SAP eine strikte Abwärtskompatibilität vertritt, muss bei der Verwendung von obsoleten Anweisungen, wie z.b. Kopfzeilen in internen Tabellen, berücksichtigt werden, dass hierbei Probleme auftreten, wenn der Code in Klassen übernommen werden soll. Hier ist zu beachten, dass es für obsolete Sprachelemente immer modernere Alternativen gibt. Es gibt also eigentlich außer Gewohnheit wenige Gründe für deren Verwendung, deshalb sollten sie vermieden werden. BEST PRACTICE: Wir empfehlen den regelmäßigen Einsatz eines statischen Codeanalyse-Tools, um obsolete Anweisungen zu entdecken. Aus den SAP-Bordmitteln eignet sich hierzu der Code Inspector bzw. die Durchführung des Syntax-Checks. Darüber hinaus existieren sehr gute Analysewerkzeuge von Drittanbietern. 2.5 Syntax-Check und Code Inspector Der Syntax-Check und der Code Inspector ermöglichen die Überprüfung des Programmcodes während der Designzeit. Bei der Freigabe von Transporten kann der Code Inspector über die SE03 global angeschaltet werden, um Fehler zu erkennen. Hierdurch kann auch die Anzahl der Transporte verringert werden, da beim Erkennen von Fehlern die Freigabe noch abgebrochen werden kann. Die Behebung kann dann in den bestehenden Auftrag aufgenommen werden und es muss kein neuer Transport erzeugt werden. BEST PRACTICE: Der Code Inspector wird im SAP-Standard nur bei Freigabe des Transportauftrags ausgeführt. Empfehlenswert ist jedenfalls die Prüfung durch den Code Inspector bereits bei der Freigabe der jeweiligen Transportaufgabe. WEITERE QUELLEN: Die Vorgehensweise der Implementierung des dafür notwendigen BAdIs ist im Buch Praxishandbuch SAP Code Inspector (SAP Press) beschrieben.

13 Feste Codierung: Keine Magic Numbers Die feste (harte) Codierung von Texten, Zahlen, User-Namen, Organisationseinheiten, Datum etc. sollte im Quelltext ausdrücklich vermieden werden. Während der Entwicklung kann die direkte Verwendung von hart codierten Werten vermeintlich als schnelle Vorgehensweise erscheinen. Auf den Gesamtlebenszyklus der Anwendung bezogen, führt sie jedoch zu deutlich erhöhten Kosten. Die Wartbarkeit und Testbarkeit der Anwendung werden langfristig deutlich erschwert. BEST PRACTICE: Wir empfehlen die Verwendung von Konstanten, die an zentraler Stelle definiert werden. Für die Konstantendefinition eignen sich z.b. die Attribute globaler Klassen bzw. Interfaces. BEST PRACTICE: Alternativ zu harten Codierungen im Quelltext können kundeneigene Customizing-Tabellen verwendet werden. In diesen Tabellen werden die Werte, z.b. Zahlen, Organisationseinheiten etc. als Konfiguration hinterlegt und bei Programmstart in eine Variable gelesen. Anschließend wird ausschließlich mit dieser Variablen gearbeitet. Die o.g. Vorgehensweisen steigern bei Mehrfachgebrauch die Konsistenz und Effizienz der Analyse im Fehlerfall bzw. bei regulären Wartungstätigkeiten. Wir empfehlen ausdrücklich die Kommentierung der Konstanten und die Bedeutung der Werte an zentraler Stelle. Best Practice Leitfaden Development, 31. Januar 2013, DSAG e. V. Um neue Mitarbeiter bei der Ermittlung von Konstanten zu unterstützen, bietet es sich an, diese entweder außerhalb des Systems durchsuchbar zu dokumentieren oder ein Suchtool (s. Weitere Quellen ) zur Verfügung zu stellen, mit dem innerhalb des Systems nach Konstanten gesucht werden kann. 2.7 Tipps beim Arbeiten mit Transporten Wenn mehrere Entwickler an einem Entwicklungsobjekt Änderungen vornehmen, kann dies unter Umständen zu Problemen führen, wenn die Transportaufträge nicht in der richtigen Reihenfolge in die produktiven Systeme transportiert werden oder andere Objekte aus anderen Transportaufträgen fehlen. BEST PRACTICE: Um dies zu vermeiden, sollte mit Transport von Kopien gearbeitet werden. Dabei werden die geänderten Entwicklungsobjekte durch den eigentlichen Transportauftrag im Entwicklungssystem gesperrt und über Transport von Kopien werden nur Kopien der Objekte in das Qualitätssicherungssystem transportiert. Ein Entwickler bemerkt sofort, dass ein anderer Entwickler ggf. das Objekt bereits bearbeitet, und kann sich mit dem anderen Entwickler abstimmen. Nach Abschluss des Projektes wird nur der Original-Sperrtransport ins Produktivsystem transportiert.

14 14 2 Programmierrichtlinien 2.8 Berechtigungsprüfung im Quellcode Bei Zugriff auf Daten und auch deren Präsentation sind die dafür notwendigen Berechtigungsobjekte zu prüfen. Bei der Verwendung von Standardobjekten soll jedenfalls die Prüfung auf die entsprechenden SAP-Standard-Berechtigungsobjekte erfolgen (vereinfacht die Wartung der notwendigen Rollen). Für kundeneigene Datenobjekte können in der Regel keine SAP-Standard- Berechtigungsobjekte zur Prüfung verwendet werden. Zu diesem Zweck können kundeneigene Berechtigungsobjekte implementiert und geprüft werden. Weitere Informationen finden sich im Kapitel Programmiermodell: Objektorientiert vs. Prozedural Die prozedurale Entwicklung in ABAP ist inzwischen von SAP als obsolet eingestuft worden. Insbesondere die Befehle FORM ENDFORM und PERFORM sind als obsolete Anweisungen eingestuft. Prozedurale Entwicklung hat sich im Laufe der Jahre auch im Hinblick auf globale Variablen und Includes als sehr unübersichtlich, komplex und fehleranfällig erwiesen. Objektorientierte Entwicklung wurde so konzipiert, dass logisch zusammenhängende Aufgaben einheitlich in Objekten zusammengefasst werden können. Dadurch wird unter anderem auch die Wiederverwendbarkeit von Code erhöht. Insbesondere können solche Objekte auch von anderen Entwicklern für ihre Zwecke leicht erweitert oder verändert werden, ohne dass die grundlegenden Funktionen beeinträchtigt werden (Open-Close-Prinzip). Andererseits können zentrale Funktionalitäten oder einzelne Variablen auch gezielt vor ungewünschtem Lese- oder Schreibzugriff durch aufrufende Programme geschützt werden. BEST PRACTICE: Wir empfehlen bei Neuentwicklungen möglichst nur noch mit Klassen und Methoden zu arbeiten und keine FORMs mehr zu verwenden. WEITERE QUELLEN: 1. Horst Keller und Gerd Kluger, Not Yet Using ABAP Objects? Eight Reasons Why Every ABAP Developer Should Give It a Second Look, Sap Professional Journal 2. Horst Keller and Gerd Kluger, NetWeaver Development Tools ABAP, SAP AG 3. Bertrand Meyer, Objektorientierte Softwareentwicklung, Hanser 1990, ISBN ConSea-Projekt für Suche nach Konstanten auf SAP Code Exchange: https://cw.sdn.sap.com/cw/groups/consea 2.10 Weitere Quellen (Programmierrichtlinien / ABAP) 1. SAP Dokumentation SAP NetWeaver AS ABAP Release 731 In dieser Dokumentation ist dem Thema Programmierrichtlinien ein eigenes Kapitel gewidmet.

15 3 Performance In den folgenden Abschnitten empfehlen wir einige Regeln, die bei der täglichen Arbeit in der ABAP-Entwicklung beachtet werden sollten, um von vorneherein Performance-Engpässe zu vermeiden. Wie an viele anderen Stellen der Softwareentwicklung hilft es auch im Hinblick auf eine ausreichende Performance zu wissen, was gemacht werden soll. Solange der Sinn und Zweck eines Code-Stückes nicht klar ist, sollte dies zuerst geklärt werden. 3.1 Vermeidungsprinzip Die sichersten, schnellsten, präzisesten, billigsten, wartbarsten, zuverlässigsten und am leichtesten zu dokumentierenden Teile eines Computersystems sind die, die man weggelassen hat. (Gorden Bell) BEST PRACTICE: Vermeiden Sie jegliches unnötige Coding. Frei nach diesem Motto sollten Sie auch genau prüfen, welcher Code wirklich für die Produktion gedacht ist, und sämtliche Test- und Demo-Programme spätestens auf den Q-Systemen löschen. Aber auch innerhalb von produktivem Coding sollte immer der Ansatz verfolgt werden, nicht mehr zu tun, als für die Aufgabe wirklich benötigt wird. Ein einleuchtendes Beispiel dafür ist die Regel zur Vermeidung von *-SELECTs, bei denen der Einfachheit halber alle Spalten einer Tabelle selektiert werden, obwohl für die folgende Verarbeitung im Prozess nur wenige Spalten benötigt werden. 15 Best Practice Leitfaden Development, 31. Januar 2013, DSAG e. V. Anmerkung: Diese Vorgehensweise steigert gleichzeitig die Robustheit von Programmen. Das Lesen mit Hilfe von *-SELECT in eine kundeneigene Datenstruktur kann zu Fehlern nach einem Upgrade führen,wenn die Standardtabelle durch SAP erweitert wurde. Das explizite Lesen benötigter Spalten schützt vor dieser Unschärfe. 3.2 Vorhandene Werkzeuge nutzen Die im SAP-System bereits vorhandenen Werkzeuge bieten gute Unterstützung bei der Erstellung von performanten Anwendungen bzw. bei der Analyse von Performance-Engpässen. Diese Werkzeuge sollten frühzeitig und in allen Lebensphasen der Software angewendet werden. Die nachfolgende Tabelle bietet einen Überblick zu den zentralen Werkzeugen: Entwicklung Code Inspector SE30 / SAT ST05 DB05 Beschreibung Statische Code-Analyse und -Prüfungen Laufzeit-Traces Traces für SQL, RFC und Enqueues Wertverteilungs-Analyse für Index-Design

16 16 3 Performance Laufzeit SM50/SM66 Debugger Memory Inspector ST10 Beschreibung Übersicht Workprozesse/Applikationsserver Schrittweises Ausführen von Coding Vergleich und Analyse von Speicherabzügen zur Ermittlung von nicht Speicherverbrauch und nicht freigegebenen Heap-Objekten Tabellenaufruf-Statistiken zur Prüfung von Tabellenpufferung Post Mortem ST22 STAD ST04 Beschreibung Analyse von Laufzeitfehlern (z.b. bei Speichermangel) Workload-Analyse DB-Performance-Übersicht BEST PRACTICE: Starten Sie die Performance-Untersuchung mit einem Trace in der SE30/SAT und konzentrieren Sie sich auf den größeren Zeittreiber. Wenn die meiste Zeit im ABAP-Teil verbraucht wird, analysieren Sie weiter mit der SE30/SAT. Liegt die meiste Zeit bei den DB-Aufrufen, starten Sie einen SQL-Trace mit der ST Performance-Optimierungen nur an kritischen und relevanten Stellen Auch wenn man nicht performante Konstrukte bei der Softwareentwicklung immer vermeiden sollte, sollte man sich gleichzeitig bei der Notwendigkeit von umfangreicheren Performance-Optimierungen auf die Teile der Software beschränken, die durch Messung nachgewiesenermaßen die Ursache von langer Laufzeit oder erhöhtem Speicherverbrauch sind. Auch für Performance-Aspekte trifft die 80/20-Regel zu und es gilt daher, die meistens raren Ressourcen für eine umfangreiche Verbesserung auf die 20 % des Systems zu konzentrieren, die für 80 % der Laufzeit/des Speicherverbrauchs verantwortlich sind. Um an diese Stellen zu gelangen, ist der sinnvolle Einsatz der genannten Werkzeuge essenziell. BEST PRACTICE: Wir empfehlen, die Suche nach Performance-Engpässen mit dem Einsatz der Laufzeitanalyse SE30/SAT mit voller Aggregation zu beginnen. Dadurch sollte deutlich werden, ob die Laufzeit aus der Interaktion mit der Datenbank oder der Verarbeitung der geladenen Daten im Hauptspeicher resultiert. Wichtig ist dabei, dass ein repräsentativer, praxisnaher Datenbestand verarbeitet wird, um nicht durch seltene Verarbeitungsmuster einer falschen Spur zu folgen. Wird mehr als die Hälfte der Laufzeit im DB-Teil verbraucht, sollte eine genauere Analyse der SQL- Kommandos mit der Transaktion ST05 erfolgen. Wird mehr Laufzeit im ABAP-Teil verbraucht, erfolgen tiefergehende Analysen mit Hilfe der SE30/SAT, wobei die Aggregationsstufen schrittweise verringert werden, um genauere Aussagen über die kritischen Programmstellen zu bekommen. Nach jedem Optimierungsschritt sollten die Ergebnisse verglichen und dokumentiert werden.

17 Datenmodell und Datenzugriff Datenmodell und Indizes Der Aufbau des Datenmodells bildet die Basis performanter Anwendungen. Ein mit Augenmaß normalisiertes Datenmodell kann effizienter mit Daten und Indizes arbeiten. Hierzu finden unabhängig von der Programmiersprache ABAP die Normalisierungsregeln Anwendung. Beim Einsatz von Indizes für Tabellen empfehlen wir folgende Punkte: > Es sollten max. fünf Indizes pro Tabelle existieren, wenn häufig ändernd auf diese Tabellen zugegriffen wird. Mit jedem Index steigen die Verwaltungskosten, die bei Datenänderungen anfallen. > Fünf Felder pro Index sollten als Obergrenze eingehalten werden. > In einem Index sollten nur selektive Felder aufgenommen und in der Reihenfolge nach absteigender Selektivität sortiert werden. > Auf Feldebene sollten zwischen zwei Indizes einer Tabelle keine Überlappungen auftreten. > Bei mandantenabhängigen Tabellen sollte das Feld Mandant als erstes Feld aufgenommen werden, insbesondere bei großen Tabellen (>1000 Einträge). Auch wenn dieses Feld nicht sonderlich selektiv ist und damit der dritten Regel widerspricht, wird bei jeder Abfrage dieses Feld in der Selektion vom SAP-System mit übergeben und ausgewertet. Gerade bei Tabellen mit stark unterschiedlichen Eintragszahlen pro Mandant kann sich ein Fehlen des Feldes im Index negativ auswirken. Best Practice Leitfaden Development, 31. Januar 2013, DSAG e. V Rahmenbedingungen bei Datenbankzugriffen Folgende Fragen sollten bei DB-Zugriffen gestellt und beantwortet werden: > Sind Indizes in geeigneten Rahmen angelegt? > s. vorheriges Kapitel (3.4.1) > Lesen Anweisungen am Tabellenpuffer vorbei? Hierbei kann die Transaktion ST10 verwendet werden, um die Zugriffshäufigkeiten auf gepufferten Tabellen zu überprüfen. Mit der Transaktion ST05 können mit dem kombinierten SQL- und Puffer-Trace Zugriffe ermittelt werden, die wider Erwarten den Tabellenpuffer nicht verwenden. Und mit Hilfe des Code Inspectors lassen sich viele dieser Statements bereits im Vorfeld statisch ermitteln. > Kann ein DB-Index zur Sortierung auf der DB mit ORDER BY genutzt werden? Im einfachsten Fall kann dafür der Zusatz PRIMARY KEY verwendet werden, wenn die Sortierung nach dessen Feldern erfolgen soll. Sind andere Sortierungen erforderlich, kann es helfen, einen Index anzulegen, der die gewünschten Felder in der korrekten Reihenfolge enthält. Allerdings sollten dabei die Hinweise zur Anzahl von Indizes pro Tabelle beachtet werden. Erfolgt der Zugriff mit ORDER BY nur selten, lohnt es sich in der Regel nicht, dafür einen eigenen Index anzulegen. In diesem Fall sollte die Sortierung im ABAP erfolgen, sofern dies die zu sortierende Datenmenge zulässt.

18 18 3 Performance Beispiel: Die Tabelle enthält ein Belegdatum und es sollen die letzten n Belege sortiert nach diesem Datum ermittelt werden. In diesem Fall würde sich ein Index über dieses Feld wahrscheinlich rentieren, weil zum einen dieses Feld in der WHERE-Bedingung enthalten ist und gleichzeitig der Zusatz ORDER BY Belegdatum vom vorhandenen Index profitiert Datenbankzugriffe Die auf der Datenbank selektierte und an die Anwendungsschicht zu übergebende Datenmenge sollte grundsätzlich so gering wie möglich gehalten werden. Nachfolgend finden Sie Hinweise, wie Sie dies im konkreten Fall umsetzen können. BEST PRACTICE: > Spaltenreduzierung: Vermeiden Sie *-Selektionen und benennen Sie stattdessen die benötigen Spaltennamen in der Selektion. Insbesondere das unnötige Laden von Spalten des Typs String ist teuer. Die Ergebnistabelle sollte mit der Selektionsstruktur übereinstimmen, um optimale Ergebnisse zu erzielen. Sollten in der Ergebnistabelle noch mehr Felder enthalten sein, aber die gewünschten Felder namensgleich angelegt sein, ist auch der Zusatz CORRESPONDING FIELDS möglich und führt nicht zu zusätzlicher Laufzeit. Gleichzeitig wird die Robustheit der Software erhöht. > Optimale Suchabfrage Versuchen Sie für die Selektion von Daten möglichst nur Abfragen zu verwenden, die einen der vorhandenen Indizes vollständig nutzen. Sollte das nicht möglich sein, achten Sie möglichst darauf, zumindest die ersten Elemente des Index zu verwenden, damit die zeilenweise Suche auf eine möglichst kleine Menge von Datensätzen reduziert werden kann. > Zeilenreduzierung Nutzen Sie die WHERE-Bedingungen, indem Sie die Selektion beschreiben und die an das ABAP-System zu übermittelnden Daten minimieren. Verwenden Sie SELECT SINGLE / UP TO n ROWS, wenn Sie nur einzelne Zeilen benötigen. > Existenzchecks Die Prüfung, ob Datensätze, die einem bestimmten Selektionskriterium genügen, existieren, sollten nicht mit der Anweisung COUNT(*), sondern mit SELECT SINGLE <Feldname> erfolgen, wobei das genannte Feld aus dem zur Selektion verwendeten Index stammen sollte. Dies vermeidet unnötige Zugriffe auf die Tabellendaten. > Aggregate Aggregate (MIN, MAX, ) werden immer auf dem Datenbankserver ausgewertet. Dadurch wird die Tabellenpufferung umgangen. Wegen der daraus potenziell entstehenden Last auf dem DB-System, das in vielen Installationen von sehr vielen Applikationsservern angesprochen wird, sollten Entwickler prüfen, welche Datenmenge für das Aggregat verwendet werden muss und ob es sich lohnen kann (sofern diese nicht groß ist), die Daten in eine interne Tabelle zu laden und das Aggregat dort durchzuführen. Allerdings weisen wir schon jetzt darauf hin, dass nach aktuellem Kenntnisstand insbesondere HANA-basierte Datenbankabfragen gerade bei Aggregaten ihre Stärken haben und damit deren Einsatz für HANA explizit sinnvoll ist. Beispiel: Um den durchschnittlichen Wert über eine große Anzahl (>100000) von Bestellungen zu ermitteln, ist es sinnvoll, dieses Aggregat auf dem DB-System ermitteln zu lassen, um nur einen oder wenige Werte statt hunderttausender an die Applikationsserver übermitteln zu lassen, um

19 19 dort den Durchschnittswert im ABAP zu berechnen. Dies gilt insbesondere, wenn diese Auswertung nur selten (z.b. einmal pro Tag) erfolgt. Soll hingegen die Summe der Bestellpositionen eines einzelnen Auftrags sehr häufig und von allen vorhandenen Applikationsservern ermittelt werden, ist die Ermittlung im ABAP wahrscheinlich die für die Gesamtsituation günstigere Variante. > Updates Die Anweisung UPDATE SET ermöglicht das Übertragen von einzelnen zu ändernden Feldern (statt des gesamten Datensatzes). Wenn möglich, sollte diese Anweisung bevorzugt verwendet werden. > Ausführungshäufigkeit bei DB-Zugriffen Jede Ausführung eines Open SQL-Statements ist mit einem gewissen Overhead (Parsen, Abgleich gegen Statement-Puffer im DBMS usw.) verbunden. Daher sollten pro Statement möglichst viele der benötigten Daten auf einmal übertragen werden. Werden beispielsweise die Daten von 50 Aufträgen benötigt, sollten diese nicht durch 50 Einzelaufrufe ermittelt werden, sondern durch ein einzelnes Statement, das die sog. Array-Zugriffe unterstützt. Diese sind durch die Zusätze INTO TABLE bei SELECTS bzw. FROM TABLE bei schreibenden Zugriffen zu erkennen. Vermeiden Sie auf jeden Fall Open SQL-Statements innerhalb von Schleifen! Bei einem solchen Konstrukt fällt der Overhead für diese Statements bei jedem Schleifendurchlauf an. Setzen Sie MODIFY <DB-Tabelle> nicht ein! Erstens sollte innerhalb einer Applikation klar sein, ob Datensätze neu erstellt wurden oder vorhandene angepasst werden müssen. Zweitens ist dieses Statement aus Performance-Gesichtspunkten sehr kritisch: Selbst mit dem Zusatz FROM TABLE werden einzelne Zugriffe pro Zeile der internen Tabelle ausgeführt und dabei wird jeweils zuerst ein UPDATE versucht und im Fehlerfall ein INSERT nachgelegt. D.h., bei vielen neu zu erstellenden Datensätzen erfolgen nicht n Einzelzugriffe, sondern 2n mit n=anzahl neue Datensätze in der internen Tabelle. Best Practice Leitfaden Development, 31. Januar 2013, DSAG e. V. > VIEWS/JOINS Geschachtelte SELECT-Anweisungen und SELECT-Anweisungen in Schleifen sollten vermieden werden. Stattdessen bieten sich VIEWS, JOINS oder der Zusatz FOR ALL ENTRIES an. Bei FOR ALL ENTRIES sollte man jedoch auf Folgendes achten: a. Ist die interne Tabelle leer, auf der FOR ALL ENTRIES basiert, dann werden alle Einträge geladen. b. Sind in der internen Tabelle Einträge doppelt vorhanden, kann dies dazu führen, dass die zugehörigen Datensätze auch doppelt von der Datenbank geladen werden. Es empfiehlt sich daher, zuvor ein DELETE ADJACENT DUPLICATES aufzurufen. 3.5 Interne Tabellen und Referenzen Interne Tabellen stellen ein zentrales Konstrukt bei der Entwicklung von Anwendungen mit ABAP dar. Neben Datenbankzugriffen sind sie aber auch gleichzeitig eine prominente Quelle von Performance-Problemen. Bei kleinen Datenmengen stellen Dinge wie die Wahl der passenden Tabellenart und eines passenden Schlüssels noch kein Problem dar. Werden aber größere Datenmengen verarbeitet, wie es z. B. nach einem Wechsel auf ein Konsolidierungssystemgeschieht, können vorher aus Performance-Sicht unkritische Stellen zu erheblichen Laufzeitverlängerungen führen. BEST PRACTICE: Wir empfehlen die Beachtung der nachfolgenden Hinweise zur Steigerung der Performance von Anwendungen:

20 20 3 Performance > Wählen Sie die Tabellenart passend zur späteren Verwendung: > Standard-Tabellen eignen sich für Daten, die nur selten oder gar nicht nach bestimmten Kriterien durchsucht werden müssen. Wenn keine Suche erfolgen muss, lohnt es sich nicht, die Kosten für die Erstellung und Aktualisierung der zusätzlichen Schlüsselstrukturen der anderen Tabellenarten zu zahlen. Bei sehr kleinen Datenmengen (<100 Zeilen) kann je nach Häufigkeit der Suchanfragen und Breite der Tabelle ein Verzicht auf einen expliziten schlüssel geeignet sein. > Sorted-Tabellen bieten sich an, wenn die Daten häufig nach (Teil-)Schlüsseln durchsucht werden müssen, aber keine Eindeutigkeit der Schlüsselfelder garantiert werden kann. Gerade Zugriffe, die nur mit einem ersten Teil der Schlüsselfelder stattfinden, können nur von dieser Tabellenart unterstützt werden. > Hashed-Tabellen sind perfekt dafür geeignet, in Dictionary-artigen Konstrukten nach eindeutigen Schlüsseln zu suchen. Wenn die Eindeutigkeit der Einträge im Hinblick auf die schlüsselfelder garantiert werden kann und die Suchzugriffe immer mit dem vollständigen schlüssel (=alle Felder des Schlüssels werden auf Äquivalenz gegen einen jeweiligen Wert geprüft) erfolgen, ist diese Tabellenart in der Regel optimal. > Wenn für eine Tabelle vom Typ Sorted oder Hashed Zugriffe erfolgen, sollten diese immer mit dem passenden (Teil-)Schlüssel stattfinden. Dies bedeutet, bei READ TABLE den Zusatz WITH TABLE KEY zu verwenden und bei LOOP AT WHERE möglichst viele aufeinander folgende Felder des Schlüssels mit = zu vergleichen. Dann werden die intern aufgebauten Schlüsselstrukturen verwendet, um die passenden Einträge schneller zu ermitteln. > Ab AS ABAP 7.02 können Sie bei internen Tabellen, die selten geändert werden, aber mit mehr als einem Zugriffmuster gelesen werden, neben dem primären Schlüssel, der wie gehabt definiert und verwendet wird, auch weitere sekundäre Schlüssel definieren, die auch einen vom Primärschlüssel abweichenden Typ (Sorted, Hashed) haben. Als Beispiel können Sie damit für eine als Hashed definierte Tabelle mit eindeutigem Primärschlüssel einen weiteren Schlüssel vom Typ Sorted definieren, der es ermöglicht, performant auf die Daten der Tabelle aus einem anderen Blickwinkel (nicht eindeutig, Teilschlüssel möglich) zuzugreifen, ohne die eigentlichen Daten zweimal im Hauptspeicher anzulegen und bei Änderungen manuell für die Konsistenz zwischen beiden Tabellen zu sorgen. > Ähnlich wie bei den DB-Zugriffen existieren für interne Tabellen Einzelsatzzugriffe und Massenzugriffe. Wenn möglich, sollten immer die Varianten mit Massenzugriffen gewählt werden, die performanter arbeiten als mehrere Einzelzugriffe. Als Beispiel sollten Sie beim Anhängen von Zeilen einer Teilergebnistabelle zur Gesamtergebnistabelle das Anweisungsmuster APPEND LINES OF TO verwenden, anstatt die gleiche Funktion über eine Schleife LOOP AT mit einzelnen APPEND TO zu realisieren. > Bei der Verwendung der Anweisung SORT sollten Sie immer die gewünschten Sortierfelder angeben. Erstens erhöht dies die Lesbarkeit des Codings und zweitens ist bei den wenigsten Standard- Tabellentypen ein Tabellenschlüssel definiert. Fehlt ein solcher Schlüssel, wird die gesamte

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

1 Einsatz des SAP Code Inspectors... 29. 2 Konfiguration und Funktionen des SAP Code Inspectors... 67 Auf einen Blick 1 Einsatz des SAP Code Inspectors... 29 2 Konfiguration und Funktionen des SAP Code Inspectors... 67 3 Automatisierte Prüfungen mit dem SAP Code Inspector... 125 4 Programmierung eigener

Mehr

4.4 Minimale Zahl von Ausführungen

4.4 Minimale Zahl von Ausführungen 4.4 Minimale Zahl von Ausführungen 177 Beide Befehle können für diese Aufgabe verwendet werden. Der Befehl OPEN CURSOR ist insbesondere zusammen mit der Option WITH HOLD interessant. Er kann die Datenbankverbindung

Mehr

7.4 Analyse anhand der SQL-Trace. 7.3.5 Vorabanalyse mit dem Code Inspector

7.4 Analyse anhand der SQL-Trace. 7.3.5 Vorabanalyse mit dem Code Inspector 7.4 Analyse anhand der SQL-Trace 337 7.3.5 Vorabanalyse mit dem Code Inspector Der Code Inspector (SCI) wurde in den vorangegangenen Kapiteln immer wieder erwähnt. Er stellt ein paar nützliche Prüfungen

Mehr

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

SQL Cockpit & SAP HANA Prüfen Sie Ihre SQL Abfragen auf HANA-Tauglichkeit SQL Cockpit & SAP HANA Prüfen Sie Ihre SQL Abfragen auf HANA-Tauglichkeit Johann Fößleitner Cadaxo GmbH email: johann.foessleitner@cadaxo.com Twitter: @foessleitnerj Agenda 1 SAP HANA Integrationsszenarien

Mehr

Erste Schritte, um selber ConfigMgr Reports zu erstellen

Erste Schritte, um selber ConfigMgr Reports zu erstellen Thomas Kurth CONSULTANT/ MCSE Netree AG thomas.kurth@netree.ch netecm.ch/blog @ ThomasKurth_CH Erste Schritte, um selber ConfigMgr Reports zu erstellen Configuration Manager Ziel Jeder soll nach dieser

Mehr

Sructred Query Language

Sructred Query Language Sructred Query Language Michael Dienert 11. November 2010 Inhaltsverzeichnis 1 Ein kurzer Versionsüberblick 1 2 SQL-1 mit einigen Erweiterungen aus SQL-92 2 3 Eine Sprache zur Beschreibung anderer Sprachen

Mehr

ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen

ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen C3: Structured Query Language Lernziele: Nach der Bearbeitung dieser Lektion haben Sie folgende Kenntnisse erworben: Sie können elementaren

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

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

Datenbankenseminar: SAP Reporting Vergleich ABAP vs. Quick View. Dipl. WiFo Sven Adolph Datenbankenseminar: SAP Reporting Vergleich ABAP vs. Quick View Dipl. WiFo Sven Adolph Gehalten am Lehrstuhl PI III Prof. Moerkotte 28.11.2003 Übersicht 1. Motivation 2. Die betriebliche Standardsoftware

Mehr

Customer Data Control. - verwalten und steuern -

Customer Data Control. - verwalten und steuern - Customer Data Control - verwalten und steuern - Customer Data Control Für jede kleine Steuertabelle eine Datenbanktabelle anzulegen ist teuer! Jeder Entwickler programmiert den Zugriff auf Z-Tabellen anders!

Mehr

Virtual Forge CodeProfiler for HANA

Virtual Forge CodeProfiler for HANA W H I T E P A P E R Virtual Forge CodeProfiler for HANA Version 1.0 - Gültig ab 30.07.2015 Dokument 2015, Virtual Forge GmbH Inhaltsangabe Inhaltsangabe... 2 Management Summary... 3 Herausforderungen...

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II Die Structured Query Language SQL Prof. Dr. Nikolaus Wulff SQL Das E/R-Modell lässt sich eins zu eins auf ein Tabellenschema abbilden. Benötigt wird eine Syntax, um Tabellen

Mehr

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

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem

Mehr

Informatik 12 Datenbanken SQL-Einführung

Informatik 12 Datenbanken SQL-Einführung Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung

Mehr

Einführung in SQL Datenbanken bearbeiten

Einführung in SQL Datenbanken bearbeiten Einführung in SQL Datenbanken bearbeiten Jürgen Thomas Entstanden als Wiki-Buch Bibliografische Information Diese Publikation ist bei der Deutschen Nationalbibliothek registriert. Detaillierte Angaben

Mehr

Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme. Tillmann Schall, anaptecs GmbH

Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme. Tillmann Schall, anaptecs GmbH Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme Tillmann Schall, anaptecs GmbH : Agenda Grundlagen modellgetriebener Entwicklungsprozesse Schritte zur Einführung Erfahrungen

Mehr

TimeSafe Leistungserfassung

TimeSafe Leistungserfassung Keep your time safe. TimeSafe Leistungserfassung Adressimport 1/8 Inhaltsverzeichnis Inhaltsverzeichnis... 2 1 Allgemeines... 3 1.1 Adressen in der TimeSafe Leistungserfassung... 3 1.2 Organisationen und/oder

Mehr

Adlerblick So gewinnen Sie einen Überblick über ein DWH Dr. Andrea Kennel InfoPunkt Kennel GmbH CH-8600 Dübendorf Schlüsselworte Einleitung

Adlerblick So gewinnen Sie einen Überblick über ein DWH Dr. Andrea Kennel InfoPunkt Kennel GmbH CH-8600 Dübendorf Schlüsselworte Einleitung Adlerblick So gewinnen Sie einen Überblick über ein DWH Dr. Andrea Kennel InfoPunkt Kennel GmbH CH-8600 Dübendorf Schlüsselworte DWH Projekt, Methodik, Stärken und Schwächen, Übersicht, Weg der Daten,

Mehr

Entwicklung eines Infotyps (Planung)

Entwicklung eines Infotyps (Planung) Entwicklung eines Infotyps (Planung) HELP.PAXX Release 4.6C SAP AG Copyright Copyright 2001 SAP AG. Alle Rechte vorbehalten. Weitergabe und Vervielfältigung dieser Publikation oder von Teilen daraus sind,

Mehr

CARL HANSER VERLAG. Christopher Allen. Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7

CARL HANSER VERLAG. Christopher Allen. Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7 CARL HANSER VERLAG Christopher Allen Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7 www.hanser.de Inhaltsverzeichnis Danksagung...XI Einleitung...XIII

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee 2 10245 Berlin Tel.:+49(0) 30 2900 8639 Fax.:+49(0) 30 2900 8695

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee 2 10245 Berlin Tel.:+49(0) 30 2900 8639 Fax.:+49(0) 30 2900 8695 Database Exchange Manager Replication Service- schematische Darstellung Replication Service- allgemeines Replikation von Daten von bzw. in ein SAP-System und einer relationalen DMS-Datenbank Kombination

Mehr

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014 Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung Klaus Kusche, September 2014 Inhalt Ziel & Voraussetzungen Was sind abstrakte Datentypen? Was kann man damit grundsätzlich?

Mehr

G.I.B Success Days. Siegen, 15.05.2013. High Performance Analytics. Performance - Was bedeutet das? Theorie - Performancedefinitionen bei SAP

G.I.B Success Days. Siegen, 15.05.2013. High Performance Analytics. Performance - Was bedeutet das? Theorie - Performancedefinitionen bei SAP 1 G.I.B Success Days Siegen, 15.05.2013 High Performance Analytics Performance - Was bedeutet das? Theorie - Performancedefinitionen bei SAP Selektionen - Datenbankzugriffe Große Datenmengen - Interne

Mehr

Empfehlung zur strategischen Ausrichtung der SAP Business Objects-Frontendwerkzeuge. DSAG e.v.

Empfehlung zur strategischen Ausrichtung der SAP Business Objects-Frontendwerkzeuge. DSAG e.v. 1 Empfehlung zur strategischen Ausrichtung der SAP Business Objects-Frontendwerkzeuge 2 Motivation Seite 3 SAP BO/BW Frontendwerkzeuge Seite 4-5 Roadmap Analyse Werkzeuge Seite 6-7 Übersicht Kundenszenarien

Mehr

8 Ergänzende Techniken zur Qualitätssicherung

8 Ergänzende Techniken zur Qualitätssicherung 165 8 Ergänzende Techniken zur Qualitätssicherung»Es ist das Wesen meiner Kampfkunst, dass du lernst, am Gegner vor dir auch das kleinste Anzeichen dessen wahrzunehmen, was er beabsichtigt, dass du es

Mehr

Bedienung von BlueJ. Klassenanzeige

Bedienung von BlueJ. Klassenanzeige Im Folgenden werden wichtige Funktionen für den Einsatz von BlueJ im Unterricht beschrieben. Hierbei wird auf den Umgang mit Projekten, Klassen und Objekten eingegangen. Abgeschlossen wird dieses Dokument

Mehr

1.3 Themen und Aspekte. 1.2.4 Beschränkung auf die ABAP-Programmierung

1.3 Themen und Aspekte. 1.2.4 Beschränkung auf die ABAP-Programmierung 1.3 Themen und Aspekte 5 1.2.4 Beschränkung auf die ABAP-Programmierung In diesem Buch werden nicht alle Themen abgedeckt, sondern das Buch beschränkt sich, wie der Titel schon sagt, auf die ABAP-Programmierung.

Mehr

Informatik Datenbanken SQL-Einführung

Informatik Datenbanken SQL-Einführung Informatik Datenbanken SQL-Einführung Gierhardt Inhaltsverzeichnis 1 Vorbemerkungen 1 2 Auswahl-Abfragen mit SELECT 2 2.1 Selektion...................................... 2 2.2 Projektion.....................................

Mehr

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 CODESYS a trademark of 3S-Smart Software Solutions GmbH Agenda 1 Warum

Mehr

Übung 1: Ein Website News-System mit MySQL

Übung 1: Ein Website News-System mit MySQL Übung 1: Ein Website News-System mit MySQL In der Vorübung haben wir bereits mit Hilfe eines ERMs den Datenbankentwurf erstellt und daraus die folgenden Tabellen abgeleitet: Nun muss diese Datenbank in

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

SEAL Systems Integrationen für SAP PLM 7 und Web UI Anwendungen

SEAL Systems Integrationen für SAP PLM 7 und Web UI Anwendungen SEAL Systems Integrationen für SAP PLM 7 und Web UI Anwendungen Mit SAP PLM 7 und anderen Web UI Anwendungen hat SAP neue Oberflächen für bestehende und neue Funktionalität geschaffen. Diese Anwendungen

Mehr

Das Übermittlungsdatum wurde im Human Capital Management (HCM) nie eingestellt, sondern auf das gewünschte Ausführungsdatum im Finanzwesen gesetzt.

Das Übermittlungsdatum wurde im Human Capital Management (HCM) nie eingestellt, sondern auf das gewünschte Ausführungsdatum im Finanzwesen gesetzt. SAP-Hinweis 1863520 - DTA: Einstellung des gewünschten Ausführungsdatums für Zahlungen Version 12 Gültigkeit: 21.11.2013 - aktiv Sprache Deutsch Kopfdaten Freigegeben am 21.11.2013 11:08:28 Freigabestatus

Mehr

DURCHGÄNGIGE SAP CHANGE- UND RELEASE-PROZESSE EINFACH UMSETZEN

DURCHGÄNGIGE SAP CHANGE- UND RELEASE-PROZESSE EINFACH UMSETZEN THEGUARD! SMARTCHANGE CHANGE PROCESS DURCHGÄNGIGE SAP CHANGE- UND RELEASE-PROZESSE EINFACH UMSETZEN DURCHGÄNGIGE SAP CHANGE- UND RELEASE-PROZESSE EINFACH UMSETZEN THEGUARD! SMARTCHANGE I CHANGE PROCESS

Mehr

SQL Injection Funktionsweise und Gegenmaßnahmen

SQL Injection Funktionsweise und Gegenmaßnahmen SQL Injection Funktionsweise und Gegenmaßnahmen EUROSEC GmbH Chiffriertechnik & Sicherheit Tel: 06173 / 60850, www.eurosec.com EUROSEC GmbH Chiffriertechnik & Sicherheit, 2005 Problematik SQL-Injection

Mehr

Dokumentation QuickHMI-Schnittstelle. Datenbanken

Dokumentation QuickHMI-Schnittstelle. Datenbanken Dokumentation QuickHMI-Schnittstelle für SQLServer Datenbanken Version 1.0 D-28359 Bremen info@indi-systems.de Tel + 49 421-989703-30 Fax + 49 421-989703-39 Inhaltsverzeichnis Was ist die QuickHMI-Schnittstelle

Mehr

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1 Fachhochschule Kaiserslautern Fachbereiche Elektrotechnik/Informationstechnik und Maschinenbau Labor Datenbanken Versuch 1 : Die Grundlagen von MySQL ------------------------------------------------------------------------------------------------------------

Mehr

Allgemein. Einrichtung. PHOENIX Tool WinUser2PHOENIXUser. Version: 3.5.2 Stand: 2013-04-16

Allgemein. Einrichtung. PHOENIX Tool WinUser2PHOENIXUser. Version: 3.5.2 Stand: 2013-04-16 PHOENIX Tool WinUser2PHOENIXUser Version: 3.5.2 Stand: 2013-04-16 Allgemein Das Tool ermöglicht es, Benutzerinformationen aus dem Windows Active Directory (AD) in den PHOENIX zu importieren. Dabei können

Mehr

Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel

Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel Powerful PL/SQL: Collections indizieren mit VARCHAR2- Indizes ein Praxisbeispiel Schlagworte Autor: Klaus Friemelt, MT AG dynamisches BULK SQL, VARCHAR2-indizierte PL/SQL-Tabellen Einleitung Mit den letzten

Mehr

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

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. Datenbankabfragen (Query) mit SQL (Structured Query Language) 1 Aufbau des SELECT-Befehls Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. SQL-Syntax: SELECT spaltenliste FROM tabellenname

Mehr

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

WI EDI Solution. Stand 17.02.2012

WI EDI Solution. Stand 17.02.2012 WI EDI Solution Stand 17.02.2012 WIAG Überblick 2011 - SAP, SAP BW, SAP SEM/BPS, SAP BPC, SAP R/3, ABAP, Netweaver sind eingetragene Warenzeichen der SAP AG, Walldorf Folie 1 Inhalt Was ist WIEDIS? IDOC

Mehr

Remote Communications

Remote Communications HELP.BCFESDEI Release 4.6C SAP AG Copyright Copyright 2001 SAP AG. Alle Rechte vorbehalten. Weitergabe und Vervielfältigung dieser Publikation oder von Teilen daraus sind, zu welchem Zweck und in welcher

Mehr

Mehr Dynamik in Apex mit Javascript und JQuery. Alexander Scholz its-people

Mehr Dynamik in Apex mit Javascript und JQuery. Alexander Scholz its-people Vortrag zur DOAG Konferenz 2011 Mehr Dynamik in Apex mit und Alexander Scholz its-people 1 Ablauf Thema des Vortragsthemas Motivation Besonderheit des Referenten Alexander Scholz its-people Wie kann in

Mehr

Fachhochschule Deggendorf Platzziffer:...

Fachhochschule Deggendorf Platzziffer:... Sommersemester 2008 Zahl der Blätter: 9 Fachbereich: Betriebswirtschaft WI Bachelor Hilfsmittel: alles ohne Computer Zeit: 90 Minuten 1 Betrachten Sie die drei markierten Zeilen. 1. Angenommen Sie hätten

Mehr

Migrationsanleitung von 2.0 auf 2.1

Migrationsanleitung von 2.0 auf 2.1 Die wichtigste Neuerung von 2.0 auf 2.1 aus Sicht der Anwendungs- Migration ist die Verwendung von Maven. Mit Maven holt sich die Anwendung alle notwendigen Bibliotheken in den jeweils angegebenen Versionen

Mehr

6 InfoCubes erstellen und konfigurieren

6 InfoCubes erstellen und konfigurieren InfoCubes bilden die Reportingschicht in der LSA; sie sind für die Performance des Reportings entscheidend. In diesem Kapitel stellen wir Ihnen vor, welche InfoCubes es gibt und wie Sie damit arbeiten.

Mehr

LINQ to SQL. Proseminar Objektorientiertes Programmieren mit.net und C# Christoph Knüttel. Institut für Informatik Software & Systems Engineering

LINQ to SQL. Proseminar Objektorientiertes Programmieren mit.net und C# Christoph Knüttel. Institut für Informatik Software & Systems Engineering LINQ to SQL Proseminar Objektorientiertes Programmieren mit.net und C# Christoph Knüttel Institut für Informatik Software & Systems Engineering Agenda 1. LINQ allgemein Vorteile Bausteine und Varianten

Mehr

Wirtschafts-Informatik-Wietzorek Ulmweg 7 73117 Wangen 31.10.2009. Programm zur komfortablen Datenauswertung der JTL-WAWI Betaversion

Wirtschafts-Informatik-Wietzorek Ulmweg 7 73117 Wangen 31.10.2009. Programm zur komfortablen Datenauswertung der JTL-WAWI Betaversion Cubeinfo Programm zur komfortablen Datenauswertung der JTL-WAWI Betaversion Kurzbeschreibung Diese Software ist Freeware und darf weitergegeben werden. Zum Öffen der ZIP- Files benötigen Sie ein Kennwort,

Mehr

(3) (2) (1) (SAP_ALL)

(3) (2) (1) (SAP_ALL) Andreas Wiegenstein Xu Jia (3) (2) (1) (SAP_ALL) Sicherheit und Prüfung von SAP Systemen 13. und 14. September, Hamburg (3) SAP Audits und Eigenentwicklungen (2) Sicherheitsrisiken in ABAP (1) Prüfung

Mehr

Von der UML nach C++

Von der UML nach C++ 22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete

Mehr

Exception Handling, Tracing und Logging

Exception Handling, Tracing und Logging Exception Handling, Tracing und Logging Proseminar Objektorientiertes Programmieren mit.net und C# Tomas Ladek Institut für Informatik Software & Systems Engineering Agenda Exceptions Allgemeines Implementierung

Mehr

Von SAP R/3 zu mysap ERP und NetWeaver

Von SAP R/3 zu mysap ERP und NetWeaver Von SAP R/3 zu mysap ERP und NetWeaver Bremerhaven 06.05.2006 T4T Bremerhaven 1 Inhaltsverzeichnis 1. Motivation für SAP NetWeaver 2. SAP R/3 mysap ERP und SAP Business Suite 3. Application Platform T4T

Mehr

WHERE Klausel Generierung mit.net und Oracle. Aus unserer Projekterfahrung und Architektur-Kurs

WHERE Klausel Generierung mit.net und Oracle. Aus unserer Projekterfahrung und Architektur-Kurs Betrifft Art der Info Quelle WHERE Klausel Generierung mit.net und Oracle Technical Info Aus unserer Projekterfahrung und Architektur-Kurs Where ist the WHERE? Der Artikel untersucht die Möglichkeiten,

Mehr

Dokumentation zur Anlage eines JDBC Senders

Dokumentation zur Anlage eines JDBC Senders Dokumentation zur Anlage eines JDBC Senders Mithilfe des JDBC Senders ist es möglich auf eine Datenbank zuzugreifen und mit reiner Query Datensätze auszulesen. Diese können anschließend beispielsweise

Mehr

Grundlagen der Verwendung von make

Grundlagen der Verwendung von make Kurzskript zum Thema: Grundlagen der Verwendung von make Stefan Junghans Gregor Gilka 16. November 2012 1 Einleitung In diesem Teilskript sollen die Grundlagen der Verwendung des Programmes make und der

Mehr

IBM Informix SQL. Seminarunterlage. Version 11.04 vom

IBM Informix SQL. Seminarunterlage. Version 11.04 vom Seminarunterlage Version: 11.04 Version 11.04 vom 27. April 2015 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11

Projektbericht Gruppe 12. Datenbanksysteme WS 05/ 06. Gruppe 12. Martin Tintel Tatjana Triebl. Seite 1 von 11 Datenbanksysteme WS 05/ 06 Gruppe 12 Martin Tintel Tatjana Triebl Seite 1 von 11 Inhaltsverzeichnis Inhaltsverzeichnis... 2 1. Einleitung... 3 2. Datenbanken... 4 2.1. Oracle... 4 2.2. MySQL... 5 2.3 MS

Mehr

Transaktionen in der Praxis. Dr. Karsten Tolle

Transaktionen in der Praxis. Dr. Karsten Tolle Transaktionen in der Praxis Dr. Karsten Tolle Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch (Exception e) { e.printstacktrace(); } con.setautocommit(false);

Mehr

Automotive Consulting Solution. Exit Control Framework

Automotive Consulting Solution. Exit Control Framework Automotive Consulting Solution Exit Control Framework Agenda 1. Kundennutzen 2. Funktionsbeschreibung 3. Abbildung im System 4. Technischer Steckbrief 2 Kundennutzen Lösung Erprobte Lösung/Service der

Mehr

Einführung in VisualBasic for Applications. Stefan Mahlitz

Einführung in VisualBasic for Applications. Stefan Mahlitz Einführung in VisualBasic for Applications Stefan Mahlitz Stefan Mahlitz Einführung in VBA 27.08.00 Inhaltsverzeichnis 1. Grundlagen der VisualBasic for Applications (VBA) Programmierung...2 1.1 Variablen,

Mehr

SQL. Run. SQL Run - Handbuch. as Mika GmbH. it solutions for your system i

SQL. Run. SQL Run - Handbuch. as Mika GmbH. it solutions for your system i SQL Run SQL Run - Handbuch as Mika GmbH it solutions for your system i SQLRUN Beliebige SQL Statements auf Befehlsebene Inhaltsverzeichnis Programmbeschreibung... 2 1.1 Funktionalitäten... 2 1.1.1 Ausführen

Mehr

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

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert. Betrifft Autor FIRST, LAST Markus Jägle (markus.jaegle@trivadis.com) Art der Info Technische Background Info (April 2002) Quelle Aus dem NF9i-Kurs, NF9i-Techno-Circle der Trivadis und Oracle9i Data Warehousing

Mehr

Unit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG

Unit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG Unit-Test Theorie und Praxis Stephan Seefeld, INGTES AG Inhalt Was sind Unit-Test? NUnit für.net Demo Seite 2 Quellen Für diesen Vortrag verwendete Quellen: dotnet User Group Berlin Brandenburg http://www.dotnet-berlinbrandenburg.de/

Mehr

Relationale Datenbanken in der Praxis

Relationale Datenbanken in der Praxis Seite 1 Relationale Datenbanken in der Praxis Inhaltsverzeichnis 1 Datenbank-Design...2 1.1 Entwurf...2 1.2 Beschreibung der Realität...2 1.3 Enitiy-Relationship-Modell (ERM)...3 1.4 Schlüssel...4 1.5

Mehr

Verteidigung gegen SQL Injection Attacks

Verteidigung gegen SQL Injection Attacks Verteidigung gegen SQL Injection Attacks Semesterarbeit SS 2003 Daniel Lutz danlutz@watz.ch 1 Inhalt Motivation Demo-Applikation Beispiele von Attacken Massnahmen zur Verteidigung Schlussfolgerungen 2

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

MySQL Queries on "Nmap Results"

MySQL Queries on Nmap Results MySQL Queries on "Nmap Results" SQL Abfragen auf Nmap Ergebnisse Ivan Bütler 31. August 2009 Wer den Portscanner "NMAP" häufig benutzt weiss, dass die Auswertung von grossen Scans mit vielen C- oder sogar

Mehr

Besser PHP programmieren

Besser PHP programmieren Carsten Möhrke Besser PHP programmieren Handbuch professioneller PHP-Techniken Galileo Press Vorwort zur dritten Auflage ц JjlJlli!fJÜIj SI!IS* 1.1 Lernen Sie Ihr Arbeitsgerät kennen 13 1.2 Der Editor,

Mehr

2 7 Erweiterungen. 7.1 Prozess-Kommunikation mit Datenbanken

2 7 Erweiterungen. 7.1 Prozess-Kommunikation mit Datenbanken 2 7 Erweiterungen 7 Erweiterungen 7.1 Prozess-Kommunikation mit Datenbanken Im Buch Einstieg in das Programmieren mit MATLAB wird im Abschnitt 4.8 das Thema Prozess-Kommunikation am Beispiel von MS-Excel

Mehr

VB.net Programmierung und Beispielprogramm für GSV

VB.net Programmierung und Beispielprogramm für GSV VB.net Programmierung und Beispielprogramm für GSV Dokumentation Stand vom 26.05.2011 Tel +49 (0)3302 78620 60, Fax +49 (0)3302 78620 69, info@me-systeme.de, www.me-systeme.de 1 Inhaltsverzeichnis Vorwort...2

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

INFORMATIK ROEING UND FRITZE ORACLE DBMS UND SQL. Seminarunterlage

INFORMATIK ROEING UND FRITZE ORACLE DBMS UND SQL. Seminarunterlage ORACLE UND SQL Seminarunterlage 0-2 ORACLE IMPRESSUM Version: 5.01 DID: Autoren: Herausgeber: ORA_SQL Jörg Fritze Frank Roeing Roeing und Fritze Schulungen GbR Alte Straße 65 D-44143 Dortmund Telefon:

Mehr

3 Anwendungsarchitektur und Entwicklungsumgebung

3 Anwendungsarchitektur und Entwicklungsumgebung 21 3 Anwendungsarchitektur und Bei den Entwicklern von Web-basierten Dialogsystemen hat sich im Laufe der Zeit eine Vorgehensweise im Design von Anwendungen entwickelt, dies es ermöglicht, flexible Web-Dialoge

Mehr

Integration von. ERP-Systemen und epages 6. mit Webservices

Integration von. ERP-Systemen und epages 6. mit Webservices Integration von ERP-Systemen und epages 6 mit Webservices - Stand 10/2011 - Einleitung... 2 Grundlagen... 2 Überblick Datenaustausch... 3 Ablauf... 4 Verbindungstest... 4 Testen mit Beispieldaten... 4

Mehr

JOB SCHEDULER. Managed User Jobs. Dokumentation Juli 2005. MySQL-Job-Automation

JOB SCHEDULER. Managed User Jobs. Dokumentation Juli 2005. MySQL-Job-Automation MySQL-Job-Automation Managed User Jobs JOB SCHEDULER Dokumentation Juli 2005 Software- und Organisations-Service GmbH Giesebrechtstr. 15 D-10629 Berlin Telefon (030) 86 47 90-0 Telefax (030) 861 33 35

Mehr

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

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

Einsatz von UML und C++ am Beispiel einer Satelliten-Lageregelungssoftware

Einsatz von UML und C++ am Beispiel einer Satelliten-Lageregelungssoftware Einsatz von UML und C++ am Beispiel einer Satelliten-Lageregelungssoftware Dipl. Inform. Olaf Maibaum DLR, Abt. Simulations- und Softwaretechnik DLR, Abt. Simulations- und Softwaretechnik 1 Übersicht Bird-Satellit

Mehr

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

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software SQL Tutorial SQL - Tutorial SS 06 Hubert Baumgartner INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien Inhalt des Tutorials 1 2 3 4

Mehr

Lerox DB/2 Datenbankreferenz in QlikView für IBM System AS/400, iseries i5, System i

Lerox DB/2 Datenbankreferenz in QlikView für IBM System AS/400, iseries i5, System i Lerox DB/2 Datenbankreferenz in QlikView für IBM System AS/400, iseries i5, System i Inhaltsverzeichnis Überblick... 3 Die QlikView Applikation im Kontext... 4 Technische Rahmenbedinungen... 5 Funktionelle

Mehr

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen Programmieren von Datenbankzugriffen mit JDBC Fachbereich MNI Technische Hochschule Mittelhessen Sommersemester 2015 Überblick über das Package java.sql Übersicht Architektur von JDBC Grundstruktur eines

Mehr

7 Die Reorganisation von DB2

7 Die Reorganisation von DB2 Ab und an sollte eine Tabelle reorganisiert werden. Besonders, nachdem größere Datenmengen eingefügt oder gelöscht wurden, muß über eine Reorganisation nachgedacht werden. Eine optimale Performance ist

Mehr

Inhalt. Dokumentation VIAS_W. V32w6900 Workflow-Assistent

Inhalt. Dokumentation VIAS_W. V32w6900 Workflow-Assistent Dokumentation Inhalt 1. Der... 2 1.1 Benötigte Dateien... 2 1.2 Vorbereitung... 2 1.3 Hinterlegung von Workflows... 2 1.4 Definition eines neuen Workflows... 3 1.5 Definition von Aktionen... 5 1.1.1 Aktionstyp

Mehr

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services 531 27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services Im zweiten Teil dieses Buches haben wir die Eigenschaften der Transact-SQL- Sprache in Bezug auf die Bearbeitung von operativen Daten gezeigt.

Mehr

Thema: SQL-Injection (SQL-Einschleusung):

Thema: SQL-Injection (SQL-Einschleusung): Thema: SQL-Injection (SQL-Einschleusung): Allgemein: SQL (Structured Query Language) ist eine Datenbanksprache zur Definition von Datenstrukturen in Datenbanken sowie zum Bearbeiten (Einfügen, Verändern,

Mehr

In die Zeilen würden die Daten einer Adresse geschrieben werden. Das Ganze könnte in etwa folgendermaßen aussehen:

In die Zeilen würden die Daten einer Adresse geschrieben werden. Das Ganze könnte in etwa folgendermaßen aussehen: 1 Einführung in Datenbanksysteme Fast jeder kennt Excel und hat damit in seinem Leben schon einmal gearbeitet. In Excel gibt es Arbeitsblätter, die aus vielen Zellen bestehen, in die man verschiedene Werte

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Microsoft SQL Server 2005 für Administratoren

Microsoft SQL Server 2005 für Administratoren Microsoft SQL Server 2005 für Administratoren Irene Bauder ISBN 3-446-22800-4 Leseprobe Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-22800-4 sowie im Buchhandel Sichern von

Mehr

PHP 4 -- Grundlagen und Profiwissen

PHP 4 -- Grundlagen und Profiwissen PHP 4 -- Grundlagen und Profiwissen Webserver-Programmierung unter Windows und Linux von Jörg Krause 2. Auflage Hanser München 2001 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 21847 5 Zu Inhaltsverzeichnis

Mehr

In Tabelle 2.1 sehen Sie das Ergebnis beider Ausführungen auf meiner Maschine.

In Tabelle 2.1 sehen Sie das Ergebnis beider Ausführungen auf meiner Maschine. Kapitel 2 Datenverwaltung durch SQL Server Wir wollen das obige Skript zwei Mal laufen lassen, einmal mit und einmal ohne eingeschalteten Schreibcache der Festplatte. Für eine lokale Festplatte können

Mehr

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel ORM & OLAP Object-oriented Enterprise Application Programming Model for In-Memory Databases Sebastian Oergel Probleme 2 Datenbanken sind elementar für Business-Anwendungen Gängiges Datenbankparadigma:

Mehr

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober 2010. FH-Gieÿen-Friedberg Android Praktikum

ANDROID. Analyse der Android Plattform. Andre Rein, Johannes Florian Tietje. 28. Oktober 2010. FH-Gieÿen-Friedberg Android Praktikum Analyse der Android Plattform Andre Rein, Johannes Florian Tietje FH-Gieÿen-Friedberg Android Praktikum 28. Oktober 2010 Topics 1 Übersicht Android Plattform Application Framework Activities und Services

Mehr

AJAX SSL- Wizard Referenz

AJAX SSL- Wizard Referenz AJAX SSL- Wizard Referenz Version 1.0.2+ - 04.04.2011 Präambel Die vorliegende Dokumentation beschreibt den AJAX basierten SSL- Wizard der CertCenter AG. Der SSL- Wizard kann mit wenigen Handgriffen nahtlos

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr