Beschreiben von AS ABAP

Objectives

After completing this lesson, you will be able to:
  • Die Verarbeitung von Benutzeranfragen in AS-ABAP-basierten SAP-Systemen veranschaulichen
  • die Prozesse eines AS ABAP auflisten und deren Bedeutung erläutern
  • wichtige Transaktionen zur Verwaltung von AS ABAP auflisten und deren Verwendung beschreiben

SAP Help Portal

Die SAP-Hilfedokumentation bietet Ihnen wertvolle Unterstützung beim Kennenlernen von Systemfunktionen. Außerdem werden die Konzepte der Systemarchitektur erläutert, Beispiele für die Konfiguration verschiedener Prozesse angeführt und mögliche Benutzerfehler und ihre Folgen erklärt. Die Online-Dokumentation enthält auch viele Tipps und Tricks, die die alltägliche Arbeit mit dem SAP-System erleichtern und beschleunigen.

Im SAP Help Portal können Sie auf die Dokumentation von SAP-Produkten zugreifen. Es gibt viele Anleitungen und Dokumentationen, z.B.:

  • Installationsleitfäden,
  • Sicherheitsleitfäden,
  • Erste Schritte,
  • und vieles mehr.

Sie können die Suchleiste oder die Produkthierarchie verwenden, um die gewünschte Product Assistance zu öffnen.

Sie haben die Möglichkeit, die Suchleiste für die Suche nach Produkten oder die Suche nach Schlüsselwörtern über das gesamte SAP Help Portal und alle Produkte zu verwenden. Darüber hinaus haben Sie die Möglichkeit, auf etwa 250 Learning Journeys für mehrere Produkte zuzugreifen und diese anzuzeigen. Diese Learning Journeys umfassen Tutorials, openSAP-Kurse, Referentenschulungen aus dem Schulungsshop.

Wenn Sie das SAP Help Portal öffnen möchten, müssen Sie zu https://help.sap.com

Anfrageverarbeitung in der SAP GUI

Die Benutzer können sich über den (ABAP-)Message-Server (Lastverteilung) oder direkt am ABAP-Dispatcher anmelden. Die Benutzereingaben werden durch die Workprozesse ausgeführt.

AS ABAP – drei Schichten

Die Bildschirmeingaben eines Benutzers werden von einer Frontend-Software, z.B. dem SAP GUI (Graphical User Interface), akzeptiert, in ein internes Format konvertiert und an den Dispatcher weitergeleitet.

Ein zentraler Prozess des AS ABAP ist der (ABAP-)Dispatcher. Er verwaltet in Abstimmung mit dem jeweiligen Betriebssystem die Ressourcen für die in ABAP geschriebenen Anwendungen. Zu den Hauptaufgaben des ABAP-Dispatcher gehört die Verteilung der Anfragen (Requests) auf seine Workprozesse, die Anbindung der Präsentationsebene und die Organisation von Kommunikationsaktivitäten.

Die Verarbeitungsanfragen werden vom Dispatcher zunächst in sogenannten Request-Queues (Warteschlangen für Anfragen) gesichert, die anschließend nach dem Prinzip „first in, first out" abgearbeitet werden.

Der ABAP-Dispatcher verteilt die Anfragen (Requests) nacheinander auf freie Workprozesse. Im Workprozess findet die eigentliche Verarbeitung statt, wobei der Benutzer, der die Anfrage über das SAP GUI angelegt hat, nicht immer denselben Workprozess zugewiesen bekommt. Es gibt also keine feste Zuordnung von Workprozessen zu Benutzern. Zur Verarbeitung von Benutzeranfragen ist es oft notwendig, Daten aus dem ABAP-Schema der Datenbank zu lesen oder in dieses zu schreiben. Hierzu ist jeder Workprozess direkt mit dem ABAP-Schema der Datenbank verbunden.

Am Ende der Verarbeitung gelangt das Verarbeitungsergebnis des Workprozesses über den Dispatcher an das SAP GUI zurück. Das SAP GUI interpretiert die empfangenen Daten und erzeugt das Ausgabebild für den Benutzer.

Die Puffer dienen zur schnelleren Bearbeitung der Benutzeranfragen. Daten, die gelesen, aber nur selten geändert werden (z.B. Programme oder Daten des Customizing wie Währungen oder Buchungskreise), können als Kopie des Datenbankinhalts im Shared Memory des Applikationsservers aufbewahrt werden. Auf diese Weise müssen die Daten nicht immer wieder aus der Datenbank gelesen werden, sondern können schnell aus den Puffern abgerufen werden. Jede Instanz hat eigene Puffer.

Workprozesse führen die Ablauflogik von Anwendungsprogrammen aus. Ein Workprozess hat neben internem Speicherplatz einen Task-Handler, der die Aktivitäten innerhalb eines Workprozesses koordiniert, Softwareprozessoren sowie eine Datenbankschnittstelle. Der Dynpro-Prozessor führt die Bildschirmablauflogik des Anwendungsprogramms aus, ruft Programmteile der Verarbeitungslogik auf und sorgt für die Weitergabe von Feldinhalten an die Verarbeitungslogik. Die eigentliche Verarbeitungslogik von ABAP-Anwendungsprogrammen wird vom ABAP-Interpreter ausgeführt. Der ABAP-Prozessor wird vom Dynpro-Prozessor informiert, welcher Programmteil entsprechend dem Fortgang der Bildschirmablauflogik abzuarbeiten ist.

Der vom Dispatcher ausgewählte Dialog-Workprozess führt zunächst einen Roll-in des Benutzerkontexts durch. Das heißt, die Daten, die den aktuellen Bearbeitungsstand eines laufenden Programms enthalten sowie Daten, die den Benutzer charakterisieren, werden dem Workprozess mitgeteilt. Dann arbeitet der Workprozess die Benutzeranfrage ab, wobei er sich gegebenenfalls an die Datenbank oder die Puffer im Shared Memory wendet, um beispielsweise Daten anzufordern. Nach der Bearbeitung des Dialogschritts gibt der Workprozess das Ergebnis zurück, rollt den Benutzerkontext wieder heraus ins Shared Memory und ist damit wieder frei für eine neue Benutzeranfrage aus der Request-Queue. Das Ergebnis wird dem SAP GUI übergeben, und der Benutzer sieht das neue Bildschirmbild.

Datenbankschnittstelle des AS ABAP

Relationale Datenbankmanagementsysteme (RDBMS) werden generell zur Verwaltung großer Datenmengen verwendet. Ein RDBMS sichert Daten und Beziehungen zwischen Daten in Form von zweidimensionalen Tabellen. Diese zeichnen sich durch ihre logische Einfachheit aus. Auf Datenbankebene erfolgt die Definition von Daten, Tabellen und Tabellenbeziehungen im Datenbankkatalog (Data Dictionary) des RDBMS.

Innerhalb der SAP-Programmiersprache ABAP kann mittels ABAP SQL (SQL = Structured Query Language, Datenbankabfragesprache) unabhängig vom jeweiligen RDBMS auf die Anwendungsdaten der Datenbank zugegriffen werden. Die Datenbankschnittstelle, die Bestandteil eines jeden Workprozesses von AS ABAP ist, sorgt für die Umsetzung der ABAP-SQL-Anweisungen aus ABAP in entsprechende SQL-Anweisungen speziell für die verwendete Datenbank (Native SQL). Somit können ABAP-Programme datenbankunabhängig programmiert werden.

Notiz

ABAP SQL ist eine Datenbankabfragesprache, die sich am (ISO-)SQL-Standard orientiert, aber auch Erweiterungen enthält, die nicht im Standard enthalten sind.

ABAP SQL wurde bis AS ABAP 7.52 als „Open SQL" bezeichnet.

Notiz

Unabhängig vom Release des AS ABAP kann auch eine EXEC SQL. - END EXEC verwendet werden. Klammer native SQL-Befehle an die Datenbank absetzen.

Notiz

Mit SAP S/4HANA Server wird nur ein Datenbanktyp unterstützt: die SAP-HANA-Datenbank. Daher ist es nicht mehr erforderlich, datenbankunabhängig zu sein. Dies führt dazu, dass immer mehr ABAP-Programme Datenbankprozeduren aufrufen, anstatt alle Berechnungen mit ABAP-Programmen durchzuführen.

Verarbeitung von Dialoganfragen

Die Ausführung von Dialoganfragen wird wie folgt charakterisiert:

In SAP-Anwendungsprogrammen wird zwischen Benutzerinteraktionen und Verarbeitungslogik unterschieden. Programmtechnisch werden die Benutzerinteraktionen durch Dynpros (dynamische Programme), bestehend aus einer Bildschirmmaske und der zugehörigen Bildschirmablauflogik, realisiert. Der Dynpro-Prozessor des Workprozesses führt die Bildschirmablauflogik des Anwendungsprogramms aus, ruft Programmteile der Verarbeitungslogik auf und sorgt für die Weitergabe von Feldinhalten an die Verarbeitungslogik. Die Bildschirmablauflogik ist selbst wieder unterteilt in den PBO (Process Before Output), der vor dem Senden des Bildschirmbildes verarbeitet wird, und den PAI (Process After Input), der nach einer Benutzerinteraktion auf dem Bildschirmbild verarbeitet wird. Der PAI-Teil eines Dialogschritts gehört logisch zum vorherigen Bildschirmbild, der PBO-Teil logisch zum nachfolgenden Bildschirmbild. Die eigentliche Verarbeitungslogik von ABAP-Programmen wird vom ABAP-Interpreter ausgeführt. Dieser wird vom Dynpro-Prozessor darüber informiert, welcher Programmteil entsprechend dem Fortgang der Bildschirmablauflogik abzuarbeiten ist.

Wenn im Laufe eines Dialogschrittes Daten mit der Datenbank oder den Puffern ausgetauscht werden müssen, geschieht dies über die Datenbankschnittstelle, die unter anderem den Zugang zu Datenbanktabellen, ABAP-Programmen oder dem ABAP-Dictionary ermöglicht.

Transaktionale Verarbeitung im AS ABAP

Bedeutung des Begriffs „Transaktion"

Transaktionen sind funktional zusammengehörige Verarbeitungseinheiten. Sie werden durch vier wesentliche Eigenschaften charakterisiert. Die Anfangsbuchstaben der englischen Begriffe hierfür lassen sich zu dem Akronym ACID zusammensetzen.

Eine Transaktion wird durch folgende Attribute charakterisiert:

  • Atomar (atomic)

  • Konsistent (consistent)

  • Isoliert

  • Dauerhaft (durable)

Atomar (atomic) bedeutet, dass eine Transaktion entweder vollständig gelingt oder ohne Auswirkungen bleibt. Bei einem Ausfall eines transaktionsorientierten Systems muss also sichergestellt sein, dass inkonsistente Teilergebnisse nicht gespeichert werden.

Konsistent (consistent) bedeutet, dass das System von einem betriebswirtschaftlich konsistenten, korrekten Zustand in einen (anderen) betriebswirtschaftlich konsistenten, korrekten Zustand überführt wird.

Isoliert bedeutet, dass die innerhalb einer Transaktion durchgeführten Änderungen von anderen, gegebenenfalls parallel laufenden Transaktionen erst nach dem endgültigen Bestätigen gesehen werden können.

Die Ergebnisse einer Transaktion sind dauerhaft (durable), weil sie nach dem endgültigen Bestätigen permanent in der Datenbank gespeichert werden.

Datenbanktransaktionen und ABAP-Transaktionen

Jeder Workprozess ist für die gesamte Laufzeit des Applikationsservers mit einem festen Kommunikationspartner auf Datenbankebene verbunden. Diese Kommunikationspartner können zur Laufzeit nicht zwischen verschiedenen Workprozessen weitergereicht werden. Daher kann ein Workprozess Datenbankänderungen immer nur im Rahmen genau einer Datenbanktransaktion ausführen.

Eine Datenbanktransaktion ist gemäß ACID-Prinzip eine nicht teilbare Folge von Datenbankoperationen, an deren Anfang und Ende ein konsistenter Datenbestand in der Datenbank vorhanden sein muss. Anfang und Ende einer Datenbanktransaktion werden durch einen Commit-Befehl (Datenbank-Commit) an das Datenbanksystem definiert. Während einer Datenbanktransaktion (zwischen zwei Commit-Befehlen) sorgt das Datenbanksystem selbst für die Konsistenz des Datenbestands. Das Datenbanksystem übernimmt hierbei selbst die Aufgabe, den alten Zustand des Datenbestands nach einem fehlerbedingten Transaktionsabbruch wiederherzustellen (Rollback).

Betriebswirtschaftliche Transaktionen sind funktional zusammengehörige Verarbeitungseinheiten, die konsistente, betriebswirtschaftlich sinnvolle Datenbankänderungen durchführen. Typische Beispiele sind Soll- und Habenbuchungen, die nur gemeinsam sinnvoll sind; ebenso bedingen sich das Anlegen eines Auftrags und die Reservierung der betroffenen Materialien gegenseitig. Entsprechend wird eine Transaktion im AS ABAP als nicht teilbarer Geschäftsprozess definiert, der komplett oder überhaupt nicht durchgeführt werden soll. Eine AS-ABAP-Transaktion wird als eine Folge betriebswirtschaftlich konsistenter, logisch zusammenhängender Dialogschritte implementiert. Ein Benutzerdialogschritt wird jeweils durch ein Bildschirmbild dargestellt.

Verschaffen Sie sich einen Überblick über die konfigurierten Workprozesse und ihren aktuellen Status

Unternehmensszenario

Sie möchten sich einen Überblick über die konfigurierten Workprozesse und deren aktuellen Status verschaffen.

Sperrverwaltung

Aus Gründen der Datenkonsistenz in SAP-Systemen muss sichergestellt sein, dass ein- und derselbe Datensatz nicht gleichzeitig von verschiedenen Benutzern aufgerufen und geändert werden kann. Hierfür existiert im SAP-System ein eigenes Sperrverwaltungskonzept.

Aus Datenbanksicht bildet jeder Dialogschritt eine physische und logische Einheit: die Datenbanktransaktion. Die Sperrverwaltung der Datenbank kann nur solche Datenbanktransaktionen koordinieren. Aus SAP-Sicht genügt dies jedoch nicht, da SAP-Transaktionen, die aus einer Folge betriebswirtschaftlich konsistenter und logisch zusammenhängender Arbeitsschritte gebildet werden, zumeist aus mehreren Dialogschritten bestehen. Daher ist es notwendig, dass SAP-Systeme eine eigene Sperrverwaltung verwenden. Diese wird mithilfe des Enqueue-Prozesses realisiert. Hierdurch wird auch die Plattformunabhängigkeit der Sperrverwaltung gewährleistet.

Das SAP-Sperrkonzept sieht vor, dass ein SAP-Programm für die zu bearbeitenden Datensätze Sperreinträge in einer Sperrtabelle einträgt. Das Eintragen eines Sperreintrags gelingt nur, wenn für die betreffenden Tabelleneinträge bisher noch keine Sperreinträge vorhanden sind.

Die Sperrtabelle befindet sich im Hauptspeicher des Applikationsservers mit dem Enqueue-Workprozess. Der Enqueue-Workprozess verwaltet die logischen Sperren der SAP-Transaktionen in der Sperrtabelle.

Der Enqueue-Prozess kann auf zwei Arten implementiert werden:

  • als Workprozess

  • Als Teil der ABAP-Zentralserviceinstanz (ASCS, Standardinstallationsoption für alle Neuinstallationen und obligatorisch ab AS ABAP 7.50/7.51)

Seit AS ABAP 7.00 kann zwischen diesen beiden Optionen gewählt werden. Die Option ASCS wird z.B. aus Gründen der Hochverfügbarkeit bevorzugt. Ab AS ABAP 7.50 ist das ASCS-Setup obligatorisch, wenn das SAP-System mehr als einen Anwendungsserver hat. Seit AS ABAP 7.51 ist das ASCS-Setup in jedem Fall obligatorisch. Das ASCS-Setup ist obligatorisch, wenn ein Enqueue-Replikationsserver (ERS) installiert werden soll.

AS ABAP – Enqueue-Service

Will ein Benutzer auf Daten zugreifen und diese ändern, fordert der ausführende Dialog-Workprozess eine Sperre an (dazu muss der Anwendungsentwickler diese Anforderung explizit programmieren).

Notiz

Folgendes gilt nur, wenn der Enqueue-Workprozess als Installationsoption verwendet wird: Wenn ein Dialog-Request auf dem Enqueue-Workprozess verarbeitet wird, kann der Dialog-Workprozess direkt auf die Sperrtabelle zugreifen. Er überprüft nun, ob eine neue Sperre erzeugt werden kann, das heißt, ob es keine Kollisionen mit bereits gesetzten Sperren gibt. Falls eine Sperre gesetzt werden kann, legt der Dialog-Workprozess diese an, und dem Benutzer (Sperreigentümer) wird der Sperrschlüssel übergeben. Der Sperrschlüssel wird im Benutzerkontext im Shared Memory aufbewahrt.

Wenn der Dialog-Workprozess, der die Benutzeranfrage bearbeitet, und der Enqueue-Workprozess nicht auf demselben Applikationsserver ausgeführt werden, findet die Kommunikation dieser beiden Prozesse über den Message Server statt. In diesem Fall wird die Sperranforderung über die Dispatcher und den Message Server vom Dialog-Workprozess an den Enqueue-Workprozess weitergeleitet. Der Enqueue-Workprozess überprüft nun, ob eine Sperre gesetzt werden kann. Wenn das möglich ist, wird die Sperre vom Enqueue-Workprozess gesetzt und der Sperrschlüssel über Dispatcher und Message Server an den anfordernden Dialog-Workprozess übergeben.

Bei der Sperranforderung wird überprüft, ob die angeforderte Sperre nicht mit bereits vorhandenen Einträgen in der Sperrtabelle Konflikte verursachen. Falls bereits entsprechende Einträge in der Sperrtabelle vorhanden sind, wird die Sperranforderung zurückgewiesen. So kann das Anwendungsprogramm den Benutzer frühzeitig darauf hinweisen, dass die von ihm gewünschte Operation derzeit nicht möglich ist.

Der Anwendungsentwickler kann zwischen verschiedenen Sperrmodi wählen:

  • Schreibsperren (Sperrmodus Exklusiv): Die Sperrdaten können nur von einem Benutzer bearbeitet werden. Sowohl die Anforderung einer weiteren Schreibsperre als auch einer Lesesperre werden abgewiesen. Eine Schreibsperre schützt das gesperrte Objekt gegen Sperren aller Art anderer Transaktionen. Nur derselbe Sperreigentümer kann die Sperre erneut setzen (kumulieren).

  • Lesesperren (Sperrmodus Shared): Mehrere Benutzer können gleichzeitig Lesezugriff auf die gesperrten Daten haben. Die Anforderungen weiterer Lesesperren werden akzeptiert, auch wenn diese von anderen Benutzern kommen. Eine Schreibsperre wird abgewiesen.

  • Erweiterte Schreibsperren (Sperrmodus Exklusiv nicht kumulativ): Während Schreibsperren sukzessive von derselben Transaktion angefordert und freigegeben werden können, kann eine erweiterte Schreibsperre auch von derselben Transaktion nur einmal angefordert werden. Jede weitere Anforderung einer Sperre wird abgewiesen.

  • Optimistische Sperren (Sperrmodus Optimistisch): Optimistische Sperren reagieren zunächst wie Lesesperren und können in Schreibsperren geändert werden. Eine optimistische Sperre wird gesetzt, wenn der Benutzer die Daten im Änderungsmodus anzeigt. Optimistische Sperren für dasselbe Objekt kollidieren nicht. Will der Benutzer die (geänderten) Daten sichern, muss die optimistische Sperre in eine Schreibsperre (Modus E) umgewandelt werden. (Dies schlägt fehl, wenn jemand zuvor eine nicht optimistische Sperre für das Objekt gesetzt hat.) Andere optimistische Sperren auf das Objekt werden dabei gelöscht.

Von einem Anwendungsprogramm gesetzte Sperren werden entweder vom Anwendungsprogramm selbst oder vom Verbuchungsprogramm nach erfolgter Datenbankänderung zurückgesetzt. Sperren, die an einen Verbuchungs-Workprozess weitergegeben wurden, werden auch auf Betriebssystemebene in eine Datei geschrieben und können somit bei einem Systemausfall des Enqueue-Servers wiederhergestellt werden.

In der Transaktion SM12/SMENQ werden die aktuell gehaltenen Sperren angezeigt. Wenn eine Sperre bereits an den Verbuchungsprozess vererbt wurde, wurde auch das Backup-Flag gesetzt. Eine solche Sperre wird auch nach einem Neustart des Enqueue-Servers wieder in die Sperrtabelle aufgenommen.

Um auf die Sperrtabelle zuzugreifen, verwenden Sie die Transaktion SM12 in SAP-Systemen mit SAP_BASIS 7.52 und älteren Versionen. Verwenden Sie die Transaktion SMENQ in SAP-Systemen mit SAP_BASIS 7.53 und neueren Versionen. In SAP-Systemen mit SAP_BASIS 7.55 und höher ist SM12 die neue SMENQ.

Es gibt zwei Möglichkeiten, Sperreinträge, die von Benutzern gehalten werden, zu löschen:

  • Beenden der Benutzersitzung in der Benutzerübersicht (Transaktion SM04)

  • Manuelles Löschen der Sperreinträge in Transaktion SM12/SMENQ

Die erste Methode (Beenden der Benutzersitzung) führt auch dazu, dass der ursprüngliche Sperreigentümer die Transaktion verlässt und alle Sperren freigibt. Bei der zweiten Methode (manuelles Löschen mit SM12/SMENQ) wird lediglich der Sperreintrag aus der Sperrtabelle entfernt. Damit können theoretisch mehrere Benutzer gleichzeitig dieselben Datensätze ändern.

Achtung

Der SAP-Systemadministrator sollte vor dem Löschen einer Sperre mit der Transaktion SM04 klären, ob der Benutzer, der die Sperre hält, noch am SAP-System angemeldet ist. Einen Sperreintrag sollte man mit der Transaktion SM12/SMENQ generell nur dann löschen, wenn der Sperrinhaber nicht mehr am SAP-System angemeldet ist und trotzdem noch eine Sperre hält (zum Beispiel, wenn die Verbindung zwischen SAP GUI und SAP-System abgebrochen wurde, weil der Benutzer seinen Frontend-Rechner ausgeschaltet hat, ohne sich vom SAP-System abzumelden).

Setzen und Überwachen von Sperreinträgen

Unternehmensszenario

Sie möchten wissen, wie die Sperrverwaltung im AS ABAP funktioniert.

Verbuchungsablauf

Das Verbuchungssystem dient zur Entlastung der SAP-Transaktionen bei zeitaufwendigen Datenbankänderungen. Diese werden asynchron in speziellen Verbuchungs-Workprozessen durchgeführt. Zudem umgeht das Verbuchungssystem Rollback-Probleme, die durch die unterschiedliche Auffassung von Logical Units of Work (LUWs) in einer SAP-Transaktion und in der Datenbank verursacht werden.

Wenn während eines Dialog-Workprozesses die zur Verarbeitung zwischengespeicherten Daten zur weiteren Verarbeitung an einen Verbuchungs-Workprozess übergeben werden, wartet der Dialog-Workprozess nicht auf den Abschluss des Verbuchungsauftrags: Die Verbuchung erfolgt asynchron (nicht gleichzeitig). Der Ablauf der asynchronen Verbuchung ist in der Abbildung „Prinzip der asynchronen Verbuchung" dargestellt.

Der Dialogteil wird mit der ABAP-Anweisung COMMIT WORK abgeschlossen; es beginnt der Verbuchungsteil der Transaktion. Der Verbuchungsserver übergibt den Verbuchungsauftrag an einen Verbuchungs-Workprozess. Hierbei entspricht jeder Dialogschritt einer Datenbank-Transaktion (die auf der Datenbank entweder vollständig oder überhaupt nicht ausgeführt und dort mit einem COMMIT abgeschlossen wird). Der Verbuchungsteil der SAP-Transaktion wird in einer Datenbank-Transaktion durchgeführt. Erst in dieser werden die Daten tatsächlich in die Anwendungstabellen übernommen.

Will ein Benutzer im Rahmen einer SAP-Transaktion einen Datensatz ändern, ruft er die entsprechende Transaktion im Dialog auf, nimmt auf den Bildern die notwendigen Eingaben vor und initiiert schließlich den Verbuchungsvorgang, indem er die Daten sichert. Dabei werden folgende Schritte ausgelöst:

  1. Das Programm sperrt den Datensatz für andere Benutzer. Hierzu wird der Enqueue-Workprozess (gegebenenfalls über den Message Server) angesprochen. Der Enqueue-Workprozess sorgt für den entsprechenden Eintrag in die Sperrtabelle bzw. (falls schon ein Benutzer die Daten gesperrt hat) informiert den Benutzer, dass der Datensatz nicht geändert werden kann.

  2. Konnte der Sperreintrag in die Sperrtabelle geschrieben werden, so wird der vom Enqueue-Workprozess erzeugte Sperrschlüssel an den Benutzer weitergereicht, das Programm liest den zu ändernden Satz von der Datenbank und der Benutzer kann ihn auf dem Bildschirmbild der SAP-Transaktion ändern.

  3. Das Programm ruft im aktuellen Dialog-Workprozess einen Funktionsbaustein mittels CALL FUNCTION ... IN UPDATE TASK auf und schreibt die Verbuchungsanforderung in Verbuchungstabellen in die Datenbank. Diese werden auch als VB*-Tabellen bezeichnet, da ihre Namen mit „VB" beginnen. Sie fungieren als Zwischenspeicher und halten die zu ändernden Daten so lange, bis diese (in einer einzigen Datenbanktransaktion) gesammelt in die Anwendungstabellen in der Datenbank geschrieben werden.

  4. Wenn das Ende des Dialogteils der Transaktion erreicht ist (zum Beispiel wenn der Benutzer die Daten – gegebenenfalls nach weiteren Dialogschritten – sichert), leitet das Programm mit der Anweisung COMMIT WORK den Abschluss der Transaktion ein. Der Workprozess, der gerade den aktuellen Dialogschritt bearbeitet, vervollständigt den Verbuchungskopf und stößt einen Verbuchungs-Workprozess an.

  5. Aufgrund der vom Dialog-Workprozess übermittelten Informationen (Schlüssel des Verbuchungsauftrags, Sperrschlüssel) liest der Verbuchungs-Workprozess die zu dieser SAP-Transaktion gehörigen Protokollsätze aus den VB*-Tabellen.

  6. Der Verbuchungs-Workprozess gibt die in den VB*-Tabellen gesammelten Änderungsvormerkungen als Verbuchungsanforderung an die Datenbank und wertet deren Rückmeldung aus. Im Erfolgsfall löst der Verbuchungs-Workprozess nach der letzten Datenbank-Änderung ein Datenbank-Commit aus und löscht die Einträge aus den VB*-Tabellen. Im Fehlerfall löst der Verbuchungs-Workprozess einen Datenbank-Rollback aus, lässt die Protokollsätze in den VB*-Tabellen stehen und kennzeichnet sie als fehlerhaft.

  7. Die Sperreinträge in der Sperrtabelle werden zurückgesetzt.

Notiz

Ob und wie die asynchrone Verbuchung genutzt wird, entscheidet der Anwendungsprogrammierer bei der Entwicklung der Transaktion. Neben der asynchronen Verbuchung gibt es noch einige weitere Verbuchungstechniken (zum Beispiel synchron oder lokal).

Um die Performance weiter zu erhöhen, können vom Anwendungsentwickler verschiedene Typen von Verbuchungen konfiguriert werden:

  • Zeitkritische, primäre V1-Verbuchungen. Sie betreffen Objekte, die eine Steuerfunktion im SAP-System haben, also zum Beispiel eine Änderung im Materialbestand oder eine Auftragserstellung.

  • Nicht zeitkritische, sekundäre V2-Verbuchungen, die von V1-Verbuchungen abhängen. Dies sind beispielsweise rein statistische Verbuchungen wie die Berechnung von Ergebnissen.

  • Nicht zeitkritische Verbuchungen, die gesammelt und zu einem späteren Zeitpunkt verarbeitet werden (Sammellauf).

Die V1-Module zu einer SAP-Transaktion werden nacheinander in einem einzigen Verbuchungs-Workprozess verarbeitet. Ist in Ihrem SAP-System ein Workprozess für V2-Verbuchungen (Typ UP2) vorhanden, erfolgt die Verbuchung der V2-Module ausschließlich dort. Nach erfolgreicher Verarbeitung gibt der V1-Verbuchungs-Workprozess die entsprechenden Sperren wieder frei. Hierdurch stehen die „normalen" Verbuchungs-Workprozesse schneller wieder für zeitkritische V1-Verbuchungen zur Verfügung, und die entsprechenden Sperreinträge werden schneller gelöscht. Haben Sie keine V2-Verbuchungs-Workprozesse konfiguriert, übernimmt der V1-Workprozess die gesamte Verbuchung.

Beim Sammellauf werden die Module nicht automatisch verbucht, sondern erst, wenn ein spezielles Programm (RSM13005) die Verbuchung auslöst. Dann werden alle Aufrufe der Funktionsbausteine gesammelt, verdichtet und auf einmal verbucht. Hierbei werden sie behandelt wie V2-Verbuchungsmodule.

Bei Fehlersituationen während der Verbuchung wird die Verarbeitung der aktuellen Verbuchungskomponente abgebrochen. Der Benutzer kann bei Verbuchungsabbrüchen vom System automatisch über eine Express-Mail benachrichtigt werden.

Wenn ein Dialog-Workprozess beim Schreiben in die VB*-Tabellen abbricht, enthalten die Tabellen Daten, die nicht verbucht werden. Diese Einträge können automatisch beim nächsten Start des SAP-Systems oder manuell gelöscht werden. Die eigentlichen Anwendungstabellen bleiben unverändert.

Eine asynchrone Verbuchung kann aus verschiedenen Gründen abbrechen. Wird zum Beispiel versucht, einen Datensatz (per Insert) mehrfach in eine Tabelle einzutragen, wird im Coding die Ausnahmebedingung „Duplicate Key" ausgelöst, weil unter diesem Schlüssel bereits ein Eintrag in der Tabelle existiert. Der entsprechende Datensatz kann deshalb nicht mehrfach in die Datenbanktabelle geschrieben werden.

Bei abgebrochenen Verbuchungen wird der die Verbuchungen auslösende Endanwender in Form einer Express-Mail benachrichtigt. Über die SAP-Systemadministration müssen dann weitere Schritte eingeleitet werden. Ihr stehen in der Transaktion SM13 (Verbuchungsaufträge) Analysewerkzeuge zur Behandlung abgebrochener Verbuchungen zur Verfügung. Nach der Behebung des den Abbruch verursachenden Fehlers (zum Beispiel nach Beseitigung des Hardwareschadens) sollte die Bearbeitung durch den Endanwender wiederholt werden.

Verwalten der Verbuchungsverarbeitung

Unternehmensszenario

Sie müssen in der Lage sein, abgebrochene Verbuchungsaufträge zu verwalten.

Drucken

Hinweis

Spool-Aufträge können sowohl im Dialog als auch im Hintergrund der jeweiligen Workprozesse erzeugt werden. Das heißt, Spool-Workprozesse erstellen keine Spool-Aufträge.

Notiz

Die Anbindung eines Spool-Workprozesses an den zuständigen Betriebssystem-Spool-Prozess wird im SAP-System als „Koppelart" bezeichnet. Es gibt mehr Koppelarten als die beiden oben dargestellten. Meist werden diese beiden Koppelarten zum Anbinden von Druckern an SAP-Systeme eingesetzt. In diesem Kontext gibt „remote" oder „lokal" keinen Hinweis auf den physischen Ort der Ausgabe, sondern beschreibt ausschließlich, wo der Spool-Workprozess an den Betriebssystem-Spool-Prozess „ankoppelt".

Für eine optimale Druckabwicklung empfiehlt sich die frühzeitige Übergabe von zu druckenden Daten an das Betriebssystem. Dies wird durch die lokale Kopplung erreicht. Das Betriebssystem übernimmt dann alle weiteren druckrelevanten Aufgaben wie Queueing und die Datenübermittlung an den gewählten Drucker.

Hinweis

Es ist eine für das Drucken aus SAP-Systemen geringfügige, aber unabdingbare Anforderung, dass auf jedem wählbaren Drucker das Drucken auch auf Betriebssystemebene möglich sein muss.

Sie können Ihre eigenen Spool- und Ausgabeaufträge anzeigen, indem Sie die Transaktion SP02 wählen.

Auf der Registerkarte Festwerte im Abschnitt Spool-Steuerung können Sie unter SystemBenutzervorgabenBenutzerdaten (Transaktionscode SU3) persönliche Einstellungen für den Druck festlegen.

Drucken einer einfachen Liste

Unternehmensszenario

SAP System Administration benötigt eine Liste aller Transaktionscodes beginnend mit SM.

Hintergrundverarbeitung

Die SAP-Hintergrundverarbeitung dient der Automatisierung von Routineaufgaben und der Optimierung des Einsatzes der SAP-Rechenressourcen Ihres Unternehmens. Bei der Hintergrundverarbeitung weisen Sie das SAP-System an, Programme für Sie auszuführen. Über die Hintergrundverarbeitung können Sie langlaufende oder ressourcenintensive Programme in Zeiten mit geringer Systemlast ausführen. Damit können Sie dem SAP-System die Aufgabe zuweisen, Programme auszuführen. Ihre Dialogressourcen werden nicht belastet, Programme, die im Hintergrund laufen, unterliegen nicht den Laufzeitbeschränkungen der Dialogverarbeitung (Abbruch des Programms nach einer Laufzeit von z.B. zehn Minuten).

Der Endbenutzer kann in der Regel aus der Anwendungstransaktion heraus das zu startende Programm im Hintergrund als Job einplanen. Der Job wartet dann in der Jobeinplanungstabelle auf den geplanten Ausführungszeitpunkt. Wenn der Zeitpunkt gekommen ist und freie Hintergrund-Workprozesse zu Verfügung stehen, wird der Job vom Background Scheduler auf einen Hintergrund-Workprozess verteilt und ausgeführt. Benutzer können das Ergebnis in der Anwendungstransaktion anzeigen oder bei listenerzeugenden Programmen den zum Job gehörenden Spool-Auftrag ansehen (siehe Abschnitt Drucken). Zum Anzeigen der eigenen Jobs wählen Sie in der Menüleiste SystemEigene Jobs (Transaktionscode SMX).

Die SAP-Systemadministration und die Arbeitsvorbereitung haben über Transaktion SM36 Zugriff auf ein Werkzeug zum Einplanen verschiedener Hintergrundaufgaben. Die systemweite Überwachung der Jobs erfolgt mit der Transaktion SM37.

Für die systemübergreifende Einplanung und Überwachung von Hintergrundaufgaben können SAP Central Process Scheduling und andere lizenzierte Partnerprodukte eingesetzt werden.

Hintergrundjobs einplanen

Unternehmensszenario

Als SAP-Systemadministrator oder Endanwender haben Sie die Aufgabe, ein Programm zur Ausführung im Hintergrund einzuplanen.

Kommunikation über das RFC-Gateway

Bei der Kommunikation zwischen Applikationsservern eines SAP-Systems oder zwischen SAP-Systemen per Remote Function Call (RFC) oder CPIC (Common Program Interface Communication) wird stets das Gateway involviert. Muss ein Dialog-Workprozess im Rahmen einer Anfrage eine RFC-Verbindung zu einem entfernten SAP-System herstellen, zum Beispiel um Kundendaten abzurufen, so wendet er sich an das Gateway, das die Kommunikation mit dem entfernten SAP-System übernimmt. Das Gateway leitet die Anfrage an das Gateway des entfernten SAP-Systems weiter. Das entfernte Gateway übergibt die Anfrage dann an den Dispatcher. Dieser wiederum leitet die Anfrage an einen seiner Workprozesse weiter, der schließlich direkt mit seinem lokalen Gateway kommuniziert.

Eingehende RFC-Verbindungen werden also stets vom Gateway entgegengenommen. Ausgehende Verbindungen werden vom Workprozess initiiert.

Verarbeitung von Web-Anfragen

Der ICM diese Anfrage an den ABAP-Dispatcher weiter, der diese Anfrage wie eine Anfrage des SAP GUIs behandelt (siehe voriger Abschnitt). Der Workprozess, der die Anfrage verarbeitet, kommuniziert nun direkt mit dem ICM. Der ICM schickt die Antwort dann an den anfragenden Benutzer zurück.

Die Workprozesse können direkt webfähige Inhalte erzeugen, die dann über den ICM an die anfragenden Browser-Frontends übergeben werden können.

Der ICM ermöglicht die Verwendung verschiedener UI-Technologien, wie SAPUI5, Web Dynpro ABAP oder Business Server Pages (BSP). In dieser Aufzählung stehen neuere Technologien weiter vorne.

Administrationsaufgaben für den AS ABAP

Die unten aufgeführten Transaktionen helfen bei der Bewältigung der täglichen Arbeit der SAP-Systemadministration. Als SAP-Systemadministrator sollten Sie mit der Verwendung und Interpretation dieser Transaktionen vertraut sein.

Über Transaktion SM51 können Sie die Applikationsserver anzeigen, die beim SAP Message Server angemeldet sind. Diese bilden die Applikationsserver des SAP-Systems. An ihrem Status können Sie erkennen, welche Applikationsserver im SAP-System aktiv sind.

Folgende Funktionen stehen Ihnen als Menüpunkte zur Verfügung; wichtige Menüpunkte sind zusätzlich als Drucktasten auf dem Bildschirm zu sehen. Von hier aus kann man in andere Transaktionen navigieren:

  • Workprozesse anzeigen und steuern (Transaktion SM50)

    Benutzermodi anzeigen und verwalten (Transaktion SM04)

  • Systemprotokolle (Transaktion SM21)

Auch die folgenden Transaktionen sind verfügbar:

  • Gateway-Monitor (Transaktion SMGW)
  • ICM Monitor (Transaktion SMICM)

  • Den Betriebssystemmonitor (ST06), um nur einige zu nennen

Transaktion SM50 zeigt eine Momentaufnahme des Zustands der Workprozesse auf dem Applikationsserver, auf dem Sie angemeldet sind. Sie erhalten aktuelle Informationen, wenn Sie die Anzeige aktualisieren. Die Prozessübersicht dient hauptsächlich dazu, Informationen zusammenzutragen. Sie können z.B. Prozesse überwachen, um festzustellen, ob die Zahl der Workprozesse im System angemessen ist und wie ausgelastet der Applikationsserver ist, oder um Informationen zur Fehlerbehebung oder zum Tuning zu sammeln.

Hinweis

Ab AS ABAP 7.40 können Sie auch alle Workprozesse systemweit in SM50 anzeigen: SpringenSystemweite Liste. Dies entspricht jetzt der Transaktion SM66.

Notiz

Neu ab AS ABAP 7.40 ist die Priorität von Anfragen:

  • Hoch: Priorität für Online-Sitzungen und interne Systemprozesse

  • Normal: Priorität für RFC-Aufrufe aus Online-Sitzungen

  • Niedrig: Priorität für Hintergrundverarbeitung (Batch) und RFC-Aufrufe von Hintergrundprogrammen (Batch-Jobs)

Notiz

Eine neue Funktion ab AS ABAP 7.50: Dialog-Workprozesse akzeptieren nur Anforderungen gemäß ihrer Workprozesspriorität (Wartepriorität):

  • Hoch: Akzeptiert nur Anfragen mit hoher Priorität

  • Mittel: Akzeptiert Anfragen mit hoher und normaler Priorität, nur

  • Niedrig: Akzeptiert alle Prioritäten: Anfragen mit hoher, normaler und niedriger Priorität.

Mithilfe der Transaktion SM04 können Sie alle Benutzer anzeigen, die im SAP-System auf diesem Applikationsserver angemeldet sind. Ab AS ABAP 7.40 können mithilfe der Transaktion SM04 auch die angemeldeten Benutzer systemweit angezeigt werden.

Hinweis

Ab AS ABAP 7.40 können Sie auch alle Benutzer, die am System angemeldet sind, in der Transaktion SM04: SpringenSystemweite Liste anzeigen. Dies entspricht jetzt der Transaktion AL08.

Mithilfe der Transaktion zur Benutzerpflege (SU01) können einzelne Benutzerstammsätze gepflegt werden. Der Benutzeradministrator kann damit neue Benutzerstammsätze anlegen oder bestehende Benutzerstammsätze ändern und z.B. neue Rollen und Berechtigungsprofile zuordnen.

Für die Massenpflege von Benutzern gibt es die Transaktion SU10.

Mithilfe der Transaktion SM36 können Sie Hintergrundjobs im SAP-System anlegen.

Über die Transaktion SM37 können Sie eine Übersicht über die Hintergrundjobs im SAP-System anzeigen.

Die Transaktion SM21 dient zur Analyse des Systemprotokolls.

Sperreinträge in der Sperrtabelle des Enqueue-Workprozesses lassen sich über die Transaktion SM12/SMENQ verwalten. Die Sperrverwaltung dient dazu, die Sperrlogik im SAP-System zu überwachen. Sie können ermitteln, welche Sperren momentan gehalten werden.

Mithilfe der Verbuchungsverwaltung (Transaktion SM13) können Sie folgende Aufgaben durchführen:

  • Verbuchungsaufträge anzeigen

  • Probleme im Zusammenhang mit der Verbuchung analysieren

  • abgebrochene Verbuchungsaufträge testen und bereinigen

  • den Status von Verbuchungsaufträgen anzeigen und zurücksetzen

  • Verbuchungsaufträge löschen

  • Statistiken über die Verbuchung anzeigen

Diese Funktion dient dazu, sich einen Überblick über die Verbuchungsaufträge zu verschaffen und aufgetretene Probleme zu untersuchen. Ordnungsgemäß verbuchte Aufträge werden hier nicht angezeigt.

Zusätzlich zu den Alerts weist das SAP-System jeden Benutzer, dessen Verbuchung abgebrochen wurde, mit einer Express-Mail auf den Verbuchungsfehler hin. Die Mail wird in dem SAP-System gesendet, in dem das Problem auftrat.

Wenn Sie allen Benutzern des SAP-Systems eine Nachricht zukommen lassen möchten, können Sie mithilfe der Transaktion SM02 eine Systemnachricht verschicken. Es ist auch möglich, den Empfängerkreis auf Benutzer eines Mandanten oder auf Benutzer, die an einem bestimmten Applikationsserver angemeldet sind, zu beschränken. Eine Nachricht wird dem Empfänger nur einmal täglich angezeigt. Das SAP-System zeigt Nachrichten an:

  • wenn ein Benutzer sich am SAP-System anmeldet

  • (bei bereits angemeldeten Benutzern) sobald der Benutzer den nächsten Dialog-Schritt ausführt

Die Funktionen des Computing Center Management System (CCMS)

Das Computing Center Management System (CCMS) umfasst eine integrierte Sammlung von Werkzeugen für die Verwaltung, den Betrieb sowie die Überwachung von SAP-Systemen.

Die Funktionen des CCMS umfassen:

  • Hintergrundverarbeitung und Job-Monitoring (SM37)

  • Konfiguration der Druckerlandschaft (SPAD)

  • Feineinstellung (Tuning) der Hauptspeicherbereiche des SAP-Systems (ST02)

  • Datenbankverwaltung (z.B. Backup) (DBACOCKPIT)

  • Konfiguration der SAP-Systemprofile (RZ10)

  • Dynamische Lastverteilung (SMLG)

  • SAP System Monitoring (RZ20)

Der Aufruf dieser Funktionen befindet sich im SAP-Menübaum unter Werkzeuge CCMS und ist in Kategorien wie Verwaltung und Überwachung, Konfiguration, DB-Administration, Druck und Hintergrundverarbeitung strukturiert. Die oben angegebene Liste zeigt nur einige der zur Verfügung stehenden Funktionen. SAP-Systemadministratoren verwenden viele dieser Funktionen täglich.

Nachtrag: ABAP-Message-Server

In jedem SAP-System läuft genau ein Message Server. Dieser übernimmt folgende Aufgaben im SAP-System:

  • Zentraler Kommunikationskanal zwischen den einzelnen Applikationsservern des SAP-Systems. Damit wird eine applikationsserverübergreifende Nutzung bestimmter Workprozesstypen ermöglicht.

  • Lastverteilung bei Anmeldungen über SAP GUI und RFC mit Logongruppen

  • Informationsstelle für den SAP Web Dispatcher und die Applikationsserver. Jeder Applikationsserver des SAP-Systems meldet sich zunächst beim Message Server an.

Beim Start eines Applikationsservers kontaktiert der Dispatcher-Prozess den Message Server, um die von ihm zur Verfügung gestellten Dienste (DIA, BTC, SPO, UPD usw.) bekanntzugeben. Wenn der Verbindungsaufbau zum Message Server fehlschlägt, wird ein Eintrag im Systemprotokoll (syslog) vorgenommen, das Sie über die Transaktion SM21 analysieren können.

Fällt der Message Server aus, muss er so bald wie möglich neu gestartet werden, um einen reibungslosen Betrieb des SAP-Systems zu gewährleisten.

In verschiedenen Situationen kann es wichtig sein, den (ABAP) Message Server eines SAP-Systems genauer zu untersuchen. Hierfür stehen mehrere Optionen zur Verfügung. Sie können z.B. die Transaktion SMMS (den Message-Server-Monitor) im AS ABAP verwenden, um den Message Server zu überwachen. Auf dem Einstiegsbild sieht man den Status der derzeit aktiven Applikationsserver, ähnlich wie in Transaktion SM51. Sie können alle wichtigen Einstellungen prüfen und ändern, Trace-Dateien erzeugen und anzeigen, Statistiken lesen usw.

Folgende Funktionen stehen Ihnen als Menüpunkte zur Verfügung; wichtige Menüpunkte sind zusätzlich als Drucktasten auf dem Bildschirm zu sehen.

  • Einstiegsbild: Das Einstiegsbild dieser Transaktion zeigt den Status aller aktiven Anwendungsserver an, ähnlich der Transaktion SM51.

  • SpringenAnzeige der Anmeldedaten : Hier finden Sie Informationen zu den verfügbaren Kommunikationsprotokollen und Ports (z.B. Dialog, RFC, HTTP, SMTP usw.).

  • SpringenHardware-Schlüssel zeigt den Hardware-Schlüssel (auch „Kundenschlüssel" genannt) der Message-Server-Hardware an.

  • SpringenProfilparameterAnzeigen bietet umfassende Informationen über den verwendeten Message Server

  • SpringenTrace-DateiAnzeigen zeigt die Trace-Datei (dev_ms) an.

Darüber hinaus steht Ihnen eine Reihe von Programmen auf Betriebssystemebene zur Verfügung. Sie finden die Testprogramme normalerweise im Kernel-Verzeichnis.

Das Überwachungsprogramm msmon stellt dieselben Funktionen bereit wie die Transaktion SMMS im SAP-System.

Sie können das Testprogramm lgtst verwenden, um die Verbindung zum Message Server zu prüfen und sich die aktiven Applikationsserver und Logongruppen, die der Message Server gerade sieht, anzeigen zu lassen.

Mit dem Programm msprot können Sie den Message Server überwachen. Das Programm gibt kontinuierlich den Status der am Message Server angemeldeten Applikationsserver aus und wird beendet, wenn der Message Server beendet wird. So werden Sie über den Abbruch des Message Servers informiert und können entsprechend darauf reagieren.