Sie sind auf Seite 1von 348

BC 425 Erweiterungen und Modifikationen

BC425

Release 730 18.09.2009


BC 425 Erweiterungen und Modifikationen............................................................................................................0-1
Copyright.............................................................................................................................................................0-2
Voraussetzungen für Teilnehmer.....................................................................................................................0-3
Zielgruppe........................................................................................................................................................0-4
Grobziel des Kurses.........................................................................................................................................0-5
Einführung: Inhalt................................................................................................................................................1-1
Zielsetzungen des Kurses.................................................................................................................................1-2
Lernziele des Kurses........................................................................................................................................1-3
Inhaltsverzeichnis............................................................................................................................................1-4
Übersichtsdiagramm........................................................................................................................................1-5
Gesamtunternehmensszenario.........................................................................................................................1-6
Änderungen des SAP-Standards..........................................................................................................................2-1
Änderungen des SAP-Standards: Lernziele des Kapitels................................................................................2-2
Übersichtsdiagramm Änderungen des Standards............................................................................................2-3
Änderungsebenen.............................................................................................................................................2-4
Vorgehensweise bei Funktionalitätsänderungen.............................................................................................2-5
Customizing.....................................................................................................................................................2-6
Personalizing....................................................................................................................................................2-7
Änderungsebenen mit ABAP-Workbench-Einsatz.........................................................................................2-8
Tabellenerweiterungen.....................................................................................................................................2-9
Tabellenerweiterungen: SAP und Kunde......................................................................................................2-10
Programm-Erweiterungen: Funktionsweise..................................................................................................2-11
Programm-Erweiterungen: SAP und Kunde..................................................................................................2-12
Menü-Erweiterungen: SAP und Kunde.........................................................................................................2-13
Dynpro-Erweiterungen..................................................................................................................................2-14
Modifikationen...............................................................................................................................................2-15
Änderungen des SAP Standards: Zusammenfassung des Kapitels...............................................................2-16
Verwendete Daten..........................................................................................................................................2-17
Personalisierung...................................................................................................................................................3-1
Personalisierung: Lernziele des Kapitels.........................................................................................................3-2
Personalisierung: Unternehmensszenario........................................................................................................3-3
Übersichtsdiagramm Personalisierung............................................................................................................3-4
Personalisierungsebenen..................................................................................................................................3-5
Transaktionsvarianten: Ziele............................................................................................................................3-6
Individuelle Variante und Standardvariante....................................................................................................3-7
Screen-Varianten.............................................................................................................................................3-8
Transaktionsvarianten: Beispiel.......................................................................................................................3-9
Transaktionsvarianten anlegen......................................................................................................................3-10
Transaktionsvarianten: Dynpro-Felder bewerten..........................................................................................3-11
Attribute einer Screen-Varianten...................................................................................................................3-12
Transaktionsvarianten: Testen und verwenden..............................................................................................3-13
Variantentransaktion anlegen........................................................................................................................3-14
GuiXT............................................................................................................................................................3-15
GuiXT: Scriptsprache....................................................................................................................................3-16
Personalisierung: Zusammenfassung des Kapitels........................................................................................3-17
Personalisierung Übungen.............................................................................................................................3-18
Personalisierung Lösungen............................................................................................................................3-20
Erweiterungen an Elementen des Dictionary.......................................................................................................4-1
Erweiterungen an Elementen des Dictionary: Lernziele des Kapitels.............................................................4-2
Übersichtsdiagramm Erweiterung ABAP Dictionary......................................................................................4-3
Tabellenerweiterungen: Lernziele...................................................................................................................4-4
Tabellenerweiterungen: Überblick..................................................................................................................4-5
Append-Strukturen...........................................................................................................................................4-6
Append-Strukturen beim Upgrade...................................................................................................................4-7
Customizing-Includes......................................................................................................................................4-8
Texterweiterungen: Lernziele..........................................................................................................................4-9
Texterweiterungen: Überblick.......................................................................................................................4-10
Überlagerung von SAP-Feldbezeichnern (1).................................................................................................4-11
Überlagerung von SAP-Feldbezeichnern (2).................................................................................................4-12
Voraussetzung für Überlagerung eines SAP-Feldbezeichners......................................................................4-13
Textüberlagerungen bei Releasewechsel.......................................................................................................4-14
SAP-Feldbezeichner restaurieren..................................................................................................................4-15
Erweiterte Dokumentation zu SAP-Datenelementen....................................................................................4-16
Kundeneigene Dokumentation anlegen.........................................................................................................4-17
Erweiterungen an Elementen des Dictionary: Zusammenfassung des Kapitels............................................4-18
Erweiterungen an Objekten des Dictionary Übungen...................................................................................4-19
Erweiterungen an Objekten des Dictionary Lösungen..................................................................................4-20
Erweiterungen über Customer-Exits....................................................................................................................5-1
Erweiterungen über Customer-Exits: Lernziele des Kapitels..........................................................................5-2
Übersichtsdiagramm Erweiterung Customer-Exits.........................................................................................5-3
Customer-Exits: Überblick..............................................................................................................................5-4
SAP-Anwendungserweiterung........................................................................................................................5-5
Kundenerweiterungsprojekt.............................................................................................................................5-6
Erweiterungen und Erweiterungsprojekte.......................................................................................................5-7
Customer-Exits: Erweiterungsverwaltung.......................................................................................................5-8
Vorgehen bei SAP...........................................................................................................................................5-9
Vorgehen beim Kunden.................................................................................................................................5-10
Kundenerweiterungsprojekt anlegen.............................................................................................................5-11
SAP-Erweiterungen Kundenprojekt zuordnen..............................................................................................5-12
Komponenten bearbeiten...............................................................................................................................5-13
Erweiterungsprojekt aktivieren......................................................................................................................5-14
Transport von Projekten.................................................................................................................................5-15
Customer-Exits: Programm-Exit...................................................................................................................5-16
Überblick Programm-Exit..............................................................................................................................5-17
Programm-Exit: Architektur..........................................................................................................................5-18
Programm-Exit: Syntax.................................................................................................................................5-19
Programm-Exits finden..................................................................................................................................5-20
Programm-Exit bearbeiten.............................................................................................................................5-21
Aufbau einer Funktionsgruppe......................................................................................................................5-22
Aufbau einer Exit-Funktionsgruppe..............................................................................................................5-23
Globale Daten einer Exit-Funktionsgruppe...................................................................................................5-24
Kundeneigene Verarbeitungsblöcke..............................................................................................................5-25
Weitere SAP-Objekte einer Exit-Funktionsgruppe.......................................................................................5-26
Kunden-Objekte in einer Exit-Funktionsgruppe............................................................................................5-27
Kundeneigene Dynpros..................................................................................................................................5-28
Zusammenfassung Programm-Exits..............................................................................................................5-29
Customer-Exits: Menü-Exit...........................................................................................................................5-30
Überblick Menü-Exits....................................................................................................................................5-31
Voraussetzung für Menü-Exits......................................................................................................................5-32
Menü- und Programm-Exits..........................................................................................................................5-33
Name und Bearbeitung von Menü-Exits.......................................................................................................5-34
Customer-Exits: Dynpro-Exit........................................................................................................................5-35
Überblick Dynpro-Exit..................................................................................................................................5-36
Subscreens (allgemein)..................................................................................................................................5-37
Aufruf eines normalen Subscreens................................................................................................................5-38
Definition eines Dynpro-Exits.......................................................................................................................5-39
Aufruf eines Customer-Subscreens...............................................................................................................5-40
Datentransport zum Subscreen......................................................................................................................5-41
Datentransport vom Subscreen......................................................................................................................5-42
Name und Bearbeitung von Dynpro-Exits.....................................................................................................5-43
Subscreens bearbeiten....................................................................................................................................5-44
Erweiterungen über Customer-Exits : Zusammenfassung des Kapitels........................................................5-45
Customer-Exits Übungen...............................................................................................................................5-46
Customer-Exits Lösungen..............................................................................................................................5-49
Business Transaction Events...............................................................................................................................6-1
Business Transaction Events: Lernziele des Kapitels......................................................................................6-2
Übersichtsdiagramm Business Transaction Events.........................................................................................6-3
Software-Auslieferungswege...........................................................................................................................6-4
Business Transaction Events (Eigenschaften).................................................................................................6-5
BTE: Funktionsweise / Ablaufdiagramm........................................................................................................6-6
BTE: Aufrufsyntax im SAP-Programm...........................................................................................................6-7
BTE: Mögliche Szenarien (1)..........................................................................................................................6-8
BTE: Mögliche Szenarien (2)..........................................................................................................................6-9
P/S- und Prozess-Schnittstellen.....................................................................................................................6-10
BTE: SAP und Kunde....................................................................................................................................6-11
BTE: Suche....................................................................................................................................................6-12
BTE: Dokumentation.....................................................................................................................................6-13
BTE: Produkt.................................................................................................................................................6-14
Implementieren eines BTE............................................................................................................................6-15
Vergleich: Customer-Exits und BTEs...........................................................................................................6-16
Business Transaction Events: Zusammenfassung des Kapitels.....................................................................6-17
Business Add Ins.................................................................................................................................................7-1
Business Add Ins: Lernziele des Kapitels........................................................................................................7-2
Business Add Ins: Unternehmensszenario.......................................................................................................7-3
Übersichtsdiagramm Business Add Ins...........................................................................................................7-4
Business Add Ins: Motivation..........................................................................................................................7-5
Software-Auslieferungswege...........................................................................................................................7-6
Interfaces: Lernziele........................................................................................................................................7-7
Objekte.............................................................................................................................................................7-8
Instanzen von Funktionsgruppen als Objekte..................................................................................................7-9
Klassen verallgemeinern Funktionsgruppen..................................................................................................7-10
Interfaces........................................................................................................................................................7-11
BAdIs suchen und implementieren: Lernziele...............................................................................................7-12
Business Add Ins: Architektur.......................................................................................................................7-13
Business Add Ins: Komponenten...................................................................................................................7-14
Business Add Ins: Ablauf eines Programm-Exits..........................................................................................7-15
Business Add Ins: Aufrufsyntax im SAP-Programm....................................................................................7-16
Business Add Ins finden................................................................................................................................7-17
Business Add Ins implementieren: Einstieg..................................................................................................7-18
BAdIs implementieren: Methoden.................................................................................................................7-19
BAdIs implementieren: private Methoden....................................................................................................7-20
BAdIs implementieren: Implementierung aktivieren....................................................................................7-21
BAdI: Menü-Exit (Überblick).......................................................................................................................7-22
BAdI: Menü-Exit (SAP-Vorbereitung).........................................................................................................7-23
BAdI: Menü-Exit (Funktionscode-Verarbeitung).........................................................................................7-24
BAdI: Menü-Exit (Einschränkung)...............................................................................................................7-25
Definition von BAdIs: Lernziele...................................................................................................................7-26
BAdI-Definition: Einstieg..............................................................................................................................7-27
BAdI-Definition: Eigenschaften....................................................................................................................7-28
BAdI-Definition: Einschränkungen bei Menü-Exits.....................................................................................7-29
BAdI-Definition: Interface-Methoden definieren..........................................................................................7-30
BAdI-Definition: Methoden-Schnittstellenparameter...................................................................................7-31
BAdI-Definition: BAdI-Interface aktivieren.................................................................................................7-32
BAdI-Definition: Aufruf im Programm.........................................................................................................7-33
Aufruf eines filterabhängigen BAdIs.............................................................................................................7-34
BAdI-Dynpro-Exit anlegen: Lernziele..........................................................................................................7-35
BAdI-Dynpro-Exit: Prinzip...........................................................................................................................7-36
BAdI-Dynpro-Exit: Komponenten................................................................................................................7-37
BAdI-Dynpro-Exit: PBO des Träger-Dynpros..............................................................................................7-38
BAdI-Dynpro-Exit: PAI des Träger-Dynpros...............................................................................................7-39
PBO-Schritte (1) : BAdI-Instanz erzeugen....................................................................................................7-40
PBO-Schritte (2) : Instanz publizieren...........................................................................................................7-41
PBO-Schritte (3) : Subscreen-Nummer beschaffen.......................................................................................7-42
PBO-Schritte (4) : Daten bereitstellen...........................................................................................................7-43
PBO-Schritte (5) : Subscreen integrieren......................................................................................................7-44
PAI-Schritte : Subscreen rufen und Daten laden...........................................................................................7-45
BAdI-Dynpro-Exit implementieren: Lernziele..............................................................................................7-46
BAdI-Dynpro-Exit implementieren: Schritte................................................................................................7-47
PBO-Schritte (1) : BAdI-Instanz beschaffen.................................................................................................7-48
PBO-Schritte (2) : Daten für Subscreen beschaffen......................................................................................7-49
PAI-Schritt : Daten zurückschreiben.............................................................................................................7-50
BAdIs - weitere Anmerkungen: Lernziele.....................................................................................................7-51
Erweiterbare Filtertypen: Voraussetzungen...................................................................................................7-52
Default-Implementierung...............................................................................................................................7-53
Vergleich mit anderen Erweiterungstechniken..............................................................................................7-54
Namenskonventionen (BAdI-Definition)......................................................................................................7-55
Namenskonventionen (BAdI-Implementierung)...........................................................................................7-56
Business Add-Ins: Zusammenfassung des Kapitels......................................................................................7-57
Business Add Ins Übungen............................................................................................................................7-58
Business Add Ins Lösungen...........................................................................................................................7-63
Modifikationen.....................................................................................................................................................8-1
Modifikationen: Lernziele des Kapitels...........................................................................................................8-2
Übersichtsdiagramm Modifikationen..............................................................................................................8-3
Originale und Kopien.......................................................................................................................................8-4
Korrekturen und Reparaturen..........................................................................................................................8-5
Modifikationen beim Upgrade.........................................................................................................................8-6
Modifikationen durchführen: Lernziele...........................................................................................................8-7
Registrierung der Modifikation im SSCR.......................................................................................................8-8
Aufnahme einer registrierten Modifikation.....................................................................................................8-9
Aktionen bei Modifikationsende...................................................................................................................8-10
Versionen.......................................................................................................................................................8-11
Kritische Erfolgsfaktoren Modifikation (1)...................................................................................................8-12
Kritische Erfolgsfaktoren Modifikation (2)...................................................................................................8-13
Modifikations-Logbuch (Beispiel)................................................................................................................8-14
Modifikationsassistent: Lernziele..................................................................................................................8-15
Modifikationsassistent: Ziele.........................................................................................................................8-16
Modifikationsassistent: Funktionsweise........................................................................................................8-17
Modifikationsabgleich gestern und heute......................................................................................................8-18
Modifikationsassistent: Softwareschichten....................................................................................................8-19
Modifikationsassistent: Unterstützte Werkzeuge..........................................................................................8-20
Modifikationsassistent: Voraussetzungen......................................................................................................8-21
Ikonen des Modifikationsassistenten.............................................................................................................8-22
Modifikationsassistent: Beispiel ABAP-Editor.............................................................................................8-23
Modifikationsübersicht..................................................................................................................................8-24
Zurücksetzen auf Original.............................................................................................................................8-25
Modification Browser....................................................................................................................................8-26
User-Exit: Lernziele.......................................................................................................................................8-27
User-Exit: Aufbau eines SAP-Modulpools....................................................................................................8-28
User-Exit : Realisierung.................................................................................................................................8-29
User-Exit: Beispiel.........................................................................................................................................8-30
User-Exits : Suche.........................................................................................................................................8-31
SAP Note Assistant: Lernziele......................................................................................................................8-32
SAP Note Assistant: Prinzip..........................................................................................................................8-33
SAP Note Assistant: Vorteile........................................................................................................................8-34
SAP Note Assistant: Arbeitsschritte..............................................................................................................8-35
SAP Note Assistant: Arbeitsvorrat................................................................................................................8-36
SAP Note Assistant: Hinweise laden.............................................................................................................8-37
SAP Note Assistant: Hinweis-Browser.........................................................................................................8-38
SAP Note Assistant: Hinweis einbauen.........................................................................................................8-39
SAP Note Assistant: Weitere Merkmale.......................................................................................................8-40
SAP Note Assistant: Hinweise mit Abhängigkeiten......................................................................................8-41
SAP Note Assistant: Modifikationsabgleich.................................................................................................8-42
Manuelles Erfassen von Hinweiskorrekturen................................................................................................8-43
Modifikationsabgleich: Lernziele..................................................................................................................8-44
Abzugleichende Objekte................................................................................................................................8-45
Modifikationsabgleich: SPDD und SPAU.....................................................................................................8-46
Objekte des Modifikationsabgleichs..............................................................................................................8-47
Abgleich-Transport zwischen Systemen.......................................................................................................8-48
Modifikationsabgleich: Einstieg....................................................................................................................8-49
Ikonen des Modifikationsabgleichs...............................................................................................................8-50
Modifikationen: Zusammenfassung des Kapitels..........................................................................................8-51
Modifikationen Übungen...............................................................................................................................8-52
Modifikationen Lösungen..............................................................................................................................8-63
Zusammenfassung...............................................................................................................................................9-1
Zusammenfassung: Lernziele des Kapitels......................................................................................................9-2
Vermeidung des Abgleichs..............................................................................................................................9-3
Tabellenerweiterungen.....................................................................................................................................9-4
Programm-Exit: Architektur............................................................................................................................9-5
BTE: Funktionsweise / Ablaufdiagramm........................................................................................................9-6
Business Add Ins: Ablauf eines Programm-Exits............................................................................................9-7
Überblick Menü-Exits......................................................................................................................................9-8
BAdI: Menü-Exit (Überblick).........................................................................................................................9-9
Überblick Dynpro-Exit..................................................................................................................................9-10
BAdI-Dynpro-Exit: Prinzip...........................................................................................................................9-11
Modifizieren vs. Kopieren.............................................................................................................................9-12
Bewertung von ABAP Entwicklungsprojekten.............................................................................................9-13
Namenskonventionen für Repository-Objekte..............................................................................................9-14
Zusammenfassung: Zusammenfassung des Kapitels.....................................................................................9-15
Anhang...............................................................................................................................................................10-1
Neuerungen im Bereich.................................................................................................................................10-2
Neues Erweiterungskonzept (Überblick).......................................................................................................10-3
Enhancement Points.......................................................................................................................................10-4
Implizite Enhancement Points (1)..................................................................................................................10-5
Implizite Enhancement Points (2)..................................................................................................................10-6
Explizite Enhancement Points und Sections..................................................................................................10-7
Gründe für die neue BAdI-Technik...............................................................................................................10-8
Klassische BAdIs (Architektur).....................................................................................................................10-9
Klassische BAdIs (Aufrufsyntax im SAP-Objekt)......................................................................................10-10
Neue BAdIs (Architektur)...........................................................................................................................10-11
Neue BAdIs (Aufrufsyntax im SAP-Objekt)...............................................................................................10-12
Suche nach BAdIs........................................................................................................................................10-13
Nutzung von BAdIs.....................................................................................................................................10-14
Filterabhängige BAdIs.................................................................................................................................10-15
Switch Framework.......................................................................................................................................10-16
Übung: Implizite Enhancement Points........................................................................................................10-17
Übung: Explizite Enhancement Points und Enhancement Sections............................................................10-18
Übung: Neue BAdIs....................................................................................................................................10-19
Feld-Exits: Lernziele....................................................................................................................................10-20
Globale Erweiterungen................................................................................................................................10-21
Feld-Exits.....................................................................................................................................................10-22
Globale und lokale Feld-Exits.....................................................................................................................10-23
Anlegen eines Feld-Exits.............................................................................................................................10-24
Feld-Exit: Quelltext.....................................................................................................................................10-25
Lokaler Feld-Exit.........................................................................................................................................10-26
Feld-Exit aktivieren.....................................................................................................................................10-27
Append-Suchhilfen: Lernziele.....................................................................................................................10-28
Append-Suchhilfen......................................................................................................................................10-29
Business Data Toolset: Lernziele................................................................................................................10-30
Business Data Toolset (BDT)......................................................................................................................10-31
Entwicklung: Ohne BDT.............................................................................................................................10-33
Schnellere Entwicklung: Mit BDT..............................................................................................................10-34
Verwendbarkeit bei beliebigen Objekten....................................................................................................10-35
Zeitpunkte, Ablauf.......................................................................................................................................10-36
BDT-Entwicklung und Development Workbench......................................................................................10-37
Anhang Übungen.........................................................................................................................................10-38
Anhang Lösungen........................................................................................................................................10-40
0
BC 425 Erweiterungen und Modifikationen

BC425
Erweiterungen und Modifikationen

THE BEST-RUN BUSINESSES RUN SAP

 SAP AG©2006
SAP AG 2006

 Systemanforderung: SAP Basis 4.6 oder höher


 2006/Q2
 Materialnummer: 50081598
0.2
Copyright

Copyright 2007 SAP AG. Alle Rechte vorbehalten.

Weitergabe und Vervielfältigung dieser Publikation oder von


Teilen daraus sind, zu welchem Zweck und in welcher Form
auch immer, ohne die ausdrückliche schriftliche Genehmigung
durch SAP AG nicht gestattet. In dieser Publikation enthaltene
Informationen können ohne vorherige Ankündigung geändert
werden.

 SAP AG 2006

 Die von SAP AG oder deren Vertriebsfirmen angebotenen Softwareprodukte können Softwarekomponenten
auch anderer Softwarehersteller enthalten.
 Microsoft, Windows, Outlook, und PowerPoint sind eingetragene Marken der Microsoft Corporation.
 IBM, DB2, DB2 Universal Database, OS/2, Parallel Sysplex, MVS/ESA, AIX, S/390, AS/400, OS/390,
OS/400, iSeries, pSeries, xSeries, zSeries, z/OS, AFP, Intelligent Miner, WebSphere, Netfinity, Tivoli, und
Informix sind Marken oder eingetragene Marken der IBM Corporation in den USA und/oder anderen Ländern.
 Oracle ist eine eingetragene Marke der Oracle Corporation.
 UNIX, X/Open, OSF/1, und Motif sind eingetragene Marken der Open Group.
 Citrix, ICA, Program Neighborhood, MetaFrame, WinFrame, VideoFrame, und MultiWin sind Marken oder
eingetragene Marken von Citrix Systems, Inc.
 HTML, XML, XHTML und W3C sind Marken oder eingetragene Marken des W3C®, World Wide Web
Consortium, Massachusetts Institute of Technology.
 Java ist eine eingetragene Marke von Sun Microsystems, Inc.
 JavaScript ist eine eingetragene Marke der Sun Microsystems, Inc., verwendet unter der Lizenz der von
Netscape entwickelten und implementierten Technologie.
 MaxDB ist eine Marke von MySQL AB, Schweden.
 SAP, R/3, mySAP, mySAP.com, xApps, xApp und weitere im Text erwähnte SAP-Produkte und
-Dienstleistungen sowie die entsprechenden Logos sind Marken oder eingetragene Marken der
SAP AG in Deutschland und anderen Ländern weltweit. Alle anderen Namen von Produkten und
Dienstleistungen sind Marken der jeweiligen Firmen. Die Angaben im Text sind unverbindlich und dienen
lediglich zu Informationszwecken. Produkte können länderspezifische Unterschiede aufweisen.
 In dieser Publikation enthaltene Informationen können ohne vorherige Ankündigung geändert werden. Die
vorliegenden Angaben werden von SAP AG und ihren Konzernunternehmen („SAP-Konzern“) bereitgestellt
und dienen ausschließlich Informationszwecken. Der SAP-Konzern übernimmt keinerlei Haftung oder
Garantie für Fehler oder Unvollständigkeiten in dieser Publikation. Der SAP-Konzern steht lediglich für
Produkte und Dienstleistungen nach der Maßgabe ein, die in der Vereinbarung über die jeweiligen Produkte
und Dienstleistungen ausdrücklich geregelt ist. Aus den in dieser Publikation enthaltenen Informationen ergibt
sich keine weiterführende Haftung.
0.3
Voraussetzungen für Teilnehmer

 BC400 - Grundlagen der ABAP Workbench


 Kenntnisse in ABAP Objects (hilfreich)
 Erfahrung in Customizing-Projekten (nützlich)

 SAP AG 2006
0.4
Zielgruppe

 Teilnehmer
 Projektleiter und -mitarbeiter, die mit der Anpassung der
SAP-Funktionalität an die Unternehmensbedürfnisse
beauftragt sind

 Dauer: 3 Tage

 SAP AG 2006

Benutzerhinweise
 Die Schulungsunterlagen bilden keine Selbstlernprogramme. Nur in Verbindung mit den
Erläuterungen des Referenten/der Referentin haben Sie komplette Unterlagen. Auf Ihren Unterlagen
haben Sie Platz, um diese Zusatzinformationen zu notieren.
0.5
Grobziel des Kurses

Dieser Kurs vermittelt Ihnen Kenntnisse zu:

 Anpassen des SAP-Standards an die


Kundenbedürfnisse durch
 Personalisierungstechniken
 Erweiterung des von SAP ausgelieferten
Standards
 Modifikation des SAP-Standards und
Modifikationsabgleich

 SAP AG 2006
1
Einführung: Inhalt

 Grobziel des Kurses


 Lernziele des Kurses
 Inhaltsverzeichnis
 Übersichtsdiagramm
 Gesamtunternehmensszenario
 Einführung des Kurses

 SAP AG 2006

(C) SAP AG BC425 1


1.2
Zielsetzungen des Kurses

Dieser Kurs ermöglicht es Ihnen:


 Änderungen am SAP-Standard fachgerecht
durchzuführen.
 die verschiedenen Änderungsmethoden bewerten
zu können und je nach Sachlage die richtige
auszuwählen

 SAP AG 2006

(C) SAP AG BC425 2


1.3
Lernziele des Kurses

Am Ende des Kurses können Sie:

 einen Überblick über die verschiedenen


Änderungsebenen des SAP-Systems geben
 Dictionary-Objekte erweitern, ohne sie zu modifizieren
 Erweiterungen des SAP-Standards mit Hilfe von
User-Exits, Customer-Exits, Business Transaction
Events und Business Add Ins realisieren
 Modifikationen mit Hilfe des Modifikationsassistenten
durchführen und abgleichen

 SAP AG 2006

(C) SAP AG BC425 3


1.4
Inhaltsverzeichnis

Vorspann

Kapitel 1 Kursüberblick
Kapitel 2 Änderungen des SAP Standards
Kapitel 3 Personalisierung
Kapitel 4 Erweiterungen an Elementen des Dictionary
Kapitel 5 Erweiterungen über Customer-Exits
Kapitel 6 Business Transaction Events
Kapitel 7 Business Add Ins
Kapitel 8 Modifikationen
Kapitel 9 Zusammenfassung
Kapitel 10 Anhang

Die Übungen und Lösungen finden Sie am Ende des jeweiligen Kapitels
 SAP AG 2006

(C) SAP AG BC425 4


1.5
Übersichtsdiagramm

SAP Business Anwendungen


(SAP-
(SAP-Standard)
Standard)

Personali
Modifikation Erweiterung
sierung
Transaktions Modifikationsassistent ABAP Dictionary
varianten  Tabellen
4
User-Exits  Datenelemente

Customer-Exits 5
3 8 Business Transaction Events 6
Business Add Ins 7

Überblick 2
 SAP AG 2006

(C) SAP AG BC425 5


1.6
Gesamtunternehmensszenario

 Als Mitarbeiter der EDV-Abteilung eines


Reiseveranstalters haben Sie die Aufgabe, die
von Ihren Kundenberatern eingesetzten SAP-
Programme um Funktionalität zu erweitern
 Dazu stehen Ihnen verschiedene Möglichkeiten
zur Verfügung, die Sie einsetzen können

 SAP AG 2006

(C) SAP AG BC425 6


2
Änderungen des SAP-Standards

Inhalt:
 Überblick über die Anpassungsmöglichkeiten +
Entscheidungsdiagramm zur Auswahl der Anpassungstechnik
 Erweiterungsarten

 SAP AG 2006

(C) SAP AG BC425 1


2.2
Änderungen des SAP-Standards: Lernziele des
Kapitels

Am Ende dieses Kapitels können Sie:

 erklären, auf welchen Ebenen Sie den von SAP


ausgelieferten Standard ändern können
 die geeignete Methode auswählen, mit deren Hilfe
Sie den Standard verändern
 aufzählen, welche Erweiterungsarten es gibt und
erklären, wozu sie genutzt werden können

 SAP AG 2006

(C) SAP AG BC425 2


2.3
Übersichtsdiagramm Änderungen des Standards

SAP Business Anwendungen


(SAP-
(SAP-Standard)
Standard)

Personali
Modifikation Erweiterung
sierung
Transaktions Modifikationsassistent ABAP Dictionary
varianten  Tabellen
4
User-Exits  Datenelemente

Customer-Exits 5

3 8 Business Transaction Events 6


Business Add Ins 7

Überblick 2
 SAP AG 2006

(C) SAP AG BC425 3


2.4
Änderungsebenen

SAP Business
Kunden-
Kunden-
Anwendungen
programme
(SAP-
(SAP-Standard)
Standard)

Eigenent-
Eigenent-
Customizing Personalizing Modifikation Erweiterung
wicklung

Customizing ABAP
Workbench

 SAP AG 2006

 Sie können das R/3-System auf folgende Arten an Ihre Erfordernisse anpassen:
Customizing: Einstellung der Geschäftsprozesse und Funktionen entlang eines
Einführungsleitfadens. Mögliche Änderungen sind damit vorgedacht und vororganisiert.
Personalizing: Veränderung der globalen Anzeigeeigenschaften von Feldern (Vorbelegung,
Ausblendung), benutzerspezifische Menüführung.
Modifikation: Änderungen an SAP Repository-Objekten beim Kunden. Liefert SAP eine
veränderte Version des Objektes aus, muß die Kundenversion mit der neuen SAP-Version
abgeglichen werden. Dies geschieht bis Release 4.0B manuell in den Upgrade-Utilities. Seit
Release 4.5A wird der Abgleich durch den Einsatz des Modifikationsassistenten weitgehend
automatisiert.
Erweiterung: Erstellung kundeneigener Repository-Objekte, die in SAP Repository-Objekte
eingebunden werden.
Eigenentwicklung: Erstellung kundeneigener Repository-Objekte unter Berücksichtigung der
Kundennamensräume.
 Customizing und weitgehend auch Personalizing werden mit den Tools des Business Engineer
durchgeführt, Eigenentwicklung, Erweiterungskonzept und Modifikation mit den Tools der ABAP
Workbench.

(C) SAP AG BC425 4


2.5
Vorgehensweise bei Funktionalitätsänderungen
Customizing

Kann der Kundenwunsch über Ja


Customizing/Personalizing - Customizing
realisiert werden? - Personalizing

Nein

Nein
Ist im SAP-Standard überhaupt - Eigenentwicklung
eine ähnliche Funktionalität vorhanden? - CSP-Lösung
Entwicklung

Ja

Ja
Kann der Kundenwunsch über
Nutzung einer Erweiterung Erweiterung
realisiert werden?

Nein
Eigenentwicklung mit/ohne
Modifikation
SAP-Objekten als Vorlage
 SAP AG 2006

 Kann die Standardfunktionalität nicht über Customizing oder Personalizing dem Kundenwunsch
angepaßt werden, muß ein Entwicklungsprojekt gestartet werden oder, falls verfügbar, eine CSP
Lösung (CSP = Complementary Software Product) verwendet werden. Von SAP zertifizierte CSP-
Lösungen finden Sie im SAP Service Marketplace unter dem Alias /softwarepartner.
 Im Entwicklungsprojekt betreiben Sie Eigenentwicklung, wenn im SAP-Standard keine ähnliche
Funktionalität vorhanden ist. Ansonsten setzen Sie durch Erweiterungen, User-Exits, Modifikationen
oder Kopie von SAP-Programmen auf SAP-Standard-Objekten auf.
 Modifikationen sind problematisch, da nach einem Upgrade die neue SAP-Version mit der
modifizierten Kundenversion abgeglichen werden muß. Dies geschieht bis Release 4.0B manuell in
den Upgrade-Utilities. Seit Release 4.5A wird der technischen Abgleich weitgehend durch den
Modifikationsassistenten automatisiert.
 Modifizieren Sie nur dann, wenn
 Customizing oder Personalizing Ihre Anforderung nicht umsetzen können
 Geeignete Erweiterungen oder User-Exits nicht vorgedacht sind
 das Kopieren des SAP-Objekts in den Kundennamensraum nicht sinnvoll ist.

(C) SAP AG BC425 5


2.6
Customizing

Vorgehensmodell Einführungsleitfaden ASAP

Geschäftsprozeßszenarien Anwendungskomponenten Business-Objekte


Materi al- Purchase Purchase Schedule
wirtschaft
order order item lines

Purchase order
consignment

R/3
Best ands-
Einkau f
Informatio ns- Lager- Time
führu ng syst em verwal tung

Purchase order

-Re
returnable packaging
Lieferant en - Best el l-
anford e- Best el lung Purchase order

mo feren
an frage
/-an gebot rung
third party deliv ery

del z-
Prozeßmodell Unternehmensorganisation Objektorientiertes l
Datenmodell
Purch as e Vendor Vendor Pu rchas e
requisition inq uiry qu otation informatio n

Sh ipping
no tificatio n

Pu rchas e
order

Vendor
sch eduling
ag ree ment

Workflow und Organisation

 SAP AG 1999

 Der Business Engineer umfaßt alle Einführungswerkzeuge der SAP. Dazu gehören insbesondere:
 Referenzmodell
Alle Modelle, die R/3 beschreiben (Prozeßmodell, Datenmodell, Organisationsmodell)
 Einführungsleitfaden (Implementation Guide)
Liste aller Customizing-Aktivitäten

(C) SAP AG BC425 6


2.7
Personalizing

Vereinfachung der Anwendung ist oftmals


außerhalb der ABAP Workbench möglich.

 Globale Anzeigeeigenschaften von Feldern


Variantentransaktionen
SET/GET-Parameter
Benutzer- bzw. mandantenabhängige
Table-Control-Einstellungen

 Personalisierte Menüs
Rollenbasiertes Menü
Favoriten
Shortcuts auf Desktop

 SAP AG 2006

 Ziel des Personalizing ist die Beschleunigung und Vereinfachung der mit dem R/3 System zu
bearbeitenden Geschäftsvorfälle. Die Transaktionen der jeweiligen Anwendungen werden an die
betriebswirtschaftlichen Bedürfnisse des Unternehmens oder unterschiedlicher Benutzergruppen
angepaßt. Nicht benötigte Informationen und Funktionen in den Transaktionen werden ausgeschaltet.
 Über globale Anzeigeeigenschaften können Felder auf Dynpros vorbelegt werden. In Transaktionen
können einzelne Felder, einzelne Spalten von Table Controls oder ganze Dynpros ausgeblendet
werden.
 Mit Hilfe von Rollenbasierten Menüs, eigenen Favoriten und Shortcuts auf dem Desktop kann die
Menüführung
 Mit Hilfe von Rollenbasierten Menüs, eigenen Favoriten und Shortcuts auf dem Desktop kann die
Menüführung auf die Bedürfnisse unterschiedlicher Benutzergruppen im Unternehmen ausgerichtet
werden.

(C) SAP AG BC425 7


2.8
Änderungsebenen mit ABAP-Workbench-Einsatz

SAP Business Kunden-


Kunden-
Anwendungen programme
(SAP-
(SAP-Standard)
Standard)

Eigenent
Modifikation Erweiterung
wicklung

Modifikationsassistent ABAP Dictionary Mit/Ohne Aufruf von


 Tabellen SAP-Objekten
 Datenelemente

Programm-Erweiterungen
Menü-Erweiterungen
Dynpro-Erweiterungen

User-Exits

 SAP AG 2006

 Modifikationen sind Änderungen an SAP-Objekten in Kundensystemen. Sie existieren:


 geführt durch User-Exits (für Kunden reservierte Unterprogramme in Objekten des SAP-
Namensraums)
 hart an beliebigen Stellen in SAP-Repository-Objekten.
 Bei Eigenentwicklung können aus kundeneigenen Programmen SAP-Repository-Objekte gerufen
werden. Beispiel: Ein Kunde erstellt ein Programm, das einen Funktionsbaustein von SAP ruft.
 In den Erweiterungskonzepten ist die Rollenverteilung umgekehrt: Aus von SAP ausgelieferten
Programmen werden Repository-Objekte gerufen, die Sie als Kunde angelegt oder verändert haben.
Beispiel: Sie verwenden einen Funktionsbaustein-Exit, der von SAP gerufen wird. Erweiterungen
sind auf folgenden Ebenen möglich:
 im ABAP-Programm (Funktionsbaustein-Exit)
 in der GUI-Oberfläche (Menü-Exit)
 in Dynpros als Einblendung eines Subscreens in einem von SAP vorgedachten Bereich (Dynpro-
Exit)
 als Durchlaufen kundeneigener Programmstrecken bezogen auf ein Dynprofeld (Feld-Exit)
 in Tabellen oder Strukturen des ABAP Dictionary (Tabellenerweiterung).

(C) SAP AG BC425 8


2.9
Tabellenerweiterungen

ABAP
Dictionary SAP-Tabellendefinition YYFeld ZZFeld
Feld 1 Feld 2 Feld 3 Append-Struktur

SAP-Tabellendefinition YYFeld ZZFeld


Feld 1 Feld 2 Feld 3 CI_Incl CI_Include

Datenbank

Feld 1 Feld 2 Feld 3 YYFeld ZZFeld

 SAP AG 2006

 SAP bietet Ihnen zwei Möglichkeiten, Tabellen und Strukturen um Felder zu erweitern:
 Append-Strukturen
 Customizing-Includes ("CI-Includes")
 Beide Techniken erlauben es, Felder an eine Tabelle anzuhängen, ohne die Tabelle selbst zu
modifizieren.
 Eine Append-Struktur ist eine Struktur, die genau einer Tabelle zugeordnet ist. Es kann mehrere
Append-Strukturen zu einer Tabelle geben. Beim Aktivieren werden alle aktiven Append-Strukturen
zur Tabelle gesucht und an die Tabelle angehängt.
 Append-Strukturen unterscheiden sich in der Art des Verweises zur zugehörigen Tabelle von
Include-Strukturen, zu denen auch die Customizing-Includes gehören. Um die Felder einer Include-
Struktur in eine Tabelle zu übernehmen, muß die Tabelle um eine Zeile der Form '.INCLUDE...'
erweitert werden. Der Verweis geht also in diesem Fall von der Tabelle aus. Eine Append-Struktur
hat dagegen einen Verweis zur zugehörigen Tabelle, welche selbst unverändert bleibt. Der Verweis
geht hier von der Append-Struktur aus.

(C) SAP AG BC425 9


2.10
Tabellenerweiterungen: SAP und Kunde

SAP Kunde

Tabellendefinition Tabellenerweiterung Append-Struktur

Tabellendefinition mit Tabellenerweiterung


integriertem Include CI_Include

 SAP AG 2006

 Append-Strukturen erlauben es, Felder an eine Tabelle anzuhängen, ohne die Tabelle selbst zu
modifizieren. Tabellenerweiterungen über Append-Strukturen müssen demnach nicht von der SAP-
Entwicklung vorgedacht sein. Eine Append-Struktur kann nur zu genau einer Tabelle gehören.
 CI_Includes erlauben es demgegenüber, die gleiche Struktur in mehreren Tabellen zu verwenden.
Die Include-Anweisung muss schon in der SAP-Tabelle oder -Struktur vorhanden sein. Im
Gegensatz zu Append-Strukturen müssen CI_Includes also von der SAP-Entwicklung vorgedacht
sein.

(C) SAP AG BC425 10


2.11
Programm-Erweiterungen: Funktionsweise

***
*** SAP
SAP program
program ***
***
*********************************
*********************************
...
...

Aufruf der Erweiterung Objekt im


Kundennamensraum

User-Exit Unterprogramm

Customer-Exit Funktionsbaustein
Business Transaction Event Funktionsbaustein
Business Add In Methode

 SAP AG 2006

 Bei Programm-Erweiterungen ist das Ziel prinzipiell immer, ein Objekt im Kundennamensraum zu
rufen. Dazu gibt es verschiedene Techniken:
 Customer-Exits
Vom SAP Anwendungsprogramm wird ein spezieller Exit-Funktionsbaustein aufgerufen. Der
Funktionsbaustein ist Teil einer Funktionsgruppe, die vom System auf eine spezielle Weise
behandelt wird.
 Business Transaction Events
Vom SAP Anwendungsprogramm wird ein Funktionsbaustein im Kundennamensraum dynamisch
aufgerufen.
 Business Add Ins
Das Anwendungsprogramm ruft eine Methode einer Klasse oder Instanz einer Klasse auf. Diese
Klasse liegt im Kundennamensraum.

(C) SAP AG BC425 11


2.12
Programm-Erweiterungen: SAP und Kunde

SAP Kunde

User-Exit Unterprogramm

Aufruf
Customer-Exit Funktionsbaustein
Verwaltung
Schnittstelle
Dokumentation Business Transaction Event Funktionsbaustein

Business Add In Methode

 SAP AG 2006

 Programm-Erweiterungen erlauben ihnen, zusätzliche Programmlogik zu einem SAP


Anwendungsprogramm zu hinterlegen. Dazu bietet SAP zur Zeit die oben angegebenen Techniken.
 Die Vorteile und Einschränkungen der jeweiligen Erweiterungstechnik werden wir in den
entsprechenden Kapiteln näher betrachten.

(C) SAP AG BC425 12


2.13
Menü-Erweiterungen: SAP und Kunde

SAP Kunde

Menu 1 Menu 2 Menu 3 Menu 1 Menu 2 Menu 3


Function
Function11 Function
Function11
Function
Function22 Function
Function22
Function
Function33 Function
Function33
Kundenfunktion

Funktionscode Text für Menü-Eintrag


Menü-Exit +
Erweiterung
Funktionalität
Dokumentation - Customer Exit (Ikone)
- Business Add In

 SAP AG 2006

 Menü-Erweiterungen erlauben Ihnen, zusätzliche Menü-Einträge zu einem SAP Standard-Menü


hinzuzufügen. Dazu bietet Ihnen das System zur Zeit zwei Möglichkeiten:
 Customer-Exits
 Business Add Ins
 Die zusätzlichen Menü-Einträge werden in die GUI-Oberfläche eingemischt.
 Beim Implementieren des Funktionscodes können sie den Text des Menü-Eintrags ändern und -
abhängig davon, was der SAP Entwickler vorgesehen hat - Ikonen ändern.

(C) SAP AG BC425 13


2.14
Dynpro-Erweiterungen

SAP Kunde

SAP R/3 SAP R/3

Feld 1 Feld 1
Feld 2 Feld 2

Feld X
Feld Y

Subscreen-Bereich Subscreen-Dynpro
Ablauflogik Dynpro-Exit
Funktionsbaustein
Erweiterung - Customer Exit bzw. Methode
Dokumentation - Business Add In für Datentransport

 SAP AG 2006

 Dynpro-Exits gehören zu den Customer-Exits und erlauben Ihnen, auf einem Dynpro eines SAP
Anwendungsprogramms zusätzliche Objekte anzeigen zu lassen. Dazu muß der SAP Entwickler:
 die Subscreen-Bereiche definieren
 die entsprechenden Aufrufe in der Ablauflogik vorsehen
 den Rahmen für den Datentransport zur Verfügung stellen
 den Dynpro-Exit in eine Erweiterung aufnehmen
 Dokumentation pflegen!
 Ab SAP Web Application Server 6.20 können auch Business Add Ins Dynpro-Exits enthalten.
 Sie können Dynpro-Exits implementieren, indem sie Subscreen-Dynpros anlegen, eventuell mit
Ablauflogik. Darüber hinaus müssen sie den Datentransport implementieren.
 Wie Sie Dynpro-Exits implementieren, wird im Kapitel "Erweiterungen über Customer-Exits" für
die "klassischen" sowie im Kapitel "Business Add Ins" für die neuen Dynpro-Exits behandelt.

(C) SAP AG BC425 14


2.15
Modifikationen

SAP Kunde

SAP-Programm SAP-Programm
PROGRAM ... . PROGRAM ... .
... ...

*Original Coding.. *Original Coding..


... ...
... ...
... ...
* vom Kunden geä
geändertes/hinzugefü
ndertes/hinzugefügtes
* Coding
... ...
*Original Coding.. *Original Coding..
... ...

 SAP AG 1999

 Bei einer Modifikation verändern Sie das von SAP ausgelieferte Objekt direkt.
 Dies hat verschiedene Konsequenzen beim nächsten Upgrade. Wird das Objekt erneut ausgeliefert,
müssen sie entscheiden, ob in ihrem System das neue, von SAP ausgelieferte Objekt wirksam sein
soll oder das von ihnen veränderte gültig bleiben soll.
 Bis Release 4.0B war die feinste Granularität, auf der Modifikationen aufgezeichnet wurden, das
Repository-Objekt selbst, also zum Beispiel ein Include-Programm.
 Seit Release 4.5A werden Modifikationen mit einer feineren Granularität aufgezeichnet. Ermöglicht
wird dies durch den Modifikationsassistenten, den wir im Kapitel "Modifikationen" kennenlernen
werden.
 Damit einhergehend wurde auch der Modifikationsabgleich grundlegend überarbeitet. Wie
Modifikationen abgeglichen werden, sehen wir ebenfalls in diesem Kapitel.

(C) SAP AG BC425 15


2.16
Änderungen des SAP Standards: Zusammenfassung
des Kapitels

Sie können nun:

 erklären, auf welchen Ebenen Sie den von SAP


ausgelieferten Standard ändern können
 die geeignete Methode auswählen, mit deren Hilfe
Sie den Standard verändern
 aufzählen, welche Erweiterungsarten es gibt und
erklären, wozu sie genutzt werden können

 SAP AG 2006

(C) SAP AG BC425 16


2.17 Verwendete Daten
Erklärung der Symbole in den Übungen und Lösungen
Übungen
Lösungen

Lernziele

Unternehmensszenario

Tips & Tricks

Warnung und Achtung

Daten in den Übungen


Art der Daten Daten im Schulungssystem
Tabellen SFLIGHT00 .. SFLIGHT18
Datenelemente S_CARRID00 .. S_CARRID18
Programm SAPBC425_EXIT_00 ..
SAPBC425_EXIT_18
Transaktionscode BC425_00 .. BC425_18
Programm SAPBC425_BOOKING_00 ..
SAPBC425_BOOKING_00

(C) SAP AG BC425 17


(C) SAP AG BC425 1
3
Personalisierung

Inhalt:
 Personalisierung von Transaktionen
über Transaktionsvarianten

 SAP AG 2006

(C) SAP AG BC425 1


3.2
Personalisierung: Lernziele des Kapitels

Am Ende dieses Kapitels können Sie:

 Transaktionen personalisieren unter Nutzung von


Transaktionsvarianten
GuiXT

 SAP AG 2006

(C) SAP AG BC425 2


3.3
Personalisierung: Unternehmensszenario

 Ihre Endanwender nutzen nur einen geringen Teil


der im SAP-System vorhandenen Funktionalität.
Um ihre tägliche Arbeit zu erleichtern, sollte der
Arbeitsplatz entsprechend eingerichtet werden.
 Ihre Mitarbeiter sollen vereinfachte Transaktionen
ausführen können. Diese sind in der Regel mit Hilfe
von Transaktionsvarianten möglich.

 SAP AG 2006

(C) SAP AG BC425 3


3.4
Übersichtsdiagramm Personalisierung

SAP Business Anwendungen


(SAP-
(SAP-Standard)
Standard)

Personali
Modifikation Erweiterung
sierung
Modifikationsassistent ABAP Dictionary
 Tabellen 4
Transaktions User-Exits  Datenelemente
varianten
Customer-Exits 5
3 8 Business Transaction Events 6
Business Add Ins
7

Überblick 2
 SAP AG 2006

(C) SAP AG BC425 4


3.5
Personalisierungsebenen

Unternehmen:
 Unternehmensstruktur
 Geschäftsprozesse
TOP--DOWN Konfiguration

Rollenspezifische Benutzeradministration:
Konfiguration
 Bereichsmenüs
 Rollenbasierte Menüs
Rollenbasierte  Transaktionsvarianten
Ber. Rollenbasierte TA
Menü
Menüüss
TOP

menü
menüs Menü
Men varianten

Persö
Persönliche Konfiguration Persönliche
Konfiguration:
 Favoriten
 Links
Favoriten Links Desktop  Desktop-Links

 SAP AG 2006

 Das SAP System paßt sich dem Arbeitsstil des Anwenders an: Beim Start des Systems werden dem
Benutzer nur noch die Funktionen angeboten, die für seine tägliche Arbeit typisch sind.
Überflüssiges Navigieren durch nicht benötigte Funktionen entfällt. Konnten Benutzermenüs bisher
im Session Manager bzw. im Dynamischen Menü im R/3 aufgerufen werden, so wird seit Release
4.6A jedem Benutzer nach der Anmeldung am R/3-System sein Rollenbasiertes Menü in Form eines
Baumes ausgegeben.
 Bei der Auswahl einer Funktion wird diese im gleichen Modus gestartet. An die Stelle des
Rollenbasierten Menüs tritt dann die ausgeführte Funktion. Beim Verlassen einer Transaktion oder
beim Start eines neuen Modus erscheint automatisch wieder das Rollenbasierte Menü.
 In der Rollenpflege (Transaktion PFCG) kann der Administrator die Menüstruktur zu einer Rolle
bestehend aus Transaktionen, Reports und Internet/Intranet-Links zu einem Benutzermenü
kombinieren. Die Struktur und Bezeichnung der enthaltenen Funktionen ist dabei frei wählbar.
 Das Unternehmensmenü steht ab Release 4.6A nicht mehr zur Verfügung.

(C) SAP AG BC425 5


3.6
Transaktionsvarianten: Ziele

 Vereinfachung von Transaktionen durch


 Vorbelegung von Dynpro-Feldern
 Wegnahme der Eingabebereitschaft
 Ausblenden nicht benötigter Bildschirmelemente
(Felder, Drucktasten, Subscreens, Screens)

 WYSIWYG-Pflege durch spezielle Aufzeichnungsfunktion

 Individuelle Variante und / oder Standardvariante

 SAP AG 2006

 Sie können die Komplexität des Systems reduzieren, indem Sie nicht benötigte Funktionen
ausblenden. Transaktionsvarianten bieten Ihnen die Möglichkeit, für komplette Transaktionen diese
Komplexität für den Anwender zu reduzieren. Sie können
 Felder mit Werten vorbelegen. Diese Vorbelegung kann vom Anwender wieder überschrieben
werden.
 Bei Feldern, in denen der Anwender keine Eingabe mehr vornehmen muss, die
Eingabebereitschaft zurücknehmen;
 nicht benötigte Bildschirmelemente ausblenden. Das können Eingabefelder oder andere
Bildschirmelemente sein.
 Ganze Bildschirme ausblenden.
 Die Pflege von Transaktionsvarianten werden wir im folgenden näher beleuchten.

(C) SAP AG BC425 6


3.7
Individuelle Variante und Standardvariante

SAP-
SAP-
Transaktion ABC

Variantentransaktion
TA-
TA-Variante X
ZABC_X

Variantentransaktion
TA-
TA-Variante Y
ZABC_Y

TA-
TA-Variante Z Standardvariante

 SAP AG 2006

 Eine zu einer SAP-Transaktion definierte Variante können Sie wie folgt verwenden :
 a) Sie legen eine Variantentransaktion an, die aus der SAP-Transaktion und der Variante besteht
oder
 b) Sie deklarieren die Variante als Standardvariante der SAP-Transaktion.

 Im Fall a) muss der Benutzer die Variantentransaktion aufrufen, um die Variante zu bekommen.
 Im Fall b) dagegen wird die entsprechende Variante an die SAP-Transaktion "angeheftet", so dass
der Aufruf der SAP-Transaktion automatisch die Variante nutzt.
Zu einer SAP-Transaktion kann genau eine Standardvariante definiert werden.

(C) SAP AG BC425 7


3.8
Screen-Varianten

Transaktionsvariante

Screen-Variante Screen-Variante Screen-Variante


Screen-Variante Screen-Variante
ztest_0100
Screen-Variante ztest_0200 ztest_0300
ztest_0100 ztest_0300
ztest_0100

 SAP AG 2006

 Eine Transaktionsvariante ist eine Referenz auf eine Menge von Screen-Varianten.
 Zu einem Dynpro können sie beliebig viele Screen-Varianten anlegen. Aus diesen Screen-Varianten
wird die Transaktionsvariante zusammengesetzt.

(C) SAP AG BC425 8


3.9
Transaktionsvarianten: Beispiel

100 100
Program Program

Abflugstadt Ankunftstadt New York


Ankunftstadt Abflugzeit
Abflugzeit
Button1
Button1 Button2

200 TA- 200


Program Variante Program

Fluggesellschaft Buchen
Fluggesellschaft
Verbindung Verbindung
Info
Flugdatum Flugdatum
Buchen
Bel. Plätze Bel. Plätze Info
Freie Plätze Freie Plätze
Flugpreis Flugpreis

 Felder mit Werten vorbelegen


 Felder ausblenden
 Eingabebereitschaft ändern
 SAP AG 2006  Dynpro(-elemente) ausblenden

 In diesem Beispiel sehen Sie zwei Dynpros einer SAP-Transaktion, die mit Hilfe einer
Transaktionsvariante umgestaltet werden sollen.
 Dynpro 100 wird folgendermassen abgeändert: Felder werden ausgeblendet; Feldattribute werden
geändert; Drucktasten werden ausgeblendet.
 Dynpro 200 zeigt folgende Änderungen: Drucktasten verschoben sowie Bild eingefügt (mit GuiXT).
Auf die Verwendung von GuiXT werden wir weiter unten eingehen.

(C) SAP AG BC425 9


3.10
Transaktionsvarianten anlegen

Transaktion
SHD0
Transaktionsvarianten

Transaktionscode
Name
Name der
der
SAP-Transaktion
SAP-Transaktion
Transaktionsvariante

Name
Name der
der
Varianten
Varianten

 SAP AG 2006

 Zum Anlegen von Transaktionsvarianten wählen Sie aus dem Eintrag AcceleratedSAP im SAP Menü
die Komponente Personalization und dort Transaktionsvarianten. Sie gelangen in die Transaktion
zum Pflegen von Transaktionsvarianten.
 Sie geben den Namen der Transaktion ein, für die Sie eine Variante erstellen wollen. Der Name der
Variante muss eindeutig im System sein und im Kundennamensraum liegen.
 Über den Menüpunkt Springen können Sie wählen, ob sie eine mandantenabhängige oder eine
systemweite (mandantenunabhängige) Transaktionsvariante anlegen wollen.
 Um den Variante anzulegen, wählen sie die entsprechende Drucktaste in der Drucktastenleiste

(C) SAP AG BC425 10


3.11
Transaktionsvarianten: Dynpro-Felder bewerten

100
Program

Abflugstadt
Ankunftstadt
Abflugzeit
zugehörige Screen-Variante
Button1 Button2

Abflugstadt Frankfurt
Ankunftstadt New York
Abflugzeit
Button1
Button2

Beenden u. Sichern Menüfunktionen GuiXT

 SAP AG 2006

 Mit der Taste "Bildeingaben" wird die Transaktion im CALL-Modus gestartet.


 Beim Auslösen eines Dialogs wird PAI des aktuellen Dynpros ausgelöst. Das System sendet einen
weiteren Bildschirm, auf dem sie die auf dem Dynpro vorhandenen Felder bewerten können.
 Beachten sie hierzu auch das Online-Handbuch zu Transaktionsvarianten.
 Der bewertete Bildschirm wird beim Fortfahren als so genannte Screen-Variante abgelegt, worauf
auf der folgenden Seite näher eingegangen wird.

(C) SAP AG BC425 11


3.12
Attribute einer Screen-Varianten

Screen-Variante Name
Name der
der
Screenvariante
Screenvariante

Kurztext
Kurztext

Abflugstadt Frankfurt
Ankunftstadt New York
Abflugzeit
Button1 Attribute
Attribute der
der
Button2 Dynpro-Elemente
Dynpro-Elemente

Beenden u. Sichern Menüfunktionen GuiXT

Menüfunktionen
Menüfunktionen
deaktivieren
deaktivieren

 SAP AG 2006

 Eine Screen-Variante ist ein eigenständiges Repository-Objekt mit einem im System eindeutigen
Namen. Der Name setzt sich zusammen aus
 Variantenname
 Mandant (nur bei mandantenabhängigen Transaktionsvarianten)
 Dynpronummer
 Hier geben sie an, ob Feldinhalte in die Screen-Variante übernommen werden sollen. Für die
einzelnen Felder können Sie verschiedene Attribute setzen: Sie können die Eingabebereitschaft eines
Feldes zurücknehmen oder es sogar unsichtbar machen. Eine detaillierte Auflistung der
Möglichkeiten finden Sie im Online-Handbuch zu Transaktionsvarianten.

(C) SAP AG BC425 12


3.13
Transaktionsvarianten: Testen und verwenden

Variante testen :

1. In SHD0 SAP-Transaktion und Variantenname eingeben


2. F8 betätigen

Variante nutzen :
1. Über SHD0 Variantentransaktion anlegen
( Menü Springen Anlegen Variantentransaktion )

2. Variantentransaktion aufrufen

 SAP AG 2006

 Zum Starten einer Transaktionsvariante stehen ihnen folgende Möglichkeiten zur Verfügung:
 Testumgebung
 Transaktionscode vom Typ "Variantentransaktion"
 Benutzermenü
 In der Testumgebung der Transaktionsvarianten-Pflege können sie den Ablauf der Transaktion
testen. Dies ist vor allem für Entwickler bestimmt, die die Transaktionsvariante anlegen.
 Um eine Variantentransaktion in ein Benutzermenü oder eine Rolle einhängen zu können, müssen
sie einen Transaktionscode vom Typ "Variantentransaktion" anlegen.

(C) SAP AG BC425 13


3.14
Variantentransaktion anlegen

Transaktionspflege
Name des
Transaktionscodes
Transaktionscode__
Anlegen
Anzeigen Ändern Anlegen
Transaktion anlegen

Transaktionscode
Transaktionsattribute

Dialogtransaktion
Reporttransaktion
OO-Transaktion
Variantentransaktion
Paramentertransaktion

 SAP AG 2006

 Um eine Transaktionsvariante aus einem Menü zu starten, müssen sie einen Transaktionscode vom
Typ "Variantentransaktion" anlegen. Einen Absprung dazu finden sie direkt in der Pflege der
Transaktionsvarianten unter dem Menüpunkt "Springen". Alternativ können sie direkt aus der ABAP
Workbench einen Transaktionscode anlegen. Beachten Sie hierbei, dass Sie das richtige Startobjekt
"Variantentransaktion" wählen.

(C) SAP AG BC425 14


3.15
GuiXT

Abflugzeit
Button1 Attribute
Attribute der
Button2 Screen-Variante

Beenden u. Sichern Menüfunktionen GuiXT

 Editor für GuiXT-Script


(zusätzliche Varianten-Info)
 Skript wird im SAP-System
gespeichert
 Skripte können von externer
Ablage importiert werden

Bilddateien
 SAP AG 2006

 Das Zusatzwerkzeug GuiXT ermöglicht ihnen eine flexiblere Gestaltung der einzelnen Bildschirme.
GuiXT bedient sich dabei einer Skript-Sprache, um
 Objekte auf dem Dynpro zu positionieren,
 Attribute zu setzen,
 Neue Objekte aufzunehmen
 Durch Auswählen der Drucktaste "GuiXT" erscheint ein Editor-Fenster, in dem sie das Skript
eingeben können. Sie können hier ebenfalls Bilddateien auswählen, die auf ihrem lokalen Rechner
verfügbar sind.
 Weiterhin können sie auf dem lokalen Rechner erstellte Skripte importieren, sowie dorthin
exportieren.

(C) SAP AG BC425 15


3.16
GuiXT: Scriptsprache

Kommentar
Kommentar
// Version: 19990921151118

Bild
Bild einfügen
einfügen
IMAGE (1,1) "C:\temp\sap.jpg"

Rahmen
Rahmen einfügen
einfügen
BOX (10,20) (16,44) "Frame"

POS [Element] [Element]+(10,0) Element


Element verschieben
verschieben

POS [Bereich] [Bereich]+(10,0) Bereich


Bereich verschieben
verschieben

Pushbutton (10,50) "Text" "fcode"


Drucktaste
Drucktaste mit
mit Text
Text
und
und Funktionscode
Funktionscode

 SAP AG 2006

 Mit Hilfe der von GuiXT verwendeten Skript-Sprache können Sie das Layout eines Bildschirmbildes
beeinflussen. Sie können
 Objekte verschieben
 Bilder einfügen
 Drucktasten einfügen
 Wertehilfen einfügen
 Eingabeeigenschaften von Feldern beeinflussen
 Bildelemente löschen
 Eine vollständige Dokumentation von GuiXT erhalten Sie mit der Installation mitgeliefert. Weitere
Informationen finden Sie auf der Homepage des Herstellers von GuiXT (http://www.synactive.com).

(C) SAP AG BC425 16


3.17
Personalisierung: Zusammenfassung des Kapitels

Sie können nun:


 Transaktionen personalisieren unter Nutzung von
Transaktionsvarianten
GuiXT

 SAP AG 2006

(C) SAP AG BC425 17


3.18Personalisierung Übungen

Kapitel: Personalisierung
Thema: Anlegen eines Paketes

Für eine geordnete Entwicklung benötigen Sie ein Paket.

1-1 Legen Sie ein Paket an.


1-1-1 Das Paket soll den Namen ZBC425_## haben. (## = Gruppennummer).
1-1-2 Ordnen Sie das Paket einem Änderungsauftrag zu.

(C) SAP AG BC425 18


Übungen

Kapitel: Personalisierung
Thema: Transaktionsvarianten

Am Ende dieser Übungen können Sie:


 mit Hilfe von Transaktionsvarianten eine Transaktion in der
Bedienbarkeit wesentlich vereinfachen.

Ihre Anwender beklagen sich, daß die Transaktion


BC425_TAVAR viel zu umständlich zu bedienen ist (trotz Enjoy-
Initiative!). Eigentlich haben sie von den vielen Feldern nur
einige wenige auszufüllen. Die Transaktion soll nun in der
Bedienung vereinfacht werden, indem nicht benötigte Felder
ausgeblendet werden.

1-1 Erzeugen sie eine Transaktionsvariante zu der Transaktion BC425_TAVAR.


1-1-1 Wie gelangen Sie in die Pflege von Transaktionsvarianten?
Nehmen sie die entsprechende Transaktion in ihre Favoriten auf.
1-1-2 Vergeben Sie einen Namen für die Variante: ZBC425##
(## = Gruppennummer).

1-2 Durchlaufen Sie die Transaktion Bild für Bild, und legen Sie jeweils für die
einzelnen Bilder eine Screen-Variante an. Folgende Veränderungen sollen
vorgenommen werden:
1-2-1 Einstiegsbild: Die ersten beiden Felder mit "DE", "Frankfurt" vorbelegen
und die Eingabebereitschaft zurücknehmen.
1-2-2 Zweites Bild: Die Spalte "FLH" des Table Controls auf unsichtbar setzen.
Menüfunktion "BACK" deaktivieren.
1-2-3 Drittes Bild: Menü-Funktion "BACK" deaktivieren.

1-3 Legen sie einen Transaktionscode für die Variante an.


Name der Transaktion: ZBC425##.

1-4 Testen Sie Ihr Ergebnis.

(C) SAP AG BC425 19


3.19Personalisierung Lösungen

Kapitel: Personalisierung
Thema: Anlegen eines Paketes

1-1 Sie legen ein Paket an, indem Sie folgenden Menüpfad aus dem SAP Menü wählen:
Werkzeuge  ABAP Workbench  Übersicht  Object Navigator
1-1-1 Alternativ können sie Transaktion SE80 wählen
1.1.2 Wählen Sie den Menüpfad Workbench  Objekt bearbeiten…
1.1.3 Auf der Registerkarte "Entwicklungskoordination" wählen Sie "Paket" und
tragen den Namen des anzulegenden Pakets in das Eingabefeld ein.
1.1.4 Wählen Sie "Anlegen".
1.1.5 Auf dem folgenden Bild tragen Sie einen aussagekräftigen Kurztext ein.
Ordnen Sie das Paket der Softwarekomponente HOME zu. Bestätigen Sie
Ihre Eingabe.
1.1.6 Ordnen Sie auf dem nächsten Bild einen Änderungsauftrag zu und
bestätigen Sie die Eingabe.
1.1.7 Nun haben Sie ein Paket angelegt, dem Sie alle folgenden Entwicklungen
zuordnen werden.

(C) SAP AG BC425 20


Lösungen

Kapitel: Personalisierung
Thema: Transaktionsvarianten

1-1 Erzeugen einer Transaktionsvariante zu der Transaktion BC425_TAVAR:


1-1-1 Die Pflege von Transaktionsvarianten geschieht über Transaktion SHD0.
Wählen Sie von SHD0 aus
System  Benutzervorgaben  Favoriten erweitern
um die Transaktion in Ihre Favoriten aufzunehmen.
(Alternativ dazu können Sie auch auf dem Einstiegsbild über das
Kontextmenü Ihres Favoriten-Ordners die SHD0 als Favoriten einfügen.)
1-1-2 Tragen Sie in das Feld "Transaktion" den Namen der Transaktion ein, von
der Sie eine Varianten erzeugen wollen. Tragen Sie in das Feld "Variante"
den Namen der Variante ein: ZBC425## (## = Gruppennummer).

1-2 Durchlaufen Sie die Transaktion Bild für Bild. Tragen Sie in die Eingabefelder die
entsprechenden Werte ein. Verlassen Sie das Bild über die entsprechende
Drucktaste. und legen Sie jeweils für die einzelnen Bilder eine Screen-Variante an.
1-2-1 Einstiegsbild: Belegen Sie die ersten beiden Felder mit "DE", "Frankfurt"
vor. Verlassen Sie das Dynpro durch Betätigen der entsprechenden
Drucktaste. Auf dem nun erscheinenden Popup markieren Sie die
Ankreuzfelder "Feldwerte übernehmen" sowie die entsprechenden
Ankreuzfelder bei den entsprechenden Bildschirmobjekten. Vergeben Sie
einen Kurztext für die Screen-Variante. Sichern Sie die Screen-Variante.
1-2-2 Zweites Bild: Verlassen Sie dieses Dynpro durch Auswahl der
entsprechenden Drucktaste. Auf dem nun erscheinenden Dialogfenster
markieren Sie wiederum "Werte übernehmen". Markieren Sie die Spalte
"FLH" des Table Controls als unsichtbar. Wählen Sie die Drucktaste
Menüfunktionen aus und entmarkieren Sie den Funktionscode "BACK".
Sichern Sie die Screen-Variante.
1-2-3 Drittes Bild: Verlassen Sie dieses Dynpro mit der Funktion "Sichern".
Deaktivieren Sie die Menüfunktion "BACK" analog zu 1-2-2. Sichern Sie
die Screen-Variante.
1-2-4 Es erscheint eine Liste mit einer Zusammenfassung aller angelegter Screen-
Varianten. Hier haben Sie nochmals die Gelegenheit, Ihre Eingaben zu
überprüfen. Sichern Sie, um die Transaktionsvariante endgültig anzulegen.

1-3 Wählen Sie in der Transaktion SHD0 den Menüpfad


Springen  Transaktionscode anlegen

(C) SAP AG BC425 21


4
Erweiterungen an Elementen des Dictionary

Inhalt:
 Append-Strukturen
 Customizing-Includes
 Texterweiterungen

 SAP AG 2002

(C) SAP AG BC425 1


4.2
Erweiterungen an Elementen des Dictionary:
Lernziele des Kapitels

Am Ende dieses Kapitels können Sie:

 Tabellen mit Hilfe von Append-Strukturen


erweitern
 Tabellen mit Hilfe von Customizing-Includes
erweitern
 Feldbezeichner und Dokumentation von SAP-
Datenelementen modifikationsfrei ändern

 SAP AG 2006

(C) SAP AG BC425 2


4.3
Übersichtsdiagramm Erweiterung ABAP Dictionary

SAP Business Anwendungen


(SAP-
(SAP-Standard)
Standard)

Personali
Modifikation Erweiterung
sierung
Transaktions Modifikationsassistent ABAP Dictionary
varianten  Tabellen 4
User-Exits  Datenelemente

Customer-Exits 5
3 8 Business Transaction Events 6
Business Add Ins 7

Überblick 2
 SAP AG 2006

(C) SAP AG BC425 3


4.4
Tabellenerweiterungen: Lernziele

Nach Behandlung dieses Themas können Sie:

 Tabellen mit Hilfe von Append-Strukturen


erweitern
 Tabellen mit Hilfe von Customizing-Includes
erweitern

 SAP AG 2002

(C) SAP AG BC425 4


4.5
Tabellenerweiterungen: Überblick

Es gibt zwei Möglichkeiten, SAP-Tabellen modifikationsfrei


um Zusatzfelder zu erweitern :

 Append-Struktur
Anlegen einer Append-Struktur zu einer SAP-Tabelle durch
Kunden möglich (ohne SAP-Vorbereitung)
Zu einer SAP-Tabelle sind beliebig viele Append-Strukturen
möglich
Diese können in Programmen wie normale Strukturen
verwendet werden

 Customizing-Include
ist bereits von SAP in SAP-Tabellen integriert
wird vom Kunden mit gewünschten Zusatzfeldern gefüllt
beinhaltet evtl. von SAP vorbereiteten Quelltexten bzw.
Dynpro-Exits zur Verarbeitung bzw. Dynpro-Anzeige der Felder
 SAP AG 2006

 Tabellen und Strukturen lassen sich auf zwei verschiedene Arten um Felder erweitern:
 Append-Strukturen dienen für Erweiterungen, die nicht im Standard vorgesehen sind. Sie können
damit Kundenfelder an beliebige Tabellen oder Strukturen anhängen.
 Eine Append-Struktur ist eine Struktur, die genau einer Tabelle oder Struktur zugeordnet ist. Es kann
zu einer Tabelle aber mehrere Append-Strukturen geben.
 Falls der SAP-Anwendungsentwickler den Bedarf an zusätzlichen Tabellenfeldern absieht, kann er
durch das Einfügen einer Customizing-Include-Anweisung für den Kunden die Möglichkeit
schaffen, die Tabelle ohne Modifikation zu erweitern.
 Ein Customizing-Include kann dabei in mehreren Tabellen oder Strukturen enthalten sein, so daß
diese bei Änderung des Includes konsistent erweitert werden.
 Ein nicht existentes Customizing-Include verursacht keinen Fehler.

(C) SAP AG BC425 5


4.6
Append-Strukturen

YYField ZZField

Tabelle Append-Struktur

Field1 Field2 Field3

Field1 Field2 Field3 YYField ZZField

 SAP AG 1999

 Append-Strukturen erlauben es, Felder an eine Tabelle anzuhängen, ohne die Tabelle selbst zu
modifizieren.
 Eine Append-Struktur ist eine Struktur, die genau einer Tabelle zugeordnet ist. Es kann mehrere
Append-Strukturen zu einer Tabelle geben. Beim Aktivieren der Tabelle werden alle aktiven
Append-Strukturen zur Tabelle ermittelt und an die Tabelle angehängt. Wird eine Append-Struktur
angelegt oder geändert, so wird bei ihrer Aktivierung auch die Tabelle, der sie zugeordnet ist,
nachaktiviert und die Änderungen werden auch dort wirksam.
 Sie können in ABAP Programmen eine Append-Struktur wie jede andere Struktur referenzieren.
 Beachten Sie: Wird eine Tabelle kopiert, an die eine Append-Struktur angehängt wurde, so werden
die Felder der Append-Struktur zu gewöhnlichen Feldern der Zieltabelle.

(C) SAP AG BC425 6


4.7
Append-Strukturen beim Upgrade

YYField ZZField

Tabelle Append-Struktur

Field1 Field2 Field3 Field4

Neue SAP-Version Aktivieren


wird importiert
Anhängen des Feldes
auf der Datenbank
Field1 Field2 Field3 Field4

Field1 Field2 Field3 YYField ZZField Field4

 SAP AG 1999

 Eine Append-Struktur wird vom Kunden im Kunden-Namensraum angelegt. Sie ist damit gegen ein
Überschreiben beim Upgrade oder Releasewechsel geschützt. Beim Upgrade wird die neue Version
der Standardtabelle eingespielt. Bei der Aktivierung derselben werden im ABAP Dictionary die
aktiven Append-Strukturen an die neue Standardtabelle angehängt.
 Da die Feldreihenfolge im ABAP Dictionary seit Release 3.0 von der Feldreihenfolge auf der
Datenbank abweichen kann, ist beim Anhängen einer Append-Struktur bzw. beim Einfügen von
Feldern in eine bestehende Append-Struktur keine Umsetzung der Datenbanktabelle notwendig. Die
notwendige Strukturanpassung erfolgt vielmehr durch Anpassen des Datenbank-Katalogs (ALTER
TABLE). Beim Aktivieren im ABAP Dictionary wird die Definition der Tabelle verändert und das
neue Feld wird an die Datenbanktabelle angehängt.
 Beachten Sie bei Append-Strukturen bitte auch folgende Punkte:
Für Pool- und Clustertabellen können keine Append-Strukturen angelegt werden.
Kommt in einer Tabelle ein langes Feld (Datentyp LCHR oder LRAW) vor, so ist eine
Erweiterung mit Append-Strukturen nicht möglich. Denn solche langen Felder müssen in der
Feldliste stets an der letzten Position stehen, d.h. letztes Feld der Tabelle sein. Es können damit
keine Felder aus einer Append-Struktur angehängt werden.
Wenn Sie eine SAP-Tabelle über eine Append-Struktur erweitern, sollten die Felder in dieser
Append-Struktur im Kundennamensraum liegen, d.h. mit YY oder ZZ beginnen. Damit werden
Namenskollisionen mit von SAP in die Standardtabelle eingefügten neuen Feldern vermieden.

(C) SAP AG BC425 7


4.8
Customizing-Includes

Feldpflege
Customizing-Include CI_ABC durch Kunden via
YYField ZZField Customizing-
Customizing-Transaktion
oder SAP-
SAP-Empfehlung

Tabelle A
Tabelle B
Field1 Field2 CI_ABC Field3
FieldL FieldM CI_ABC FieldN

Field1 Field2 Field3 YYField ZZField


FieldL FieldM FieldN YYField ZZField

 SAP AG 2006

 Im R/3-Standard können Tabellen und Strukturen ausgeliefert werden, die spezielle Include-
Anweisungen enthalten: Customizing-Includes. Dies ist in der Regel dann der Fall, wenn im
Standard schon mögliche Erweiterungen durch kundenspezifische Felder vorgesehen sind.
 Im Gegensatz zu einer Append-Struktur kann ein Customizing-Include unter Umständen in mehreren
Tabellen oder Strukturen enthalten sein, so daß diese bei Änderung des Includes konsistent bleiben.
 Der Name eines Customizing-Includes beginnt mit 'CI_' und liegt im Kunden-Namensraum. Durch
diese Namenskonvention ist gewährleistet, daß ein nicht existentes Customizing-Include keine
Fehler verursacht. Customizing-Includes werden nicht mit dem R/3-Standard ausgeliefert.
 Angelegt werden Customizing-Includes durch spezielle Customizing-Transaktionen. Einige sind
auch Bestandteil von SAP-Erweiterungen und können über die Projektverwaltung angelegt werden
(siehe Kapitel 'Erweiterungen über Customer-Exits').
 Auch für die Felder von Customizing-Includes ist der gleiche Namensraum wie für Felder von
Append-Strukturen zu beachten, d.h. Feldnamen beginnen mit 'YY' oder 'ZZ'.
 Beim Hinzufügen der Felder eines Customizing-Includes auf der Datenbank gelten die gleichen
Aussagen wie für Append-Strukturen.

(C) SAP AG BC425 8


4.9
Texterweiterungen: Lernziele

Nach Behandlung dieses Themas können Sie:

 Feldbezeichner und Dokumentationen von


SAP-Datenelementen modifikationsfrei ändern

 SAP AG 2006

(C) SAP AG BC425 9


4.10
Texterweiterungen: Überblick

SAP Kunde
SAP SAP
System Hilfe System Hilfe
  
 
    
 




  


Datenelement- Kunden-
Feldbezeichner Feldbezeichner

F1 F1
Datenelement-
Datenelement-Dokumentation (Datenelement-
(Datenelement- Dokumentation)
... ...
... ...
...
Kunden-Dokumentation

 SAP AG 2006

 Bei Texterweiterungen handelt es sich um kundeneigene Feldbezeichner und Dokumentationen zu


SAP-Datenelementen.
 Texterweiterungen sind in allen SAP-Anwendungen wirksam, die das betroffene Datenelement
verwenden (globale Erweiterungen).

(C) SAP AG BC425 10


4.11
Überlagerung von SAP-Feldbezeichnern (1)

SAP Kunde

Text-
Datenelement-
Erweiterungen
definition
definieren

Feldbezeichner Feldbezeichner
kurz : … kurz : …
mittel : … mittel : …
lang : … lang : …
Überschrift : … Überschrift : …
Kurztext : … Kurztext : …

 SAP AG 2006

 SAP legt bei der Definition eines Datenelements Feldbezeichner in verschiedenen Längen sowie
einen Kurztext fest. Diese Texte können vom Kunden mit kundeneigenen Texten überlagert werden.
 Alle Dynpro-Felder können auf diese Weise mit anderen Feldbezeichnern versehen werden.

(C) SAP AG BC425 11


4.12
Überlagerung von SAP-Feldbezeichnern (2)

Projektverwaltung Transaktion
System Hilfe CMOD
  
 
   

Projekt

Springen
keine Änderung, nur
Überlagerung der SAP-Texte
Glob. Erweiterungen
SAP
System Hilfe
  
   
Schlüsselworte
 
 

Kundeneigene Schlüsselwörter:
kurz:
ändern mittel:
lang:
Überschrift:
Kundeneigener Kurztext:

 SAP AG 2006

 Texterweiterungen werden über die Projektverwaltung (ABAP Workbench  Hilfsmittel 


Erweiterungen  Projektverwaltung) bearbeitet (Transaktion CMOD).
 Über "Springen -> Glob. Erweiterungen" gelangen Sie in die Erweiterung (Überlagerung) von
Feldbezeichnern und Dokumentationen zu SAP-Datenelementen.

(C) SAP AG BC425 12


4.13
Voraussetzung für Überlagerung eines SAP-
Feldbezeichners

SAP

Screen-
Screen-Painter

Feldliste

Screen Painter: Feldliste


System Hilfe
  
 
    

. E A Dict mod.
.
LFA1-LFNR
LFA1-LFNR
.
.
.

 SAP AG 2006

 Feldbezeichnerüberlagerungen sind nur bei Dynpro-Feldern wirksam, die nicht explizit vom
Entwickler des Dynpros einen Beschreibungstext bekommen haben.
Das Attribut "Dict modifiziert" des Dynpro-Feldes enthält in solchen Fällen den Wert "F".
 Das Attribut "Dict modifiziert" kann folgende Werte haben :
SPACE: der Feldlänge am besten angepaßter Feldbezeichner
1: kurzer Feldbezeichner
2: mittlerer Feldbezeichner
3: langer Feldbezeichner
4: Feldbezeichner für Überschrift
V: variable Textübernahme aus Dictionary (wie SPACE)
F: fix, keine Textübernahme aus Dictionary

(C) SAP AG BC425 13


4.14
Textüberlagerungen bei Releasewechsel

SAP Kunde
Release x.x Release x.x
SAP
SAP System Hilfe
System Hilfe   
 
    

  
 
    

Kunden-Feldbezeichner
alter SAP-Feldbezeichner

Release y.y
SAP
Release y.y System Hilfe
  
     

SAP  

System Hilfe neuer SAP-Feldbezeichner


  
 
    

neuer SAP-Feldbezeichner
Restaurieren Kunde

Release x.x
SAP
System Hilfe
  
 
    

Kunden-Feldbezeichner

 SAP AG 2006

 Nach einem Releasewechsel oder der Einspielung eines neuen Korrekturstandes ist eine
Restaurierung der Kundenfeldbezeichner immer dann erforderlich, wenn SAP vorhandene
Feldbezeichner nochmals ausliefert. Möchte der Kunde dann seine eigenen Feldbezeichner aus dem
letzten Release wieder haben, wählt er den entsprechenden Menüpunkt zum Restaurieren der
Kundenfeldbezeichner. SAP empfiehlt, grundsätzlich eine Restaurierung durchzuführen
(Feldbezeichnerfortschreibung).
 Die Restaurierung wird durch ein im Hintergrund laufendes Programm durchführt. Dieses Programm
untersucht alle vom Kunden angefaßten Datenelemente und restauriert, wenn erforderlich, die
Feldbezeichner.
 Bei zentralen Feldbezeichnern wie die der Datenelemente BUKRS, MANDT usw. empfehlen wir,
die Restaurierung zu einer Zeit zu starten, zu der die Inhalte der Tabellen, die BUKRS und MANDT
verwenden, nicht geändert werden. Ansonsten kann die Aktivierung des Datenelements scheitern
und es den Zustand teilaktiv annehmen.

(C) SAP AG BC425 14


4.15
SAP-Feldbezeichner restaurieren

SAP Kunde
Release x.x
SAP
System Hilfe
  
 
    

Kunden-Feldbezeichner
Release x.x

SAP
System Hilfe Restaurieren SAP
  
 
    

SAP-Feldbezeichner Release x.x

SAP
System Hilfe
  
 
    

SAP-Feldbezeichner

 SAP AG 2006

 Möcht der Kunde eine Feldbezeichnerüberlagerung wieder rückgängig machen, wählt er den
entsprechenden Menüpunkt zum Restaurieren der SAP-Feldbezeichner.
 Die Restaurierung wird durch ein im Hintergrund laufendes Programm durchgeführt. Dieses
Programm untersucht alle vom Kunden angefaßten Datenelemente und restauriert, wenn
erforderlich, die Feldbezeichner.
 Bei zentralen Feldbezeichnern wie die der Datenelemente BURKS, MANDT usw. empfehlen wir,
die Restaurierung zu einer Zeit zu starten, zu der die Inhalte von Tabellen, die BUKRS und MANDT
verwenden, nicht geändert werden.

(C) SAP AG BC425 15


4.16
Erweiterte Dokumentation zu SAP-Datenelementen

SAP Kunde

Datenelement

Kundendokumentation

Dokumentation

SAP SAP
System Hilfe System Hilfe
  




  



 
    

SAP-Dokumentation: <SAP-
SAP-Doku>
Doku>
Kundendokumentation:

 SAP AG 2006

 Bei Erweiterung der Datenelementdokumentation hat der Kunde die Möglichkeit, die SAP-
Dokumentation neben seiner eigenen zu übernehmen. In dem Fall erscheint bei F1 auf dem
entsprechenden Dynpro-Feld die kundeneigene Dokumentation ergänzend zur SAP-Dokumentation.
 Der Kunde kann sich eine Liste der veränderten Datenelemente ausgeben lassen und durch
Zeilenselektion die betreffende Kundendokumentation weiter überarbeiten.
 Möchte der Kunde die ursprüngliche Dokumentation ohne Erweiterung wieder herstellen, löscht er
einfach seine eigene Dokumentation.

(C) SAP AG BC425 16


4.17
Kundeneigene Dokumentation anlegen

CMOD

Springen

Glob. Erweiterungen

Datenelemente

DE-Kundendoku neu

SAP SAP
System Hilfe System Hilfe
     
 
    

 
    

<SAP-Doku> <SAP-Doku>
Kundendokumentation:
Kundendokumentation:

 SAP AG 2006

 Der oben in der Grafik beschriebene Menüpfad führt zu einem Abfragefenster, in dem zwischen
"Originaltext" und "Template" gewählt werden muss. Ersteres ist zu wählen, wenn Sie die SAP-
Dokumentation ergänzen möchten. Letzteres ist gedacht für eine völlig kundenindividuelle
Dokumentation ohne SAP-Originaltext.

(C) SAP AG BC425 17


4.18
Erweiterungen an Elementen des Dictionary:
Zusammenfassung des Kapitels

Sie können nun:

 Tabellen mit Hilfe von Append-Strukturen


erweitern
 Tabellen mit Hilfe von Customizing-Includes
erweitern
 Feldbezeichner und Dokumentation von SAP-
Datenelementen modifikationsfrei ändern

 SAP AG 2006

(C) SAP AG BC425 18


4.19Erweiterungen an Objekten des Dictionary Übungen

Kapitel: Erweiterungen an Objekten des Dictionary


Thema: Tabellen-Erweiterungen

Am Ende dieser Übungen können Sie:


 Tabellen mit Hilfe von Append-Strukturen erweitern.

Sie sind Mitarbeiter in der EDV-Abteilung einer großen


Reiseagentur, die SAP im Einsatz hat. Unter anderem nutzen die
Mitarbeiter in Ihrer Kundenberatung die Transaktion BC425_##,
um sich Flugdaten anzeigen zu lassen. Gerne hätten sie noch
mehr Informationen zu einem Flug, zum Beispiel den Namen des
Piloten und die Bordmahlzeit.
Die Flugdaten sind in der Tabelle SFLIGHT## abgelegt. Diese
sollen Sie um die beiden gewünschten Spalten erweitern, ohne
die Tabelle selbst zu modifizieren.

1-1 Welche Möglichkeiten bestehen, die Tabelle SFLIGHT## um Felder zu erweitern,


ohne sie zu modifizieren?
1-1-1 Wie gehen Sie vor, um die Tabelle SFLIGHT## zu erweitern?
1-1-2 Erweitern Sie die Tabelle SFLIGHT## mit Hilfe einer modifikationsfreien
Technik.

1-2 Legen Sie eine Append-Struktur zur Tabelle SFLIGHT## an.


1-2-1 Nehmen sie folgende Felder in die Struktur auf :
Piloten-Name ( Typisierung über Datenelement S_PILNAME )
Bordmahlzeit ( Typisierung über Datenelement S_MEAL )

(C) SAP AG BC425 19


4.20Erweiterungen an Objekten des Dictionary Lösungen

Kapitel: Erweiterungen an Objekten des Dictionary


Thema: Tabellen-Erweiterungen

1-1 Append-Strukturen sind hier die einzige Möglichkeit, die transparente Tabelle
SFLIGHT## zu erweitern, da keine Customizing-Includes in ihr integriert sind.
1-1-1 Wie gehen Sie vor, um die Tabelle SFLIGHT## zu erweitern?
Mit Append-Strukturen können Sie zwar genauso arbeiten wie mit
"normalen" Strukturdefinitionen. Angelegt werden sie aber aus einer
Tabelle (oder Struktur) heraus. Rufen Sie das ABAP Dictionary auf
(Transaktion SE11 oder aus dem Object Navigator Einzelobjekte 
Dictionary-Objekte bearbeiten). Geben Sie den Tabellennamen
SFLIGHT## ein und wählen Sie "Anzeigen".
1-1-2 Erweitern Sie die Tabelle SFLIGHT## mit Hilfe der Append-Technik. Das
detaillierte Vorgehen wird in den folgenden Punkten beschrieben:

1-2 Legen Sie die Append-Struktur über Springen  Append-Strukturen … bzw. die
entsprechende Drucktaste an; übernehmen Sie den Namensvorschlag. Vergeben Sie
einen Kurztext für die Append-Struktur und sichern Sie sie in dem von Ihnen
angelegten Paket.
1-2-1 Nehmen sie zwei Felder in die Struktur auf :
Die Feldnamen müssen mit YY oder ZZ beginnen.
Zum Beispiel YYPILOT und YYMEAL.
Aktivieren Sie Ihre Append-Struktur. Falls dabei Fehler auftreten, können
Sie nähere Hinweise dazu dem Aktivierungsprotokoll entnehmen.

(C) SAP AG BC425 20


5
Erweiterungen über Customer-Exits

Inhalt:
 Einführung
 Erweiterungsverwaltung
 Funktionsbaustein-Exits
 Menü-Exits
 Dynpro-Exits

 SAP AG 1999

(C) SAP AG BC425 1


5.2
Erweiterungen über Customer-Exits: Lernziele des
Kapitels

Am Ende dieses Kapitels können Sie:

 Programm-, Menü- und Dynpro-Exits, die mit Hilfe


der Customer-Exit-Technik realisiert sind, nutzen
 erläutern, was Komponenten, Erweiterungen und
Erweiterungsprojekte sind
 Erweiterungsprojekte anlegen und Erweiterungen
samt Komponenten bearbeiten
 den Anschluß an Workbench Organizer und
Transportsystem erläutern
 Erweiterungsprojekte transportieren

 SAP AG 2006

(C) SAP AG BC425 2


5.3
Übersichtsdiagramm Erweiterung Customer-Exits

SAP Business Anwendungen


(SAP-
(SAP-Standard)
Standard)

Personali
Modifikation Erweiterung
sierung
Transaktions Modifikationsassistent ABAP Dictionary
varianten  Tabellen
4
User-Exits  Datenelemente

Customer-Exits 5

3 8
Business Transaction Events 6
Business Add Ins 7

Überblick 2
 SAP AG 2006

(C) SAP AG BC425 3


5.4
Customer-Exits: Überblick

Überblick
Überblick

Erweiterungsverwaltung
Erweiterungsverwaltung

Programm-Exit
Programm-Exit

Menü-Exit
Menü-Exit

Dynpro-Exit
Dynpro-Exit

 SAP AG 2006

(C) SAP AG BC425 4


5.5
SAP-Anwendungserweiterung

SAP Kunde

Anwendungs-
Anwendungs-
entwickelt funktionalitä
funktionalität benutzt

Komponenten der
definiert Anwendungs-
Anwendungs- bearbeitet
erweiterung

faßt Anwendungs-
Anwendungs- aktiviert
zusammen erweiterung (über Projekt)

 SAP AG 2006

 Durch Anwendungserweiterungen kann eine Anwendungsfunktion vom Kunden erweitert werden.


Customer-Exits sind von der Anwendung vorgedacht und bestehen im allgemeinen aus mehreren
Komponenten.
 Anwendungserweiterungen sind zunächst inaktiv und werden erst bei Bedarf vom Kunden bearbeitet
und aktiviert.
 Eigenschaften der Erweiterungen durch Anwendungserweiterungen:
 Je Erweiterung steht ein vorgedachter, genau abgegrenzter Leistungsumfang zur Verfügung.
 Die Schnittstelle SAP/Kunde ist klar definiert.
 Der Kunde benötigt keine tiefergehende Kenntnis der SAP-Anwendungsimplementierung.
 Bei einem Upgrade ist kein Abmischen mit SAP-Weiterentwicklungen erforderlich.

(C) SAP AG BC425 5


5.6
Kundenerweiterungsprojekt

SAP Kunde

Definition Definition
von von
SAP- Erweiterungs-
Erweiterungen projekten

SMOD CMOD

 SAP AG 2006

 Der SAP-Anwendungsprogrammierer stellt aus Programm-, Menü- und Dynpro-Exits SAP-


Erweiterungen zusammen. Ihm steht dazu eine Verwaltungsfunktion zur Verfügung
(Transaktionscode SMOD).
 Der Kunde bekommt über einen Katalog einen Überblick über die existierenden SAP-Erweiterungen
und faßt die von ihm gewünschten SAP-Erweiterungen zu einem Erweiterungsprojekt zusammen.
Dafür steht ihm eine eigene Verwaltungsfunktion zur Verfügung (Transaktionscode CMOD).

(C) SAP AG BC425 6


5.7
Erweiterungen und Erweiterungsprojekte

Erweiterung
Erweiterungsprojekt
Komponente
E E
C C
C C C E
C C C
C C C

E
C C C Erweiterungsprojekt
E
C C C

E Erweiterungsprojekt
C E E
C C C

 SAP AG 2006

 Programm-, Menü- und Dynpro-Exits bilden die Komponenten einer SAP-Erweiterung. Eine
bestimmte Komponente kommt nur einmal in der Gesamtheit aller SAP-Erweiterungen vor
(Eindeutigkeit einer SAP-Erweiterung).
 Die Kundenerweiterungsprojekte setzen sich aus SAP-Erweiterungen zusammen. Eine bestimmte
SAP-Erweiterung darf nur einmal in der Gesamtheit aller Kundenerweiterungsprojekte eingesetzt
werden (Eindeutigkeit eines Kundenprojektes).

(C) SAP AG BC425 7


5.8
Customer-Exits: Erweiterungsverwaltung

Überblick
Überblick

Erweiterungsverwaltung
Erweiterungsverwaltung

Programm-Exit
Programm-Exit

Menü-Exit
Menü-Exit

Dynpro-Exit
Dynpro-Exit

 SAP AG 2006

(C) SAP AG BC425 8


5.9
Vorgehen bei SAP

Funktionsbaustein-
Funktionsbaustein-Exits
Customer-
Customer-Exits
in Anwendungsfunktionen
definieren Menü
Menü-Exits

Dynpro-
Dynpro-Exits

E
Komponenten zu C
SAP-
SAP-Erweiterungen C
zusammenfassen C

SAP-
SAP-Dokumentation:
Erweiterungen
dokumentieren

 SAP AG 1999

 Der SAP-Anwendungsprogrammierer plant mögliche Anwendungserweiterungen in seine


Anwendung ein und definiert die hierfür erforderlichen Komponenten. Diese Komponenten faßt er
zu SAP-Erweiterungen zusammen.
 Die SAP-Erweiterung dokumentiert er so, daß der Kunde später weitestgehend ohne Analyse der
Programm- und Dynpro-Sourcen die Erweiterung implementieren kann.

(C) SAP AG BC425 9


5.10
Vorgehen beim Kunden

Erweiterungsprojekt
Erweiterungsprojekt
Erweiterungsprojekt
aus
aus SAP-
SAP -Erweiterungen
SAP-Erweiterungen E E
aufbauen
aufbauen C C
C

Exit-
Exit-Funktionsbausteine
Komponenten
Komponenten des
des
Erweiterungsprojekts
Erweiterungsprojekts Menü
Menü-Einträ
Einträge
bearbeiten
bearbeiten

Subscreen-
Subscreen-Dynpros

Kundendokumentation:
Kundendokumentation:
Erweiterungsprojekt
Erweiterungsprojekt
dokumentieren
dokumentieren

Erweiterungsprojekt
Erweiterungsprojekt
aktivieren aktivieren
aktivieren
aktivieren

 SAP AG 1999

 Der Kunde wählt zunächst über die Projektverwaltungsfunktion die SAP-Erweiterungen aus, die er
nutzen möchte und baut daraus ein Erweiterungsprojekt auf.
 In einem weiteren Schritt bearbeitet er die einzelnen Komponenten (ebenfalls über die
Projektverwaltungsfunktion) und dokumentiert das gesamte Erweiterungsprojekt.
 Schließlich aktiviert er das Erweiterungsprojekt (und damit alle seine Komponenten).

(C) SAP AG BC425 10


5.11
Kundenerweiterungsprojekt anlegen

Transaktion
CMOD
Projektverwaltung von SAP Erweiterungen

Projekt Anlegen

Teilobjekte
Attribute
Zuordnung Erweiterungen
Komponenten
Dokumentation

Anzeigen Ändern Attribute Erweiterungsprojekt

Projekt <project>

Kurztext

 SAP AG 2006

 Der Kunde startet die Projektverwaltungsfunktion (Transaktion CMOD) und vergibt als erstes dem
Erweiterungsprojekt einen Namen. Es ist empfehlenswert, sich dazu eine Namenskonvention zu
überlegen. Diese kann z.B. darin bestehen, daß man den Namen der Transaktion oder des
Modulpools in den Namen des Projekts aufnimmt. Der Projektname bezeichnet das
Erweiterungsprojekt eindeutig im System.
 Anschließend verzweigt der Kunde in die Projektattribute und gibt einen Kurztext für das
Erweiterungsprojekt ein. Die übrigen Attribute (Namens- und Zeitstempel für anlegen und ändern,
Status) werden vom System vergeben.

(C) SAP AG BC425 11


5.12
SAP-Erweiterungen Kundenprojekt zuordnen

Projektverwaltung von SAP Erweiterungen

Projekt Anlegen

Teilobjekte
Attribute
Zuordnung Erweiterungen
Komponenten
Dokumentation

Anzeigen Ändern SAP Erweiterungen in Projekt

Erweiterung Kurztext

 SAP AG 1999

 Über die Projektverwaltung ordnet der Kunde SAP-Erweiterungen einem


Kundenerweiterungsprojekt zu. Dazu trägt er auf einem entsprechenden Bildschirm die Namen der
SAP-Erweiterungen ein.
 Über eine Suchfunktion kann er sich zunächst einen katalogartigen Überblick über die existierenden
SAP-Erweiterungen verschaffen und sich mittels Objektauswahl die ihn interessierenden SAP-
Erweiterungen auswählen.

(C) SAP AG BC425 12


5.13
Komponenten bearbeiten

Projektverwaltung von SAP Erweiterungen


Function Builder

Projekt Anlegen Funktionsbaustein

Teilobjekte
Text ändern
Attribute
Zuordnung Erweiterungen Menü-Text
Komponenten
Dokumentation
Übernehmen
Anzeigen Ändern
Screen Painter

 SAP AG 1999

 Der Kunde bearbeitet die Komponenten seines Erweiterungsprojektes über die


Projektverwaltungsfunktion.
 Je nachdem, ob es sich bei der Erweiterung um einen Funktionsbaustein, einen Menüeintrag oder ein
Subscreen-Dynpro handelt, verzweigt er in den Function-Builder, in ein Dialogfenster zur
Texteingabe für den Menüeintrag oder in den Screen Painter.

(C) SAP AG BC425 13


5.14
Erweiterungsprojekt aktivieren

Projektverwaltung von SAP Erweiterungen

Projekt Anlegen
Aktivieren
Aktivieren
Teilobjekte
Attribute
Zuordnung Erweiterungen
Komponenten
Dokumentation

Anzeigen Ändern

 SAP AG 1999

 Die Aktivierung eines Erweiterungsprojekts bezieht sich auf alle Komponenten. Nach erfolgreicher
Aktivierung bekommt das Projekt den Status aktiv.
 Beim Aktivieren werden auch alle Programme, Dynpros und Menüoberflächen, die zum Projekt
gehörige Komponenten enthalten, neu generiert (Programme erst, wenn sie gestartet werden). Nach
der Aktivierung sind die Erweiterungen in den Anwendungsfunktionen sichtbar.
 Mit der Funktion Deaktivieren kann man die Aktivierung eines Erweiterungsprojekts wieder
zurücknehmen, es bekommt dann den Status inaktiv.

(C) SAP AG BC425 14


5.15
Transport von Projekten

Entwicklungssystem Folgesystem

Erweiterungsprojekt
Erweiterungsprojekt
E Transport E E
E auftrag C C C
C C
C

 SAP AG 1999

 Um einen konsistenten Transport Ihres Erweiterungsprojekts zu gewährleisten, sollten Sie sowohl


das Erweiterungsprojekt selbst als auch jede einzelne Komponente (Include-Programme, Subscreen-
Dynpros, Include mit Subscreen-Modulpools) einer oder mehreren Aufgaben innerhalb eines
Änderungsauftrags zuordnen.

(C) SAP AG BC425 15


5.16
Customer-Exits: Programm-Exit

Überblick
Überblick

Erweiterungsverwaltung
Erweiterungsverwaltung

Programm-Exit
Programm-Exit

Menü-Exit
Menü-Exit

Dynpro-Exit
Dynpro-Exit

 SAP AG 2006

(C) SAP AG BC425 16


5.17
Überblick Programm-Exit

SAP Kunde

Programm-
Programm-Exit

festlegen

Aufruf

Verwaltung Funktions-
Funktions- Quelltext
baustein
Schnittstelle
Dokumentation

 SAP AG 2006

 Programm-Exits erlauben dem Kunden, in einer Anwendungsfunktion zusätzliche Logik zu


implementieren. Der SAP-Anwendungsprogrammierer bestimmt, wo in einer Anwendungsfunktion
Programm-Exits festgelegt werden und welche Daten übergeben werden. Er legt die zugehörigen
Funktionsbausteine mit Kurztext, Schnittstelle und Dokumentation an, und er beschreibt die für
einen Programm-Exit vorgesehene Funktionalität in der zugehörigen SAP-Dokumentation.
 Den Quelltext der Funktionsbausteine legt der Kunde an, gegebenenfalls auch Dynpros,
Textelemente, eigene Includes zur Funktionsgruppe, etc.
 Erst wenn das Erweiterungsprojekt, das den Funktionsbaustein als Komponente enthält, vom Kunden
aktiviert wird, wird das ABAP-Programm durchlaufen. Vorher wirken sich Programm-Exits nicht
aus.

(C) SAP AG BC425 17


5.18
Programm-Exit: Architektur

Anwendungsprogramm

X-Funktionsgruppe

Exit-Funktionsbaustein
EXIT_<prog_name>_001
CALL CUSTOMER-FUNCTION

Include im
Kundennamensraum

 SAP AG 2006

 In diesem Bild ist der Ablauf eines Programmes dargestellt, das eine Erweiterung in Form eines
Programm-Exits anbietet.
 An einer vom SAP-Anwendungsentwickler definierten Stelle im Quelltext wird der Exit-
Funktionsbaustein aufgerufen. Innerhalb des Funktionsbausteins kann der Verwender mit Hilfe eines
Includes im Kundennamensraum Funktionalität hinzufügen.

(C) SAP AG BC425 18


5.19
Programm-Exit: Syntax

PROGRAM
PROGRAM <program_name>.
<program_name>.

...
... FUNCTION-POOL
FUNCTION-POOL XAAA.
XAAA.
...
...

CALL CUSTOMER-
CUSTOMER-FUNCTION '001' FUNCTION
FUNCTION exit_<program_name>_001.
exit_<program_name>_001.
EXPORTING ...
...
... INCLUDE zxaaau01.
IMPORTING
... . ENDFUNCTION.
ENDFUNCTION.
...
...
Kunden-Include
mit
Kundenquelltext

 SAP AG 2006

 Den Aufruf eines Funktionsbausteins legt der SAP-Anwendungsprogrammierer durch die ABAP-
Anweisung CALL CUSTOMER-FUNCTION 'nnn' fest. Dabei bedeutet 'nnn' eine dreistellige
Nummer. Der SAP-Anwendungsprogrammierer legt auch den zugehörigen Funktionsbaustein und
die Funktionsgruppe an.
 Der Funktionsbaustein befindet sich in einer Funktionsgruppe, deren Name mit einem X beginnt (X-
Funktionsgruppe).
 Der Name des Funktionsbausteins unterliegt folgender Namenskonvention:
Präfix: EXIT
Infix: Name des Programms, in dem der Funktionsbaustein aufgerufen wird
Suffix: Dreistellige Nummer
Zwischen Prä- und Infix sowie zwischen In- und Suffix befindet sich jeweils ein Unterstrich.
 Erst nach Aktivierung des zugehörigen Erweiterungsprojekts wird die Anweisung CALL
CUSTOMER-FUNCTION auch ausgeführt. Bei mehreren Aufrufen des gleichen Funktionsbausteins
bezieht sich die Aktivierung auf alle Aufrufe.

(C) SAP AG BC425 19


5.20
Programm-Exits finden

 Programmbezogene Suche  Suche über Tools

System  Status
 Doppelklick auf
Anwendungs
Programmnamen
optionale hierarchie
Suchen nach Zeichenkette... Vorsuche
CALL CUSTOMER

 global in Programm Repository


Infosystem

CMOD
 Hilfsmittel
IMG
 SAP-Erweiterungen
Hauptsuche
 Suche einschränken mit
Komponentenname =
EXIT_sap_programm_*
Dokumentation
 SAP AG 2006

 Wie können sie erkennen, ob ein Anwendungsprogramm einen Programm-Exit anbietet? Das ist eine
zentrale Frage bei jeder Form der Erweiterung. Es gibt verschiedene Strategien, wie Sie dieses Ziel
erreichen können.
 Um einen schnellen Eindruck zu erhalten, ob ein Anwendungsprogramm überhaupt einen
Funktionsbaustein-Exit bietet, können sie den auf der linken Seite aufgezeichneten Weg verfolgen:
Navigieren sie in das Programm und suchen sie nach einer spezifischen Zeichenkette. Über den
Menüpfad System  Status erhalten sie immer den Namen des Anwendungsprogramms. In unserem
Beispiel wäre eine geeignete Zeichenkette "CALL CUSTOMER". Diese suchen Sie global im
Programm(!). Falls Ihre Suche an dieser Stelle nicht erfolgreich ist, können sie den Suchbereich
weiter fassen: Führen sie eine Umfeldermittlung für das entsprechende Programm durch und suchen
Sie nach der spezifischen Zeichenkette im Umfeld des Programms.
 In der rechten Hälfte des Bildes sind die Suchwerkzeuge angegeben, mit deren Hilfe Sie den Namen
der gesuchten Erweiterung herausfinden können. Im Repository Infosystem können sie die Suche mit
Hilfe von verschiedenen Kriterien einschränken: Wichtige Kriterien sind:
 Paket (Versuchen sie auch generische Eingaben)
 Technischer Name der Erweiterung

(C) SAP AG BC425 20


5.21
Programm-Exit bearbeiten

Projektverwaltung von SAP Erweiterungen

Function Builder
Projekt Anlegen
FUNCTION exit_<prog_name>_001.
Teilobjekte
Attribute INCLUDE zxaaau01.
Zuordnung Erweiterungen
ENDFUNCTION.
Komponenten
Dokumentation

Anzeigen Ändern

ABAP Editor

*INCLUDE zxaaau01

 SAP AG 2006

 Sie bearbeiten den Funktionsbaustein eines Programm-Exits über die Projektverwaltung


(Transaktion CMOD).
 Über die Drucktaste zum Bearbeiten der Komponenten gelangen sie direkt in den Editor des
Funktionsbausteins (Anzeigemodus).
 Der Funktionsbaustein selbst darf nicht verändert werden. Insbesondere darf die Schnittstelle nicht
geändert werden. Jedoch enthält er eine INCLUDE-Anweisung zu einem im Kundennamensraum
anzulegenden Include-Programm.
 Nach Objektauswahl (Doppelklick) verzweigen sie in den Editor des Include-Programms, in dem sie
eigenen Quelltext erfassen können.

(C) SAP AG BC425 21


5.22
Aufbau einer Funktionsgruppe

SAPLXAAA Programmname

LXAAATOP Globale Daten

LXAAAUXX Alle Funktionsbausteine

LXAAAU01 Funktionsbaustein #01

LXAAAU02 Funktionsbaustein #02

LXAAAF01 Unterprogramme

...
 SAP AG 1999

 Um zu verstehen, wie eine X-Funktionsgruppe arbeitet, müssen Sie zunächst den Aufbau einer
gewöhnlichen Funktionsgruppe kennen:
 Eine Funktionsgruppe ist aufgebaut aus Includes. Das System verwendet für verschiedene Objekte
eindeutig zugeordnete Includes. Zum Teil werden die Namen der Includes lediglich
vorgeschlagen, zum Teil können die Namen der Includes nicht geändert werden.
 Globale Daten werden in dem sogenannten TOP-Include abgelegt. Dieses Include wird beim
Anlegen einer Funktionsgruppe automatisch erzeugt.
 Funktionsbausteine werden in Includes mit fortlaufenden Nummern abgelegt, die ihrerseits alle
wieder in einem Include mit der Endung UXX liegen.
 Für alle anderen Objekte (Unterprogramme, Module, Ereignisse, etc.) kann der Name des
jeweiligen Includes im Prinzip frei gewählt werden. Es empfiehlt sich jedoch, die vorgeschlagenen
Namen zu übernehmen.

(C) SAP AG BC425 22


5.23
Aufbau einer Exit-Funktionsgruppe

SAPLXAAA Programmname

LXAAATOP Globale Daten

LXAAATAP Globale Daten SAP

ZXAAATOP Globale Daten Kunde

LXAAAUXX Alle Funktionsbausteine

LXAAAU01 Funktionsbaustein #01

ZXAAAU01 Kundeneigener Quelltext

LXAAAU02 Funktionsbaustein #02

ZXAAAU02 Kundeneigener Quelltext

LXAAAF00 Quelltext-Vorschlag von SAP

...
 SAP AG 1999

 Die vom SAP-Anwendungsprogrammierer angelegte Exit-Funktionsgruppe enthält Includes, deren


Name mit 'LX' beginnt, und solche, deren Name mit 'ZX' anfängt. Nur die Includes Z*, die im
Kunden-Namensraum liegen, dürfen von Ihnen bearbeitet werden.
 Innerhalb der Funktionsgruppe dürfen keine weiteren Funktionsbausteine hinzugefügt werden.
 Den Quelltext für den Funktionsbaustein erfassen Sie im Include-Programm ZXaaaUnn.

(C) SAP AG BC425 23


5.24
Globale Daten einer Exit-Funktionsgruppe

FUNCTION-POOL
FUNCTION-POOL xaaa.
xaaa.
SAPLXAAA
INCLUDE
INCLUDE LXaaaTAP.
LXaaaTAP.
LXAAATOP INCLUDE
INCLUDE ZXaaaTOP.
ZXaaaTOP.

LXAAATAP TABLES:
TABLES: ...
...
DATA:
DATA: ...
...
ZXAAATOP

LXAAAUXX TABLES:
TABLES: ...
...
DATA:
DATA: ...
...
LXAAAU01

ZXAAAU01

LXAAAU02

ZXAAAU02

LXAAAF00

...
 SAP AG 2006

 Der SAP-Anwendungsprogrammierer kann globale Daten im Include LXaaaTAP festlegen.


 Sie deklarieren ihre globalen Daten im Include ZXaaaTOP.
 Die FUNCTION-POOL Anweisung befindet sich im Include LXaaaTOP und darf nicht geändert
werden. Daher muß bei Ausgabe von Nachrichten die Nachrichtenklasse in Klammern angegeben
werden (Beispiel: MESSAGE E500(EU)).

(C) SAP AG BC425 24


5.25
Kundeneigene Verarbeitungsblöcke

SAPLXAAA

LXAAATOP
FUNCTION
FUNCTION exit_<program_name>_001.
exit_<program_name>_001.
LXAAATAP
...
...
ZXAAATOP
INCLUDE
INCLUDE ZXaaaU01.
ZXaaaU01.
LXAAAUXX ...
...
ENDFUNCTION.
ENDFUNCTION.
LXAAAU01

ZXAAAU01 *INCLUDE
*INCLUDE ZXaaaU01.
ZXaaaU01.
DATA:
DATA: <lokale
<lokale Daten>.
Daten>.
LXAAAU02
FORM.
FORM. ...
... ENDFORM.
ENDFORM.
ZXAAAU02 MODULE.
MODULE. ...
... ENDMODULE.
ENDMODULE.
GET
GET ...
...
LXAAAF00 AT
AT ...
...
...
 SAP AG 2006

 Die INCLUDE-Anweisung für das Programm ZXaaaUnn ist in einem FUNCTION -


ENDFUNCTION-Block enthalten. Daher dürfen hier weder Ereignisse noch Unterprogramme
(FORM) oder Module (MODULE) liegen. Diese müssen in separaten Includes angelegt werden, was
wir weiter unten sehen werden. Hier mit DATA vereinbarte Datendeklarationen gelten lokal in
diesem Funktionsbaustein.
 Der SAP-Anwendungsprogrammierer kann einen Vorschlag für den Quelltext mitgeben. In diesem
Fall wird ein Include LXaaFnn angelegt (dabei bedeutet nn die intern vergebene Nummer für den
Funktionsbaustein im Include LXaaaUXX). Der Entwickler dokumentiert dieses Include innerhalb
der SAP-Erweiterung. Der Quelltext dieses Includes kann über die Projektverwaltungsfunktion in
das kundeneigene Include ZXaaaUnn übernommen werden.
 Sie können eigene Textelemente für die Funktionsgruppe anlegen.

(C) SAP AG BC425 25


5.26
Weitere SAP-Objekte einer Exit-Funktionsgruppe

SAPLXAAA Programmname

LXAAATOP Globale Daten

...
LXAAAUXX Alle Funktionsbausteine

...
LXAAAF01 Unterprogramme

LXAAAO01 PBO-Module

LXAAAI01 PAI-Module

LXAAAE01 ABAP-Ereignisse

...

 SAP AG 2006

 Der SAP-Anwendungsentwickler kann von Ihnen aufrufbare Unterprogramme im Include LXaaaF01


vorschlagen.
 Falls vorgesehen, gibt es weitere Includes, die jeweils spezifische Unterobjekte beinhalten:
 LX...F01 beinhaltet von SAP ausgelieferte Unterprogramme
 LX...E01 beinhaltet zu der X-Funktionsgruppe gehörende Ereignisse
 LX...O01 beinhaltet PBO-Module zu Dynpros, die ausgeliefert werden
 LX...I01 beinhaltet die zugehörigen PAI-Module

(C) SAP AG BC425 26


5.27
Kunden-Objekte in einer Exit-Funktionsgruppe

SAPLXAAA Programmname

LXAAATOP Globale Daten

...
LXAAAUXX Alle Funktionsbausteine

...
ZXAAAZZZ Alle weiteren Kundenobjekte:

ZXAAAF01 Unterprogramme

ZXAAAO01 PBO-Module

ZXAAAI01 PAI-Module

ZXAAAE01 ABAP-Ereignisse

...
 SAP AG 2006

 Sie legen Unterprogramme, Module oder interaktive Ereignisse (AT…) über eigene Includes an, die
über das Include ZXaaaZZZ eingebunden werden.
 Die zusätzlichen Includes unterliegen der folgenden Namenskonvention:
 ZXaaaFnn für Unterprogramme
 ZXaaaOnn für PBO-Module
 ZXaaaInn für PAI-Module
 ZXaaaEnn für Ereignisse

(C) SAP AG BC425 27


5.28
Kundeneigene Dynpros

SAPLXAAA

LXAAATOP

... *INCLUDE
*INCLUDE ZXaaaU01.
ZXaaaU01.
...
...
LXAAAUXX CALL
CALL SCREEN
SCREEN 9000
9000
STARTING
STARTING AT
AT 55 5.
5.
LXAAAU01

ZXAAAU01 *INCLUDE
*INCLUDE ZXaaaO01.
ZXaaaO01.

MODULE
MODULE ...
... OUTPUT.
OUTPUT.
ZXAAAZZZ
ENDMODULE.
ENDMODULE.
ZXAAAO01
*INCLUDE
*INCLUDE ZXaaaI01.
ZXaaaI01.
ZXAAAI01
MODULE
MODULE ...
... INPUT.
INPUT.

ENDMODULE.
ENDMODULE.

 SAP AG 1999

 Mit CALL SCREEN können sie selbst angelegte Dynpros aufrufen. Die zugehörigen Includes für
die PBO- und PAI-Module werden im Include ZXaaaZZZ angelegt.
 Das Anlegen von kundeneigenen Dynpros und Modulen wird durch Vorwärtsnavigation unterstützt.
 Das kundeneigene Dynpro erhält dabei den Namen des Rahmenprogramms des Funktionsbausteins
(SAPLXaaa). Die PBO-Module befinden sich im Include ZXaaaO01, die PAI-Module im Include
ZXaaaI01.

(C) SAP AG BC425 28


5.29
Zusammenfassung Programm-Exits

SAP Anwendungs-Programm X-Funktionsgruppe XAAA


ABAP ABAP Dynpros
***Global Data***
DATA: gl_field... 9000
CALL CUSTOMER- FUNCTION exit_prg_001.
FUNCTION '001' *IMPORTING i_vars
EXPORTING INCLUDE ZXaaaU01.
i_vars = gl_field.

ENDFUNCTION.

*INCLUDE ZXaaaU01

CALL SCREEN 9000.


9100
<zusä
<zusätzliche
Verarbeitungslogik>

Textelemente

GUI-
GUI-Oberflä
Oberfläche
 SAP AG 2006

 Sie können eine SAP-Anwendung an vorgegebenen Stellen durch zusätzliche Verarbeitungslogik


erweitern.
 Im Rahmen einer solchen Erweiterung können sie auch eigene Dynpros mit zugehöriger
Verarbeitungslogik und GUI-Oberfläche einbauen und kundeneigene Textelemente anlegen.

(C) SAP AG BC425 29


5.30
Customer-Exits: Menü-Exit

Überblick
Überblick

Erweiterungsverwaltung
Erweiterungsverwaltung

Programm-Exit
Programm-Exit

Menü-Exit
Menü-Exit

Dynpro-Exit
Dynpro-Exit

 SAP AG 2006

(C) SAP AG BC425 30


5.31
Überblick Menü-Exits

SAP Kunde

Menu 1 Menu 2 Menu 3 Menu 1 Menu 2 Menu 3


Funktion
Funktion11 Funktion
Funktion11
Funktion
Funktion22 Funktion
Funktion22
Funktion
Funktion33 Funktion
Funktion33
Kundenfunktion

 SAP AG 2006

 Menü-Exits erlauben es ihnen, eigene Funktionalitäten über eigene Menüeinträge in SAP-Menüs zu


realisieren. Der SAP-Anwendungsprogrammierer reserviert hierzu in der GUI-Oberfläche bestimmte
Menüeinträge. Den entsprechenden Eintragstext können Sie selbst bestimmen.
 Die Menü-Exits werden von Ihnen aktiviert und sind ab diesem Zeitpunkt im SAP-Menü sichtbar.
Beim Auswählen des entsprechenden Menüpunktes wird in einen Programm-Exit verzweigt, in dem
die kundeneigene Funktionalität realisiert ist.

(C) SAP AG BC425 31


5.32
Voraussetzung für Menü-Exits

SAP

Menu Painter

Menu 1 Menu 2 Menu 3


BACK Zurück
DISP Anzeigen
+ABC Kundenfunktion

 SAP AG 1999

 Zur Realisierung von Menü-Exits muß der SAP-Anwendungsprogrammierer in der GUI-Oberfläche


des Anwendungsprogrammes Funktionscodes vorsehen, die mit einem "+" beginnen.
 Diese Funktionscodes sind zunächst inaktiv. Sie erscheinen nicht in der Oberfläche. Erst wenn sie
einen solchen Funktionscode aktivieren, wird er auch sichtbar.

(C) SAP AG BC425 32


5.33
Menü- und Programm-Exits

PROGRAM
PROGRAM <program_name>.
<program_name>.
DATA
DATA ok_code
ok_code LIKE
LIKE sy-ucomm.
sy-ucomm.
...
...

** PAI-Modul
PAI-Modul ::
CASE
CASE ok_code.
ok_code.
WHEN
WHEN 'DISP'.
'DISP'.
...
...
WHEN '+ABC'.
CALL CUSTOMER-
CUSTOMER-FUNCTION '001' Kunden-
EXPORTING Funktionalität
<i_variables>
IMPORTING
<e_variables>.

...
...
ENDCASE.
ENDCASE.

 SAP AG 2006

 Der SAP-Anwendungsprogrammierer bestimmt, wo im Programm zusätzliche Funktionscodes


abgefragt werden und wie darauf reagiert werden soll, entweder durch einen Programm-Exit oder
durch eine bereits fest vorgegebene Funktionalität.

(C) SAP AG BC425 33


5.34
Name und Bearbeitung von Menü-Exits

Projektverwaltung von SAP Erweiterungen

Projektverwaltung
Projekt Anlegen
Menü-Exit
Teilobjekte
SAPMXYZ+ABC
Attribute
Zuordnung Erweiterungen
Programm-Exit
Komponenten
Dokumentation EXIT_SAPMXYZ_001

Anzeigen Ändern
Text ändern

Menü-Text

Übernehmen
 SAP AG 2006

 Sie bearbeiten Menü-Exits über die Projektverwaltung.


 Über die Drucktaste zum Bearbeiten der Komponenten gelangen sie zu einem Dialogfenster, in dem
sie sprachenabhängig eine kundeneigene Bezeichnung für den zusätzlichen Menüeintrag eingeben
können.
 Die GUI-Oberfläche selbst darf nicht verändert werden.

(C) SAP AG BC425 34


5.35
Customer-Exits: Dynpro-Exit

Überblick
Überblick

Erweiterungsverwaltung
Erweiterungsverwaltung

Programm-Exit
Programm-Exit

Menü-Exit
Menü-Exit

Dynpro-Exit
Dynpro-Exit

 SAP AG 2006

(C) SAP AG BC425 35


5.36
Überblick Dynpro-Exit

SAP Kunde

SAP SAP

Feld 1 Feld 1
Feld 2 Feld 2

Feld X
Feld Y

 SAP AG 2006

 Dynpro-Exits erlauben en ihnen, vom SAP-Anwendungsprogrammierer reservierte Bereiche


(Subscreenbereiche) eines Hauptdynpros selbst zu gestalten. In diesen Bereichen können
weitergehende Informationen angezeigt oder Daten erfaßt werden. Die hierzu nötigen Felder werden
von ihnen auf einem kundeneigenen Dynpro (Subscreen) gestaltet.

(C) SAP AG BC425 36


5.37
Subscreens (allgemein)

Telefon
Telefax SAP
Email
200 Name

Telefon
SAP Telefax
Email
abcd
Name 200

abcd SAP

Name
Straße Straße
Wohnort
Land
Wohnort
Land
abcd
300 300
 SAP AG 2006

 Subscreens sind rechteckige Bereiche auf einem Dynpro, die für die Anzeige anderer Dynpros zur
Laufzeit reserviert sind. Auf jedem Subscreen-Bereich kann zur Laufzeit ein anderes Dynpro (vom
Typ Subscreen) angezeigt werden.

(C) SAP AG BC425 37


5.38
Aufruf eines normalen Subscreens

 Ablaufsteuerung des Hauptdynpros

PROCESS BEFORE OUTPUT.


MODULE ...
CALL SUBSCREEN abcd
INCLUDING sy-
sy-cprog '1234'.

MODULE ...

PROCESS AFTER INPUT.


MODULE ...
CALL SUBSCREEN abcd.
MODULE user_command_0100.

 SAP AG 2006

 Zum Zeitpunkt, zu dem das Ereignis PBO prozessiert wird, wird für jeden Subscreenbereich
entschieden, welches Dynpro angezeigt wird. Die allgemeine Syntax lautet:
CALL SUBSCREEN <subscreen-area> INCLUDING <prg> <dynpro_no>.
 Die PAI- und PBO-Verarbeitung wird zu jedem Subscreen wie bei "normalen" Dynpros ausgeführt.
 Die Reihenfolge der "CALL SUBSCREEN"-Aufrufe in der Ablauflogik des Hauptdynpros bestimmt
die Reihenfolge, in der die Ablauflogik der einzelne Subscreen-Dynpros abgearbeitet wird.
 Achtung:
Die Funktionscode-Verarbeitung findet nur über das Hauptdynpro statt!
Subscreens dürfen "ihrem" Befehlsfeld keinen Namen geben!
Subscreens dürfen keinen GUI-Status setzen!
In der Ablaufsteuerung eines Subscreens darf nicht das Folgedynpro gesetzt werden!

(C) SAP AG BC425 38


5.39
Definition eines Dynpro-Exits

Dynpro
Dynpro eines
eines
SAP-Programm
SAP-Programm

SAP
SAPLXAAA
Dynpro 1234

Kundenfeld1
abcd Kundenfeld2

PROCESS BEFORE OUTPUT.


...
CALL CUSTOMER-
CUSTOMER-SUBSCREEN abcd
INCLUDING 'SAPLXAAA' '1234'.

...

 SAP AG 2006

 Für ein Dynpro kann der SAP-Anwendungsprogrammierer mehrere Subscreenbereiche reservieren.


 Der Subscreen wird innerhalb der Ablaufsteuerung des Hauptdynpros mit der Anweisung CALL
CUSTOMER-SUBSCREEN aufgerufen. Der Name des Subscreenbereichs muß ohne Hochkomma
angegeben werden. Die Funktionsgruppe, zu dem der gerufene Subscreen gehört, muß statisch in
Hochkommata angegeben werden, die Dynpronummer kann durch die Verwendung von Feldern
variabel gehalten werden; sie muß immer vierstellig angegeben werden.
 Der Aufruf des Dynpro-Exits ist zunächst inaktiv, d.h. er wird bei Prozessieren des Dynpros
übersprungen.
 Erst wenn sie den Subscreen innerhalb eines Erweiterungsprojekts angelegt und das
Erweiterungsprojekt aktiviert haben, wird der Aufruf wirksam.
 Sie legen den Subscreen in einer X-Funktionsgruppe an, die in der Regel auch Exit-
Funktionsbausteine enthält.

(C) SAP AG BC425 39


5.40
Aufruf eines Customer-Subscreens

SAP Anwendungs-Programm X-Funktionsgruppe XAAA


Dynpro

PROCESS BEFORE OUTPUT.


MODULE ...

CALL CUSTOMER-
CUSTOMER-SUBSCREEN abcd PROCESS BEFORE OUTPUT.
INCLUDING 'SAPLXAAA' '1234'.
MODULE ... MODULE ...
MODULE ...

abcd Subscreen-Dynpro 1234

PROCESS AFTER INPUT. PROCESS AFTER INPUT.


MODULE ...
CALL CUSTOMER-
CUSTOMER-SUBSCREEN abcd. MODULE ...
MODULE ...
MODULE ...

 SAP AG 2006

 An allen Stellen in der Ablaufsteuerung eines Dynpros, an denen zum PBO-Zeitpunkt der Aufruf
CALL CUSTOMER-SUBSCREEN <subscreen-area> INCLUDING <X-Function-
Pool> <dynpro_no>
erfolgt, wird ein Subscreen in den vom SAP-Anwendungsentwickler vorgesehenen Subscreenbereich
inkludiert. Dabei wird auch die zu PBO des Subscreens aufgerufenen Module abgearbeitet.
 PAI des Subscreens wird erst dann prozessiert, wenn das rufende Dynpro zu PAI den Subscreen mit
CALL CUSTOMER-SUBSCREEN <subscreen-area>
aufruft.

(C) SAP AG BC425 40


5.41
Datentransport zum Subscreen

SAP Anwendungs-Programm X-Funktionsgruppe XAAA


Dynpro ABAP ABAP Dynpro
***Global Data***
DATA: gl_field...

MODULE... CALL CUSTOMER-


FUNCTION '001'
EXPORTING
i_vars = gl_field. FUNCTION exit_prg_001.
*IMPORTING i_vars

gl_var = i_vars.
CALL
CUSTOMER- ENDFUNCTION.
SUBSCREEN... Subscreen-
***Global
***Global Data*** Dynpro
DATA: gl_var...

abcd

 SAP AG 2006

 Die globalen Daten des rufenden Programms sind der den Subscreen enthaltenden X-
Funktionsgruppe nicht bekannt; sie werden explizit vom SAP-Anwendungsentwickler über
Programm-Exits zur Verfügung gestellt.
 Dazu werden in der Ablaufsteuerung des rufenden Programms Module aufgerufen, die Programm-
Exits enthalten, welche schließlich über die Schnittstellenparameter die Daten übergeben.
 Die zugehörigen Exit-Funktionsbausteine liegen in der gleichen X-Funktionsgruppe, in der auch der
Kunden-Subscreen anzulegen ist.

(C) SAP AG BC425 41


5.42
Datentransport vom Subscreen

SAP Anwendungs-Programm X-Funktionsgruppe XAAA


Dynpro ABAP ABAP Dynpro

...

Subscreen-
Dynpro

abcd ***Global
***Global Data***
DATA: gl_var ...
CALL
CUSTOMER-
SUBSCREEN...

MODULE ... CALL CUSTOMER-


FUNCTION exit_prg_002.
FUNCTION '002'
MODULE ... *EXPORTING e_vars
IMPORTING
e_vars = gl_field. e_vars = gl_var.

ENDFUNCTION.

***Global Data***
DATA: gl_field ...

 SAP AG 2006

 Umgekehrt sind dem rufenden Programm auch nicht die globalen Daten der X-Funktionsgruppe
bekannt, die die Benutzereingaben auf dem Subscreen enthalten. Daher läßt der SAP-
Anwendungsprogrammierer die auf dem Subscreen geänderten Daten wieder über einen Programm-
Exit an das rufende Programm zurückgeben.
 Dazu wird zu PAI des Hauptdynpros ein Modul aufgerufen, das einen Programm-Exit zum Empfang
der entsprechenden globalen Daten der X-Funktionsgruppe enthält.

(C) SAP AG BC425 42


5.43
Name und Bearbeitung von Dynpro-Exits

Projektverwaltung von SAP Erweiterungen

Projektverwaltung
Projekt Anlegen
Dynpro-Exit
Teilobjekte
SAPMXYZ0200_abcd_SAPLXaaa1234
Attribute
Zuordnung Erweiterungen Programm-Exits
Komponenten
Dokumentation
EXIT_SAPMXYZ_001
EXIT_SAPMXYZ_002
Anzeigen Ändern

Screen Painter

 SAP AG 2006

 Sie bearbeiten Dynpro-Exits über die Projektverwaltung.


 Der technische Name eines Dynpro-Exits setzt sich zusammen aus dem Namen des rufenden
Programms, der vierstelligen Nummer des Träger-Dynpros und dem Namen des Subscreenbereichs,
gefolgt vom Namen des Programms der X-Funktionsgruppe und der Nummer des Subscreens.

(C) SAP AG BC425 43


5.44
Subscreens bearbeiten

Komponenten
bearbeiten

Nein Ja
Dynpro
vorhanden?
Dynpro Screen Painter
anlegen? Screen
System Hilfe Painter
System Hilfe
Screen Painter
  
 
    

System Hilfe
  
     

Dynproattribute 

 

     

System Hilfe  

* SAPLXaaa Dynpro 0444


  
 
    

PROCESS BEFORE OUTPUT.


Dynprotyp MODULE a .
...
PROCESS AFTER INPUT.
MODULE m.

Subscreen Objekt auswählen

*INCLUDE ZXaaaO01.
MODULE a OUTPUT.
...
 SAP AG 2006

 Die SAP-Entwicklungsumgebung unterstützt das Anlegen Ihrer Kunden-Subscreens und der


dazugehörigen PBO- und PAI-Module durch Vorwärtsnavigation.
 Zu beachten ist, daß der Subscreen beim Anlegen den Dynpro-Typ Subscreen erhält.
 In der X-Funktionsgruppe, zu dem der Dynpro- und die Programm-Exits gehören, dürfen keine
Schnittstellen geändert und auch keine eigenen Funktionsbausteine hinzugefügt werden.

(C) SAP AG BC425 44


5.45
Erweiterungen über Customer-Exits :
Zusammenfassung des Kapitels

Sie können nun:

 Programm-, Menü- und Dynpro-Exits, die mit Hilfe


der Customer-Exit-Technik realisiert sind, nutzen
 erläutern, was Komponenten, Erweiterungen und
Erweiterungsprojekte sind
 Erweiterungsprojekte anlegen und Erweiterungen
samt Komponenten bearbeiten
 den Anschluß an Workbench Organizer und
Transportsystem erläutern
 Erweiterungsprojekte transportieren

 SAP AG 2006

(C) SAP AG BC425 45


5.46Customer-Exits Übungen

Kapitel: Customer-Exits
Thema: Programm-Exit

Am Ende dieser Übungen können Sie:


 Eine Erweiterung mit Hilfe eines Programm-Exits
implementieren.

Ihre Mitarbeiter stört bei der verwendeten Transaktion


BC425_##, daß sie für Flüge, die in der Vergangenheit liegen,
ohne Vorwarnung die Detailanzeige erhalten.
Passen Sie das Programm so an, daß bei der Selektion eines
Fluges in der Vergangenheit eine entsprechende Warnmeldung
ausgegeben wird. Vermeiden Sie dabei nach Möglichkeit die
Modifikation des SAP-Programms

1-1 Untersuchen Sie die Transaktion auf Erweiterungsmöglichkeiten.


1-1-1 Hat der SAP-Entwickler für die angegebene Transaktion einen Customer-
Exit implementiert, den Sie zum Hinzufügen der gewünschten
Funktionalität nutzen können?
1-1-2 Wie heißt die zugehörige SAP-Erweiterung? Wählen Sie die Erweiterung
aus, mit deren Hilfe Sie eine zusätzliche Prüfung beim Verlassen des ersten
Dynpros der Transaktion implementieren können.

1-2 Implementieren Sie die Erweiterung.


1-2-1 Wählen Sie als Namen Ihres Erweiterungsprojekts TG##CUS1.
1-2-2 Programmieren Sie folgende Prüfung:
Überprüfen Sie, ob das eingegebene Datum vor dem aktuellen Tagesdatum
liegt (also in der Vergangenheit). Falls ja, senden Sie eine Warnmeldung,
die einen entsprechenden Text enthält. Verwenden Sie dabei die Nachricht
011 aus der Nachrichtenklasse BC425.
1-2-3 Überprüfen Sie das Ergebnis Ihrer Arbeit.

(C) SAP AG BC425 46


Übungen

Kapitel: Customer-Exits
Thema: Menü-Exit

Am Ende dieser Übungen können Sie:


 Eine Erweiterung mit Hilfe eines Menü-Exits in Kombination
mit einem Programm-Exit implementieren.

Ihre Mitarbeiter sind begeistert: Seit Sie die neue Funktionalität


zur Anzeige von Flugdetails in der Transaktion BC425_##
haben, unterlaufen ihnen wesentlich weniger Fehlgriffe. Aber der
Mensch ist bekanntlich unersättlich …
Gerne hätten sie in der Transaktion zur Anzeige von Flügen einen
Absprung, der es ihnen ermöglicht, eine Liste mit den
zugehörigen Buchungen zu dem angezeigten Flug auszugeben.
Ein geeignetes listenerzeugendes Programm verwenden sie schon
immer, mußten es bisher aber stets separat aufrufen und sein
Selektionsbild mit den aktuellen Daten versorgen: Es hat den
Namen SAPBC425_BOOKING_##.

1-1 Untersuchen Sie die Transaktion BC425_##. Gibt es eine Möglichkeit, über einen
Menüeintrag der Transaktion ein Programm aufzurufen?
1-1-1 Hat der SAP-Entwickler für die angegebene Transaktion einen Customer-
Exit implementiert, den Sie zum Hinzufügen der gewünschten
Funktionalität nutzen können?
1-1-2 Wie heißt die zugehörige SAP-Erweiterung? Wählen Sie die Erweiterung
aus, mit deren Hilfe Sie eine Menü-Erweiterung implementieren können.

1-2 Implementieren Sie die Erweiterung.


1-2-1 Wählen Sie als Namen Ihres Erweiterungsprojekts TG##CUS2.
1-2-2 Bearbeiten Sie die Komponenten der Erweiterung: Bei Auswahl des
zusätzlichen Menü-Eintrags soll das oben genannte Programm gestartet
werden. Bei Verlassen der Liste soll wieder zur Transaktion BC425_##
zurückgekehrt werden.
1-2-3 Übergeben Sie die aktuellen Daten der Transaktion an das Selektionsbild
des zu rufenden Programms. Benutzen Sie dabei Daten, die Ihnen im
Programm-Exit zur Verfügung stehen.

1-3 Überprüfen Sie das Ergebnis Ihrer Arbeit.

(C) SAP AG BC425 47


Übungen

Kapitel: Customer-Exits
Thema: Dynpro-Exit

Am Ende dieser Übungen können Sie:


 zusätzliche Felder auf einem Dynpro einer SAP-Transaktion
anzeigen und diese mit Inhalten füllen.

"Es wäre wirklich schön, wenn wir auf der Detailanzeige der
Transaktion BC425_## zur Anzeige von Flügen noch
zusätzliche Daten angezeigt bekämen".
Sie stellen sich natürlich auch dieser Herausforderung und suchen
nach einer Lösung des Problems, ohne die Transaktion
modifizieren zu müssen. Sie suchen nach einer Möglichkeit, auf
dem zweiten Dynpro (Nummer 200) einige Felder hinzuzufügen.

1-1 Welche Möglichkeiten gibt es, auf einem Dynpro zusätzliche Felder zu plazieren?
Untersuchen Sie Dynpro 200 der Transaktion BC425_## darauf, ob diese
Möglichkeit hier gegeben ist.
1-1-1 Existiert zum Erweitern des Dynpros ein Dynpro-Exit?
1-1-2 Wenn ja, wie lautet der Name der zugehörigen Erweiterung?

1-2 Implementieren Sie die Erweiterung, um folgendes zu erreichen


(Name des Projekts: TG##CUS3) :
1-2-1 Das Dynpro soll um drei Felder erweitert werden. Es sollen erscheinen:
 der Pilotenname
 die Mahlzeit
 die Anzahl der noch freien Plätze des aktuellen Flugs.
1-2-2 Sorgen Sie für den korrekten Datentransport auf das Subscreen-Dynpro.

1-3 Überprüfen Sie das Ergebnis Ihrer Arbeit.

(C) SAP AG BC425 48


5.47Customer-Exits Lösungen

Kapitel: Customer-Exits
Thema: Programm-Exit

1-1 Auf folgende Weise können Sie die Transaktion daraufhin untersuchen, ob sie
Customer-Exits anbietet:
1-1-1 System  Status liefert den Namen des zugehörigen Programms
(SAPBC425_FLIGHT##)
1-1-2 Nun haben Sie mehrere Möglichkeiten, nach Customer-Exits zu suchen:
Entweder Sie suchen global im Programm nach der Zeichenkette CALL
CUSTOMER-FUNCTION oder Sie verwenden das Repository Infosystem,
um nach Erweiterungen zu suchen, die im technischen Namen der
Komponente den Programmnamen beinhalten (Suche einschränken mit
EXIT_SAPBC425_FLIGHT##_* im Komponentennamen).
Die von Ihnen gesuchte Erweiterung hat den Namen SBC##E01. Die
Dokumentation der Erweiterung deutet darauf hin, daß sie für zusätzliche
Prüfungen auf dem ersten Dynpro der Transaktion gedacht ist.

1-2 Zum Implementieren der Erweiterung wählen Sie die Transaktion CMOD.
1-2-1 Zur Transaktion CMOD gelangen Sie über den Menüpfad Werkzeuge 
ABAP Workbench  Hilfsmittel  Erweiterungen  Projektverwaltung.
Legen Sie hier ein Projekt mit dem Namen TG##CUS1 an und sichern Sie
Ihre Arbeit.
1-2-2 Nehmen Sie die gefundene Erweiterung SBC##E01 in Ihr Projekt auf.
1-2-3 Bearbeiten Sie die Komponente. Sie gelangen in den Quelltext des Exit-
Funktionsbausteins. Legen Sie das Include per Doppelklick an. Der von
Ihnen erfaßte Quelltext könnte etwa so aussehen:
IF flight-fldate < sy-datum.
MESSAGE w011(bc425) WITH sy-datum.
ENDIF.
Aktivieren Sie Ihr Include. Gehen Sie zurück zur Projektverwaltung und
aktivieren Sie Ihr Erweiterungsprojekt.

(C) SAP AG BC425 49


Lösungen

Kapitel: Customer-Exits
Thema: Menü-Exit

1-1 Gehen Sie zum Untersuchen der Transaktion vor wie in der letzten Übung. Sinnvoll
ist das Suchen über das Repository Infosystem bzw. die Transaktion CMOD.
1-1-1 Suchen Sie nach einer Erweiterung, die im technischen Namen der
Komponente den Programmnamen beinhalten (Suche einschränken mit
SAPBC425_FLIGHT##* im Komponentennamen)
1-1-2 Die von Ihnen gesuchte Erweiterung hat den Namen SBC##E02.

1-2 Zum Implementieren der Erweiterung wählen Sie die Transaktion CMOD.
1-2-1 Zur Transaktion CMOD gelangen Sie über den Menüpfad Werkzeuge 
ABAP Workbench  Hilfsmittel  Erweiterungen  Projektverwaltung.
Legen Sie hier ein Projekt mit dem Namen TG##CUS2 an und sichern Sie
Ihre Arbeit.
1-2-2 Nehmen Sie die gefundene Erweiterung SBC##E02 in Ihr Projekt auf.
Bearbeiten Sie die Komponenten. Vergeben Sie einen Menütext. Bearbeiten
Sie den Programm-Exit per Doppelklick. Legen Sie das Kunden-Include per
Vorwärtsnavigation an.
1-2-3 Der Quelltext des Includes sollte für Gruppe 00 folgendermaßen aussehen:
SUBMIT sapbc425_booking_##
WITH so_car = flight-carrid
WITH so_con = flight-connid
WITH so_fld = flight-fldate
AND RETURN.
Aktivieren Sie das Include-Programm. Aktivieren Sie das
Erweiterungsprojekt.

(C) SAP AG BC425 50


Lösungen

Kapitel: Customer-Exits
Thema: Dynpro-Exit

1-1 Schauen Sie sich die Dynpros der Transaktion im Screen-Painter an. Sie stellen
fest, daß Dynpro 200 der Transaktion BC425_## einen Subscreen-Bereich enthält.
1-1-1 Untersuchen Sie die Ablauflogik der Dynpros nach der Zeichenkette CALL
CUSTOMER-SUBSCREEN. Sie stellen fest, daß Dynpro 200 der Transaktion
BC425_## einen Dynpro-Exit bietet.
1-1-2 Den Namen der Erweiterung erhalten Sie, indem Sie beispielsweise im
Repository Infosystem suchen (siehe vorhergehende Übungen). Der Name
der Erweiterung lautet SBC##E03.

1-2 Implementieren Sie die Erweiterung auf die gleiche Weise, wie in den vorigen
Übungen beschrieben. Legen Sie in der Transaktion CMOD ein Projekt an mit dem
Namen TG##CUS3. Nehmen Sie die Erweiterung SBC##E03 in Ihr Projekt auf.
Bearbeiten Sie die Komponenten.
1-2-1 Zum Erweitern des Dynpros verwenden Sie den Dynpro-Exit. Per
Doppelklick auf die entsprechende Erweiterungskomponente legen Sie das
Dynpro 0500 an. Beachten Sie, daß Sie den Dynpro-Typ "Subscreen"
wählen. Übernehmen Sie die Felder aus der entsprechenden Struktur
SFLIGHT## des Dictionary. Um ein Feld für die freien Plätze auf dem
Dynpro zu plazieren, haben Sie prinzipiell zwei Möglichkeiten:
Sie deklarieren eine entsprechende Variable im TOP-Include der X-
Funktionsgruppe, generieren das Programm. Danach können Sie dieses
Programm-Feld auf dem Dynpro plazieren. Oder: Sie können Ihre Append-
Struktur erweitern. Diese Möglichkeit sollten Sie in der Übung nicht nutzen,
da der Referent die Felder der Append-Struktur mit einem Programm füllt.
Die Erweiterung der Append-Struktur könnte zu Fehlern in diesem
Programm führen.
1-2-2 Für den korrekten Datentransport verwenden Sie den Programm-Exit der
Erweiterung. Legen Sie das Kunden-Include an und erfassen Sie folgenden
Quelltext :
MOVE-CORRESPONDING flight TO sflight##.
seatsfree =
flight-seatsmax – flight-seatsocc.
TOP-Include:
TABLES: sflight##.
DATA: seatsfree type s_seatsocc.
Aktivieren Sie die Programme und anschließend Ihr Erweiterungsprojekt.

(C) SAP AG BC425 51


1-3 Führen Sie die Transaktion BC425_## aus und überprüfen Sie das Ergebnis Ihrer
Arbeit.

(C) SAP AG BC425 52


6
Business Transaction Events

Inhalt:
 Was sind Business Transaction Events?
 Verschiedene Arten von BTEs
 Business Transaction Events finden
 Business Transaction Events verwenden
 Vergleich Customer-Exits - Business Transaction Events

 SAP AG 2006

(C) SAP AG BC425 1


6.2
Business Transaction Events: Lernziele des
Kapitels

Am Ende dieses Kapitels können Sie:

 beschreiben, was Business Transaction Events sind


 passende Business Transaction Events finden
 Business Transaction Events zur Erweiterung der
SAP-Software verwenden

 SAP AG 2006

(C) SAP AG BC425 2


6.3
Übersichtsdiagramm Business Transaction Events

SAP Business Anwendungen


(SAP-
(SAP-Standard)
Standard)

Personali
Modifikation Erweiterung
sierung
Transaktions Modifikationsassistent ABAP Dictionary
varianten  Tabellen 4
User-Exits  Datenelemente

Customer-Exits 5
3 8 Business Transaction Events 6
Business Add Ins 7

Überblick 2
 SAP AG 2006

(C) SAP AG BC425 3


6.4
Software-Auslieferungswege

Auslieferungswege

Business
heute Transaction
Events

SAP IBU Partner Kunde

Customer-
Customer-
früher
Exits

 SAP AG 2006

 Die Software-Auslieferung stellt sich heute gegenüber früher grundsätzlich verändert dar: Früher
waren an der Auslieferung in der Regel nur zwei Teilnehmer involviert: SAP als Hersteller lieferte
die Software direkt an den Endkunden aus. Dieser konnte sie bei Bedarf mit Hilfe von Customer-
Exits erweitern.
 Aufgrund einer starken Komponenten-Orientierung sind heute an der Software-Auslieferung
wesentlich mehr Teilnehmer beteiligt: SAP liefert den R/3-Standard als Grundlage an eine Industrial
Business Unit (IBU), die ihrerseits gekapselte Funktionalität entwickelt und anbietet. Nächstes Glied
in der Auslieferungskette kann ein Partner-Unternehmen sein, das seinerseits eine CSP-Lösung auf
Basis von R/3 anbietet (CSP = Complementary Software Program). Das letzte Glied der
Auslieferungskette ist weiter der Endkunde.
 Alle Beteiligten sind potentielle Verwender und Anbieter von Erweiterungen. Diesen Bedürfnissen
können Customer-Exits mit ihrer einmaligen Verwendbarkeit nicht genügen. Aus diesem Grund
wurde zu Release 4.0 eine neue Erweiterungstechnik geschaffen, die eine Mehrfachverwendung
einer Erweiterung zulässt.

(C) SAP AG BC425 4


6.5
Business Transaction Events (Eigenschaften)

 Technik zur Realisierung von Programm-Exits


(von SAP-Finanzwesen entwickelt)
 Vordefinierte Schnittstellen, an denen der Verwender
Erweiterungen anhängen kann
 Unterscheide zwei Arten von Schnittstellen (BTEs):
 Publish & Subscribe
 Prozeß-Schnittstellen
 SAP AG 2006

 Business Transaction Events (kurz BTE) geben Ihnen die Möglichkeit, Zusatzkomponenten,
beispielsweise in Form von Funktionsbausteinen, an das SAP-Standardsystem anzubinden.

 Hierfür stehen Ihnen zwei Arten von Schnittstellen zur Verfügung:

Publish & Subscribe-Schnittstellen


Diese sollen darüber informieren, daß bestimmte Ereignisse in der SAP-Standardanwendung
stattgefunden haben und die dadurch erzeugten Daten der externen Software verfügbar machen. Die
externe Software gibt dem SAP-Standardsystem keine Daten zurück.

Prozeß-Schnittstellen
Sie dienen dazu, Geschäftsprozesse einer anderen Steuerung zu unterwerfen, die mit dem
Standardsystem nicht zu realisieren sind, d.h. Prozeß-Schnittstellen greifen aktiv in den Standard-
Prozess ein und liefern der SAP-Anwendung Daten zurück.

 Es ist möglich, verschiedene externe Entwicklungen an das SAP-Standardsystem anzubinden. Die


Zusatzentwicklungen werden i.a. mit Hilfe der ABAP Workbench vorgenommen.

(C) SAP AG BC425 5


6.6
BTE: Funktionsweise / Ablaufdiagramm

Anwendungsprogramm

Aktive Implementierung
Event-Funktionsbaustein
Implementierungs-
Implementierungs-
OPEN_FI_PERFORM_<…>
Funktionsbaustein
des Kunden/Partners

CALL FUNCTION

CALL FUNCTION

 SAP AG 2006

 In diesem Bild ist der Ablauf eines SAP-Programmes dargestellt. Das Programm enthält eine
Erweiterung in Form eines Business Transaction Events. Im SAP-Programm wird ein
Funktionsbaustein aufgerufen, der die aktiven Implementierungen der Erweiterung ermittelt und
abarbeitet. Die Namen dieser Event-Funktionsbausteine beginnen mit "OPEN_FI_PERFORM_"
bzw. "OUTBOUND_CALL_").
 Der Event-Funktionsbaustein OPEN_FI_PERFORM_<…> bzw. OUTBOUND_CALL_<…>
ermittelt alle aktiven Implementierungen zu der entsprechenden Erweiterung und stellt sie in eine
interne Tabelle. Die Abarbeitung der so ermittelten Funktionsbausteine erfolgt in der Reihenfolge,
die durch diese interne Tabelle vorgegeben ist. Hier werden gegebenenfalls auch etwaige
Bedingungen berücksichtigt, unter denen der Funktionsbaustein im Kundennamensraum abgearbeitet
wird. Als Bedingung kann beispielsweise das Land oder die Applikation angegeben werden. Diese
Bedingungen werden auch als Filterwerte bezeichnet.

(C) SAP AG BC425 6


6.7
BTE: Aufrufsyntax im SAP-Programm

REPORT
REPORT ...
...

...
...

CALL FUNCTION
'OPEN_FI_PERFORM_00001350_E'
EXPORTING
<i_variables>.

FUNCTION-POOL
FUNCTION-POOL <sap_fp>.
<sap_fp>.
...
... wa
FUNCTION
FUNCTION open_fi_perform_00001350_e.
open_fi_perform_00001350_e.
...
...
LOOP
LOOP AT
AT itab
itab into
into wa.
wa. itab
CALL FUNCTION wa-
wa-fb_name BTE FB_NAME
EXPORTING
00001350 Z_FUBA001
<i_variables>.
00001350 /ABC/FUBA002
ENDLOOP.
ENDLOOP.
... 00001350 /CUSNR/FUBA003
...
ENDFUNCTION.
ENDFUNCTION.
 SAP AG 2006

 In diesem Bild ist die Syntax dargestellt, mit deren Hilfe eine Programm-Erweiterung an einem
Business Transaction Event aufgerufen wird.
 Im SAP Anwendungsprogramm wird der Funktionsbaustein "OPEN_FI_PERFORM_<...>" (oder
OUTBOUND_CALL_<...>") aufgerufen. Das Anwendungsprogramm übergibt diesem Service-
Funktionsbaustein an der Schnittstelle Daten. Die Schnittstelle ist vom SAP-Entwickler vorgedacht.
 Der Service-Funktionsbaustein sucht nach aktiven Implementierungen und stellt diese in eine interne
Tabelle. In einer Schleife werden die gefundenen implementierenden Funktionsbausteine
abgearbeitet.

(C) SAP AG BC425 7


6.8
BTE: Mögliche Szenarien (1)

SAP-Transaktion

Schnittstellen (BTEs)

Datenfluß

Add-on-Komponente eines Partners

 SAP AG 2006

 Das obige Beispiel bezieht sich auf Publish&Subscribe-Schnittstellen. Der Datenfluß geht dabei nur
in eine Richtung - von der SAP-Applikation zu der Zusatzkomponente.
 Der SAP-Anwendungsentwickler stellt zu bestimmten Zeitpunkten in einer Transaktion
Schnittstellen zur Verfügung, an denen ein Partner oder Kunde zusätzliche Logik hinterlegen kann.
 Im einfachsten Fall wird eine solche Schnittstelle nur von einem Partner oder dem Kunden selbst
genutzt. Dies würde dem Fall entsprechen, der auch bei Customer-Exits (siehe Kapitel "Vorgedachte
Erweiterungen") behandelt wurde.

(C) SAP AG BC425 8


6.9
BTE: Mögliche Szenarien (2)

SAP-Transaktion

Schnittstellen (BTEs)

Datenfluß

Add-on-Komponente von Partner A

Beide Komponenten
Add-on-Komponente von Partner B existieren, ohne sich
gegenseitig zu behindern.

 SAP AG 2006

 Auch dieses Szenario bezieht sich wieder nur auf Publish&Subscribe-Schnittstellen.


 Im Gegensatz zu Customer-Exits bieten Business Transaction Events die Möglichkeit, eine
Schnittstelle mehr als einmal für zusätzliche Verarbeitungslogik zu verwenden.
 Ist dies der Fall, so kann der Anwender entscheiden, ob zu einem BTE alle oder nur bestimmte
Erweiterungen ausgeführt werden sollen.
 Die beiden Erweiterungen existieren also nebeneinander, ohne sich gegenseitig zu behindern.

(C) SAP AG BC425 9


6.10
P/S- und Prozess-Schnittstellen

 P/S-Schnittstellen  Prozess-Schnittstellen

IBU IBU
Partner Partner
1 1
SAP--Transaktion

SAP--Transaktion
Partner Partner
2 2
Kunde Kunde
SAP

SAP
IBU IBU
Partner Partner
1 1
Partner Partner
2 2
Kunde Kunde

Durchlaufen mehrerer Genau eine Add-on-Komponente


Implementierungen möglich wird durchlaufen
 SAP AG 2006

 Publish & Subscribe Schnittstellen:


 Wenn das Ereignis ausgelöst wird, können eine oder mehr zusätzliche Operationen gestartet
werden. Sie beeinflussen das R/3-Standardprogramm nicht.
 Auch mehr als zwei Operationen behindern sich nicht gegenseitig.
 Entsprechende Add-on-Komponenten können nur Daten importieren.
 Mögliche Anwendungen: Zusätzliche Prüfungen (Berechtigungen, vorhandene Duplikate, etc.)
 Prozeß-Schnittstellen:
 Im Gegensatz zu Publish&Subscribe-Schnittstellen ist bei Prozeß-Schnittstellen vorgesehen, daß
Daten sowohl in die eine als auch in die andere Richtung ausgetauscht werden können. Das hat
Konsequenzen für die Menge der Zusätze, die an eine Schnittstelle angebunden werden können.
 Wenn das Ereignis ausgelöst wird, kann ein Prozeß im Standardprogramm nur durch einen
anderen Prozeß ersetzt werden.
 Verwenden Sie z.B. ein Add-On eines Partner-Unternehmens, das eine Prozeß-Schnittstelle
verwendet, wird zur Laufzeit diese Erweiterung abgespielt. Möchten Sie ebenfalls die gleiche
Schnittstelle nutzen, wird zur Laufzeit die Erweiterung des Partners verworfen und Ihre eigene
abgespielt.

(C) SAP AG BC425 10


6.11
BTE: SAP und Kunde

SAP Kunde

BTE (Doku) 4 Produkt aktivieren

Event-Funktionsbaustein 3 FB über Produkt


dem BTE zuordnen
OPEN_FI_PERFORM_<BTE-ID>_E/P

2 Produkt anlegen
Muster-Funktionsbaustein
SAMPLE_INTERFACE_<BTE-ID> 1
- kopieren
- Zusatzfunktionalität
(Quelltext) realisieren
- FB aktivieren

 SAP AG 2006

 Business Transaction Events erlauben dem Verwender, ähnlich wie Programm-Exits, in einer
Anwendungsfunktion zusätzliche Programmlogik zu implementieren. Der SAP-
Anwendungsentwickler bestimmt, wo in einer Anwendungsfunktion solche Events festgelegt werden
und welche Daten übergeben werden. Er legt einen Musterfunktionsbaustein mit Kurztext,
Schnittstelle und Dokumentation an, und er beschreibt die für diesen Event mögliche Funktionalität
in der zugehörigen SAP-Dokumentation.
 Zunächst vergibt der SAP-Anwendungsentwickler eine achtstellige Event-Nummer, die den BTE
qualifiziert. Diese Nummern sollten einer bestimmten Konvention gehorchen. Zum Beispiel sollen
Zeitpunkte, die im gleichen SAP-Anwendungsprogramm integriert sind, im Namen an der 5. und 6.
Stelle identisch sein.
 Der SAP-Entwickler registriert den Event und legt einen Muster-Funktionsbaustein
sample_interface_<BTE-ID> an, der die Schnittstelle für den Verwender festlegt.

(C) SAP AG BC425 11


6.12
BTE: Suche

 programmbezogene Suche  Suche über Tools

Anwendungsprogramm starten
System  Status IMG
 Doppelklick auf Programmnamen Transaktion
FIBF
Suchen nach Zeichenkette ...
OPEN_FI_PERFORM Finanzwesen
 Grundeinstellungen
(global in Programm)  BTE verwenden

 SAP Referenz-IMG Umfeld


 Infosystem
Finanzwesen Transaktion
 entsprechende
 Grundeinstellungen FIBF
Anwendungs-
 BTE verwenden
komponente
 Umfeld auswählen
 Infosystem
 Dokumentation

 SAP AG 2006

 Um einen direkten Eindruck zu erhalten, ob eine Anwendungstransaktion Business Transaction


Events anbietet, können sie den in der linken Seite skizzierten Weg befolgen: Suchen sie im
Quelltext des Anwendungsprogramms nach der Zeichenkette "OPEN_FI_PERFORM". Die
Nummer, die den Namen des Funktionsbausteins komplettiert, ist gleichzeitig die Nummer des
Events.
 Im SAP Customizing Einführungsleitfaden finden Sie zum Beispiel unter den Grundeinstellungen
des Finanzwesens den Eintrag "Business Transaction Events verwenden". Dieser führt Sie zu der
Transaktion FIBF, in der Sie sämtliche Aktionen ausführen, die für das Nutzen eines BTE
notwendig sind.
 Hier finden sie unter dem Menüpunkt "Umfeld" auch Suchfunktionen, mit deren Hilfe sie die
geeigneten Business Transaction Events identifizieren können. Aus der angezeigten Liste können Sie
direkt in die Dokumentation des Events verzweigen.

(C) SAP AG BC425 12


6.13
BTE: Dokumentation

Event ... Einstellungen Umfeld


Infosystem(P/S)
Infosystem(P/S)
SAP Business Framework: Business Transaction Events
Infosystem(Prozesse)
Infosystem(Prozesse)

Business Transaction Events: P/S Schnittstellen

Key Beschreibung
… …  Muster-FB
… …
… …  Schnittstelle des FBs
*** Liste selektierter BTEs ***  Dokumentation

 SAP AG 2006

 In der Service-Transaktion FIBF finden Sie im Menüpunkt "Umfeld" zwei Programme, mit deren
Hilfe sie nach BTEs suchen können. Dabei können sie über verschiedene Parameter das
Suchergebnis einschränken.
 In einer Liste werden ihnen die gefundenen BTEs angezeigt. Von dieser Liste ausgehend können sie
folgende Aktionen ausüben:
 Musterfunktionsbaustein anschauen (In den Function Builder navigieren, z.B. zum Kopieren des
Musterbausteins)
 sich die Schnittstelle anzeigen lassen
 die Dokumentation studieren
 Aus der Dokumentation muss eindeutig hervorgehen, wie Sie die Erweiterung einsetzen können und
welchen Beschränkungen sie unterliegt.

(C) SAP AG BC425 13


6.14
BTE: Produkt

 Produkt faßt Erweiterungen


zusammen
Kunde
SAP--Transaktion

 Produkt kann als Ganzes


aktiviert / deaktiviert werden

Produkt
Kunde aktiv
SAP

Kunde

 SAP AG 2006

 Ebenfalls in der Service-Transaktion FIBF können sie ein Produkt anlegen. Produkte dienen dem
Zweck, mehrere Erweiterungen zusammenzufassen.
 Es können Produkte zu verschiedenen Auslieferungsschichten angelegt werden. Diese definieren
eine Reihenfolge in der Abarbeitung der Implementierungen eines Business Transaction Events.
 Produkte können nur als Ganzes ein- bzw. ausgeschaltet werden. Damit kann der Verwender steuern,
welche Erweiterungen durchlaufen werden sollen und welche nicht. Darüber hinaus ist auf diese
Weise die Integrität der gesamten Erweiterung sichergestellt.

(C) SAP AG BC425 14


6.15
Implementieren eines BTE

 Muster-FB kopieren
Function Builder
als Kunden-FB (Z_*)
Quelltext pflegen
Funktionsbaustein SAMPLE_INTERFACE_<BTE-ID>
aktivieren

Event ... Einstellungen Umfeld


...
...  Produkt anlegen
SAP Business Framework: Business Transaction Events
Produkte
Produkte eines
eines Partners
Partners
P/S-Bausteine
P/S-Bausteine eines
eines Kunden
Kunden
Prozeß-Bausteine
Prozeß-Bausteine

Event ... Einstellungen Umfeld


...
...  Kunden-FB über
SAP Business Framework: Business Transaction Events
Produkte
Produkte Produkt dem BTE
P/S-Bausteine
P/S-Bausteine ...einer
...einer SAP-Anw.
SAP-Anw.
Prozeß-Bausteine ...eines
...eines Partners
Partners
zuordnen
Prozeß-Bausteine
...eines
...eines Kunden
Kunden

 SAP AG 2006
 Produkt aktivieren

 Alle Verwaltungsaktivitäten zum Nutzen eines Business Transaction Events können Sie über die aus
dem Customizing zugängliche Transaktion FIBF abwickeln.
 Zunächst wählen Sie eine Schnittstelle, an der ein eigener Funktionsbaustein aufgerufen werden soll.
Die Taste "Schnittstelle" zeigt die Parameterstruktur des ausgewählten Interfaces. Desweiteren
informieren Sie sich in der Dokumentation, welche Aktivitäten die Schnittstelle bereitstellt.
 Kopieren Sie in der ABAP Workbench den Funktionsbaustein sample_interface_<n> in den
Kundennamensraum (z_*) in eine kundeneigene Funktionsgruppe. Die Schnittstelle darf nicht
verändert werden. Sie können den Baustein mit beliebigem Quelltext füllen. Allerdings dürfen Sie
kein COMMIT WORK verwenden! Vergessen Sie nicht, den Funktionsbaustein zu aktivieren!
 Legen Sie ein Produkt im erwähnten Verwaltungsbild an.
 Ordnen Sie Ihren Funktionsbaustein und das Produkt der entsprechenden Event-Nummer zu.

(C) SAP AG BC425 15


6.16
Vergleich: Customer-Exits und BTEs

Business
Customer-
Customer-Exits Transaction
Events

Programm-
Programm-Exit

Menü
Menü-Exit

Dynpro-
Dynpro-Exit

Append-
Append-Felder
auf Dynpro
Verwaltungs
ebene
mehrfach
verwendbar
mandanten
abhä
abhängig

filterabhä
filterabhängig

 SAP AG 2006

 Im Gegensatz zu Customer-Exits ist die Verwendung von Business Transaction Events


mandantenabhängig. Das führt dazu, daß der gleiche Event in verschiedenen Mandanten zu
unterschiedlichen Zwecken verwendet werden kann.
 Darüber hinaus können BTEs mehrfach verwendet werden.

(C) SAP AG BC425 16


6.17
Business Transaction Events: Zusammenfassung
des Kapitels

Sie können nun:

 beschreiben, was Business Transaction Events sind


 passende Business Transaction Events finden
 Business Transaction Events zur Erweiterung der
SAP-Software verwenden

 SAP AG 2006

(C) SAP AG BC425 17


7
Business Add Ins

Inhalt:
 Suchen nach Business Add Ins
 Implementieren von Business Add Ins
 (Anlegen von Business Add Ins)

 SAP AG 2006

(C) SAP AG BC425 1


7.2
Business Add Ins: Lernziele des Kapitels

Am Ende dieses Kapitels können Sie:

 nach Business Add Ins suchen


 Business Add Ins implementieren
 (Business Add Ins anlegen)

 SAP AG 2006

(C) SAP AG BC425 2


7.3
Business Add Ins: Unternehmensszenario

 Eine SAP-Transaktion für die Flugverwaltung soll


funktional erweitert werden. Um den Abgleichaufwand
beim Upgrade zu minimieren, sollte die Realisierung
möglichst modifikationsfrei ablaufen. Insbesondere
sollten - falls vorhanden - von SAP zur Verfügung
gestellte BAdIs verwendet werden.

 SAP AG 2006

(C) SAP AG BC425 3


7.4
Übersichtsdiagramm Business Add Ins

SAP Business Anwendungen


(SAP-
(SAP-Standard)
Standard)

Personali
Modifikation Erweiterung
sierung
Transaktions Modifikationsassistent ABAP Dictionary
varianten  Tabellen 4
User-Exits  Datenelemente

Customer-Exits 5
3 8 Business Transaction Events 6
Business Add Ins 7

Überblick 2
 SAP AG 2006

(C) SAP AG BC425 4


7.5
Business Add Ins: Motivation

 Nachteile bisheriger Erweiterungstechniken:


 nur einfach verwendbar (Customer-Exits)
 keine Dynpro-Erweiterungen (BTEs)
 keine Menü-Erweiterungen (BTEs)
 keine Verwaltungsebene (BTEs)

 Anforderungen an neue Erweiterungstechnik:


 Mehrfach verwendbar
 Alle Erweiterungsarten (Programm- / Menü- / Dynpro-Exit)
 Verwaltungsebene
 Mit modernsten Techniken implementiert

 SAP AG 2006

(C) SAP AG BC425 5


7.6
Software-Auslieferungswege

Auslieferungswege

Business
heute Add Ins

SAP IBU Partner Kunde

Customer-
Customer-
früher
Exits

 SAP AG 2006

(C) SAP AG BC425 6


7.7
Interfaces: Lernziele

Nach Behandlung dieses Themas können Sie:

 Erläutern, was ein Interface in ABAP Objects ist

 SAP AG 2002

(C) SAP AG BC425 7


7.8
Objekte

Schnittstelle

Private Öffentliche
Komponenten Attribute
Flug Fluggesellschaft
Flugnummer
Kunde
Adresse Öffentlicher
Zugriff
Passagier-
liste Öffentliche
Methoden
BUCHEN
FLUG

 SAP AG 1999

 Eine Klasse ist eine abstrakte Beschreibung eines Objekts. Ein Objekt existiert nur zur Laufzeit eines
Programms. Wenn hier von Objekten die Rede ist, so ist je nach Kontext auch die abstrakte
Beschreibung, also die Klasse gemeint.
 Ein Objekt (beschrieben durch die Klasse) besteht im wesentlichen aus zwei Schichten - Innen und
Außen:
Öffentliche Komponenten: Die nach außen sichtbaren Komponenten des Objektes, z.B.
Attribute und Methoden. Die öffentlichen Komponenten sind von allen Verwendern direkt
verwendbar. Die öffentlichen Komponenten eines Objektes bilden die Schnittstelle dieses
Objektes.
Private Komponenten: Diese Komponenten sind nur innerhalb des Objektes sichtbar. Dabei
handelt es sich wiederum um Attribute, Methoden, etc..
 Ziel der Objektorientierung ist, daß eine Klasse ihre eigene Konsistenz sicherstellen kann. Daher
sind im allgemeinen die Daten 'intern', d.h. private Attribute. Die internen (privaten) Attribute einer
Klasse können nur durch Methoden dieser Klasse manipuliert werden. Im allgemeinen werden als
öffentliche Komponenten nur Methoden angeboten, die dann die Daten manipulieren und die
Konsistenz des Objektes sicherstellen.
 Daneben hat ein Objekt eine Identität, die es eindeutig von anderen Objekten mit den gleichen
Attributen und Methoden unterscheidet.

(C) SAP AG BC425 8


7.9
Instanzen von Funktionsgruppen als Objekte

Funktionsgruppe 1 Funktionsgruppe 2

Funktions-
Funktions- Daten Funktions-
Funktions- Daten
... ...

baustein baustein
… …

ABAP- Programm mit Daten

CALL FUNCTION ...

Interner Modus eines ABAP-Programms


Externer Modus

 SAP AG 1999

 Vor Release 4.0 waren in ABAP die zu Funktionsgruppen zusammengefaßten Funktionsbausteine


die nächste Annäherung an Objekte.
 Beim Aufruf eines Funktionsbausteins wird eine Instanz seiner Funktionsgruppe mit ihren Daten in
den Speicherbereich des internen Modus dazugeladen. Eine Instanz ist ein echtes Software-Objekt.
Ein ABAP-Programm kann durch den Aufruf von Funktionsbausteinen aus verschiedenen
Funktionsgruppen mehrere Instanzen laden (pro Funktionsgruppe allerdings nur höchstens eine!).
 Der wesentliche Unterschied zwischen echter Objektorientierung und Funktionsbausteinen besteht
darin, daß ein Programm zwar mit den Instanzen mehrerer Funktionsgruppen auf einmal arbeiten
kann, aber nicht mit mehreren Instanzen einer einzigen Funktionsgruppe. Ein Programm will
beispielsweise mehrere unabhängige Zähler oder mehrere Aufträge zugleich behandeln. Für diesen
Zweck müßte die Funktionsgruppe, in der die entsprechende Funktionsbausteine liegen, speziell
programmiert werden, um eine Instanzverwaltung bereitzustellen, wobei die verschiedenen Instanzen
z.B. durch Nummern unterschieden werden.

(C) SAP AG BC425 9


7.10
Klassen verallgemeinern Funktionsgruppen

n. Instanz, Klasse 1 n. Instanz, Klasse m


1. Instanz, Klasse 1 1. Instanz,
Daten DatenKlasse m
Schnitt-
Schnitt-
...
Daten Funktions-
Funktions- Daten
...

... ...

stelle
Schnitt-
Schnitt - Daten …
baustein
Schnitt-
Schnitt - Daten
… ... …

stelle
...

stelle
… …

ABAP-Programm mit Daten

Interner Modus eines ABAP-Programms

 SAP AG 1999

 In der Praxis ist es sehr umständlich, eine Instanzenverwaltung innerhalb von Funktionsgruppen
durchzuführen. Daher liegen im allgemeinen die Daten beim aufrufenden Programm, und die
Funktionsbausteine arbeiten auf diesen Daten. Dies wirft verschiedene Probleme auf. Beispielsweise
müssen alle Verwender die gleichen Datenstrukturen verwenden wie die Funktionsgruppe selbst.
Wenn man die interne Datenstruktur einer Funktionsgruppe ändern will, sind sehr viele Verwender
betroffen, und es ist häufig schwierig, die Implikationen von Änderungen vorherzusagen.
 Ein weiteres Problem ist, daß alle Verwender Kopien der Daten haben und es bei Änderungen sehr
schwierig ist, diese konsistent zu halten (Frage: Wer hat wo eine Kopie von was gespeichert?).
 Das Arbeiten mit globalen Daten in Funktionsgruppen ist dagegen gefährlich, da beim Ablauf
komplexer Transaktionen kaum kontrolliert werden kann, wann welche Funktionsgruppe geladen
wird.
 Diese Probleme werden durch die Einführung von Klassen gelöst. Daten und Funktionalität werden
statt in Funktionsgruppen in Klassen definiert. Ein ABAP-Programm kann mit beliebig vielen
Laufzeitinstanzen der gleichen Vorlage arbeiten: Statt eine einzige Laufzeitinstanz einer
Funktionsgruppe implizit durch den Aufruf eines Funktionsbausteins in den Speicher zu laden,
erzeugt ein ABAP-Programm die Laufzeitinstanzen von Klassen explizit. Die einzelnen
Laufzeitinstanzen stellen eindeutig identifizierbare Objekte dar und werden durch Objektreferenzen
adressiert.

(C) SAP AG BC425 10


7.11
Interfaces

 Definition einer Schnittstelle ohne Implementierung


 Interfaces werden von Klassen implementiert
 Einheitlicher Zugriff über Interface-Referenzen

Interface

 SAP AG 1999

 Interfaces werden unabhängig von Klassen definiert.


 Sie können Deklarationen von Attributen, Methoden, … enthalten.
 Interfaces können von Klassen implementiert werden.
 Diese Klassen haben nach außen eine einheitliche Schnittstelle und verpflichten sich, die
Funktionalität eines Interfaces durch Implementierung seiner Methoden bereitzustellen.
 Im Programm können Referenzvariablen mit Bezug auf Interfaces typisiert werden, es gibt aber
keine Instanzen von Interfaces.
 Interfacereferenzen können statt dessen auf Objekte unterschiedlicher Klassen zeigen.

(C) SAP AG BC425 11


7.12
BAdIs suchen und implementieren: Lernziele

Nach Behandlung dieses Themas können Sie:

 in SAP-Programmen nach vorhandenen


Business Add Ins suchen
 Business Add Ins zur Realisierung von
Programmerweiterungen einsetzen

 SAP AG 2006

(C) SAP AG BC425 12


7.13
Business Add Ins: Architektur

SAP IBU Partner … Kunde

BAdIs
Implemen-
Implemen- Implemen
tierung tierung
SAP Implemen-
Implemen-
Programm tierung

Implemen
tierung

Software
produkt Implemen
tierung

 SAP AG 2006

 Im Gegensatz zu Customer-Exits tragen Business Add Ins der veränderten Software-


Auslieferungslandschaft Rechnung. Im oberen Teil des Bildes ist die typische
Auslieferungslandschaft dargestellt: Sie besteht nicht mehr nur aus Anbieter und Verwender. Es
können mehrere Zwischenanbieter in der Software-Auslieferungskette enthalten sein.
 Der untere Teil des Bildes stellt prinzipiell dar, wie Business Add Ins arbeiten: Ein
Anwendungsprogramm der SAP stellt die Erweiterungsmöglichkeit zur Verfügung. Dazu gehört
zumindest ein Interface und eine dieses Interface implementierende BAdI-Klasse. Das Interface wird
auch vom Verwender implementiert.
 Die wesentlichen Stärken dieses Konzeptes liegt in der Mehrfachverwendbarkeit: Ein BAdI kann
mehrfach implementiert werden, auch von in der Software-Auslieferungskette weiter rechts
stehenden Gliedern.
 Darüber hinaus kann mit Hilfe von Business Add Ins jedes Mitglied der Software-Auslieferungskette
Erweiterungen anbieten.

(C) SAP AG BC425 13


7.14
Business Add Ins: Komponenten

Eigensch.
BAdI
INTERFACE
<badi-interface>.
Mehrfach verwendbar DATA: a1 ...
Filterabhängig
METHODS m1
EXPORTING
FCodes e_par1
e_par2 Generierte
Programm Funktionscode IMPORTING BAdI-
<prog> +ABC i_par1. Klasse
METHODS m2 ...

ENDINTERFACE.

Subscreens

Rufendes Programm Dyn-Nr Subscr-Bereich Besc


<prog> 0200 ABCD Scr..

 SAP AG 2002

 In einem Business Add In sind die Komponenten der Erweiterung zusammengefasst. Ein Business
Add In kann folgende Erweiterungsmöglichkeiten anbieten:
 Programmerweiterung: Im Business Add In sind die Schnittstellen für die
Programmerweiterungen in Form von Methoden eines Interfaces definiert. Dieses Interface wird
bei der Implementierung der Erweiterung verwendet. Das SAP Programm ruft die Interface-
Methoden der generierten BAdI-Klasse auf.
 Menü-Erweiterung: Analog zu Customer-Exits können in einem BAdI Funktionscodes eingetragen
sein. Die entsprechenden Menü-Einträge sind in der CUA-Definition vorhanden und werden durch
die Implementierung des BAdIs sichtbar.
 Dynpro-Erweiterung: Analog zu Customer-Exits können in einem BAdI Dynpro-Erweiterungen
definiert sein, die Sie implementieren können.
 Bei der Definition eines BAdI werden mehrere Komponenten angelegt:
 Interface
 generierte Klasse (BAdI-Klasse), die das Interface implementiert
 Die generierte Klasse (BAdI-Klasse) hat folgende Aufgaben:
 Filterung: Falls ein BAdI nur unter bestimmten Bedingungen ausgeführt werden soll, sorgt die
BAdI-Klasse dafür, dass nur die gültigen Implementierungen aufgerufen werden.
 Steuerung: Die BAdI-Klasse ruft die aktiven Implementierungen auf.

(C) SAP AG BC425 14


7.15
Business Add Ins: Ablauf eines Programm-Exits
Anwendungsprog.
Service-Klasse
CL_EXITHANDLER

1 Abarbeiten aktiver
Implementierungen

Instanz von
BAdI-Klasse BAdI: Instanz von
<badi-class> Implement.
Implement. Klasse

 SAP AG 2006

 In diesem Bild ist der Ablauf eines Programmes dargestellt, das einen BAdI-Aufruf enthält. Um die
Möglichkeiten und Grenzen von Business Add Ins zu verstehen, kann dieses Bild verwendet werden.
 Nicht dargestellt: Im Deklarationsteil muss eine Referenzvariable mit Bezug auf das BAdI-Interface
deklariert sein.
 In einem ersten Schritt wird eine Objektreferenz erzeugt. Das übernimmt die von SAP ausgelieferte
Service-Klasse CL_EXITHANDLER. Auf die genaue Syntax gehen wir auf einer anderen Folie ein.
Damit sind die Voraussetzungen geschaffen, um die Methoden der Programmerweiterung
aufzurufen.
 Bei der BAdI-Definition wird die sogenannte BAdI-Klasse generiert, die das Interface
implementiert. In dem mit (2) gekennzeichneten Aufruf wird die Interface-Methode der BAdI-Klasse
aufgerufen. Die BAdI-Klasse sucht ihrerseits alle zu dem Business Add In vorhandenen aktiven
Implementierungen und ruft die implementierten Methoden auf.

(C) SAP AG BC425 15


7.16
Business Add Ins: Aufrufsyntax im SAP-Programm

REPORT
REPORT <sap_program>.
<sap_program>.

DATA r_var TYPE REF TO <badi


<badi-
-interface>.
interface>.
Instanz von
...
... <badi-
badi-class>

CALL METHOD 1
cl_exithandler=>get_instance
CHANGING
instance = r_var
r_var.
. r_var

...
...

CALL METHOD r_var


r_var-
->meth_abc 2
EXPORTING
<i_variables>
IMPORTING
<e_variables>.

...
...

 SAP AG 2006

 Hier ist die Syntax dargestellt, die der Aufruf eines Business Add Ins erfordert. Die numerierten
Kreise korrespondieren mit den Aufrufen auf dem letzten Bild.
 Zunächst muss eine Referenzvariable definiert sein mit Referenz auf das BAdI-Interface. Der Name
der Referenz-Variablen muss nicht notwendigerweise den Namen des BAdIs beinhalten.
 In einem ersten Aufruf (1) wird eine Objektreferenz erzeugt. Diese erzeugt eine Instanz der
generierten BAdI-Klasse. Mit dieser Objektreferenz sind nur die Methoden des Interfaces
ansprechbar .
 Mit Hilfe dieser Objekt-Referenz können nun die mit der Erweiterung zur Verfügung gestellten
Methoden aufgerufen werden (2).

(C) SAP AG BC425 16


7.17
Business Add Ins finden

 programmbezogene Suche  Suche über Tools


System  Status
 Doppelklick auf Programmnamen
Suchen nach Zeichenkette... Anwendungs
CL_EXITHANDLER
hierarchie

( global in Programm )

Repository
 Doppelklick auf Referenzvariable Infosystem
 Doppelklick auf Interface

 Verwendungsnachweis Interface

 CL_EX_<BAdI-Name>
IMG
 SE18

 Dokumentation zum BAdI


 Dokumentation
 SAP AG 2006

 Das Suchen von Business Add Ins kann mit verschiedenen Strategien geschehen:
 Sie können im interessierenden Anwendungsprogramm nach der Zeichenkette
"CL_EXITHANDLER" suchen. Falls ein Business Add In aufgerufen wird, muss die Methode
"GET_INSTANCE" dieser Klasse aufgerufen werden.
 Konsequente Vorwärtsnavigation unter Berücksichtigung der Namenskonventionen führt sie zur
Definition des Business Add Ins. Dort finden sie die Dokumentation und auch einen Leitfaden zum
Implementieren des Business Add Ins.
 Verwenden sie die Anwendungshierarchie, um die Anwendungskomponenten einzuschränken.
Verzweigen sie in das Repository Infosystem, wo sie unter "Erweiterungen --> Business Add Ins"
das entsprechende Suchprogramm finden.
 Alternativ stehen ihnen gegebenenfalls Einträge im Einführungsleitfaden in der entsprechenden
Komponente zur Verfügung.

(C) SAP AG BC425 17


7.18
Business Add Ins implementieren: Einstieg

Business Add-Ins: Implementierungspflege

BAdI-Name ___________
Implementierungsname _

Anzeigen Ändern Anlegen

 SAP AG 2006

 Zum Implementieren von Business Add Ins verwenden sie Transaktion SE19 (Werkzeuge --> ABAP
Workbench --> Hilfsmittel --> Business Add Ins --> Implementierung).
 Vergeben Sie einen Namen für ihre Implementierung und wählen Sie "Anlegen". Sie gelangen auf
ein Popup, wo sie den Namen des Business Add Ins angeben. Danach gelangen sie auf das
Pflegebild zum Implementieren des Business Add Ins.
 Alternativ können sie auch über die Transaktion zum Definieren von Business Add Ins, SE18, zu
deren Implementierung gelangen. Im Menü finden sie einen Eintrag "Implementierung", unter dem
sie sich einen Überblick über die vorhandenen Implementierungen verschaffen können. Ausserdem
können sie hier neue Implementierungen anlegen.

 Bemerkung: Zu SAP NetWeaver Application Server 7.0 gibt es neben den bisherigen, klassischen
BAdIs auch die neuen (siehe Anhang). Daher ist das Einstiegsbild der Transaktion SE19 angepasst
worden. Um eine Implementierung zu einem klassischen BAdI anzulegen, wählen Sie im unteren
Eingabebereich des Einstiegsbilds "Klassisches BAdI", tragen den BAdI-Namen in das
entsprechende Feld und betätigen die Drucktaste "Impl. anlegen".

(C) SAP AG BC425 18


7.19
BAdIs implementieren: Methoden

Eigensch. Interface FCodes

Interfacename <badi-interface>
Name der implementierenden Klasse <impl-class>

Methode Beschreibung
<meth_abc> Methode des BAdI

blendet
Schnittstelle der
Methode ein
Class Builder: Editieren Methode <badi-interface>~<m...>
Signatur
METHOD <badi-interface>~<meth_abc>.

*...

ENDMETHOD.

 SAP AG 2006

 Der Name der implementierenden Klasse kann prinzipiell frei gewählt werden. Es empfiehlt sich
jedoch, die vorgeschlagene Namenskonvention zu beachten. Der vorgeschlagene Name setzt sich
zusammen aus
 Namensraumpräfix, Y oder Z
 CL_ (steht für Klasse)
 IM_ (steht für Implementierung)
 Name der Implementierung (ohne Namensraumpräfix)
 Durch Doppelklick auf den Namen der Methode gelangen Sie in den Editor zum Implementieren der
Methode.
 Im letzten Schritt müssen die Objekte aktiviert werden.

(C) SAP AG BC425 19


7.20
BAdIs implementieren: private Methoden

Class Builder: Editieren Methode <badi-interface>~<m...>

METHOD <badi-interface>~<method>.

CALL METHOD <priv_method> EXPORTING ... .

ENDMETHOD.
Class Builder: Klasse <impl-class> ändern

Eigensch. Methoden Events

Parameter Ausnahmen
Methode Art Beschreibung
<priv_method> new method in Implementation

 SAP AG 2002

 Sie können in der implementierenden Klasse private Methoden anlegen, die sie aus der Interface-
Methode heraus aufrufen.
 Dazu bearbeiten Sie die implementierende Klasse direkt im Class Builder. Hier legen Sie die private
Methode inklusive Schnittstelle an. Geben sie an, welche Sichtbarkeit die Methode haben soll und
implementieren Sie sie.

(C) SAP AG BC425 20


7.21
BAdIs implementieren: Implementierung aktivieren

Business Add-Ins: Einstieg Implementierungspflege


 Aktivieren
 Deaktivieren

Implementierungsname <impl>

Anzeigen Ändern Anlegen

 SAP AG 2006

 Mit den entsprechenden Ikonen können sie die Implementierung eines Business Add Ins aktivieren.
Ab diesem Zeitpunkt werden die Methoden der Implementierung durchlaufen, wenn das
entsprechende aufrufende Programm ausgeführt wird.

 Deaktivieren der Implementierung bewirkt, dass die Methoden entsprechend nicht mehr aufgerufen
werden. Die entsprechenden Aufrufe im Anwendungsprogramm werden noch durchlaufen.
Allerdings findet die Instanz der Adapterklasse keine aktive Implementierung mehr. Im Gegensatz
zum Aufruf "CALL CUSTOMER-FUNCTION" wird trotz fehlender Implementierung der Aufruf
"CALL METHOD CL_EXITHANDLER=>GET_INSTANCE" ausgeführt. Das gleiche gilt für den
Methodenaufruf, der die Methode der Adapterklasse ruft.

 Eine Aktivierung oder Deaktivierung kann nur im Originalsystem der Implementierung


modifikationsfrei durchgeführt werden. Sie müssen die Aktivierung/Deaktivierung in die
nachgelagerten Systeme transportieren.

 Zu einem Business Add-In, welches nur eine Implementierung haben kann, können mehrere
Implementierungen in einem System existieren. Es kann aber jeweils nur eine aktiv sein.

(C) SAP AG BC425 21


7.22
BAdI: Menü-Exit (Überblick)

SAP Kunde

Menu 1 Menu 2 Menu 3 Menu 1 Menu 2 Menu 3


Function
Function11 Function
Function11
Function
Function22 Function
Function22
Function
Function33 Function
Function33
Kundenfunktion

 SAP AG 2006

 Analog zu Customer-Exits können sie auch bei Business Add Ins Menü-Erweiterungen nutzen. Dazu
müssen folgende Voraussetzungen vorliegen:
 Der Entwickler des zu erweiternden Programms muss die Erweiterung vorgedacht haben.
 Die Menü-Erweiterung muss in einer BAdI-Implementierung implementiert sein.

(C) SAP AG BC425 22


7.23
BAdI: Menü-Exit (SAP-Vorbereitung)

SAP

Menu Painter

Menu 1 Menu 2 Menu 3


BACK Zurück
DISP Anzeigen
+XXX Kundenfunktion

 SAP AG 2006

 Funktionscodes von Menü-Erweiterungen beginnen mit "+" (Plus-Zeichen).


 Erst das Vorhandensein einer aktiven Implementierung eines Business Add In, welches die
entsprechende Erweiterung enthält, lässt den zusätzlichen Menü-Punkt zur Laufzeit in der Anzeige
erscheinen.

(C) SAP AG BC425 23


7.24
BAdI: Menü-Exit (Funktionscode-Verarbeitung)

PROGRAM
PROGRAM <sap_program>.
<sap_program>.
DATA
DATA ok_code
ok_code LIKE
LIKE sy-ucomm.
sy-ucomm.
DATA
DATA r_var
r_var TYPE
TYPE REF
REF TO
TO <badi-interface>.
<badi-interface>.
...
...

CASE
CASE ok_code.
ok_code.
WHEN
WHEN 'DISP'.
'DISP'.
...
...
WHEN '+XXX'.
CALL METHOD r_var -> <meth_abc>
EXPORTING
<i_variables>
IMPORTING
<e_variables>.

...
...
ENDCASE.
ENDCASE.

 SAP AG 2006

 Wird im Anwendungsprogramm der Menüeintrag ausgewählt, zu dem der Funktionscode "+<exit>"


gehört, wird der entsprechende Methodenaufruf abgearbeitet.
 Der Methodenaufruf und die Menüerweiterung gehören also unmittelbar und untrennbar zusammen.
Das erste würde ohne das zweite keinen Sinn ergeben. Aus diesem Grund ist es wichtig, dass diese
beiden Erweiterungskomponenten in einer Erweiterung – dem Business Add In – zusammengefasst
sind.

(C) SAP AG BC425 24


7.25
BAdI: Menü-Exit (Einschränkung)

Eigensch. Interface FCodes

Programm Funktionscode Beschreibung


/namespace/... +xxx

Eigensch.

Mehrfach verwendbar

Filterabhängig

 SAP AG 2006

 Funktionscodes können nur zu einfach nutzbaren Business Add Ins existieren. Das Business Add In
darf darüber hinaus nicht filterabhängig sein.
 Diese Einschränkungen sind notwendig, um Konflikte von mehreren Implementierungen zu
vermeiden ("Welcher Menüeintragstext soll zur Anzeige gebracht werden?").

(C) SAP AG BC425 25


7.26
Definition von BAdIs: Lernziele

Nach Behandlung dieses Themas können Sie:

 Business Add Ins anlegen, die in Ihren


Programmen als Erweiterungen für nachgelagerte
Entwicklungen dienen

 SAP AG 2006

(C) SAP AG BC425 26


7.27
BAdI-Definition: Einstieg

Business Add-Ins: Einstieg Definitionspflege

Definitionsname__

Anzeigen Ändern Anlegen

 SAP AG 2006

 Zum Anlegen eines BAdIs verwenden Sie den BAdI Builder (Werkzeuge --> ABAP Workbench -->
Hilfsmittel --> Business Add-Ins --> Definition) oder den Transaktionscode SE18.
 Vor SAP NetWeaver Application Server 7.0 besitzt die Transaktion SE18 das oben in der Grafik
gezeigte Einstiegsbild.
 Ab SAP NetWeaver Application Server gibt es neben den bisherigen auch die neuen BAdIs, die in
sogannten Enhancement Spots enthalten sind (siehe Anhang). Um ein bisheriges (klassisches) BAdI
anzulegen, müssen Sie im neu gestalteten Einstiegsbild der SE18 über das Menü "Hilfsmittel 
Anlegen klassischer BAdI" gehen.

(C) SAP AG BC425 27


7.28
BAdI-Definition: Eigenschaften

Eigensch. Interface FCodes

Programm Funktionscode Beschreibung


Mehrfach verwendbar

Filterabhängig Filtertyp__ <filter_type>

 SAP AG 2006

 Unter den Eigenschaften können sie zwei wichtige Eigenschaften des Business Add Ins festlegen:
 Mehrfach verwendbar
 Filterabhängig
 Markieren Sie das Ankreuzfeld "Mehrfach verwendbar", kann es zu dem Business Add In mehrere
aktive Implementierungen geben. Die Reihenfolge der Abarbeitung dieser Implementierungen ist
hierbei nicht definiert. Im umgekehrten Fall (nicht mehrfach verwendbar) können ebenfalls mehrere
Implementierungen nebeneinander existieren. Es kann allerdings in diesem Fall nur eine aktive
Implementierung geben.
 Die Filterabhängigkeit eines Business Add In ermöglicht Ihnen, den Aufruf der Erweiterung von
bestimmten Randbedingungen abhängig zu machen. Der Filtertyp muss in Form eines
Datenelementes oder einer im ABAP Dictionary vorhandenen Struktur angegeben werden. Die
Wertetabelle der Domäne, auf die sich das Datenelement bezieht, gibt die für die Implementierung
sinnvollen Werte vor. Bei einer Struktur als Filtertyp gilt diese Aussage entsprechend für die
Einzelfelder der Struktur.
 Beim Aufruf der Erweiterungs-Methode muss in diesem Fall ein Filterwert an der Schnittstelle
mitgegeben werden.

(C) SAP AG BC425 28


7.29
BAdI-Definition: Einschränkungen bei Menü-Exits

Eigensch. Interface FCodes

Programm Funktionscode Beschreibung


/namespace/... +xxx

Eigensch.

Mehrfach verwendbar

Filterabhängig

 SAP AG 2006

 Sie können in einer Business-Add-In-Definition auch Funktionscodes aufnehmen, analog zu Menü-


Exits bei den Customer-Exits). Dazu geben sie den Programmnamen und den Funktionscode sowie
eine Kurzbeschreibung auf dem entsprechenden Tabstrip an.
 Einschränkungen:
 Es können zur Zeit keine BAdIs angelegt werden, die nur aus Menü-Erweiterungen
(Funktionscodes) bestehen.
 Die Aufnahme von Menü-Erweiterungen schliesst die Mehrfachverwendbarkeit und die
Filterabhängigkeit aus.

(C) SAP AG BC425 29


7.30
BAdI-Definition: Interface-Methoden definieren

Eigensch. Interface FCodes

Interfacename <badi-interface>

Class Builder: Interface <badi-interface> ändern

Eigensch. Methoden Events

Parameter Ausnahmen
Methode Art Beschreibung
<method1> Methode 1 der Erweiterung
<method2> Methode 2 der Erweiterung

 SAP AG 2006

 Das System schlägt ihnen einen Namen für das Interface und die generierte BAdI-Klasse vor. Der
Name des Interfaces ist hierbei änderbar und kann theoretisch von ihnen frei gewählt werden. Es
empfiehlt sich jedoch, auf Grund der Übersichtlichkeit den vorgeschlagenen Namen beizubehalten.
 Der Name der generierten Klasse setzt sich zusammen aus den folgenden Komponenten:
 Namensraum-Präfix
 CL_ (für Klasse allgemein)
 EX_ (steht für "Exit")
 Name des Business Add Ins (ohne Namensraum-Präfix)
 Durch Doppelklick auf den Namen des Interfaces gelangen sie in den Class-Builder, wo sie die
Methoden des Interfaces definieren können.
 Zu einem BAdI-Interface können mehrere Interface-Methoden gehören.

(C) SAP AG BC425 30


7.31
BAdI-Definition: Methoden-Schnittstellenparameter

Class Builder: Interface <badi-interface> ändern

Eigensch. Methoden Events

Parameter Ausnahmen
Methode Art Beschreibung
<method> methode des BAdI

Eigensch. Methoden Events

Methoden Ausnahmen
Parameter Art Type Beschreibung
Importing
Exporting
Changing

 SAP AG 2006

 Im Class Builder können sie alle gewohnten Aktivitäten ausführen. Sie können unter anderem
 Interface-Methoden definieren
 Schnittstellenparameter der Methoden definieren
 Attribute des Interfaces vereinbaren
 Bei filterabhängigen Business Add Ins müssen sie bei jeder Methode einen Import-Parameter flt_val
definieren! Ansonsten vereinbaren sie die Schnittstellenparameter, die für die Verwendung der
Erweiterung notwendig sind.

(C) SAP AG BC425 31


7.32
BAdI-Definition: BAdI-Interface aktivieren

Class Builder: Interface <badi-interface> ändern

Eigensch. Methoden Events

Parameter Ausnahmen
Methode Art Beschreibung
<method> Methode des BAdI

 SAP AG 2006

 Wenn sie die Bearbeitung des Interfaces abgeschlossen haben, aktivieren sie es. Dadurch wird die
BAdI-Klasse des Business Add Ins generiert!
 Änderungen am Interface ziehen eine automatische Nachgenerierung der BAdI-Klasse nach sich.
 Im Einstiegsbild der Business Add In-Pflege können sie die BAdI-Klasse auch explizit generieren
(unter Hilfsmittel --> Neugenerierung).

(C) SAP AG BC425 32


7.33
BAdI-Definition: Aufruf im Programm

REPORT
REPORT <sap_program>.
<sap_program>.
DATA r_var
r_var TYPE REF TO <badi
<badi-
-interface>.
interface>. 1
...
...

CALL METHOD cl_exithandler=>get_instance


CHANGING 2 Instanz von
instance = r_var
r_var.
.
r_var <badi-
badi-class>

...
...

CALL METHOD r_var -> <meth_abc>


EXPORTING 3
<i_variables>
IMPORTING
<e_variables>.

...
...

 SAP AG 2006

 Um eine Methode eines Business Add Ins in einem Anwendungsprogramm aufrufen zu können,
müssen sie drei Anweisungen in ihr Programm aufnehmen:
 Deklarieren sie eine Referenzvariable (1) mit Referenz auf das BAdI-Interface (In unserem Beispiel
"r_var").
 Der Aufruf der statischen Methode GET_INSTANCE der Service-Klasse CL_EXITHANDLER (2)
liefert eine Instanz des fraglichen Objektes zurück. Implizit wird hierbei ein Down-Cast
durchgeführt, so daß nur die Interface-Methoden des Objekts mit der Referenz-Variable (hier:
"r_var") ansprechbar sind.
 Nun können sie die Methoden des BAdI aufrufen (3). Geben Sie die Schnittstelle korrekt an.

(C) SAP AG BC425 33


7.34
Aufruf eines filterabhängigen BAdIs

REPORT
REPORT <sap_program>.
<sap_program>.
Instanz von
DATA:
DATA: r_var
r_var
TYPE
TYPE REF
REF TO
TO <badi-interface>.
<badi-interface>.
1 <badi-
badi-class>

...
...

CALL
CALL METHOD
METHOD
cl_exithandler=>get_instance
cl_exithandler=>get_instance 2
CHANGING
CHANGING
instance
instance == r_var.
r_var.
r_var
...
...

CALL METHOD r_var


r_var-
-><method
><method>
>
EXPORTING 3
flt_val = <filterwert>
<i_variables>
IMPORTING
<e_variables>.
...
...

 SAP AG 2006

 Bei filterabhängigen Business Add Ins müssen sie den Parameter flt_val mit einem entsprechenden
Wert versorgen.

(C) SAP AG BC425 34


7.35
BAdI-Dynpro-Exit anlegen: Lernziele

Nach Behandlung dieses Themas können Sie

 ein Programm erstellen, das eine BAdI-Screen-


Erweiterung (Dynpro-Exit) anbietet

 SAP AG 2006

(C) SAP AG BC425 35


7.36
BAdI-Dynpro-Exit: Prinzip

SAP- BadI-Klasse Implementierendes


Anwendungs- SET INSTANCE <badi-class> Programm
Programm GET INSTANCE (Funktionsgruppe)

PBO GET DATA PBO


PUT DATA

Statisches
Attribut:
Attribut:
Dynpro-
Dynpro-Instanz
abcd PUT DATA PAI
PAI
GET DATA

PUT DATA GET DATA

Implement. Klasse

Instanz-
Instanz- Attribute:
Dynpro-
Dynpro- Daten

 SAP AG 2006

 Die ABAP Virtual Machine kennt keine klassengebundenen Dynpros. Als Träger von Dynpros
können somit nur "klassische" Programme (Typ 1, F, M) verwendet werden. Dynpro-Erweiterungen
müssen diesen Umstand berücksichtigen.
 Analog zu Customer-Exits reserviert der Anbieter bei BAdI-Dynpro-Erweiterungen auf dem Dynpro
des Anwendungsprogrammes einen Subscreen-Bereich, der mit einem Subscreen des
Implementierers belegt wird. Die Kommunikation erfolgt hier jedoch nicht mehr direkt zwischen
Anwendungsprogramm und Trägerprogramm des Subscreens. Sie erfolgt über die generierte BAdI-
Klasse.
 Auf den folgenden Graphiken wird diese Kommunikation Schritt für Schritt abgebildet.

(C) SAP AG BC425 36


7.37
BAdI-Dynpro-Exit: Komponenten

BAdI INTERFACE IF_EX_<badi>.


Eigensch.
DATA: gl_
gl_dat...
dat...

METHODS put_
put_data
Mehrfach verwendbar EXPORTING
Filterabhängig <data>.
data>.

METHODS get_
get_data
IMPORTING
FCodes
<data>.
data>.
Programm Funktionscode
<prog> +ABC METHODS ...
ENDINTERFACE.

Subscreens

Rufendes Programm Dyn-Nr Subscr-Bereich Besc


<prog> 0200 ABCD Bla..

 SAP AG 2006

 Enthält ein BAdI eine oder mehrere Screen-Erweiterungen, kann es nicht als mehrfach verwendbar
gekennzeichnet sein. Enthält es zusätzlich noch Menü-Erweiterungen, ist auch die Filterabhängigkeit
ausgeschlossen.
 Auf der Karteikarte "Subscreens" ist das rufende Programm, die Dynpro-Nummer sowie der
Subscreen-Bereich angegeben. Der Name des implementierenden Programms und die Nummer des
Subscreen-Dynpros wird hingegen erst vom Implementierer angegeben.

(C) SAP AG BC425 37


7.38
BAdI-Dynpro-Exit: PBO des Träger-Dynpros

 PBO:
Instanz der BAdI-Klasse erzeugen
Instanz publizieren, damit Implementierer darauf zugreifen
kann
Programmname und Subscreen-Dynpronummer der
Implementierung beschaffen
Daten für Subscreen-Dynpro zur Verfügung stellen
Subscreen in Subscreen-Bereich integrieren

 SAP AG 2006

 Um eine Dynpro-Erweiterung über die BAdI-Technik anbieten zu können, müssen im PBO des
Anwendungsdynpros die oben aufgelisteten Schritte implementiert werden.

(C) SAP AG BC425 38


7.39
BAdI-Dynpro-Exit: PAI des Träger-Dynpros

 PAI:
Subscreen aufrufen
Benutzereingaben auf Subscreen beschaffen

 SAP AG 2006

 Im PAI des Träger-Dynpros müssen das Subscreen erneut gerufen und - je nach Design der
Erweiterung - vom Benutzer auf dem Subscreen geänderte Daten in das Anwendungsprogramm
geladen werden.

(C) SAP AG BC425 39


7.40
PBO-Schritte (1) : BAdI-Instanz erzeugen

SAP-Anwendungsprogramm CL_EXITHANDLER
Dynpro ABAP
DATA r_exit
TYPE REF TO
<badi-interface>.
PBO
MODULE... CALL METHOD
MODULE... cl_exithandler
cl_exithandler
MODULE... =>get
=>get_
_instance
MODULE... CHANGING
BadI-Klasse
instance = r_exit.
r_exit.
<badi-class>
CALL
SUBSCREEN...

abcd

 SAP AG 2006

 Im ersten Schritt wird analog zu den funktionalen Erweiterungen eine Instanz der BAdI-Klasse
erzeugt. Das geschieht durch den Aufruf der Factory-Methode "get_instance" der Klasse
CL_EXITHANDLER.

(C) SAP AG BC425 40


7.41
PBO-Schritte (2) : Instanz publizieren

SAP-Anwendungsprogramm CL_EXITHANDLER
Dynpro ABAP
DATA r_exit
TYPE REF TO
<badi-interface>.
PBO
MODULE...
MODULE... CALL METHOD
MODULE... cl_exithandler=>
MODULE... set_instance_for BadI-Klasse
_subscreens <badi-class>
CALL EXPORTING
instance = r_exit.
r_exit.
SUBSCREEN...

abcd

 SAP AG 2006

 Die Implementierung wird später ebenfalls auf die Instanz der BAdI-Klasse zugreifen müssen.
Darum ist es notwendig, diese Instanz zu "publizieren". Dies geschieht durch den Aufruf der
statischen Methode SET_INSTANCE_FOR_SUBSCREENS der Standardklasse
CL_EXITHANDLER.

(C) SAP AG BC425 41


7.42
PBO-Schritte (3) : Subscreen-Nummer beschaffen

SAP-Anwendungsprogramm CL_EXITHANDLER
Dynpro ABAP
DATA r_exit
TYPE REF TO
<badi-interface>.
PBO
MODULE...
MODULE...
MODULE... CALL METHOD
MODULE... cl_exithandler=> BadI-Klasse
get_prog_and_dynp <badi-class>
CALL _for_
for_subscr
SUBSCREEN... EXPORTING
...
IMPORTING
called_
called_program =...
called_dynpro =...
abcd

 SAP AG 2006

 Für die Anweisung CALL SUBSCREEN im PBO des Träger-Dynpros müssen Subscreen-Dynpro-
Nummer sowie zugehöriges Programm der Implementierung ermittelt werden. Dies geschieht durch
den Methodenaufruf
CALL METHOD cl_exithandler=>get_prog_and_dynp_for_subscr
 Falls noch keine aktive Implementierung existiert, wird ein leeres Dummy-Subscreen-Dynpro (0200)
aus einer existierenden Dummy-Funktionsgruppe (SAPLSEXM) ermittelt.
 Ist jedoch eine aktive Implementierung zur verwendeten BAdI-Definition vorhanden, wird das bei
der Implementierung angegebene Subscreen-Dynpro aus dem angegebenen Programm verwendet.

(C) SAP AG BC425 42


7.43
PBO-Schritte (4) : Daten bereitstellen

SAP-Anwendungsprogramm CL_EXITHANDLER
Dynpro ABAP
DATA r_exit
TYPE REF TO
<badi-interface>.
PBO
MODULE...
MODULE...
MODULE...
MODULE... CALL METHOD BadI-Klasse
r_exit-
r_exit->put_
put_data <badi-class>
CALL EXPORTING
SUBSCREEN... <daten>
daten>

daten

abcd

 SAP AG 2006

 Um der Implementierung Daten zur Verfügung zu stellen, müssen diese in zwei Schritten übergeben
werden:
 Daten übergeben an BAdI-Klasse. In der Implementierung dieser Methode werden die übergebenen
Daten in globalen Attributen gespeichert. Es ist dringend anzuraten, hierzu Beispiel-Coding zur
Verfügung zu stellen. Die Übergabe erfolgt über den Aufruf der im BAdI definierten Methode.
 Die so in der BAdI-Klasse in globalen Attributen abgelegten Daten werden automatisch in globale
Attribute der implementierenden Klasse weitergereicht, falls eine aktive Implementierung existiert.

(C) SAP AG BC425 43


7.44
PBO-Schritte (5) : Subscreen integrieren

SAP-Anwendungsprogramm CL_EXITHANDLER Implementierendes


Programm
Dynpro ABAP
DATA r_exit
TYPE REF TO
<badi-interface>.
PBO
MODULE...
MODULE...
MODULE...
MODULE... BadI-Klasse
<badi-class>
CALL SUBSCREEN abcd
INCLUDING prog
dynnr.
Subscreen-
Subscreen- Dynpro
dynnr.
daten

abcd

 SAP AG 2006

 Schließlich erfolgt im Anwendungsprogramm der Aufruf des Subscreen-Dynpros.

(C) SAP AG BC425 44


7.45
PAI-Schritte : Subscreen rufen und Daten laden

SAP-Anwendungsprogramm CL_EXITHANDLER Implementierendes


Programm
Dynpro ABAP
DATA r_exit Subscreen-
Subscreen- Dynpro
TYPE REF TO
<badi-interface>.

abcd
PAI
CALL SUBSCREEN abcd. BadI-Klasse
<badi-class>
MODULE... CALL METHOD
r_exit-
r_exit->get_
get_data
IMPORTING
<daten>
daten> daten

 SAP AG 2006

 Sollen die auf dem Subscreen getätigten Benutzereingaben ins Anwendungsprogramm zur
Weiterverarbeitung geladen werden, muss die entsprechende Methode (hier: GET_DATA) gerufen
werden.

(C) SAP AG BC425 45


7.46
BAdI-Dynpro-Exit implementieren: Lernziele

Nach Behandlung dieses Themas können Sie

 BAdI-Screen-Erweiterungen (Dynpro-Exits)
implementieren

 SAP AG 2006

(C) SAP AG BC425 46


7.47
BAdI-Dynpro-Exit implementieren: Schritte

 Programm anlegen (Funktionsgruppe)

 Subscreen-Dynpro anlegen
PBO:
Instanz der BAdI-Klasse beschaffen
Daten für Subscreen-Dynpro beschaffen
PAI:
Auf Subscreen geänderte Daten zurückschreiben

 BAdI-Implementierung anlegen

 SAP AG 2006

 Um eine BAdI-Dynpro-Erweiterung zu implementieren, müssen folgende Schritte durchlaufen


werden:
 Anlegen der Implementierung zur BAdI-Definition. Hier wird das Programm angegeben, welches
das Subscreen-Dynpro enthält sowie die Nummer des Subscreen-Dynpros.
 Anlegen des in der BAdI-Implementierung angegebenen Programms
 Anlegen und Gestalten des Subscreen-Dynpros
 Falls vorgesehen ist, dass auf dem Subscreen geänderte Daten an das Anwendungsprogramm
zurückgegeben werden, muss im PAI des Subscreen-Dynpros die entsprechende Methode aufgerufen
werden.

(C) SAP AG BC425 47


7.48
PBO-Schritte (1) : BAdI-Instanz beschaffen

SAP-AnwProg CL_EXITHANDLER Implementierendes Programm


Dynpro ABAP Subscreen-
Subscreen-
Dynpro
DATA r_exit1
TYPE REF TO
<badi-interface>.

PBO
CALL METHOD MODULE...
BadI-Klasse cl_exithandler=>
<badi-class> get_instance_for
_subscreens
IMPORTING
daten instance = r_exit1.
r_exit1.

abcd

 SAP AG 2006

 Zur Beschaffung der Referenz auf die Instanz der BAdI-Klasse stellt die Klasse
CL_EXITHANDLER die Methode GET_INSTANCE_FOR_SUBSCREENS zur Verfügung.

(C) SAP AG BC425 48


7.49
PBO-Schritte (2) : Daten für Subscreen beschaffen

SAP-AnwProg CL_EXITHANDLER Implementierendes Programm


Dynpro ABAP Subscreen-
Subscreen-
Dynpro
DATA r_exit1
TYPE REF TO
<badi-interface>.

PBO
MODULE...
BadI-Klasse CALL METHOD MODULE...
<badi-class> r_exit1-
r_exit1->get_
get_data
IMPORTING
<daten>.
daten>.
daten

globale Daten

abcd

 SAP AG 2006

 Das implementierende Programm beschafft sich die auf dem Subscreen anzuzeigenden Daten durch
Aufruf der entsprechenden Methode (hier: GET_DATA). Die Daten werden dabei in globale
Variablen des implementierenden Programms abgelegt, die am PBO-Ende entsprechende Subscreen-
Felder versorgen.

(C) SAP AG BC425 49


7.50
PAI-Schritt : Daten zurückschreiben

SAP-AnwProg CL_EXITHANDLER Implementierendes Programm


Dynpro ABAP Subscreen-
Subscreen-
Dynpro
DATA r_exit1
TYPE REF TO
<badi-interface>.

PBO
...
BadI-Klasse
globale Daten
<badi-class>

daten
PAI
CALL METHOD MODULE...
r_exit1-
r_exit1->put_
put_data
abcd EXPORTING
<daten>.
daten>.

 SAP AG 2006

 Ist die Änderung von Daten auf dem Subscreen vorgesehen, sollen die geänderten Daten
zurückgeschrieben werden, damit das Anwendungsprogramm diese zur Weiterverarbeitung
verwenden kann. Dies erfolgt durch Aufruf der entsprechenden BAdI-Methode (hier: PUT_DATA).

(C) SAP AG BC425 50


7.51
BAdIs - weitere Anmerkungen: Lernziele

Nach Behandlung dieses Themas können Sie:

 erklären, was erweiterbare Filtertypen sind


 Default- und Beispiel-Coding eines BAdIs
erläutern

 SAP AG 2006

(C) SAP AG BC425 51


7.52
Erweiterbare Filtertypen: Voraussetzungen

<DE> Filtertyp
<DE>

Domäne
Domäne

Wertetabelle
Wertetabelle Texttabelle
Texttabelle
Feldname Key Typ Feldname Key Typ
... <DE> ... <DE>
... ... language SPRAS
... ...

mandanten
unabhä
unabhängig

Auslieferungsklasse:
"E" oder "S"

 SAP AG 1999

 Die Zuordnung des Attributs erweiterbar unterliegt folgenden Einschränkungen:

 Die Domäne, auf die sich der erweiterbare Filtertyp bezieht, muß folgende Eigenschaften haben:

 Sie ist mit einer mandantenunabhängigen Wertetabelle verbunden. Diese Wertetabelle


hat genau ein Schlüsselfeld, das das Datenelement des Filtertypen als Feldtypen hat.

 Sie hat eine Texttabelle mit zwei Schlüsselfeldern. Ein Schlüsselfeld hat den Filtertyp
als Feldtypen und ein Schlüsselfeld ist ein Sprachenfeld. Zur Kenntlichmachung als Textfeld
muß es in dieser Tabelle ein Feld geben, das die Zeichenfolge 'TEXT' oder 'TXT' als Teilstring
enthält. Im Dictionary muß die Texttabelle der Wertetabelle zugeordnet sein.

 Die Auslieferungsklasse beider Tabellen muß "E" oder "S" sein.

 Alle Filterwerte, die im Rahmen eines erweiterbaren filterabhängigen Business Add-Ins angelegt
werden, dürfen in der Wertetabelle noch nicht vorkommen und werden beim Sichern in die
Wertetabelle aufgenommen. Entsprechend werden Sie beim Löschen der Implementierung oder des
gesamten Business Add-Ins aus der Wertetabelle entfernt. Gleiches gilt für die Texttabelle.

(C) SAP AG BC425 52


7.53
Default-Implementierung

Programm-Erweiterung  Wird durchlaufen, falls keine


aufrufen aktive Implementierung
vorhanden
 Vom Anbieter angelegt
Aktive Nein
Implementierung
vorhanden?
Ja Default-
Nein
Implementierung
Implementierung vorhanden?
ausführen
Ja

Default-
Implementierung
ausführen

 SAP AG 2006

 Eine Default-Implementierung wird immer dann durchlaufen, wenn zu einem Business Add In keine
aktive Implementierung existiert. Die Default-Implementierung wird vom Anbieter der Erweiterung
angelegt.
 Sie legen eine Default-Implementierung in der BAdI-Definition an unter Springen --> Default-
Coding. Das System erzeugt automatisch eine Klasse mit einem vorgegebenen Namen.
Implementieren Sie die Methoden so, dass das gewünschte Default-Verhalten erzeugt wird.
 Darüber hinaus besteht die Möglichkeit, eine Beispiel-Implementierung anzulegen. Hierbei handelt
es sich um Kopiervorlagen, die in die Methoden der Implementierungen eingebunden werden
können.
 Beispiel-Implementierungen können Sie unter dem Menü Springen --> Beispiel-Coding anlegen.
Das System legt dabei eine Klasse an, die die Methoden des Interfaces implementiert. Dem
Implementierer wird das Beispiel-Coding als Kopiervorlage angeboten.

(C) SAP AG BC425 53


7.54
Vergleich mit anderen Erweiterungstechniken

Business Business
Customer-
Customer-Exits Transaction Add
Events Ins

Programm-
Programm-Exit

Menü
Menü-Exit

Dynpro-
Dynpro-Exit

Append-
Append-Felder
auf Dynpro
Verwaltungs
ebene
mehrfach
verwendbar

filterabhä
filterabhängig

 SAP AG 2006

 Business Add Ins sind die natürliche Weiterentwicklung der bisher verfügbaren
Erweiterungstechniken. Von Customer-Exits wurden die Verwaltungsschicht übernommen ebenso
wie die Verfügbarkeit der unterschiedlichen Erweiterungsarten.
 Von Business Transaction Events wurde die Idee der Mehrfachverwendbarkeit aufgegriffen und mit
einem konsequent objektorientierten Ansatz verwirklicht.

(C) SAP AG BC425 54


7.55
Namenskonventionen (BAdI-Definition)

 BAdI-Definition
 <badi> bzw. Z<badi> bzw. /../<badi>
(frei wählbar; Namensräume beachten)

 Interface
 IF_EX_<badi> bzw. ZIF_EX_<badi> bzw. /../IF_EX_<badi>
(frei wählbar; Namensräume beachten)

 Methoden
 Namen beliebig

 Generierte BAdI-Klasse (Adapter-Klasse)


 CL_EX_<badi> bzw. ZCL_EX_<badi> bzw. /../CL_EX_<badi>
(nicht änderbar)

 SAP AG 2006

(C) SAP AG BC425 55


7.56
Namenskonventionen (BAdI-Implementierung)

 BAdI-Implementierung
 <impl> bzw. Z<impl> bzw. /../<impl>
(frei wählbar; Namensräume beachten)

 Interface
 IF_EX_<badi> bzw. ZIF_EX_<badi> bzw. /../IF_EX_<badi>
(von BadI-Definition vorgegeben)

 Methoden
 von BAdI-Definition vorgegeben

 Implementierende Klasse
 CL_IM_<impl> bzw. ZCL_IM_<impl> bzw. /../CL_IM_<impl>
(frei wählbar; Namensräume beachten)

 SAP AG 2006

(C) SAP AG BC425 56


7.57
Business Add-Ins: Zusammenfassung des Kapitels

Sie können nun:

 nach Business Add-Ins suchen


 Business Add-Ins implementieren
 (Business Add-Ins anlegen)

 SAP AG 2006

(C) SAP AG BC425 57


7.58Business Add Ins Übungen

Kapitel: Business Add Ins


Thema: Business Add Ins verwenden

Am Ende dieser Übungen können Sie:


 eine Erweiterung mit Hilfe von Business Add Ins
implementieren

Die Kundenbetreuer des Reisebüros wollen, daß die Liste der


Buchungen, deren Aufruf Sie in der Übung zu Menü-Exits
implementiert haben, mehr Informationen beinhaltet. Sie wollen
neben den Kundennummern auch die Namen der entsprechenden
Kunden auf der Liste sehen.

1-1 Überprüfen Sie, ob das Programm SAPBC425_BOOKING_##


(## = Gruppennummer) Erweiterungsmöglichkeiten bietet.
1-1-1 Untersuchen Sie das Programm nach Erweiterungsmöglichkeiten.
1-1-2 Überprüfen Sie, ob eine angebotene Erweiterungsmöglichkeit geeignet ist,
auf der Liste zusätzliche Informationen auszugeben.

1-2 Implementieren Sie die gefundene Erweiterung. Name der Implementierung:


ZBC425IM##.
1-2-1 Welche Daten werden an den Schnittstellen der Methoden übergeben? Sind
hier schon Felder vorhanden, die auf der Liste angezeigt werden sollen?
1-2-2 Die Informationen zu Kunden befinden sich in der Tabelle SCUSTOM.
Beschaffen Sie den Namen des jeweiligen Kunden über die entsprechende
Kundennummer. Geben Sie den Namen aus.

1-3 Formatieren Sie die Liste.


1.3.1 Wie können Sie die vertikale Linie versetzen, so daß die zusätzlichen Felder
innerhalb des Rahmens angezeigt werden?
1-3-2 Ist die Methode CHANGE_VLINE zum Ändern der Position der vertikalen
Linie geeignet? Falls ja, nutzen Sie sie entsprechend.

1-4 Überprüfen Sie das Ergebnis Ihrer Arbeit.

(C) SAP AG BC425 58


Übungen

Kapitel: Business Add Ins


Thema: Business Add In anlegen

Am Ende dieser Übungen können Sie:


 Ein Business Add In anlegen und in einem Programm mit
Hilfe der BAdI-Technik eine Erweiterung anbieten

Sie entwickeln selbst Zusatzkomponenten zu dem R/3-System. In


diesem Zusammenhang wollen Sie in einem Programm eine
Erweiterung anbieten, die nachgelagerte Softwareschichten
implementieren können.
Sie liefern ein Programm aus, welches eine Liste von
Flugverbindungen ausgibt. Mit Hilfe eines Business Add Ins
wollen Sie Ihren Kunden folgende Erweiterungsmöglichkeit
bieten: Bei einem Doppelklick auf eine Zeile sollen weitere
Aktionen implementiert werden können. Ihre Kunden sollen die
Möglichkeit haben, eine Verzweigungsliste aufzubauen.
Im zweiten Teil der Übung testen Sie Ihre Erweiterung: Auf
dieser Verzweigungsliste sollen zu einer Flugverbindung alle
Flüge ausgegeben werden.

1-1 Erzeugen Sie ein Programm, das eine Liste von Fluggesellschaften ausgibt.
1-1-1 Kopieren Sie dazu das Programm SAPBC425_TEMPLATE auf den Namen
ZBC425_BADI_##.
1-1-2 Ordnen Sie Ihr Programm Ihrer Entwicklungsklasse und einem
Änderungsauftrag zu.

1-2 Legen Sie ein Business Add In an.


1-2-1 Der Name des BAdI sei ZBC425##.
1-2-2 Legen Sie eine Methode an. Definieren Sie die Schnittstelle.
1-2-3 Welche Parameter müssen Sie an der Schnittstelle übergeben?

1-3 Bereiten Sie das Programm soweit vor, daß ein Verwender bei Doppelklick auf eine
Zeile die Möglichkeit erhält, eine Verzweigungsliste auszugeben.
1-3-1 Implementieren Sie das Ereignis AT LINE-SELECTION.
1-3-2 Fügen Sie in das Programm die Anweisungen ein, die zum Aufruf eines
Business Add Ins notwendig sind: Deklarieren Sie eine Referenzvariable;
Instanziieren Sie ein Objekt der BAdI-Klasse; Implementieren Sie den
Aufruf der BAdI-Methode an der geeigneten Stelle im Programm.

(C) SAP AG BC425 59


1-4 Implementieren Sie die Erweiterung (Name der Implementierung: ZB425##IM).
1-4-1 Bei Doppelklick auf eine Zeile der Liste des Anwendungsprogramms soll
eine Verzweigungsliste ausgegeben werden. Auf der Verzweigungsliste
sollen die Flugtermine zu der selektierten Flugverbindung ausgegeben
werden. Die Flugtermine sind in der Tabelle SFLIGHT## enthalten.
1-4-2 Lesen Sie die relevanten Daten aus der Tabelle SFLIGHT## per Array-
Fetch in eine interne Tabelle. Geben Sie anschließend ausgewählte Felder
der internen Tabelle aus.
1-4-3 Welche Variablen (Attribute der implementierenden Klasse) müssen Sie
vereinbaren? Wie vereinbaren Sie eine Interne Tabelle? Wo können Sie
einen Tabellentypen vereinbaren?

1-5 Überprüfen Sie das Ergebnis Ihrer Arbeit.

(C) SAP AG BC425 60


Übungen

Kapitel: Business Add In


Thema: Screen-Erweiterung implementieren

Am Ende dieser Übungen können Sie:


 Dynpro-Erweiterungen mit Hilfe von Business Add-Ins
implementieren.

Zum Erfassen und Ändern von Flugdaten verwenden Sie eine


eigene Transaktion. Diese Transaktion bietet nur die Standard-
Eingabefelder. Ihr Unternehmen will weitere Daten zu einem
Flug erfassen. Dazu bietet diese Transaktion eine
Erweiterungsmöglichkeit, die Sie implementieren.

1-1 Untersuchen Sie, ob das Programm SAPBC425_FLIGHT_CHNG## eine


Erweiterungsmöglichkeit anbietet, mit deren Hilfe Sie die Erfassungsmaske
erweitern können.

1-2 Suchen Sie nach Business Add Ins, mit deren Hilfe Sie die oben genannten
Anforderungen implementieren können.
1.2.1 Suchen Sie in der Anwendungshierarchie
1.2.2 Suchen Sie im Repository Infosysten
1.2.3 Suchen Sie im Einführungsleitfaden
1.2.4 Falls Sie ein BAdI finden: Lesen Sie die Dokumentation und beurteilen Sie,
ob das BAdI für Ihre Erweiterung brauchbar ist.

1-3 Implementieren Sie die Erweiterung.


1.3.1 Legen Sie eine Funktionsgruppe ZBC425IM## an. Sie benötigen diese
Funktionsgruppe zum Anlegen eines Subscreen-Dynpros.
1.3.2 Legen Sie ein Subscreen-Dynpro beliebiger Nummer an.
1.3.3 Platzieren Sie die gewünschten Felder auf dem Dynpro.
1.3.4 Programmieren Sie die Ablauflogik des Subscreen-Dynpros. Zum Zeitpunkt
PBO müssen Sie sich die Instanz der BAdI-Klasse beschaffen sowie die
Daten, die von der SAP-Anwendung übergeben werden.
Zum Zeitpunkt PAI müssen die geänderten Daten an die SAP-Anwendung
zurückgegeben werden.

1-4 Legen Sie eine BAdI-Implementierung an. Die Implementierung soll den Namen
ZBC425SIN## haben.
1.4.1 Implementieren Sie die Interface-Methoden.

(C) SAP AG BC425 61


1.4.2 Nehmen Sie die notwendigen Einstellungen auf der Karteikarte "Subscrens"
vor.
1.4.3 Aktivieren Sie die Implementierung

1-5 Testen Sie die erweiterte Anwendung.

(C) SAP AG BC425 62


7.59Business Add Ins Lösungen

Kapitel: Business Add Ins


Thema: Business Add Ins verwenden

1-1 So überprüfen Sie, ob das Programm SAPBC425_BOOKING_##


(## = Gruppennummer) Erweiterungsmöglichkeiten bietet:
1-1-1 Aus der Listenanzeige: Setzen Sie den Cursor auf die Liste und wählen Sie
F1  Technische Info. Doppelklicken Sie den Programmnamen (Sie
können auch direkt in den ABAP Editor einsteigen.). Suchen Sie im
Programm nach der Zeichenkette CL_EXITHANDLER. Doppelklicken Sie
den Übergabeparameter exit_book. Doppelklicken Sie das Interface, durch
das exit_book typisiert wird. Sie gelangen in den Class Builder. Führen Sie
einen Verwendungsnachweis für das Interface in Klassen durch. Es wird
Ihnen eine Klasse CL_EX_BADI_BOOK## angezeigt. Der Name des
Business Add In ist somit BADI_BOOK##.
1-1-2 Rufen Sie die Transaktion SE18 (BAdI Definition) auf. Lesen sie die
Dokumentation zu dem BAdI.

1-2 Implementieren der Erweiterung: Aus der Transaktion SE18 verzweigen Sie über
Implementierung  Anlegen in die Transaktion zum Anlegen der
Implementierungen von BAdIs. Name der Implementierung: ZBC425IM##.
1-2-1 Die Schnittstellenparameter können Sie anzeigen lassen, indem Sie in der
Transaktion SE18 die Methode doppelklicken. Im Class Builder stellen Sie
den Cursor auf die gewünschte Methode und wählen "Parameter". Die
Übergabestruktur enthält die Felder nicht, die Sie auf der Liste anzeigen
wollen. Sie müssen die entsprechenden Daten nachlesen.
1-2-2 Durch Doppelklick auf den Methodennamen gelangen Sie in den Editor. Im
folgenden ein Vorschlag für die Implementierung der Methoden
(Gruppe 00):
METHOD if_ex_badi_book00~output.
DATA:
name TYPE s_custname.
SELECT SINGLE name
FROM scustom
INTO name
WHERE id = i_booking-customid.
WRITE: name.
ENDMETHOD.

(C) SAP AG BC425 63


1-3 Zum Formatieren der Liste steht Ihnen die Methode change_vline zur Verfügung.
Hier können Sie die rechte Randlinie der Liste versetzen.
1-3-1 Der Parameter c_pos bestimmt die Position der rechten vertikalen Linie.
1-3-2 Die Methode kann auf folgende Weise implementiert werden:
METHOD if_ex_badi_book00~change_vline.
c_pos = c_pos + 25.
ENDMETHOD.

(C) SAP AG BC425 64


Lösungen

Kapitel: Business Add Ins


Thema: Business Add Ins anlegen

1-1 Kopieren sie das Vorlagen-Programm wie in der Übung angegeben.

1-2 Zum Anlegen von Business Add Ins starten Sie die Transaktion SE18 (In der
ABAP Workbench: Hilfsmittel  Erweiterungen  Business Add Ins 
Definition).
1-2-1 Als Namen des BAdI wählen Sie ZBC425##. Vergeben Sie einen Kurztext
und sichern Sie Ihre Eingaben.
1-2-2 Wählen Sie die Karteikarte "Interface". Doppelklick auf den Namen des
Interfaces. Sie gelangen in den Class Builder. Tragen sie den Namen einer
Methode ein. Vergeben Sie einen Kurztext. Wählen sie die Drucktaste
"Parameter", um die Schnittstelle zu definieren.
1-2-3 Definieren Sie zwei Importing-Parameter, die mit S_CARR_ID
(Fluggesellschaft) und S_CONN_ID (Verbindungs-Nummer) typisiert sind.
Aktivieren Sie das Interface. Damit wird auch die Adapter-Klasse generiert.

1-3 Quelltext des Programmes mit Business Add In:


*&---------------------------------------------------------*
*& Report SAPBC425_TEMPLATE*
*&---------------------------------------------------------*
REPORT sapbc425_badi.

DATA:
wa_spfli TYPE spfli,
it_spfli TYPE TABLE OF spfli WITH KEY carrid connid.

* Reference Variable for BAdI


DATA:
exit_ref TYPE REF TO zif_ex_bc42500.

* Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK carrier
WITH FRAME TITLE text-car.
SELECT-OPTIONS: so_carr FOR wa_spfli-carrid.
SELECTION-SCREEN END OF BLOCK carrier.

(C) SAP AG BC425 65


*&----------------------------------------------------------*
*& Event START-OF-SELECTION
*&----------------------------------------------------------*
START-OF-SELECTION.

CALL METHOD cl_exithandler=>get_instance


CHANGING
instance = exit_ref.

SELECT *
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE it_spfli
WHERE carrid IN so_carr.
*&----------------------------------------------------------*
*& Event END-OF-SELECTION
*&----------------------------------------------------------*
END-OF-SELECTION.

LOOP AT it_spfli INTO wa_spfli.

WRITE: / wa_spfli-carrid,
wa_spfli-connid,
wa_spfli-countryfr,
wa_spfli-cityfrom,
wa_spfli-countryto,
wa_spfli-cityto,
wa_spfli-deptime,
wa_spfli-arrtime.

HIDE: wa_spfli-carrid,
wa_spfli-connid.

ENDLOOP.

CLEAR wa_spfli.

*&----------------------------------------------------------*
*& Event AT LINE-SELECTION.
*&----------------------------------------------------------*

(C) SAP AG BC425 66


AT LINE-SELECTION..

CHECK NOT wa_spfli-carrid IS INITIAL.

CALL METHOD exit_ref->lineselection


EXPORTING
i_carrid = wa_spfli-carrid
i_connid = wa_spfli-connid.
clear wa-spfli.

1-4 Implementieren Sie das Business Add In. Aus der Transaktion SE18 wählen Sie
Implementierungen  Anlegen. Vergeben Sie den Namen ZBC425##_IM für die
Implementierung. Wählen Sie die Karteikarte "Interface" und doppelklicken Sie
den Namen der Methode. Sie gelangen in den Editor. Hier erfassen Sie den
Quelltext:
METHOD zif_ex_bc42500~lineselection.

DATA:
it_flights TYPE TABLE OF sflight00,
wa_flights TYPE sflight00.

FORMAT COLOR COL_HEADING.


WRITE: / text-hea, i_carrid, i_connid.
FORMAT COLOR COL_NORMAL.

SELECT *
FROM sflight00
INTO CORRESPONDING FIELDS OF TABLE it_flights
WHERE carrid = i_carrid AND
connid = i_connid.

LOOP AT it_flights INTO wa_flights.


WRITE: / wa_flights-fldate,
wa_flights-planetype,
wa_flights-price CURRENCY wa_flights-currency,
wa_flights-currency,
wa_flights-seatsmax,
wa_flights-seatsocc.
ENDLOOP.
ENDMETHOD.

(C) SAP AG BC425 67


Aktivieren Sie die Implementierung.

(C) SAP AG BC425 68


Titel in weißer Schrift - Lösungen

Kapitel: Business Add Ins


Thema: Screen-Erweiterungen

1-1 So untersuchen Sie, ob das Programm SAPBC425_FLIGHT_CHNG## eine


Erweiterungsmöglichkeit anbietet, mit deren Hilfe Sie die Erfassungsmaske
erweitern können:
1-1-1 Wählen Sie System  Status, um den Programmnamen herauszufinden.
Doppelklicken Sie den Programmnamen. Wählen Sie Springen 
Objektkatalogeintrag. Hier finden Sie die Information, welchem Paket die
Anwendung zugeordnet ist. Doppelklick auf den Paketnamen liefert Ihnen
die Information, welcher Anwendungskomponente dieses Paket zugeordnet
ist.

1-2 Suchen Sie im Repository Infosystem oder über die Anwendungshierarchie nach
passenden Business Add Ins, wobei das Paket und die Anwendungskomponente des
Anwendungsprogramms als Selektionskriterium dienen.
1-2-1 Im Repository Infosystem finden Sie BAdIs unter Erweiterungen 
Business Add Ins  Definition.
1.2.2 In der Anwendungshierarchie markieren Sie die Anwendungskomponente.
Hiernach wählen Sie die Drucktaste "Infosystem" um zum Repository
Infosystem zu gelangen. Damit sind alle Pakete der markierten
Anwendungskomponente als Selektionskriterien eingetragen.
1.2.3 Als Suchergebnis erhalten Sie eine Liste von BAdIs. Markieren Sie das zu
untersuchende BAdI BC425_##FLIGHT2 und wählen Sie "Anzeigen". Sie
befinden sich nun im BAdI Builder, wo Sie die Dokumentation des BAdIs
vorfinden. Machen Sie sich mit der Dokumentation vertraut.

1-3 Implementieren Sie die Erweiterung.


1.3.1 Legen Sie die Funktionsgruppe ZBC425IM## im Object Navigator an.
Dazu lassen Sie sich die Objektliste Ihres Paketes anzeigen. Rechte
Maustaste auf den Paketnamen  Anlegen  Funktionsgruppe. Tragen
Sie in das Feld Name ZBC425IM## ein; vergeben Sie einen Kurztext.
Sichern Sie Ihre Eingabe und ordnen Sie einen Änderungsauftrag zu.
1.3.2 Legen Sie ein Subscreen-Dynpro beliebiger Nummer in der
Funktionsgruppe an. Rechte Maustaste auf die Funktionsgruppe 
Anlegen  Dynpro. Vergeben Sie einen Kurztext und wählen Sie
Dynprotyp "Subscreen".
1.3.3 Starten Sie den Layout-Editor. Wählen Sie Springen  Sekundärfenster 
Dict/Programmfelder. Geben Sie die Dictionary-Struktur an und wählen Sie
"Holen aus Dict". Markieren Sie die gewünschten Felder und bestätigen Sie
die Eingabe. Platzieren Sie die Felder auf dem Dynpro.
(C) SAP AG BC425 69
1-3-4 Navigieren Sie zur Ablauflogik des Subscreen-Dynpros. Folgende Module
sollten mindestens in der Ablauflogik aufgerufen werden:

*--------------------------------------------
PROCESS BEFORE OUTPUT.

MODULE get_instance.
MODULE get_data.
*
*--------------------------------------------
PROCESS AFTER INPUT.

MODULE put_data.

*----------------------------------------------------------------------*
***INCLUDE LZBC425_IMO01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module get_instance OUTPUT
*&---------------------------------------------------------------------*
MODULE get_instance OUTPUT.

CALL METHOD cl_exithandler=>get_instance_for_subscreens


CHANGING
instance = r_var
EXCEPTIONS
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDMODULE. " get_instance OUTPUT


*&---------------------------------------------------------------------*
*& Module get_data OUTPUT
*&---------------------------------------------------------------------*
MODULE get_data OUTPUT.

CALL METHOD r_var->get_data


IMPORTING
e_conn = sdyn_conn.

ENDMODULE. " get_data OUTPUT


*----------------------------------------------------------------------*
***INCLUDE LZBC425_IMI01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module put_data INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE put_data INPUT.

(C) SAP AG BC425 70


CALL METHOD r_var->put_data
EXPORTING
i_conn = sdyn_conn.

ENDMODULE. " put_data INPUT

*----------------------------------------------------------------------*
***INCLUDE LZBC425_IMTOP
*----------------------------------------------------------------------*
FUNCTION-POOL kaura_im_bc425. "MESSAGE-ID ..

TABLES:
sdyn_conn.

DATA:
r_var TYPE REF TO if_ex_bc425_##flight2.

1-4 Legen Sie eine BAdI-Implementierung an. Aus der Definition wählen Sie
Implementierung  Anlegen. Vergeben Sie den Namen ZBC425SIN## für die
Implementierung und bestätigen Sie Ihre Eingabe.
1.4.1 Wählen Sie die Karteikarte "Interface" und doppelklicken Sie die Methoden,
um in den Editor zu gelangen.

METHOD if_ex_bc425_##flight2~get_data .
MOVE-CORRESPONDING wa TO e_conn.
ENDMETHOD. "IF_EX_BC425_##FLIGHT2~GET_DATA

METHOD if_ex_bc425_##flight2~put_data .
MOVE-CORRESPONDING i_conn TO wa.
ENDMETHOD. " IF_EX_BC425_##FLIGHT2~PUT_DATA

1.4.2 Auf der Karteikarte "Subscreens" tragen Sie den Namen des Programms
Ihrer Funktionsgruppe SAPLZBC425IM## sowie die Nummer des von
Ihnen angelegten Subscreen-Dynpros ein.
1.4.3 Aktivieren Sie die Implementierung über Implementierung  Aktivieren
oder die entsprechende Drucktaste.

1-5 Führen Sie die Anwendung aus und überprüfen Sie, ob Ihre Erweiterung
durchlaufen wird.

(C) SAP AG BC425 71


8
Modifikationen

Inhalt:
 Was sind Modifikationen
 Durchführen von Modifikationen
 Modifikationsassistent
 Modification Browser
 User Exits
 SAP Note Assistant
 Modifikationsabgleich

 SAP AG 2002

(C) SAP AG BC425 1


8.2
Modifikationen: Lernziele des Kapitels

Am Ende dieses Kapitels können Sie:

 beschreiben, was eine Modifikation ist


 die wichtigsten Regeln beim Modifizieren
aufzählen
 Modifikationen mit Hilfe des
Modifikationsassistenten durchführen
 User-Exits zum Implementieren von
Erweiterungen einsetzen
 Hinweise mit dem Note Assistant einpflegen
 Modifikationen abgleichen

 SAP AG 2002

(C) SAP AG BC425 2


8.3
Übersichtsdiagramm Modifikationen

SAP Business Anwendungen


(SAP-
(SAP-Standard)
Standard)

Personali
Modifikation Erweiterung
sierung
Transaktions Modifikationsassistent ABAP Dictionary
varianten  Tabellen 4
User-Exits  Datenelemente

Customer-Exits 5
3 8 Business Transaction Events 6
Business Add Ins 7

Überblick 2
 SAP AG 2006

(C) SAP AG BC425 3


8.4
Originale und Kopien

Entwicklungssystem Folgesystem

Kundenobjekt Kundenobjekt

Original Kopie
Transport der
Entwicklung

SAP-Objekt SAP-Objekt SAP-Objekt

Original Kopie Kopie

 SAP AG 2002

 Ein Objekt kann nur in genau einem System original sein. Bei von SAP ausgelieferten Objekten
befindet sich das "Original-System" bei SAP selbst. In Ihrem Kundensystemen liegen diese Objekte
nur als Kopien vor. Dies gilt sowohl für Ihr Entwicklungssystem als auch für alle Ihre Folgesysteme.
 Führen Sie Eigenentwicklungen durch, sind Ihre Objekte original im Entwicklungssystem. Eine
Entwicklung ordnen Sie einem Änderungsauftrag zu. Die entsprechende Aufgabe hat den Typ
"Entwicklung/Korrektur".
 Mit Hilfe dieses Auftrags werden die Objekte vom Entwicklungssystem in die Folgesysteme
transportiert.

(C) SAP AG BC425 4


8.5
Korrekturen und Reparaturen

Entwicklungssystem Folgesystem

Kundenobjekt Kundenobjekt
korrigiertes
Kopie
Original
Transport
Korrektur der Korrektur

SAP-Objekt SAP-Objekt SAP-Objekt


korrigiertes modifizierte
Kopie
Original Kopie
Transport
Korrektur Reparatur der Reparatur

 SAP AG 2002

 Eine Änderung des Originals wird als Korrektur bezeichnet. Dementsprechend zeichnet das System
diese Änderungen in einem Auftrag mit Aufgaben vom Typ "Entwicklung/Korrektur" auf.
 Wird hingegen eine Kopie geändert (ein Objekt nicht in seinem Originalsystem geändert), wird diese
Änderung in einer Aufgabe vom Typ "Reparatur" aufgezeichnet. Eine Reparatur eines SAP-Objekts
wird als Modifikation bezeichnet.
 Bei Reparaturen an Ihren eigenen Objekten (z.B. in Folge eines Notfalls im Produktivsystem) haben
Sie die Möglichkeit, die Änderungen sofort auch an den Originalen im Entwicklungssystem
nachzuziehen. Es ist unbedingt erforderlich, daß Sie Änderungen an Kopien sofort auch am
Original vornehmen!!
 Diese Möglichkeit besteht bei SAP-Objekten nicht, da sich die Originale nicht in einem Ihrer
Systeme befinden.
 Modifikationen des Standards sollten nur dann vorgenommen werden, wenn sie für die Optimierung
bestimmter Arbeitsabläufe in einem Unternehmen unumgänglich sind. Auch sollten Sie sich darüber
im Klaren sein, daß ein gutes Hintergrundwissen über die Aufbau- und Ablaufstruktur einer
Applikation als Grundlage für die Beurteilung von Modifikationsmöglichkeiten und für sinnvolles
Modifikationsdesign bei Änderungen des Standards unabdingbar ist.

(C) SAP AG BC425 5


8.6
Modifikationen beim Upgrade

Entwicklungssystem Folgesystem

Kundenobjekt Kundenobjekt
korrigiertes
Kopie
Original

SAP-Objekt SAP-Objekt SAP-Objekt


korrigiertes modifizierte
Kopie
Original Kopie
Transport
Modifikations des Abgleichs
abgleich

Upgrade Upgrade

 SAP AG 2002

 Spielen Sie ein Upgrade, ein Hot Package oder sonst einen Transportauftrag von SAP in Ihr System
ein, kann es zum Konflikt kommen.
 Ein Konflikt tritt dann auf, wenn ein SAP-Objekt sowohl von Ihnen geändert, als auch von SAP neu
ausgeliefert wird: Das von SAP neu ausgelieferte Objekt wird aktives Objekt im Repository Ihres R/
3-Systems.
 Wollen Sie Ihre Änderungen retten, müssen Sie für die entsprechenden Objekte einen
Modifikationsabgleich durchführen. Bei vielen modifizierten SAP-Objekten kann es dabei zu
erheblichen Verzögerungen beim Einspielen eines Upgrades kommen.
 Um zwischen Entwicklungssystem und Folgesystemen einen konsistenten Stand zu wahren, wird
dringend empfohlen, den Modifikationsabgleich nur im Entwicklungssystem durchzuführen. Die
Objekte des Abgleichs werden dann in die Folgesysteme transportiert.

(C) SAP AG BC425 6


8.7
Modifikationen durchführen: Lernziele

Nach Behandlung dieses Themas können Sie:

 Beschreiben, was beim Durchführen von


Modifikationen zu beachten ist.

 SAP AG 2002

(C) SAP AG BC425 7


8.8
Registrierung der Modifikation im SSCR

Repository Browser: Einstieg


System Hilfe
  
 
    

Objektliste
Kundensystem
Objekt registrieren
Program programname System Hilfe
  
 
    

Bitte geben Sie den Schlüssel für


das Objekt ... ein:

SSCR Registrierung von SAP-


SAP-Objekten
System Hilfe
  
 
    

PgmID/OBJ/Name R3TR PROG programname

Schlüssel 07319180563614231463

 SAP AG 2006

 Die Registrierung erfolgt bei Änderung einer SAP-Source und manueller Änderung eines SAP-
ABAP-Dictionary-Objekts durch einen registrierten Entwickler. Ausgenommen von der
Registrierung sind Matchcodes, Datenbankindizes, Puffereinstellungen, Kundenobjekte,
Vorabkorrekturen und Objekte, die aufgrund automatischer Generierungen (z.B. aus dem
Customizing) geändert werden. Wird das Objekt zu einem späteren Zeitpunkt nochmals geändert, so
wird der Schlüssel nicht mehr abgefragt. Ist eine Registrierung eines Objektes einmal erfolgt, so
bleibt der zugehörige Schlüssel lokal gespeichert und wird bei späteren Änderungen automatisch
abgerufen, gleichgültig welcher der registrierten Entwickler die Änderung durchführt. Diese
Schlüssel bleiben bis auf weiteres auch über Release-Wechsel hinweg gültig.
 Welchen Nutzen haben Sie vom SSCR (SAP Software Change Registration)?
 Schnelle Fehlerbehebung und damit hohe Verfügbarkeit bei modifizierten Systemen
Sämtliche veränderte Objekte werden von SAP protokolliert. Auf Basis dieser Information können
Mitarbeiter des SAP First Level Customer Service sehr schnell potentielle Fehlerursachen
lokalisieren und beseitigen. Dadurch wird die Verfügbarkeit Ihres R/3 Systems weiter erhöht.
 Zuverlässiger Betrieb
Mit der Notwendigkeit einer Registrierung verringert sich die Wahrscheinlichkeit von
unbeabsichtigten Modifikationen. Dies ermöglicht einen zuverlässigen Betrieb Ihrer R/3
Standardsoftware.
 Vereinfachung der Upgrades
Upgrades und Releasewechsel werden durch die geringere Anzahl an Modifikationen in hohem
Maße erleichtert.

(C) SAP AG BC425 8


8.9
Aufnahme einer registrierten Modifikation

ABAP Editor
 Zu durchlaufende Schritte:
Programm SSCR-Schlüssel
Nummer des
SSCR Schlü
Schlüssel
Änderungsauftrags

Warnung
Sie reparieren ein
SAP Objekt
Aufgabe
Reparaturkennzeichen
Änderungssperre
Änderungsauftrag
Importsperre
Auftrag
Versionierung
 SAP AG 2002

 Wollen sie ein Repository-Objekt der SAP ändern, fordert der Workbench Organizer folgende
Angaben von Ihnen:
 SSCR-Schlüssel
 Änderungsauftrag
 Wie sie den SSCR-Schlüssel erhalten, haben wir oben gesehen. Fahren sie mit der Absicht fort, das
Objekt zu ändern, müssen einige nun folgende Warn-Dialoge bestätigt werden. Sie haben hier noch
die Gelegenheit, die Aktion abzubrechen.
 Der Workbench Organizer fordert nun, wie bei kundeneigenen Objekten, einen Änderungsauftrag
an. Das Objekt wird automatisch einer Aufgabe vom Typ Reparatur zugeordnet. Der
Änderungsauftrag dient folgenden Zwecken:
 Änderungssperre
Nach Zuordnung zur Aufgabe kann nur noch der Inhaber der Aufgabe das Objekt ändern
 Importsperre
Das Objekt kann durch einen Import (Upgrade, Support Package) nicht überschrieben werden
 Versionierung
Es wird eine Version des Objektes erstellt (siehe unten)

(C) SAP AG BC425 9


8.10
Aktionen bei Modifikationsende

Dokumentation

Änderungssperre
geht an Auftrag über
Aufgabe freigeben
Importsperre
geht an Auftrag über

Änderungssperre
aufgehoben

Importsperre
Auftrag freigeben
aufgehoben

Versionierung

Transportverzeichnis
 SAP AG 2002

 Ist die Entwicklung abgeschlossen, gibt der Entwickler die Aufgabe frei. Der Entwickler wird
aufgefordert, seine Änderungen zu dokumentieren. Die Objekte und die Änderungssperren gehen
von der Aufgabe an den Änderungsauftrag über. Bestätigt der Entwickler die Reparatur, geht auch
die Importsperre an den Auftrag über. Bestätigt der Entwickler die Reparatur nicht bei Freigabe der
Aufgabe, bleibt die Importsperre auf die Objekte bestehen. Nur der Entwickler selbst kann
nachträglich diese Sperre entfernen!
 Ist das Projekt abgeschlossen, wird der Änderungsauftrag freigegeben. Die Sperren auf die Objekte
des Änderungsauftrags werden entfernt. Dies gilt für die Änderungssperren und auch für die
Importsperren.
 Bei Freigabe des Änderungsauftrags werden die Objekte aus der R/3 Datenbank kopiert und in
einem Verzeichnis auf Betriebssystemebene abgelegt. Von dort werden sie vom Administrator in die
Folgesysteme importiert.
 Nach dem Import in das Qualitätssicherungssystem muß der Entwickler seine Modifikationen testen
und die Importprotokolle des Auftrags kontrollieren.

(C) SAP AG BC425 10


8.11
Versionen

SAP-Objekt
Erstes Sichern
Kopie Vollversion

Rückwä
ckwärtsdelta
Auftragsfreigabe
SAP-Objekt
modifizierte
Kopie

Reparatur

 SAP AG 2002

 Bei der Freigabe des Änderungsauftrags wird für alle Objekte des Änderungsauftrags eine
Vollversion auf die Versionsdatenbank geschrieben.
 Wird in der Folge ein Repository-Objekt nochmals bearbeitet, so wird mit der Freigabe des
Änderungsauftrags der aktuelle Stand zur Vollkopie und die Differenz zwischen neuem und altem
Stand als Rückwärtsdelta auf der Versionsdatenbank abgelegt.
 Bei Aufnahme eines Repository Objektes in eine Aufgabe wird überprüft, ob die aktuelle Version
gleich der Vollkopie in der Versionsdatenbank ist. Wenn nicht wird eine Vollkopie des Objekts
hergestellt. Dieser Mechanismus findet bei der ersten Änderung an einem SAP-Objekt Anwendung,
da SAP keine Versionen ihrer Repository Objekte ausliefert.
 Die Versionen eines Repository Objektes in der Versionsverwaltung sind Grundlage des
Modifikationsabgleiches. Zur Abgleichsunterstützung speichert die Versionsverwaltung, ob eine
Version durch SAP oder durch Kunden erzeugt wurde.

(C) SAP AG BC425 11


8.12
Kritische Erfolgsfaktoren Modifikation (1)

REPORT sapabap.
 Kapseln statt streuen IF sy-tabix = 1.
*#SD_001...#Insertion
CALL FUNCTION 'Z_FM'
CHANGING
REPORT sapabap. counter = count
IF sy-tabix = 1. TABLES
*#SD_001...#Insertion itab = tab.
count = count + 1. ENDIF.
LOOP AT tab
WHERE f1 < 10. FUNCTION z_fm.
.... counter = counter + 1.
ENDLOOP. LOOP AT itab
ENDIF. WHERE f1 < 10.
....
ENDLOOP.
Streuen ENDFUNCTION.

Kapseln
 Schmale Schnittstellen beim Kapseln
 SAP AG 2006

 Kapseln Sie kundeneigenen Quelltext in Modularisierungseinheiten, statt längere Passagen in SAP-


Quelltext einzustreuen (z.B. Aufruf von Kunden-Funktionsbausteinen in Programm-Quelltext,
Aufruf von Kunden-Subscreens für zusätzliche Felder auf Dynpros).
 Achten Sie auf schmale Schnittstellen beim Kapseln der kundeneigenen Funktionalität, um eine gute
Datenkontrolle zu erreichen.

(C) SAP AG BC425 12


8.13
Kritische Erfolgsfaktoren Modifikation (2)

 Verwenden Sie Standardisierte Inline-Dokumentation


(von Modifikationsassistent unterstützt)
 Löschen Sie keinen SAP-Quelltext, kommentieren
Sie ihn aus (von Modifikationsassistent unterstützt)
 Führen eines Modifikations-Logbuchs
(evtl. mit Modification Log aus SE95 als Grundlage)
 Modifizieren Sie keine Dictionary-Objekte der
zentralen Basis (Ausnahme: OSS-Hinweis oder
Aufforderung durch SAP-Hotline)
 Alle Aufträge freigeben, die Reparaturen enthalten

 SAP AG 2006

 Definieren Sie einen unternehmensweiten Standard, der die Gestaltung der Dokumentation im
Quelltext regelt.
 Führen Sie eine Liste aller Modifikationen (Modifikationslogbuch, vgl. folgende Folie).
 Modifikationen an Dictionary-Objekten der zentralen Basis des SAP-Systems (ABAP Workbench,
etc) gehen beim Austausch-Upgrade verloren, ohne daß während des Upgrades eine
Abgleichmöglichkeit besteht. Hierdurch können Tabelleninhalte verlorengehen.
 Alle Aufträge, die Reparaturen enthalten, müssen vor dem Einspielen eines Upgrades oder eines
Support Packages freigegeben werden, damit die relevanten Kundenversionen auf die
Versionsdatenbank geschrieben werden (beim Abgleich werden Versionen verglichen!) .

(C) SAP AG BC425 13


8.14
Modifikations-Logbuch (Beispiel)

Objekttyp (Programm, Dynpro, GUI Status, ...) PROG


Objektname SAPMV45A
Routine SAVE_DOC
Themenbereich SD_001
Auftragsnummer der Reparatur DEVK900023
Änderungsdatum 01.02.2007
Name Änderer Smith
Name Verantwortliche(r) Carpenter
Vorabkorrektur (ja/nein) nein
SAPNet-Hinweisnummer —
Gültig bis Release —
Aufwand für Wiedereinbau in Stunden 4

 SAP AG 2006

 SAP empfiehlt, eine Liste aller Modifikationen (also Änderungen an Repository-Objekten des SAP
Namensraums) zu führen.
 Die Liste kann folgende Spalten enthalten:
 Objekttyp (Programm, Dynpro, GUI Status, ...)
 Objektname
 Routine (falls erforderlich)
 Themenbereich gemäß Fach- oder DV-Konzept
 Reparaturnummer
 Änderungsdatum
 Name des Änderers
 Vorabkorrektur (ja/nein)
 SAP-Hinweisnummer, gültig bis Release x.y
 geschätzter Aufwand für den Wiedereinbau der Modifikation während des Abgleichs

(C) SAP AG BC425 14


8.15
Modifikationsassistent: Lernziele

Nach Behandlung dieses Themas können Sie:

 Modifikationen fachgerecht mit Hilfe des


Modifikationsassistenten durchführen
 erläutern, wie der Modifikationsassistent arbeitet

 SAP AG 2002

(C) SAP AG BC425 15


8.16
Modifikationsassistent: Ziele

Modifikationsabgleich erleichtern

 feinere Granularität
 Module
 Routinen
 Funktionsbausteine

 Änderung auf separater Software-Schicht durch


"Modifikations-Exits"

 SAP AG 2002

 Ziel des Modifikationsassistenten ist es, den Modifikationsabgleich zu erleichtern. Das wird dadurch
erreicht, dass eine Aufzeichnung der Änderungen mit einer feineren Granularität geschieht. Früher
war die Granularität beispielsweise auf Include-Programm-Ebene beschränkt. Heute werden
Änderungen feiner aufgezeichnet. Die Granularität ist nun das Unterprogramm oder Modul.
 Erreicht wird dies unter anderem dadurch, dass die Änderungen (Modifikationen) auf einer separaten
Schicht registriert werden. Dies ermöglicht neben der feineren Aufzeichnung auch das Rücksetzen
der Änderungen, da das Original nicht geändert wird.

(C) SAP AG BC425 16


8.17
Modifikationsassistent: Funktionsweise

Modifikationen

Source Generieren Load

 SAP AG 2002

 Der Modifikationsassistent zeichnet die Änderungen auf einer separaten Ebene auf. Die
ursprüngliche Source eines Objektes bleibt dabei unverändert. Erst beim Generieren der Load
werden die Modifikationen übernommen, sodass das ausführbare Objekt aus Teilen des
ursprünglichen SAP-Programms und den Modifikationen erzeugt wird.

(C) SAP AG BC425 17


8.18
Modifikationsabgleich gestern und heute

 Gestern :
Granularität : Include-Source
Modifikationsabgleich zeilenweise
Jede Modifikation muß manuell in die neue
SAP-Version eingemischt werden ( CUT & PASTE )

 Heute (mit Modifikationsassistent) :


Granularität : Baustein (z.B. Unterprogramm)
Modifikationsabgleich pro Baustein ("Modifikations-Exit")

 SAP AG 2006

 Wurde früher ein Include durch eine Modifikation geändert, und dieses Include wurde von SAP neu
eingespielt, kam es zum Modifikationsabgleich. Der Modifikationsabgleich musste dabei zeilenweise
durchgeführt werden. Das System bot wenig Unterstützung beim Abgleich.
 Mit dem Modifikationsassistent hat sich die Situation grundlegend geändert: Die Granularität der
Änderungsaufzeichnung wurde verfeinert. Zum Beispiel wird ein Unterprogramm während einer
Modifikation geändert, der Rest des Includes bleibt unangetastet. Wird das Include neu ausgeliefert,
untersucht das System, ob das Unterprogramm ebenfalls neu ausgeliefert wurde. Ist das nicht der
Fall, können die eigenen Änderungen automatisch in die neue Version übernommen werden.

(C) SAP AG BC425 18


8.19
Modifikationsassistent: Softwareschichten

SAP Partner Kunde

Originale Modifikationsschicht Modifikationsschicht

 SAP AG 2002

 Die Originale der Vorgänger-Softwareschicht plus die eigenen Modifikationen bilden das Original
für nachgelagerte Software-Nutzer

(C) SAP AG BC425 19


8.20
Modifikationsassistent: Unterstützte Werkzeuge

 ABAP Editor
 Modifikationsmodus
 Screen Painter
 Layout
 Ablauflogik
 Menu Painter
 Textelemente
 Class Builder
 Function Builder
 Hinzufügen von Funktionsbausteinen
 Kompatible Erweiterung der Schnittstelle
 Dictionary
 Append-Strukturen werden registriert
 Datenelemente: Feldbezeichner überlagern
 Dokumentation
 Doku-Objekte überlagern

 SAP AG 2002

 Der Modifikationsassistent unterstützt die wichtigsten Werkzeuge der ABAP Workbench:


 Im ABAP Editor können Sie Quelltext im so genannten Modifikationsmodus bearbeiten. Dieser
Modus bietet nur eine eingeschränkte Editiermöglichkeit. Sie können Quelltext kontrolliert
hinzufügen, ersetzen oder als Kommentar kennzeichnen.
 Änderungen im Screen Painter werden ebenfalls aufgezeichnet. Dies bezieht sich sowohl auf das
Layout als auch auf die Ablauflogik.
 Änderungen im Menu Painter und an Textelementen werden vom Modifikationsassistenten
aufgezeichnet ebenso wie das Hinzufügen von Funktionsbausteinen in eine existierende
Funktionsgruppe.
 Das Anlegen von Append-Strukturen zu einer Tabelle wird ebenfalls vom Modifikationsassistenten
aufgezeichnet, um Konflikte frühzeitig zu vermeiden.

(C) SAP AG BC425 20


8.21
Modifikationsassistent: Voraussetzungen

 R/3-Profile-Parameter eu/controlled_modification

Modifikationsassistent
Das Transportobjekt unterliegt dem
Modifikationsassistenten

...Editierfunktionen eingeschränkt...

Über die Modifikationsikone können die


Abschnitte geändert werden...

 SAP AG 2006

 Wollen sie ein SAP-Objekt ändern, müssen sie die oben aufgeführten Informationen hinterlegen:
 SSCR-Schlüssel
 Änderungsauftrag
 Darüber hinaus informiert sie das System, dass das Objekt dem Modifikationsassistenten unterliegt.
Das heisst, dass nur ein eingeschränkter Editiermodus zur Verfügung steht.
 Über den Profilparameter eu/controlled_modification kann der Modifikationsassistent für das ganze
R/3-System an oder ausgeschaltet werden. Wir empfehlen, immer mit dem Modifikationsassistenten
zu arbeiten.
 Ausschalten können sie den Modifikationsassistenten ebenfalls für einzelne Repository-Objekte. Ab
diesem Zeitpunkt werden Änderungen nicht mehr in dieser feinen Granularität registriert.

(C) SAP AG BC425 21


8.22
Ikonen des Modifikationsassistenten

Einfügen

Ersetzen

Löschen

Modifikation zurücknehmen

Modifikationsübersicht

 SAP AG 2006

 Im so genannten Modifikationsmodus steht Ihnen nur eine eingeschränkte Funktionalität zur


Verfügung. Diese können sie über die entsprechenden Drucktasten erreichen. Im Editor können sie
zum Beispiel:
 Einfügen
Das System generiert einen Kommentarrahmen, innerhalb dessen sie Quelltext einfügen können.
 Ersetzen
Positionieren sie den Cursor auf eine Zeile und betätigen sie die Drucktaste "Ersetzen". Dadurch
wird die entsprechende Zeile als Kommentar gekennzeichnet und eine eingabebereite Zeile
erzeugt. Wollen sie mehrere Zeilen ersetzen, markieren sie diese zunächst als Block.
 Löschen
Markieren sie eine Zeile oder einen Block Quelltext. Die Zeilen werden als Kommentar
gekennzeichnet.
 Modifikationen zurücknehmen
Damit können sie einzelne zu diesem Objekt gehörenden Modifikationen zurücknehmen.
 Modifikationsübersicht anzeigen
Hier erhalten sie einen Überblick über die zu diesem Objekt gehörenden Modifikationen.

(C) SAP AG BC425 22


8.23
Modifikationsassistent: Beispiel ABAP-Editor

ABAP Editor

PROGRAM <SAP-Program>.
Einfügen
...
*{INSERT DEVK900023 1

*}
Ersetzen
*{REPLACE DEVK900023 2
*\WRITE: / sy-
sy-uname COLOR COL_KEY.
WRITE: / sy-uname COLOR COL_NORMAL.
*}
Löschen
*{DELETE DEVK900023 3
*\WRITE: / sy-
sy-uname COLOR COL_KEY.
*\
*}
...

 SAP AG 2006

 Die Grafik zeigt das Ergebnis von Änderungen, die mit Hilfe des Modifikationsassistenten
durchgeführt wurden.
 Der Modifikationsassistent generiert automatisch einen Kommentar-Rahmen, der die entsprechende
Aktion beschreibt. Der Kommentar enthält ausserdem die Nummer des Änderungsauftrags, dem die
Änderung zugeordnet wird und eine Nummer, die zu internen Verwaltung benötigt wird.

(C) SAP AG BC425 23


8.24
Modifikationsübersicht

ABAP Editor

PROGRAM <SAP-Program>.

...
*{INSERT DEVK900023 1

*}

Modifikationsü
Modifikationsübersicht 2
*{REPLACE DEVK900023
*\WRITE: / sy-
sy-uname COLOR COL_KEY.
WRITE: / sy-uname COLOR COL_NORMAL.
SAP-Program
*}

... ohne Modularisierungseinheit

SAP-Program SMITH 01.02.2007 DEVK900023

Unterprogramme

DO_SOMETHING SMITH 01.02.2007 DEVK900023

 SAP AG 2006

 Mit der Ikone "Modifikationsübersicht" können sie sich einen Überblick über die in diesem
Programm gemachten Modifikationen verschaffen.
 Die Darstellung ist gegliedert in die verschiedenen Modularisierungseinheiten. Das entspricht der
Struktur, mit der der Modifikationsassistent die Modifikationen aufzeichnet.

(C) SAP AG BC425 24


8.25
Zurücksetzen auf Original

ABAP Editor

PROGRAM <SAP-Program>.

...
*{INSERT DEVK900023 1

*}

*{REPLACE DEVK900023 2
*\WRITE: / sy-
sy-uname COLOR COL_KEY.
WRITE: / sy-uname COLOR COL_NORMAL.
*}
ABAP Editor
...

PROGRAM <SAP-Program>.

...

WRITE: / sy-uname COLOR COL_KEY.


...
 SAP AG 2002

 Um eine Modifikation rückgängig zu machen, stellen Sie den Cursor auf die entsprechende
Modifikation. Danach betätigen Sie die Drucktaste zum Zurücknehmen der Modifikation.
 Die Aufzeichnungen zu den Modifikationen werden dabei gelöscht. Eine Rücknahme dieser
Löschung ist nicht möglich.

(C) SAP AG BC425 25


8.26
Modification Browser

Modification Browser

Standard-Selektionen
letzter Änderer
Entwicklungsklasse
Auftrag/Aufgabe
modifizierte Objekte

mit Modifikationsassistent
ohne Modifikationsassistent
mit Modifikationsassistent

Datenelemente

S_CARR_ID SMITH 01.02.2007 DEVK900023

Domänen
Programme
Funktionsbausteine
 SAP AG 2006

 Der Modification Browser bietet ihnen eine Übersicht über alle im System vorhandenen Objekte, die
modifiziert wurden. Es wird dabei unterschieden zwischen Modifikationen mit und ohne
Modifikationsassistent.
 Im Einstiegsbild des Modification Browsers können Sie die Selektion nach verschiedenen Kriterien
einschränken. Dadurch können sie ganz spezifisch Modifikationen aus einem bestimmten Gebiet
suchen.
 Der Modification Browser stellt die Treffermenge in einer baumartigen Liste zur Verfügung. Die
Objekt sind geordnet nach
 Modifikationsart (mit/ohne Assistent)
 Objektart (PROG, DOMA, DTEL, TABL, ...)
 Neben der reinen Anzeigefunktionalität können Sie im Modification Browser auch ganze Gruppen
von Modifikationen zurücknehmen. Dazu markieren Sie den gewünschten Teilbaum und wählen die
Drucktaste „Rücksetzen auf Original“.

(C) SAP AG BC425 26


8.27
User-Exit: Lernziele

Nach Behandlung dieses Themas können Sie:

 erklären, was User-Exits sind


 beschreiben, wie Sie User-Exits im System
auffinden und zur Erweiterung der SAP-Software
verwenden

 SAP AG 2006

(C) SAP AG BC425 27


8.28
User-Exit: Aufbau eines SAP-Modulpools

Programm SAPMV45A

*Include MV45ATOP *Include MV45AO01


*Include MV45AI01

Besondere
Besondere
Include-Programme
Include-Programme

*weitere Includes

*Include MV45AFZB

 SAP AG 2006

 Ein Modulpool ist organisiert als Zusammenfassung von Include-Programmen. Diese Organisation
dient vor allem der Übersichtlichkeit. Dabei ist die Organisation ähnlich der von Funktionsgruppen.
Insbesondere die Namenskonvention, mit der die letzten drei Buchstaben des Include-
Programmnamens den Inhalt bezeichnen, ist bei Modul-Pools und Funktionsgruppen identisch.
 Das Rahmenprogramm enthält in der Regel die Include-Anweisungen für alle zu dem Modulpool
gehörenden Include-Programme.
 Die im Bild als besondere Include-Programme gekennzeichneten Programme sind lediglich als
solche vereinbart (technisch kein Unterschied!). Diese Programme werden nur genau ein Mal
ausgeliefert.

(C) SAP AG BC425 28


8.29
User-Exit : Realisierung

Programm SAPMV45A
Includes

… *Include MV45AFZB

PERFORM userexit_abc . FORM userexit_abc.


… ENDFORM.

PERFORM userexit_xyz . FORM userexit_xyz.


… ENDFORM.

 leere Unterprogramme
 Includes nur 1x ausgeliefert
 überwiegend in SD
 technisch: Modifikation

 SAP AG 2006

 User-Exits sind eine ursprünglich im Vertriebs-Modul (SD) entwickelte Erweiterungsmöglichkeit.


Ziel war es dabei, die Schwierigkeiten des Modifikationsabgleichs zu umgehen.
 Die Verwendung eines User-Exits ist eine Modifikation, da Objekte im SAP Namensraum geändert
werden.
 Der SAP Anwendungsentwickler legt ein spezielles Include in einem Modulpool an. Dieses Include
beinhaltet eine oder mehrere Unterprogramme, die der internen Namenskonvention
userexit_<name> genügen. Der Aufruf dieser Unterprogramme ist bereits im Programm
implementiert. Üblicherweise wird mit globalen Variablen gearbeitet.
 Ein auf diese Weise angelegtes Include-Programm wird von SAP nach seiner ersten Auslieferung
nicht mehr geändert; falls zu einem neuen Release neue User-Exits ausgeliefert werden sollen,
werden sie in einem neuen Include-Programm angelegt.

(C) SAP AG BC425 29


8.30
User-Exit: Beispiel

***INCLUDE MV45AFZB .

************************************************************
* This include is reserved for user modifications *
* Forms for sales document processing *
* The name of modification modules should begin with 'ZZ'. *
************************************************************
*
*&----------------------------------------------------------------*
*& Form USEREXIT_FILL_VBAP_FROM_HVBAP
*&----------------------------------------------------------------*
* This Userexit can be used to fill addtional data into VBAP*
* from the main item (HVBAP), i.e. this Userexit is called *
* when an item is entered with reference to a main item. *
* This form is called from form VBAP_FUELLEN_HVBAP. *
*-----------------------------------------------------------------*
FORM userexit_fill_vbap_from_hvbap.
* VBAP-zzfield = HVBAP-zzfield2.
ENDFORM.

 SAP AG 2006

 User-Exits sind im wesentlichen vom SAP-Entwickler zur Verfügung gestellte, leere


Unterprogramme, die Sie mit ihrem eigenen Quelltext füllen können.
 Ziel dabei ist, jegliche Modifikation vom eigentlichen Programm fernzuhalten und in eigene Includes
auszulagern. Dazu legt der SAP-Entwickler verschiedene Includes an, die der Namenskonvention für
Includes von Programmen und Funktionsgruppen genügen. Die letzten beiden Buchstaben des
Includenamens deuten auf das vom Kunden zu verwendende Include hin: Hier steht in der Regel ein
"Z".
 Beispiel: Programm SAPMV45A
Include MV45AFZB
 Diese Namenskonvention gewährleistet, daß das Include in der Folge nicht mehr vom SAP-
Entwickler angefaßt wird. Aus diesem Grund werden solche Includes beim Modifikationsabgleich
nicht angeboten.
 Sollen zum nächsten Release von SAP weitere User-Exits ausgeliefert werden, werden diese in neue
Includes, die der selben Namenskonvention gehorchen, zusammengefaßt.

(C) SAP AG BC425 30


8.31
User-Exits : Suche

 programmbezogene Suche  Suche mit Hilfe von Tools

System  Status
 Doppelklick auf Programmnamen
IMG
Suchen nach Zeichenkette...

perform userexit
Vertrieb
( global in Programm )  Systemanpassung
 User-Exits
Per Doppelklick zum
Unterprogramm navigieren  entsprechende
+ Komponente
Inline-Dokumentation lesen auswählen

( evtl. im SAP Referenz-IMG


nach gleichem User-Exit
mit ausführlicherer
Dokumentation suchen )

 SAP AG 2006

 Die verwendbaren User-Exits finden Sie im SAP-Referenz-Einführungsleitfaden.


 Dort erhalten Sie auch die Dokumentation, zu welchem Zweck der jeweilige SAP-
Anwendungsentwickler den entsprechenden User-Exit vorgesehen hat.
 Führen Sie die im Einführungsleitfaden angegebenen Schritte aus.

(C) SAP AG BC425 31


8.32
SAP Note Assistant: Lernziele

Nach Behandlung dieses Themas können Sie

 Hinweiskorrekturen mit Hilfe des SAP Note Assistant


in ein SAP System einspielen
 Die Vorteile des SAP Note Assistant benennen
 Mit dem SAP Note Assistant eingepflegte
Hinweiskorrekturen abgleichen

 SAP AG 2002

(C) SAP AG BC425 32


8.33
SAP Note Assistant: Prinzip

FRÜHER

Release Release
Hinweis
Hinweis Manuell
08154711
n-1 n
Hinweis SSCR
08154711
08154711

Modifikations-
abgleich manuell

HEUTE

Note Release Release


Hinweis
Hinweis Assistant n n+1
08154711
Hinweis
08154711
08154711

Modifikations-
abgleich
automatisch
 SAP AG 2002

 Vor Einführung des SAP Note Assistant mußten Sie alle Hinweise, die eine Korrektur an Objekten
Ihres SAP Systems erforderten, manuell in das System einpflegen. Neben der Fehleranfälligkeit hatte
dieses Verfahren weitere Nachteile: Das manuelle Ändern eines SAP Objektes erfordert die Eingabe
eines Registrierungsschlüssels für das Objekt. Die Abhängigkeit der Fehlerkorrektur von bereits im
System vorhandenen Fehlerkorrekturen muss der Entwickler selbst aus dem Hinweistext
herauslesen. Schließlich muss die eingepflegte Fehlerkorrektur beim Einspielen von Support
Packages oder Upgrades manuell abgeglichen werden.
 Der SAP Note Assistant dient dazu, die meisten der oben angeführten Nachteile auszumerzen: Die
Eingabe eines Registrierungsschlüssels ist nicht notwendig. Der SAP Note Assistant spielt die
Hinweiskorrekturen automatisch mit Hilfe des Modifikationsassistenten in das System ein.
Abhängigkeiten von anderen Hinweisen werden automatisch erkannt. Falls noch nicht im System
eingepflegt, fordert Sie der SAP Note Assistant dazu auf, diese Hinweise in das System einzuspielen.
Und: Hinweise besitzen eine Gültigkeit. Beim Einspielen von Support Packages und Upgrades prüft
das System, ob die Hinweiskorrektur noch Gültigkeit besitzt. Falls nicht, kann die Korrektur per
Knopfdruck zurückgesetzt werden.

(C) SAP AG BC425 33


8.34
SAP Note Assistant: Vorteile

 SAP Hinweise automatisch einspielen


Beschränkt auf Korrekturen an ABAP Quelltext
 Abhängigkeiten automatisch behandeln
Mit anderen SAP Hinweisen
Mit Support Packages
Mit Modifikationen
 Überblick über alle in das SAP System eingespielte Hinweise
 Unterstützung von Modifikationsabgleich nach Upgrade oder
Support Packages

 Achtung: Korrektur einzelner Fehler!


Wichtig!
Kein Ersatz für Support Packages!

 SAP AG 2002

 Das Ziel des SAP Note Assistant ist es, Sie beim Einspielen von Hinweiskorrekturen in Ihr SAP
System zu unterstützen. Dabei erfolgt das Einspielen in der Regel automatisch. Das manuelle
Einpflegen von Quelltext entfällt , was zu einer deutlich reduzierten Fehleranfälligkeit führt. Darüber
hinaus entfällt das Registrieren der zu korrigierenden Objekte im SAP Software Change Registration
(SSCR).
 Der SAP Note Assistant bietet Ihnen mehrere Vorteile. Neben dem erwähnten automatischen
Implementieren von Programmkorrekturen ohne SSCR-Schlüssel werden Abhängigkeiten zwischen
verschiedenen Hinweisen vom SAP Note Assistant erkannt. Wenn der in einem Hinweis
beschriebene Fehler bereits in einem Support Package behoben wurde, erkennt das der SAP Note
Assistant ebenfalls und markiert den Hinweis als obsolet. An dem zu korrigierenden Objekt
durchgeführte Modifikationen werden registriert, was dazu führt, dass später beim
Modifikationsabgleich diese Objekte besonders gekennzeichnet sind.
 Nützliches Merkmal des SAP Note Assistant ist die Möglichkeit, sich einen Überblick über alle im
System eingespielten Hinweiskorrekturen zu verschaffen.
 Wenn nach dem Upgrade oder dem Einspielen von Support Packages der Modifikationsabgleich
ansteht, werden die Hinweiskorrekturen in einer eigenen Kategorie aufgeführt. Die im nun aktuellen
Stand obsolet gewordenen Hinweiskorrekturen sind besonders gekennzeichnet, was eine
Überführung des Objektes in den Standard erleichtert.
 Bitte beachten Sie: Der SAP Note Assistant erleichtert Ihnen das Einpflegen einzelner
Fehlerkorrekturen. Er ist aber nicht dafür gedacht, das Einspielen von Support Packages zu ersetzen!

(C) SAP AG BC425 34


8.35
SAP Note Assistant: Arbeitsschritte

SAP Hinweise
Herunterladen
Aktualisieren
SAP Note Assistant

Hinweis-Browser Einbauen Korrekturanleitung


Manuelle
Upgrade Ausweichlösung
Details
Spezielle Version des
Split Screen Editors

Modification Modification
Browser (SE95) Adjustment (SPAU)

 SAP AG 2002

 Sie können mit Hilfe des SAP Note Assistant existierende SAP Hinweise vom SAP Service
Marktplatz herunterladen. Im Hinweis-Browser finden Sie einen Überblick über alle in Ihrem
System eingebauten Hinweise. Dort finden Sie auch einen Absprung zum Modifikationsbrowser, der
Ihnen einen Überblick über alle mit einem Hinweis korrigierten Objekte gibt. Mit Hilfe der
Statusangabe können Sie feststellen, welche Hinweise einbaubar, eingebaut, oder obsolet sind.
 Nachdem Sie den Hinweis sorgfältig gelesen haben, können Sie ihn nach der Korrekturanleitung
einbauen. Der SAP Note Assistant ermittelt, ob der Hinweis automatisch einbaubar ist, was zu einer
grüne Ampel vor den einzubauenden Objekten führt. Falls Konflikte beim Einbau erkannt, werden,
weil der SAP Note Assistant beispielsweise den Kontext-Block nicht findet, können Sie mit Hilfe
einer speziellen Version des Splitscreen-Editors den Einbau manuell vornehmen.

(C) SAP AG BC425 35


8.36
SAP Note Assistant: Arbeitsvorrat

Überblick
Note Assistant: Arbeitsvorrat Benutzer XXX

Laden
SAP-Hinweise
inkonsistent

0000222111 Hinweistext Prüfen


neu
0000444321 Hinweistext Bearbeitungs-
0000383446 Hinweis status

In Bearbeitung
Einbauen
0000333443 Text
0000383446 Fehler im Programm ABC
Protokoll

 SAP AG 2002

 Sie rufen die Transaktion SNOTE durch direktes Eingeben des Transaktionscodes in das Ok-Code-
Feld auf. Damit gelangen Sie auf einen Bildschirm mit einer Liste von Hinweisen, die verschiedenen
Knoten zugeordnet sind. Sie sehen
 Hinweise, die Ihnen als Bearbeiter zugeordnet sind;
 Alle neuen Hinweise;
 Alle Hinweise, die sich in einem inkonsistenten Zustand befinden.
 Einbaubare Hinweise sind mit einer entsprechenden Ikone gekennzeichnet (Im Menüpfad
Hilfsmittel Farblegende können Sie sich über die Bedeutung der verschiedenen Ikonen
informieren). Im obigen Beispiel finden wir weiterhin einen neuen Hinweis, der als obsolet oder
nicht einbaubar gekennzeichnet ist. Ursache ist eine fehlende Korrekturanleitung (Der Hinweis ist
rein informativer Natur) oder ein Gültigkeitszeitraum, der nicht mit dem Systemrelease und Patch-
Level übereinstimmt.

(C) SAP AG BC425 36


8.37
SAP Note Assistant: Hinweise laden

Problem Überblick

Note Assistant Laden


Hinweis suchen Voraussetzungen
Hinweis lesen prüfen
Hinweis einbauen Prüfen
Hinweis registrieren
Option 1:
Direktes Bearbeitungs-
Herunterladen status

DB Einbauen

He Op
ru t
n io n 2b
:
Da terla 2a: n n Protokoll
te i d ti o de
sy en Op chla
ste au
m f Ho

 SAP AG 2002
Dateisystem

 Sie können SAP-Hinweise aus dem SAP Service Marketplace oder dem SAPNet - R/3 Frontend in
Ihr System laden. Dies kann direkt per RFC-Verbindung (Hinweis-Download) oder per Filetransfer
(Hinweis-Upload) geschehen.
 Beim Hinweis-Download können Sie den Hinweis im Note Assistant aus dem SAPNet - R/3
Frontend direkt in Ihr System laden.
 Für den Hinweis-Upload müssen Sie einen Hinweis zunächst aus dem SAP Service Marketplace
herunterladen und auf der Festplatte Ihres PC abspeichern. Anschließend führen Sie vom Note
Assistant aus einen Upload des Hinweises per Filetransfer durch.

(C) SAP AG BC425 37


8.38
SAP Note Assistant: Hinweis-Browser

Überblick

Laden

Prüfen

Bearbeitungs-
status

Einbauen

Protokoll

 SAP AG 2002

(C) SAP AG BC425 38


8.39
SAP Note Assistant: Hinweis einbauen

Überblick
Note Assistant: Arbeitsvorrat Benutzer XXX

Laden
SAP-Hinweise
inkonsistent

0000222111 Hinweistext Prüfen


neu
0000444321 Hinweistext Bearbeitungs-
0000383446 Hinweis
Folgende Hinweise werden eingebaut: status
Einbau von Hinweis 0427325000 Version 001
In Bearbeitung
REPS BC426_01E01
Einbauen
0000333443 Text
Änderungsübernahme möglich
0000383446 Fehler im Programm ABC
REPS BC426_01F01 Protokoll
Änderungsübernahme möglich

Rahmenprogramm

 SAP AG 2002

 Nachdem Sie den Hinweis sorgfältig gelesen haben, können Sie den Hinweis einbauen. Das System
prüft automatisch die Voraussetzungen und Abhängigkeiten von anderen Hinweisen. Falls
vorausgesetzte Hinweise noch nicht in Ihrem System registriert sind, sendet der SAP Note Assistant
eine Liste mit noch einzubauenden Hinweisen.

(C) SAP AG BC425 39


8.40
SAP Note Assistant: Weitere Merkmale

 Split Screen Editor


 Diverse Protokolliermöglichkeiten:
Anzeige des Implementierungsstatus
Action Log

 Hinweiseinbau zurücknehmen

 SAP AG 2002

(C) SAP AG BC425 40


8.41
SAP Note Assistant: Hinweise mit Abhängigkeiten

Überblick
Note Assistant: Arbeitsvorrat Benutzer XXX

Laden
SAP-Hinweise
inkonsistent

0000222111 Hinweistext Prüfen


Laden Sie folgende Hinweise in Ihr System:
neu
0000444321 Hinweistext Bearbeitungs-
0000153222
0000383446 Hinweis status
0000173333
In Bearbeitung
0000234432
Einbauen
0000333443 Text
0000383446 Fehler im Programm ABC
Protokoll

 SAP AG 2002

 Wenn ein Hinweis andere Hinweise als Voraussetzung hat, ermittelt der Note Assistant beim Einbau
die vorausgesetzten Hinweise und lädt sie in Ihr System. Er zeigt den von Ihnen ausgewählten
Hinweis sowie alle zusätzlichen Hinweise auf einem Dialogfenster, der Hinweisqueue, an. Die
Hinweise müssen in der angegebenen Reihenfolge implementiert werden.
 Sie haben folgende Möglichkeiten:
 Mehrere Hinweise auf einmal einbauen
Wenn Sie diese Option wählen, baut das System möglichst viele der angegebenen Hinweise
nacheinander ein. Das System kann nur dann mehrere Hinweise auf einmal einbauen, wenn alle
Korrekturen aus den Hinweisen unverändert übernommen werden können. Falls in den
betroffenen Includes eigene Modifikationen vorliegen, kann es sein, dass das System einzelne
Änderungen nicht einfügen kann. Diese Hinweise baut das System immer einzeln ein, damit Sie
Ihre Modifikationen abgleichen können.
 Jeden Hinweis einzeln einbauen
Das System baut die angegebenen Hinweise einzeln ein. Hierbei können Sie im Detail
nachvollziehen, welche Quelltextänderung zu welchem der angegebenen Hinweise gehört und die
Quelltextänderung modifizieren, falls nötig.
 Hinweiseinbau abbrechen
Das System nimmt keine Quelltextänderung vor.

(C) SAP AG BC425 41


8.42
SAP Note Assistant: Modifikationsabgleich

Überblick
Modifikationsabgleich

Laden
Modifikationen und Erweiterungen
Hinweiskorrekturen
Prüfen
0000222111 Hinweistext
0000123456 Text
Bearbeitungs-
0000333221 Hinweiskurztext status

Einbauen

Protokoll

Abgleich
 SAP AG 2002

 Ein Support Package enthält eine Sammlung von Fehlerkorrekturen. Support Packages können Sie
nur als Ganzes und nur in einer festgelegten Reihenfolge in Ihr System einspielen. Jede Korrektur,
die in einem Support Package enthalten ist, wird in einem Hinweis dokumentiert.
 Nach dem Einspielen eines Support Package gibt es die folgenden Fälle:
 Korrektur durch Hinweis eingebaut und im Support Package enthalten (Ampel ohne Farben):
Beim Einspielen eines Support Package prüft das System automatisch, ob Sie einzelne
Korrekturen aus dem Support Package bereits zuvor durch Hinweise in Ihr System eingebaut
haben. Beim Modifikationsabgleich werden diese Hinweise mit einer Ampel ohne Farben
angezeigt und dadurch als obsolet gekennzeichnet. Die enthaltenen Objekte müssen Sie auf SAP-
Original zurücksetzen.
 Hinweis eingebaut, aber nicht im Support Package enthalten (gelbe Ampel)
Das System prüft, ob Korrekturen, die Sie zuvor durch einen Hinweis eingebaut haben, durch ein
Support Package überschrieben werden, das diese Korrekturen nicht enthält. Diese
Hinweiskorrekturen müssen Sie anschließend erneut einbauen. Das System zeigt diese Hinweise
beim Modifikationsabgleich (Transaktion SPAU) mit einer gelben Ampel an. Auch in Ihrem
Arbeitsvorrat werden diese Hinweise unter dem Status inkonsistent als erneut einzubauen
angezeigt.
 Hinweis noch eingebaut, obwohl Teile im Support Package enthalten (grüne Ampel)
Ein Hinweis enthält z.B. mehrere Korrekturanleitungen unterschiedlicher Gültigkeitsdauer. Beim
Einspielen des Support Package wird eine Korrekturanleitung obsolet, die andere Anleitung bleibt
weiterhin gültig. In diesem – eher seltenen – Fall erscheint der Hinweis mit einer grünen Ampel.

(C) SAP AG BC425 42


8.43
Manuelles Erfassen von Hinweiskorrekturen

 Programm SCWN_REGISTER_NOTES
Hinweise eintragen
Hinweise werden geladen
Gültigkeit wird geprüft
Einbau wird geprüft

 Vorteile:
Anzeige im Hinweis-Browser
Abhängigkeiten werden korrekt angegeben
Korrekturen finden sich bei Modifikationsabgleich in der
Kategorie Hinweiskorrekturen.

 SAP AG 2002

 Wenn Sie vor Installation des SAP Note Assistant bereits Korrekturen aus Hinweisen in Ihr SAP
System eingebaut haben, können Sie diese Tatsache dem Note Assistant nachträglich bekannt geben.
Dies ist wichtig, da der Note Assistant nicht automatisch erkennen kann, ob eine Hinweiskorrektur
manuell ohne Verwendung des Note Assistant in Ihr System eingebaut wurde. Die Registrierung hat
folgende Vorteile:
 Alle Hinweise, die in Ihr System eingebaut sind, werden im Hinweis-Browser angezeigt.
 Wenn ein manuell ohne den Note Assistant eingebauter Hinweis Voraussetzung für einen Hinweis
ist, den Sie mit dem Note Assistant einbauen möchten, erkennt der Note Assistant, dass der
vorausgesetzte Hinweis bereits eingebaut ist, und fordert nicht, ihn erneut einzubauen.
 Die manuell eingebauten Hinweise werden im Modifikationsabgleich bei zukünftig
einzuspielenden Support Packages oder Upgrades in der Kategorie Hinweiskorrekturen angezeigt.
Das System ermittelt für diese Hinweise, ob sie erneut einzubauen oder auf Original
zurückzusetzen sind.
 Um Hinweise manuell zu registrieren, starten Sie das Programm SCWN_REGISTER_NOTES. Auf
dem Selektionsbild des Programms geben Sie die Nummern der als vollständig eingebaut zu
registrierenden Hinweise ein. Das System lädt die Hinweise und prüft, ob die Hinweise für Ihr
Release und Support Package Level gültig sind. Weiter prüft das Programm, ob die Hinweise bereits
im Note Assistant als eingebaut registriert sind.

(C) SAP AG BC425 43


8.44
Modifikationsabgleich: Lernziele

Nach Behandlung dieses Themas können Sie:

 Die verschiedenen Schritte des


Modifikationsabgleichs nennen
 aufzählen, welche Objekte wann abgeglichen
werden müssen
 erklären, wie der Modifikationsabgleich in den
Folgesystemen durchgeführt wird

 SAP AG 2002

(C) SAP AG BC425 44


8.45
Abzugleichende Objekte

Abgleich
Abgleich erforderlich
erforderlich

neu von SAP eingespielt

vom Kunden modifiziert

 SAP AG 2002

 Die Menge der abzugleichenden Objekte wird ermittelt aus der Menge der neu in das System
eingespielten Objekten. Diese wird verglichen mit der Menge der modifizierten Objekten.
 Die Schnittmenge dieser Objektmengen muss nach Einspielen eines Upgrades oder Support
Packages abgeglichen werden.

(C) SAP AG BC425 45


8.46
Modifikationsabgleich: SPDD und SPAU

SAP Standard Rückkehr zum


Kunden SAP-Standard
Version
Transaktionen:
Vergleichen SPDD
SPAU
Abgleich

 SAP AG 2002

 Während des Modifikationsabgleichs werden ABAP Repository Objekte von vor dem Upgrade (alte
Version) mit solchen von nach dem Upgrade (neue Version) verglichen. Die Transaktionen SPDD
und SPAU unterstützen Sie während des Abgleichs
 Sie müssen die Transaktion SPDD zum Abgleich von Dictionary Objekten nicht aufrufen, wenn
Sie keine Änderungen an SAP Standard Objekten des Dictionary vorgenommen haben
Sie nur Kundeneigene Objekte in dem System hinzugefügt haben. Nur geänderte SAP Objekte
müssen nachbearbeitet werden.
 Alle anderen ABAP Repository Objekte werden mit Hilfe der Transaktion SPAU abgeglichen. Das
Upgrade-Programm R3up teilt Ihnen mit, die Transaktion am Ende des Upgrades zu starten. Wenn
der Upgrade beendet ist, haben Sie 30 Tage Zeit, die Transaktion SPAU zu verwenden. Nach dieser
Zeit müssen Sie für jedes Objekt, das Sie abgleichen wollen, wieder einen SSCR-Schlüssel
beantragen.
 Die Transaktion SPAU ermittelt, welche Objekte modifiziert wurden und gleichzeitig mit dem
aktuellen Upgrade eingespielt wurden. Der Modifikationsabgleich bietet Ihnen nun die Möglichkeit,
Ihre Modifikationen in das neue R/3 Release zu übernehmen.

(C) SAP AG BC425 46


8.47
Objekte des Modifikationsabgleichs

SPDD SPAU

ABAP-Programme
Oberflächen
Domänen
Dynpros
Datenelemente
Suchhilfen
Tabellen
Views
Sperrobjekte

 SAP AG 2006

 Die Transaktion SPDD führt Sie beim Modifikationsabgleich für folgende Objekte des ABAP
Dictionary:
 Domänen
 Datenelemente
 Tabellen (Strukturen, transparente Tabellen, Pool- und Cluster-Tabellen einschließlich ihrer
technischen Einstellungen)
 Diese 3 Objekt-Typen werden direkt im Anschluß an den Import der Dictionary-Objekte abgeglichen

(vor dem Hauptimport). Zu diesem Zeitpunkt hat noch keine Generierung von importierten Objekten
stattgefunden. Kundenmodifikationen an solchen Objekten müssen vor der Generierung
durchgeführt werden, da es sonst zu Datenverlust kommen könnte.
 Änderungen an anderen Objekten des ABAP Dictionary wie Sperrobjekten, Matchcodes und Views
können keinen Datenverlust nach sich ziehen. Darum werden diese Objekte erst nach dem
Hauptimport und der Generierung im Rahmen der Transaktion SPAU abgeglichen. Mit der
Transaktion SPAU gleichen Sie insgesamt folgende Objekttypen ab:
 ABAP-Programme, Oberflächen (Menüs), Dynpros, Matchcode-Objekte, Views, Sperrobjekte

(C) SAP AG BC425 47


8.48
Abgleich-Transport zwischen Systemen

Release i
Release i-1

Release i-1
Modifikationsabgleich

Aufträge mit
SPDD abgeglichenen Objekten
Transport-Auftrag werden beim Upgrade
nachgelagerter Systeme
SPAU verwendet
Transport-Auftrag

 SAP AG 2006

 Während des Modifikationsabgleichs sollten Sie Ihre Objektbearbeitung über zwei verschiedene
Änderungsaufträge handhaben: einer für den SPDD-Abgleich und einer für den SPAU-Abgleich.
Diese zwei Änderungsaufträge können dann in die nachgelagerten R/3-Systeme transportiert werden.
Damit ist gewährleistet, daß die eigentliche Abgleicharbeit nur in Ihrem Entwicklungssystem
durchgeführt werden muß.
 Während der ADJUSTCHK-Phase beim Upgrade von nachgelagerten Systemen werden Ihnen die
exportierten Abgleiche aus dem ersten System-Upgrade angezeigt und Sie entscheiden, ob sie
akzeptiert werden. Wenn Sie hier aus dem ersten System exportierte Abgleiche akzeptieren, werden
diese in den aktuellen Upgrade integriert. Danach wird geprüft, ob alle im aktuellen R/3-System
gefundenen Modifikationen über die während des ersten System-Upgrades erstellten
Änderungsaufträge abgedeckt sind. Ist dies der Fall, müssen beim aktuellen Upgrade keine
Abgleiche vorgenommen werden.
 Hinweis: Für einen effektiven Ablauf dieses Prozesses ist es notwendig, daß alle Systeme Ihrer
Landschaft einen identischen Zustand aufweisen. Dies ist z.B. dann gewährleistet, wenn alle
Modifikationen zunächst im Entwicklungssystem durchgeführt und dann in die nachgelagerten
Systeme transportiert wurden, bevor im Entwicklungssystem der Upgrade durchgeführt wurde. Die
Voraussetzung wäre auch dann erfüllt, wenn das Entwicklungssystem vor dem Upgrade als Kopie
des Produktionssystems erstellt wurde und danach keine Modifikationen im Produktivsystem mehr
durchgeführt wurden.

(C) SAP AG BC425 48


8.49
Modifikationsabgleich: Einstieg

Modifikationsabgleich: Objektauswahl

Standard-Selektionen
letzter Änderer
Entwicklungsklasse
Auftrag/Aufgabe
modifizierte Objekte

mit Modifikationsassistent
ohne Modifikationsassistent
mit Modifikationsassistent

Upgrades und Patches Datenelemente


noch zu bearbeiten
S_CARR_ID SMITH 01.02.2007
alle Objekte
Domänen
Programme
Funktionsbausteine
 SAP AG 2006

 Beim Start des Modifikationsabgleichs (Transaktion SPAU) können Sie auf einem Selektionsbild die
Treffermenge einschränken. Hier können Sie wählen, ob Sie alle abzugleichenden Objekte sehen
wollen oder nur die, die noch bearbeitet werden müssen. Sie können die Selektion mit Hilfe der
folgenden Kriterien einschränken:
 letzter Änderer
 Entwicklungsklasse
 Auftragsnummern / Aufgabennummern
 Das System zeigt Ihnen eine Liste mit den abzugleichenden Objekten an. Die Liste ist sortiert nach
 mit / ohne Modifikationsassistent
 Objektart

(C) SAP AG BC425 49


8.50
Ikonen des Modifikationsabgleichs

automatischer Abgleich

halbautomatischer Abgleich

manueller Abgleich

Objekt abgeglichen

Original wiederhergestellt

 SAP AG 2002

 Die Ikonen vor den einzelnen Objekten, die zum Abgleich bestimmt sind, zeigen an, wie der
Abgleich durchgeführt werden kann. Der Abgleich kann durchgeführt werden
 automatisch
Das System stellt keine Konflikte fest. Die Änderungen können automatisch übernommen werden.
Dazu wählen Sie entweder die entsprechende Ikone oder den Menüeintrag aus.
 halbautomatisch
Die einzelnen Werkzeuge bieten eine Unterstützung beim Abgleich an. Beim Abgleich von
Programmen wird der Split-Screen-Editor aufgerufen, in dem Sie Änderungen übernehmen
können.
 manuell
Sie müssen Ihre Modifikationen ohne besondere Unterstützung durch das System bearbeiten. Der
Modifikationsabgleich bietet einen Absprung in das entsprechende Werkzeug an.
 Abgeglichene Objekte werden durch den grünen Haken gekennzeichnet.
 Wenn Sie den neuen SAP-Standard übernehmen wollen, wählen sie "Rücksetzen auf Original".
Damit entfällt etwaige Abgleicharbeit zukünftig.

(C) SAP AG BC425 50


8.51
Modifikationen: Zusammenfassung des Kapitels

Sie können nun:


 beschreiben, was eine Modifikation ist
 die wichtigsten Regeln beim Modifizieren
aufzählen
 Modifikationen mit Hilfe des
Modifikationsassistenten durchführen
 User-Exits zum Implementieren von
Erweiterungen einsetzen
 Hinweise mit dem Note Assistant einpflegen
 Modifikationen abgleichen

 SAP AG 2002

(C) SAP AG BC425 51


8.52Modifikationen Übungen

Kapitel: Modifikationen
Thema: Modifikationen durchführen

Am Ende dieser Übungen können Sie:


 Modifikationen mit Hilfe des Modifikationsassistenten
durchführen.
 Ungeführte Modifikationen durchführen.

Sie wollen zusätzlich zu dem großen Funktionsumfang des R/3


noch weitere Funktionalität implementieren.
Seltener kommt es vor, daß fehlerhafte Funktionalität ausgeliefert
wird. Dies erfordert das Einfügen von Korrekturen noch bevor
das entsprechende Support Package eingespielt werden kann.
Einige Modifikationen werden vom Modifikations-Assistenten
untersagt. Sollen sie trotzdem durchgeführt werden, besteht die
Möglichkeit, den Modifikationsassistenten abzuschalten.

1-1 Modifizieren Sie Objekte des R/3. Verwenden Sie dabei soweit wie möglich den
Modifikationsassistenten. Im folgenden sind die Objekte angegeben, die Sie
verändern sollen:

1-2 Modifizieren Sie das Programm SAPBC425_BOOKING_##.


1-2-1 Erweitern Sie die Überschrift dahingehend, daß die Spalte mit den
Kundennamen auch eine Überschrift erhält.
1-2-2 Legen Sie eine neue Variable zum Zählen der Datensätze an. Geben Sie den
Zähler in der letzten Spalte der Liste aus.
1-2-3 Lesen Sie zusätzlich die Felder LUGGWEIGHT und WUNIT der Tabelle
SBOOK und geben Sie diese auf der Liste aus.

1-3 Modifizieren Sie das Programm SAPBC425_FLIGHT##.


1-3-1 Ändern Sie das Layout des Dynpro 0100: Fügen Sie einen Rahmen um die
drei Eingabefelder ein. Legen Sie eine Drucktaste an und ordnen Sie ihr den
Funktionscode MORE zu.

1-4 Modifizieren Sie das Datenelement S_CARRID##.


1-4-1 Ändern Sie die Feldbezeichner in:
kurz: "Flugges"
mittel: "Flugunternehmen".
1-4-2 Modifizieren Sie die Dokumentation zu diesem Datenelement. Erfassen Sie
einen aussagekräftigen Text.

(C) SAP AG BC425 52


1-5 Überprüfen Sie Ihre Modifikationen im Modification Browser.

(C) SAP AG BC425 53


Übungen

Kapitel: Modifikationen
Thema: Modifikationsabgleich

Am Ende dieser Übungen können Sie:


 Modifikationen abgleichen

Nach dem Einspielen eines Support Packages oder eines


Upgrades müssen die im System vorgenommenen
Modifikationen abgeglichen werden.

1-1 Gleichen Sie die von Ihnen vorgenommenen Modifikationen mit den neu in das
System eingespielten Objekten ab.

(C) SAP AG BC425 54


Modifikationen – Übungen (optional)

Kapitel: Modifikationen
Thema: SAP Note Assistant: Hinweise einpflegen

Am Ende dieser Übungen können Sie:


 Hinweise mit Hilfe des SAP Note Assistant in das SAP
System einspielen

Das Programm SAPBC426_## besteht aus einem Selektionsbild,


auf dem Sie eine Fluggesellschaft eingeben können. Details des
Flugs werden auf einer Liste ausgegeben. Aber die Liste ist
fehlerhaft: Sie zeigt nur die Fluggesellschaft. Darüber hinaus
fehlen einige Drucktasten in der Drucktastenleiste.
Die Fehler sind bereits in einem Hinweis korrigiert. Hinweis
4273250## fügt fehlende Informationen auf der Liste hinzu.
Hinweis 4277060## fügt das fehlende Feld "Maximale
Belegung" in die Liste ein.
Korrigieren Sie die Fehler, indem Sie die relevanten Hinweise in
das System einspielen.

1-1 Rufen Sie den SAP Note Assistant auf.


1-1-1 Machen Sie sich mit dem User Interface vertraut.
1.1.2 Wofür stehen die Ikonen?
1.1.3 Ändern Sie den Bearbeitungsstatus der zu Ihrer Gruppe ## gehörenden
Hinweise auf "In Bearbeitung".
1.1.4 Lesen Sie Hinweis 4273250## sorgfältig.

1.2 Untersuchen Sie, ob der Hinweis die von Ihnen entdeckten Fehler korrigiert.
1.2.1 Rekonstruieren Sie den Fehler im System. Starten Sie dazu das
Programm SAPBC426_##.
1.2.2 Ist der Hinweis für Ihr System gültig? Schauen Sie dazu in der
Korrekturanleitung nach.
1.2.3 Welche Objekte werden mit dieser Korrekturanleitung korrigiert? In
welcher Modularisierungseinheit befinden sich diese?
1.2.4 An welchen Stellen im Programm werden die Korrekturen eingefügt?
Vergleichen Sie den in der Korrekturanleitung angegebenen Kontextblock
mit dem Quelltext des Programms.

(C) SAP AG BC425 55


1.2.5 Nachdem Sie sichergestellt haben, dass der Hinweis die Programmfehler
korrigiert, können Sie ihn implementieren. Legen Sie dazu einen neuen
Änderungsauftrag an.

1-3 In einem Dialogfenster werden alle Objekte angezeigt, die mit dem Hinweis
korrigiert werden.
1.3.1 Welche Bedeutung haben die Ampelsymbole?
1.3.2 Lassen Sie sich die Änderungen im Splitscreen-Editor anzeigen.
1.3.3 Stellen Sie sicher, dass die korrigierten Objekte keine Syntaxfehler
beinhalten.
1.3.4 Fahren Sie mit der Implementierung fort.

1-4 Nachdem Sie die Korrekturen implementiert haben: Testen Sie das Programm
SAPBC426_## und stellen Sie fest, ob die ursprünglichen Fehler behoben sind.

1-5 Deimplementieren Sie Hinweis 4273250##


1.5.1 Bestätigen Sie das Deimplementieren.
1.5.2 Welchen Implementierungsstatus hat der Hinweis in Ihrem Arbeitsvorrat
nach der Deimplementierung?
1.5.3 Überprüfen Sie, ob das Programm in seiner Ursprungsversion läuft.

1-6 Implementieren Sie Hinweis 4277060##.


1.6.1 Lesen Sie den Hinweis sorgfältig. Stellen Sie sicher, dass der Hinweis die
von Ihnen entdeckten Fehler behebt.
1.6.2 Ist der Hinweis für Ihr System gültig?
1.6.3 Welche Voraussetzungen gelten für diesen Hinweis? Diese finden Sie im
Kopf der Korrekturanleitung.
1.6.4 Welche Objekte werden mit der Korrekturanleitung korrigiert?
1.6.5 Nachdem Sie sichergestellt haben, dass der Hinweis die Programmfehler
korrigiert, können Sie ihn implementieren.
1.6.6 In einem Dialogfenster wird Ihnen die Hinweis-Queue angezeigt. Lesen Sie
vorausgesetzten Hinweise und stellen Sie sicher, dass die Fehler korrigiert
werden.

1-7 Wurden die Fehlerkorrekturen korrekt durchgeführt?


1.7.1 Führen Sie das Programm SAPBC426_## aus.
1.7.2 Welche Schritte sind im dem Protokoll des Note Assistant enthalten? Fügen
Sie Ihre Kommentare hinzu.
1.7.3 Rufen Sie den Modification Browser auf. Hier sehen Sie alle durch
Hinweiskorrekturen korrigierten Objekte. Informieren Sie sich in der
Versionsverwaltung über die von Ihnen durchgeführten Änderungen.

(C) SAP AG BC425 56


1-8 Nachdem Sie sichergestellt haben, dass Sie alle Fehler korrigiert haben, ändern Sie
den Bearbeitungsstatus der Hinweise, die Sie bearbeitet haben, auf "Erledigt". Wo
finden Sie die Hinweise jetzt?

1-9 Geben Sie Ihren Änderungsauftrag frei.

(C) SAP AG BC425 57


Modifikationen – Übungen (optional)

Kapitel: Modifikationen
Thema: SAP Note Assistant: Modifizieren

Am Ende dieser Übungen können Sie:


 Programme modifizieren
 Überschriften modifizieren
 Dynpros modifizieren

Das Programm SAPBC426_## bietet nicht alle Optionen, die in


Ihrem Unternehmen benötigt werden. Neben den angezeigten
Daten will Ihr Unternehmen auch die belegten Plätze neben der
maximalen Belegung sehen. Darum müssen Sie ein weiteres Feld
in die Liste aufnehmen und die entsprechende Überschrift
erzeugen. Bei einem Doppelklick auf eine Listenzeile erhalten Sie
die Daten des entsprechenden Fluges in einem separaten Fenster.
Fügen Sie das neue Feld auf der Liste hinzu. Pflegen Sie die
Überschrift. Erzeugen Sie zwei neue Felder auf dem Anzeige-
Dynpro für die Flugdaten.
Beachten Sie, dass das Programm SAPBC426_## einen Fehler
enthält: Das Anzeige-Dynpro für die Flugdaten enthält keien
"Zurück"-Taste, um den Bildschirm zu verlassen. SAP Hinweis
4274230## bietet einen Workaround. Dieser Hinweis wird in
der nächsten Übung eingepflegt.

1.1 Modifizieren Sie das Programm SAPBC426_##:


1.2.1 Fügen Sie das Feld seatsocc zu der Liste hinzu. Sie finden die Ausgabe in
dem Unterprogramm display_flights.
1.2.2 Sichern Sie Ihre Modifikation. Prüfen Sie das Programm.

1-2 Modifizieren Sie die Listenüberschrift.


1.2.1 Fügen Sie in der Überschrift den Text "Belegte Plätze" hinzu.
1.2.2 Sichern Sie die Modifikationen. Prüfen Sie das Programm.

1-3 Modifizieren Sie ein Dynpro.


1.3.1 Das Dynpro, auf dem die Flugdaten angezeigt werden, ist Teil des
Programms SAPMBC425_##. Starten Sie den Object Navigator zum
Bearbeiten dieses Programms.
1.3.2 Ändern Sie Dynpro 100: Fügen Sie das Feld für die belegten Plätze hinzu
(Struktur SDYN_CONN00).

(C) SAP AG BC425 58


1.3.3 Sichern Sie Ihre Modifikationen und aktivieren Sie das Dynpro.
1.3.4 Starten Sie das Programm und überprüfen Sie, ob die von Ihnen
hinzugefügten Felder auf dem Dynpro erscheinen.
1.3.5 Überprüfen Sie im Modification Browser, ob Ihre Modifikationen korrekt
aufgezeichnet wurden.

1.4 Geben Sie Ihren Änderungsauftrag frei.

(C) SAP AG BC425 59


Modifikationen – Übungen (optional)

Kapitel: Modifikationen
Thema: SAP Note Assistant: Hinweise einpflegen II

Am Ende dieser Übungen können Sie:


 Hinweise halbautomatisch einpflegen
 Korrekturen mit dem Split-screen Editor des Note Assistant
einpflegen.

Wenn Sie mehr als einen Flug auf der Ergebnisliste des
Programms SAPBC426_## auswählen und "Buchungsliste"
wählen, erscheint eine Liste von Buchungen. Bedingt durch einen
Programmfehler werden allerdings keine Buchungen angezeigt.
Bei Doppelklick auf eine Zeile der Liste erscheint ein Dynpro mit
Flugdaten. Hier fehlt die "Zurück"-Taste.
Korrigieren Sie die Fehler durch Einpflegen eines Hinweises.

1-1 Lassen Sie sich Hinweis 4274230## anzeigen und lesen ihn sorgfältig. Werden
die von Ihnen entdeckten Fehler durch den Hinweis korrigiert?
1.1.1 Stellen Sie den Fehler im System nach.
1.1.2 Welche Objekte werden durch den Hinweis korrigiert?

1-2 Nachdem Sie sichergestellt haben, dass die Hinweiskorrekturen die Fehler
korrigiert, können Sie den Hinweis implementieren.
1.2.1 Ein Dialogfenster mit den zu korrigierenden Objekten erscheint. Was
bedeutet das gelbe Ampelsymbol? Wie fahren Sie fort?
1.2.2 Lassen Sie sich die Änderungen im Split-screen Editor anzeigen.
Verwenden Sie den Editor, um manuell Blöcke einzufügen. In der Online-
Hilfe zum Split-screen Editor erhalten Sie weitere Bedienhinweise.
1.2.3 Fügen Sie den einzufügenden Block an der richtigen Stelle ein.
1.2.4 Ist das Programm syntaktisch korrekt? Fahren Sie mit dem Implementieren
fort.
1.2.5 Da Sie manuelle Änderungen vorgenommen haben, erscheint ein
zusätzliches Dialogfenster zum Bestätigen, dass der Hinweis komplett
implementiert wurde. Wozu ist das notwendig?

1-3 Überprüfen Sie die Protokolle für die Hinweise. Welche Unterschiede gibt es
zwischen der Implementierung der Hinweise von Übung 1 und Übung 3?

1-4 Testen Sie das Programm. Sind die Fehler nun beseitigt?

(C) SAP AG BC425 60


1-5 Nachdem Sie sichergestellt haben, dass alle Fehler korrigiert sind, ändern Sie den
Bearbeitungsstatus des Hinweises auf "Erledigt".

1-6 Geben Sie Ihren Änderungsauftrag frei.

(C) SAP AG BC425 61


Modifikationen – Übungen (optional)

Kapitel: Modifikationen
Thema: Modifikationsabgleich

Am Ende dieser Übungen können Sie:


 Modifikationen nach dem Einspielen von Support Packages
abgleichen

Sie haben Hinweise als Vorabkorrekturen in Ihr System


eingespielt. Auch haben Sie eigene Modifikationen
vorgenommen. Hinweise sind immer auch in Support Packages
enthalten und werden als Teil derselben ausgeliefert. Wenn Sie
ein Support Package einspielen, werden möglicherweise ein Teil
der Hinweiskorrekturen und Modifikationen überschrieben.
Darum müssen Sie einen Modifikationsabgleich durchführen.

1-1 Starten Sie den Modifikationsabgleich über SAP Menü  ABAP Workbench 
Hilfsmittel  Wartung  Upgrade Utilities  Abgleich Programme oder
Transaktion SPAU.
1.1.1 Geben Sie Ihren Benutzernamen in das Feld "letzter Änderer" ein. Führen
Sie das Programm aus.
1.1.2 Schauen Sie sich die Objekte in den verschiedenen Kategorien an. Welche
Bedeutung haben die Ikonen?

1-2 Gleichen Sie die Modifikationen ab. Gehen Sie dabei von oben nach unten vor:
1.2.1 Beginnen Sie mit den Objekten in der Kategorie "Hinweiskorrekturen".
1.2.2 Falls der Abgleichmodus nicht bestimmt wurde, starten Sie die Berechnung
durch Doppelklick auf das Fragezeichen neu.
1.2.3 Legen Sie bei Bedarf einen neuen Änderungsauftrag an.
1.2.4 Fahren Sie mit der Kategorie "Mit Modifikationsassistent" fort.
1.2.5 Bearbeiten Sie zum Schluss die Kategorie "Ohne Modifikationsassistent".

1-3 Nachdem Sie alle Objekte abgeglichen haben, geben Sie Ihren Änderungsauftrag
frei.

(C) SAP AG BC425 62


8.53Modifikationen Lösungen

Kapitel: Modifikationen
Thema: Modifikationen durchführen

1-1 Modifizieren von Objekten des R/3. Verwenden Sie den Modifikations-Assistenten.

1-2 Modifizieren des Programms SAPBC425_BOOKING_##.


1-2-1 Die Überschrift können sie entweder direkt von der Liste ausgehend
(System  Liste  Listüberschrift) oder aus dem Editor heraus ändern.
1-2-2 Sie können eine neue Variable direkt im SAP-Programm anlegen.
Verwenden Sie die Einfüge-Funktion des Modifikations-Assistenten.
Idealerweise halten Sie die Änderungen lokal im Unterprogramm
data_output. Geben Sie den Zähler mit aus.
Alternativ können Sie diese Funktionalität auch in der Erweiterung
implementieren, was keine Modifikation verursachen würde.
1-2-3 Lesen von zusätzlichen Feldern LUGGWEIGHT und WUNIT der Tabelle
SBOOK und Ausgabe derselben auf der Liste:
Erweitern Sie das SELECT-Statement um diese beiden Felder. Geben Sie
die Felder im Unterprogramm data_output aus.

1-3 Modifizieren des Programms SAPBC425_FLIGHT##.


1-3-1 Zum Ändern des Layouts des Dynpro 0100 verwenden Sie den Screen-
Painter.

1-4 Modifizieren des Datenelements S_CARRID##.


1-4-1 Rufen Sie die Pflegetransaktion für Datenelemente auf. Stellen sie den
Cursor auf das entsprechende Objekt und wählen Sie die
Modifikationsikone. In dem folgenden Dialogfenster können Sie neuen Text
eingeben.
1-4-2 Wählen Sie die Drucktaste "Dokumentation" und erfassen Sie neuen Text.

1-5 Zum Überprüfen der Modifikation wählen Sie den Modification Browser
(Transaktion SE95). Schränken Sie die Selektion über den Benutzernamen oder
über den Änderungsauftrag/Aufgabe ein.

(C) SAP AG BC425 63


Lösungen

Kapitel: Modifikationen
Thema: Modifikationsabgleich

1.1 Starten Sie den Patch Manager (Transaktion SPAM). Unter dem Menüpfad Zusätze
 Modifikationen abgleichen rufen Sie die Transaktion SPAU auf. Hier können
Sie die Modifikationen abgleichen.

(C) SAP AG BC425 64


Modifikationen - Lösungen

Kapitel: Modifikationen
Thema: SAP Note Assistant: Hinweise einpflegen

1-1 Rufen Sie den SAP Note Assistant auf. Geben Sie dazu den Transaktionscode
SNOTE in das Eingabefeld ein.
1-1-1 Machen Sie sich mit dem User Interface vertraut. Untersuchen Sie dazu die
Menüeinträge.
1.2.2 Wofür stehen die Ikonen? Unter Hilfsmittel  Farblegende erhalten Sie
nähere Informationen.
1.2.3 Ändern Sie den Bearbeitungsstatus der zu Ihrer Gruppe ## gehörenden
Hinweise auf "In Bearbeitung". Dazu stellen Sie den Cursor auf den
Hinweis und wählen Hinweis  Bearbeitungsstatus setzen.
1.2.4 Lesen Sie Hinweis 4273250## sorgfältig. Dazu stellen Sie den Cursor auf
den Hinweis und wählen Hinweis  Hinweis anzeigen.

1.3 Untersuchen Sie, ob der Hinweis die von Ihnen entdeckten Fehler korrigiert.
Diese Information finden Sie im Hinweistext.
1.2.6 Rekonstruieren Sie den Fehler im System. Starten Sie dazu das
Programm SAPBC426_##, z.B. über die Transaktion SA38.
1.2.7 Schauen Sie in der Korrekturanleitung nach, für welche Release-Stände
und Support Package Levels der Hinweis gültig ist.
1.2.8 Welche Objekte mit dieser Korrekturanleitung korrigiert werden und in
welcher Modularisierungseinheit sich diese befinden, entnehmen Sie der
Korrekturanleitung am Ende des Hinweises.
1.2.9 Um herauszufinden, an welchen Stellen im Programm die Korrekturen
eingefügt werden, vergleichen Sie den in der Korrekturanleitung
angegebenen Kontextblock mit dem Quelltext des Programms.
1.2.10 Sie starten die Implementierung des Hinweises, indem Sie den Cursor
auf die Hinweisnummer stellen. Danach wählen Sie Hinweis 
Hinweis einbauen. Legen Sie einen neuen Änderungsauftrag an, wenn das
System Sie auffordert, einen Änderungsauftrag einzugeben.

1-3 In einem Dialogfenster werden nun alle Objekte angezeigt, die mit dem Hinweis
korrigiert werden.
1.3.5 Die Bedeutung der Ampelsymbole:
Grüne Ampel: Die Korrekturen können unverändert eingebaut werden.
Gelbe Ampel: Die Korrekturen können eingeschränkt eingebaut werden.
Bevor Sie den Einbau bestätigen, sollten Sie die Korrekturen anpassen, um
(C) SAP AG BC425 65
eine korrekte Übernahme der Objektänderungen zu gewährleisten. Wenn
Sie auf den Objektnamen oder auf das Ampelsymbol klicken, gelangen Sie
in den Splitscreen-Editor, in dem Sie den Quelltext editieren können.
Rote Ampel: Die Objektänderungen können nicht übernommen werden.
1.3.6 Lassen Sie sich die Änderungen im Splitscreen-Editor anzeigen, indem Sie
das Ampelsymbol klicken.
1.3.7 Stellen Sie sicher, dass die korrigierten Objekte keine Syntaxfehler
beinhalten, indem Sie die "Syntaxprüfung der Rahmenprogramme"
durchführen.
1.3.8 Fahren Sie mit der Implementierung fort.

1-4 Nachdem Sie die Korrekturen implementiert haben: Testen Sie das Programm
SAPBC426_## und stellen Sie fest, ob die ursprünglichen Fehler behoben sind.
Führen Sie dazu das Programm nochmals aus.

1-5 Deimplementieren Sie Hinweis 4273250##. Wählen Sie dazu Hinweis 


Hinweiseinbau zurücknehmen
1.5.4 Bestätigen Sie das Deimplementieren.
1.5.5 Der Hinweis hat den Status "Einbaubar" sowie "In Bearbeitung".
1.5.6 Starten Sie das Programm SAPBC426_## erneut.

1-6 Implementieren Sie Hinweis 4277060## analog zur obigen Vorgehensweise.


1.6.7 Lesen Sie den Hinweis sorgfältig. Stellen Sie sicher, dass der Hinweis die
von Ihnen entdeckten Fehler behebt.
1.6.8 Die Gültigkeit des Hinweises ist im Kopf der Korrekturanleitung
angegeben.
1.6.9 Welche Voraussetzungen für diesen Hinweis gelten, finden Sie im Kopf der
Korrekturanleitung.
1.6.10 Welche Objekte mit der Korrekturanleitung korrigiert werden, finden Sie im
Kopf der Korrekturanleitung.
1.6.11 Nachdem Sie sichergestellt haben, dass der Hinweis die Programmfehler
korrigiert, können Sie ihn wie oben implementieren.
1.6.12 In einem Dialogfenster wird Ihnen die Hinweis-Queue angezeigt. Nachdem
Sie die vorausgesetzten Hinweise gelesen haben, können Sie mit dem
Einbau fortfahren.

1-7 Um zu analysieren, ob die Fehlerkorrekturen korrekt durchgeführt wurden, starten


Sie das Programm.
1.7.4 Führen Sie das Programm SAPBC426_## aus.
1.7.5 Über Springen  Protokoll lassen Sie sich das Einbauprotokoll anzeigen
lassen. Ihre Kommentare fügen Sie über Notiz  Anlegen hinzu.
1.7.6 Rufen Sie den Modification Browser über Umfeld  Modification Browser
auf. Hier sehen Sie alle durch Hinweiskorrekturen korrigierten Objekte. Die
Versionsverwaltung erreichen Sie über Hilfsmittel  Versionen.

(C) SAP AG BC425 66


1-8 Ändern Sie den Bearbeitungsstatus der Hinweise über Hinweis 
Bearbeitungsstatus setzen. Der Hinweis verschwindet aus der Liste und kann über
den Hinweisbrowser angezeigt werden.

1-9 Geben Sie Ihren Änderungsauftrag im Transport Organizer (Transaktion SE09)


frei.

(C) SAP AG BC425 67


Lösungen

Kapitel: Modifikationen
Thema: SAP Note Assistant: Modifizieren

1.2 Modifizieren Sie das Programm SAPBC426_## wie folgt:


1.2.3 Fügen Sie das Feld seatsocc zu der Liste hinzu. Modifizieren Sie das
Unterprogramm display_flights.

FORM display_flights.

LOOP AT it_sflight INTO wa_sflight.

WRITE: / mark AS CHECKBOX INPUT ON,


wa_sflight-carrid,
wa_sflight-connid,
wa_sflight-fldate,
wa_sflight-price CURRENCY wa_sflight-currency,
wa_sflight-currency,
*{ REPLACE T70K904063 1
*\ wa_sflight-seatsmax.
wa_sflight-seatsmax,
wa_sflight-seatsocc.
*} REPLACE

ENDLOOP.

ENDFORM. " DISPLAY_FLIGHTS

1.2.4 Sichern Sie Ihre Modifikation. Prüfen Sie das Programm.

1-2 Modifizieren Sie die Listenüberschrift.


1.2.3 Pflegen Sie die Überschrift, indem Sie auf der Liste System  Liste 
Listüberschrift wählen.
1.2.4 Sichern Sie die Modifikationen. Prüfen Sie das Programm.

1-3 Modifizieren Sie ein Dynpro.


1.4.1 Das Dynpro, auf dem die Flugdaten angezeigt werden, ist Teil des
Programms SAPMBC425_##. Starten Sie den Object Navigator zum
Bearbeiten dieses Programms.
1.4.2 Ändern Sie Dynpro 100: Fügen Sie das Feld für die belegten Plätze hinzu
(Struktur SDYN_CONN00, Feld SEATSOCC).
1.4.3 Sichern Sie Ihre Modifikationen und aktivieren Sie das Dynpro.
(C) SAP AG BC425 68
1.4.4 Starten Sie das Programm und überprüfen Sie, ob die von Ihnen
hinzugefügten Felder auf dem Dynpro erscheinen.
1.4.5 Starten Sie den Modification Browser aus dem Object Navigator über
Umfeld  Modification Browser. Auf dem Selektionsbild geben Sie als
letzen Änderer Ihren Benutzernamen ein.

1-4 Geben Sie Ihren Änderungsauftrag im Transport Organizer frei.

(C) SAP AG BC425 69


Lösungen

Kapitel: Modifikationen
Thema: SAP Note Assistant: Hinweise einpflegen II

1-1 Lassen Sie sich Hinweis 4274230## wie oben beschrieben anzeigen und lesen ihn
sorgfältig. Die Fehler werden durch den Hinweis korrigiert.
1.1.3 Stellen Sie den Fehler im System nach, indem Sie das Programm
SAPBC425_## starten.
1.1.4 Welche Objekte durch den Hinweis korrigiert werden, entnehmen Sie der
Korrekturanleitung. Sie finden diese am Ende des Hinweistextes.

1-2 Nachdem Sie sichergestellt haben, dass die Hinweiskorrekturen die Fehler
korrigiert, können Sie den Hinweis implementieren.
1.2.6 Ein Dialogfenster mit den zu korrigierenden Objekten erscheint. Das gelbe
Ampelsymbol bedeutet, dass Teile nicht automatisch eingebaut werden
können. Klicken Sie auf das Ampelsymbol, um in den Split-screen Editor zu
gelangen.
1.2.7 Stellen Sie den Cursor auf die Kopfzeile des einzufügenden Blocks in der
rechten Bildschirmhälfte. Wählen Sie "Markieren". Wählen Sie "Kopieren
in Puffer".
1.2.8 Stellen Sie den Cursor auf die Stelle in der linken Bildschirmhälfte, wo der
Block eingefügt werden soll. Wählen Sie "Einsetzen Puffer". Wählen Sie
"Übernehmen".
1.2.9 Zurück auf dem Dialogfenster: Prüfen Sie die Rahmenprogramme durch
Auswahl der entsprechenden Drucktaste. Das Programm sollte syntaktisch
korrekt sein. Fahren Sie mit dem Implementieren fort, indem Sie das Fenster
bestätigen.
1.2.10 Da Sie manuelle Änderungen vorgenommen haben, erscheint ein
zusätzliches Dialogfenster zum Bestätigen, dass der Hinweis komplett
implementiert wurde. Bestätigen Sie das Dialogfenster mit "Ja". Falls Sie
"Nein" wählen, wird der Hinweis als inkonsistent eingebaut gekennzeichnet.

1-3 Überprüfen Sie die Protokolle für die Hinweise: Stellen Sie den Cursor auf den
Hinweis und wählen Sie Springen  Protokoll. Der manuelle Einbau wird
protokolliert.

1-4 Testen Sie das Programm. Die Fehler sollten nun beseitigt sein.

1-5 Ändern Sie den Bearbeitungsstatus des Hinweises auf "Erledigt".

1-6 Geben Sie Ihren Änderungsauftrag im Transport Organizer frei.

(C) SAP AG BC425 70


Lösungen

Kapitel: Modifikationen
Thema: Modifikationsabgleich

1-1 Starten Sie den Modifikationsabgleich über SAP Menü  ABAP Workbench 
Hilfsmittel  Wartung  Upgrade Utilities  Abgleich Programme oder
Transaktion SPAU.
1-1-1 Geben Sie Ihren Benutzernamen in das Feld "letzter Änderer" ein. Führen
Sie das Programm aus.
1-1-2 Schauen Sie sich die Objekte in den verschiedenen Kategorien an. Die
Bedeutung der Ikonen entnehmen Sie bitte der Dokumentation des
Modifikationsabgleichs.

1-2 Gleichen Sie die Modifikationen ab. Gehen Sie dabei von oben nach unten vor:
1.2.6 Beginnen Sie mit den Objekten in der Kategorie "Hinweiskorrekturen".
1.2.7 Falls der Abgleichmodus nicht bestimmt wurde, starten Sie die Berechnung
durch Doppelklick auf das Fragezeichen neu.
1.2.8 Legen Sie bei Bedarf einen neuen Änderungsauftrag an.
1.2.9 Fahren Sie mit der Kategorie "Mit Modifikationsassistent" fort.
1.2.10 Bearbeiten Sie zum Schluss die Kategorie "Ohne Modifikationsassistent".

1-3 Nachdem Sie alle Objekte abgeglichen haben, geben Sie Ihren Änderungsauftrag
im Transport Organizer frei.

(C) SAP AG BC425 71


9
Zusammenfassung

Inhalt:
 Zusammenfassung
 Bewertung der verschiedenen Erweiterungstechniken

 SAP AG 2006

(C) SAP AG BC425 1


9.2
Zusammenfassung: Lernziele des Kapitels

Am Ende dieses Kapitels können Sie:

 die wesentlichen Inhalte dieses Kurses


zusammenfassen
 beschreiben, wie Sie bei Änderungen am SAP
Standard vorgehen sollten
 die Vor- und Nachteile von Modifikationen
aufzählen
 die Alternativen zu Modifikationen nennen

 SAP AG 2006

(C) SAP AG BC425 2


9.3
Vermeidung des Abgleichs

SAP Erweiterungskonzept:
keine Änderung von SAP Objekten
kein Abgleich während des Upgrades

Einspielen von Support Packages


via Online Correction Services (OCS)

Rückkehr auf den SAP Standard


Versionsdatenbank und Einträge im WBO und
Transportsystem bleiben erhalten

 SAP AG 2006

 Unterlassen Sie möglichst Änderungen an SAP-Objekten, damit kein Modifikationsabgleich


notwendig ist.
 Mit dem Einsatz von Programmerweiterungen und Appends zu SAP-Tabellen haben Sie die
Möglichkeit, Erweiterungen an SAP-Objekten vorzunehmen, ohne daß diese Änderungen von der
SAP bei einem Upgrade überschrieben werden können.
 Zur Vermeidung von manuell einzugebenden Vorabkorrekturen gibt es ab Release 3.0 Online
Correction Services, die das automatische Einspielen und Zurücknehmen von Hot Packages und
Patches ermöglichen.

(C) SAP AG BC425 3


9.4
Tabellenerweiterungen

ABAP
Dictionary SAP-Tabellendefinition YYFeld ZZFeld
Feld 1 Feld 2 Feld 3 Append-Struktur

SAP-Tabellendefinition YYFeld ZZFeld


Feld 1 Feld 2 Feld 3 CI_Incl CI_Include

Datenbank

Feld 1 Feld 2 Feld 3 YYFeld ZZFeld

 SAP AG 2006

 SAP bietet Ihnen zwei Möglichkeiten, Tabellen und Strukturen um Felder zu erweitern:
 Append-Strukturen
 Customizing-Includes ("CI-Includes")
 Beide Techniken erlauben es, Felder an eine Tabelle anzuhängen, ohne die Tabelle selbst zu
modifizieren.
 Eine Append-Struktur ist eine Struktur, die genau einer Tabelle zugeordnet ist. Es kann mehrere
Append-Strukturen zu einer Tabelle geben. Beim Aktivieren werden alle aktiven Append-Strukturen
zur Tabelle gesucht und an die Tabelle angehängt.
 Append-Strukturen unterscheiden sich in der Art des Verweises zur zugehörigen Tabelle von
Include-Strukturen, zu denen auch die Customizing-Includes gehören. Um die Felder einer Include-
Struktur in eine Tabelle zu übernehmen, muß die Tabelle um eine Zeile der Form '.INCLUDE...'
erweitert werden. Der Verweis geht also in diesem Fall von der Tabelle aus. Eine Append-Struktur
hat dagegen einen Verweis zur zugehörigen Tabelle, welche selbst unverändert bleibt. Der Verweis
geht hier von der Append-Struktur aus.

(C) SAP AG BC425 4


9.5
Programm-Exit: Architektur

Anwendungsprogramm

X-Funktionsgruppe

Exit-Funktionsbaustein
EXIT_<prog_name>_001
CALL CUSTOMER-FUNCTION

Include im
Kundennamensraum

 SAP AG 2006

 In diesem Bild ist der Ablauf eines Programmes dargestellt, das eine Erweiterung in Form eines
Programm-Exits anbietet.
 An einer vom SAP-Anwendungsentwickler definierten Stelle im Quelltext wird der Exit-
Funktionsbaustein aufgerufen. Innerhalb des Funktionsbausteins kann der Verwender mit Hilfe eines
Includes im Kundennamensraum Funktionalität hinzufügen.

(C) SAP AG BC425 5


9.6
BTE: Funktionsweise / Ablaufdiagramm

Anwendungsprogramm

Aktive Implementierung
Event-Funktionsbaustein
Implementierungs-
Implementierungs-
OPEN_FI_PERFORM_<…>
Funktionsbaustein
des Kunden/Partners

CALL FUNCTION

CALL FUNCTION

 SAP AG 2006

 In diesem Bild ist der Ablauf eines SAP-Programmes dargestellt. Das Programm enthält eine
Erweiterung in Form eines Business Transaction Events. Im SAP-Programm wird ein
Funktionsbaustein aufgerufen, der die aktiven Implementierungen der Erweiterung ermittelt und
abarbeitet. Die Namen dieser Event-Funktionsbausteine beginnen mit "OPEN_FI_PERFORM_"
bzw. "OUTBOUND_CALL_").
 Der Event-Funktionsbaustein OPEN_FI_PERFORM_<…> bzw. OUTBOUND_CALL_<…>
ermittelt alle aktiven Implementierungen zu der entsprechenden Erweiterung und stellt sie in eine
interne Tabelle. Die Abarbeitung der so ermittelten Funktionsbausteine erfolgt in der Reihenfolge,
die durch diese interne Tabelle vorgegeben ist. Hier werden gegebenenfalls auch etwaige
Bedingungen berücksichtigt, unter denen der Funktionsbaustein im Kundennamensraum abgearbeitet
wird. Als Bedingung kann beispielsweise das Land oder die Applikation angegeben werden. Diese
Bedingungen werden auch als Filterwerte bezeichnet.

(C) SAP AG BC425 6


9.7
Business Add Ins: Ablauf eines Programm-Exits
Anwendungsprog.
Service-Klasse
CL_EXITHANDLER

1 Abarbeiten aktiver
Implementierungen

Instanz von
BAdI-Klasse BAdI: Instanz von
<badi-class> Implement.
Implement. Klasse

 SAP AG 2006

 In diesem Bild ist der Ablauf eines Programmes dargestellt, das einen BAdI-Aufruf enthält. Um die
Möglichkeiten und Grenzen von Business Add Ins zu verstehen, kann dieses Bild verwendet werden.
 Nicht dargestellt: Im Deklarationsteil muss eine Referenzvariable mit Bezug auf das BAdI-Interface
deklariert sein.
 In einem ersten Schritt wird eine Objektreferenz erzeugt. Das übernimmt die von SAP ausgelieferte
Service-Klasse CL_EXITHANDLER. Auf die genaue Syntax gehen wir auf einer anderen Folie ein.
Damit sind die Voraussetzungen geschaffen, um die Methoden der Programmerweiterung
aufzurufen.
 Bei der BAdI-Definition wird die sogenannte BAdI-Klasse generiert, die das Interface
implementiert. In dem mit (2) gekennzeichneten Aufruf wird die Interface-Methode der BAdI-Klasse
aufgerufen. Die BAdI-Klasse sucht ihrerseits alle zu dem Business Add In vorhandenen aktiven
Implementierungen und ruft die implementierten Methoden auf.

(C) SAP AG BC425 7


9.8
Überblick Menü-Exits

SAP Kunde

Menu 1 Menu 2 Menu 3 Menu 1 Menu 2 Menu 3


Funktion
Funktion11 Funktion
Funktion11
Funktion
Funktion22 Funktion
Funktion22
Funktion
Funktion33 Funktion
Funktion33
Kundenfunktion

 SAP AG 2006

 Menü-Exits erlauben es ihnen, eigene Funktionalitäten über eigene Menüeinträge in SAP-Menüs zu


realisieren. Der SAP-Anwendungsprogrammierer reserviert hierzu in der GUI-Oberfläche bestimmte
Menüeinträge. Den entsprechenden Eintragstext können Sie selbst bestimmen.
 Die Menü-Exits werden von Ihnen aktiviert und sind ab diesem Zeitpunkt im SAP-Menü sichtbar.
Beim Auswählen des entsprechenden Menüpunktes wird in einen Programm-Exit verzweigt, in dem
die kundeneigene Funktionalität realisiert ist.

(C) SAP AG BC425 8


9.9
BAdI: Menü-Exit (Überblick)

SAP Kunde

Menu 1 Menu 2 Menu 3 Menu 1 Menu 2 Menu 3


Function
Function11 Function
Function11
Function
Function22 Function
Function22
Function
Function33 Function
Function33
Kundenfunktion

 SAP AG 2006

 Analog zu Customer-Exits können sie auch bei Business Add Ins Menü-Erweiterungen nutzen. Dazu
müssen folgende Voraussetzungen vorliegen:
 Der Entwickler des zu erweiternden Programms muss die Erweiterung vorgedacht haben.
 Die Menü-Erweiterung muss in einer BAdI-Implementierung implementiert sein.

(C) SAP AG BC425 9


9.10
Überblick Dynpro-Exit

SAP Kunde

SAP SAP

Feld 1 Feld 1
Feld 2 Feld 2

Feld X
Feld Y

 SAP AG 2006

 Dynpro-Exits erlauben en ihnen, vom SAP-Anwendungsprogrammierer reservierte Bereiche


(Subscreenbereiche) eines Hauptdynpros selbst zu gestalten. In diesen Bereichen können
weitergehende Informationen angezeigt oder Daten erfaßt werden. Die hierzu nötigen Felder werden
von ihnen auf einem kundeneigenen Dynpro (Subscreen) gestaltet.

(C) SAP AG BC425 10


9.11
BAdI-Dynpro-Exit: Prinzip

SAP- BadI-Klasse Implementierendes


Anwendungs- SET INSTANCE <badi-class> Programm
Programm GET INSTANCE (Funktionsgruppe)

PBO GET DATA PBO


PUT DATA

Statisches
Attribut:
Attribut:
Dynpro-
Dynpro-Instanz
abcd PUT DATA PAI
PAI
GET DATA

PUT DATA GET DATA

Implement. Klasse

Instanz-
Instanz- Attribute:
Dynpro-
Dynpro- Daten

 SAP AG 2006

 Die ABAP Virtual Machine kennt keine klassengebundenen Dynpros. Als Träger von Dynpros
können somit nur "klassische" Programme (Typ 1, F, M) verwendet werden. Dynpro-Erweiterungen
müssen diesen Umstand berücksichtigen.
 Analog zu Customer-Exits reserviert der Anbieter bei BAdI-Dynpro-Erweiterungen auf dem Dynpro
des Anwendungsprogrammes einen Subscreen-Bereich, der mit einem Subscreen des
Implementierers belegt wird. Die Kommunikation erfolgt hier jedoch nicht mehr direkt zwischen
Anwendungsprogramm und Trägerprogramm des Subscreens. Sie erfolgt über die generierte BAdI-
Klasse.
 Auf den folgenden Graphiken wird diese Kommunikation Schritt für Schritt abgebildet.

(C) SAP AG BC425 11


9.12
Modifizieren vs. Kopieren

Anbindung Projekt-
Projekt-
an SAP sicherheit

Modifizieren Kopieren

 SAP AG 2006

 Modifizieren hat gegenüber Kopieren den Vorteil, daß Ihr produktives Repository-Objekt nicht den
Anschluß an den SAP-Standard verliert. Kopieren auf der anderen Seite hat den Vorteil, daß kein
Modifikationsabgleich in den folgenden Upgrades für Ihr produktives Repository-Objekt auftreten
wird.
 Sie werden das Kopieren dem Modifizieren vorziehen, wenn
 Sie im SAP-Programm an vielen Stellen Änderungen vornehmen müssen
 Ihre Anforderungen auch in zukünftigen R/3-Releases nicht mit dem Standard übereinstimmen
werden.
 Beachten Sie beim Kopieren das Umfeld von Repository-Objekten. So müssen Sie die Entscheidung,
ob Sie modifizieren oder kopieren, nicht nur für das Rahmenprogramm, sondern auch für alle
Includes des Rahmenprogramms beantworten. Gleiches gilt Funktionsgruppen bzw.
Funktionsbausteine.

(C) SAP AG BC425 12


9.13
Bewertung von ABAP Entwicklungsprojekten

 Fragen vor Entwicklungsprojekt:


 Alternativen:

 Implementierungsaufwand?
 Customizing
 Folgenabschätzung:
 Personalizing
Performance
 Erweiterungstechniken:
Aufwand beim Upgrade
Customer-Exits
Business Transaction
Events
Business Add Ins

 SAP AG 2006

 ABAP-Entwicklungsprojekte können nach folgenden Kriterien bewertet werden:


 Wie aufwendig ist die Implementierung, gemessen in Personentagen (Konzepterstellung,
Realisierung, Test)?
 Welche Folgen hat das ABAP-Entwicklungsprojekt für
 die Performance des Produktivbetriebs
 den Aufwand beim Upgrade?
 Rufen Sie SAP-Objekte in Ihrem Repository-Objekt, so können Sie Ihren Implementierungsaufwand
erheblich reduzieren. Änderungen an Repository-Objekten durch SAP können aber nach dem
Upgrade zu Nacharbeit führen. Beispiel: SAP ändert die Oberflächengestaltung eines Dynpros, für
das Sie ein Batch-Input-Programm geschrieben haben.

(C) SAP AG BC425 13


9.14
Namenskonventionen für Repository-Objekte

Zentrale YA Anwendungs-
bereich
SAP
Filiale ZA
SAP Standard

zentral
Kundennamensraum
Software (gemäß Hinweis 16466)

dezentral
V_TRESN
Namensraumreservierung
durch Workbench Organizer

Entwicklung
SAP Partner
/xxxx/
Namensraumreservierung
durch SAPNet R/3 Frontend
Complementary
Software

 SAP AG 2006

 Durch die Einführung von Namenskonventionen vermeiden Sie Namenskonflikte und geben Ihren
Repository-Objekten sprechende Namen.
 Folgende Namenskonflikte können auftreten:
 Namenskonflikt von SAP Repository-Objekt und kundeneigenem Repository-Objekt
Repository-Objekte der SAP werden von kundeneigenen Repository-Objekten durch
Namenskonventionen abgegrenzt. Hinweis OSS 16466 liefert eine Übersicht der aktuellen
Namenskonventionen aller Repository-Objekte (in der Regel Y oder Z am Anfang des Namens).
 Namenskonflikt von kundeneigenen Repository-Objekten
In dezentralen Entwicklungsszenarien mit mehreren Entwicklungssystemen können
Namenskonflikte innerhalb der kundeneigenen Repository-Objekte auftreten. Diese kann der Kunde
durch die Reservierung von Namensräumen für Entwicklungsbereiche innerhalb des
Kundennamensraums entschärfen. Durch Einträge im View V_TRESN kontrolliert der Workbench
Organizer die Einhaltung der Namensräume.
 Namenskonflikt von Complementary Software und kundeneigenen Repository-Objekten
Namenskonflikte durch das Einspielen von Complementary Software von SAP Partnern können nur
durch Reservierung von Namensräumen im SAP OSS gelöst werden. Dazu kann der SAP- Partner ab
Release 4.0 einen Namenspräfix im SAP OSS beantragen, den er all seinen Repository- Objekten
voranstellt (OSS Hinweise 84282 und 91032, White Paper Entwicklungsnamensräume im R/3-
System, Bestellnummer E:50021723 bzw. D:50021751).

(C) SAP AG BC425 14


9.15
Zusammenfassung: Zusammenfassung des Kapitels

Sie können nun:


 die wesentlichen Inhalte dieses Kurses
zusammenfassen
 beschreiben, wie Sie bei Änderungen am SAP
Standard vorgehen sollten
 die Vor- und Nachteile von Modifikationen
aufzählen
 die Alternativen zu Modifikationen nennen

 SAP AG 2006

(C) SAP AG BC425 15


10
Anhang

Inhalt:
 Neuerungen im Bereich "Erweiterung"
zu SAP NetWeaver Application Server 7.0
 Feld-Exits
 Append-Suchhilfen

 SAP AG 2006

(C) SAP AG BC425 1


10.2
Neuerungen im Bereich "Erweiterung" zu 7.0:
Lernziele

Nach Behandlung dieses Themas können Sie:

 die Neuerungen im Bereich "Erweiterung" zu


SAP NetWeaver Application Server 7.0 aufzählen
 erläutern, wo implizite Enhancement Points
vorliegen und wie man sie zur Erweiterung der
SAP-Software verwenden kann
 erläutern, wie explizite Enhancement Points und
Enhancement Sections zur Erweiterung der SAP-
Software verwendet werden können
 erklären, warum SAP zu 7.0 die neue BAdI-
Technik eingeführt hat und wie man neue BAdIs
zur Erweiterung der SAP-Software nutzt

 SAP AG 2006

 In diesem Abschnitt lernen Sie die Vorzüge und die Nutzung der neuen Erweiterungsmöglichkeiten
sowie der neuen BAdI-Technik kennen, die es ab SAP NetWeaver Application Server 7.0 gibt.

(C) SAP AG BC425 2


10.3
Neues Erweiterungskonzept (Überblick)

Erweiterungen im Enhancement Framework

implizite Enhancement Points

explizite Enhancement Points

explizite Enhancement Sections Verwaltung über Enhancement Spots

neue BAdIs Enhancement Spot A


Enhancement Spot B
explizite
klassische BAdIs Enhancement
neue BAdIs
Points/Sections

zusammen gesetzter Enhancement Spot X

Enhancement Spot C
Enhancement Spot D

 SAP AG 2006

 Zu SAP NetWeaver Application Server 7.0 sind einige neue Erweiterungsmöglichkeiten


hinzugekommen: Enhancement Points und Enhancement Sections.
 Besonders interessant ist die Tatsache, dass Erweiterungen über implizite Enhancement Points im
Gegensatz zu Erweiterungen, die mit bisherigen Erweiterungstechniken realisiert worden sind,
keinerlei Vorbereitung seitens SAP erfordert.
 Ferner hat SAP zu SAP NetWeaver Application Server 7.0 aus Performance- und anderen Gründen,
die später noch erläutert werden, die neue BAdI-Technik eingeführt.
 Obige Grafik zeigt, dass explizite Enhancement Points und Sections sowie BAdIs, die mit Hilfe der
neuen Technik erstellt worden sind, in Enhancement Spots zusammengefasst sind und über diese
verwaltet werden. Zusammengesetzte Enhancement Spots umfassen jeweils einfache Enhancement
Spots und/oder andere zuasmmengesetzte Enhancement Spots. Sie dienen der semantischen
Bündelung von Enhancement Spots.
 Bisherige BAdIs (klassische BAdIs) existieren nach wie vor im System. Doch wird SAP in Zukunft
nur noch BAdIs mit Hilfe der neuen Technik realisieren.
 Bitte beachten Sie, dass Elemente der zentralen Basis generell nicht erweiterbar sind.
 Dokumentation zum neuen Erweiterungskonzept finden Sie wie folgt :
Info-Taste im ABAP-Editor -> als Suchbegriff "Erweiterungskonzept" eingeben
-> Glossareinträge: "Erweiterungskonzept" -> "Mehr dazu"

(C) SAP AG BC425 3


10.4
Enhancement Points

Enhancement Point :
Möglichkeit zur modifikationsfreien Einfügung von
- Quelltext
- Variablen- / Parameterdeklaration
in SAP-Programmen , SAP-Funktionsbausteinen und SAP-Methoden

implizit : ohne SAP-Vorbereitung vorhanden


SAP-Objekt explizit : von SAP-Entwickler vorbereitet

. . .

""""""""""""""""""""""" ... Kunden-Coding


impliziter Enhancement Point

...
ENHANCEMENT-POINT EP_A SPOTS ESPOT_X. Kunden-Coding
expliziter Enhancement Point

...
 SAP AG 2006

 Ein Enhancement Point ist eine Möglichkeit, in SAP-Programmen, -Funktionsbausteinen und -


Klassen modifikationsfrei Quelltext, Variablen- bzw. Parameterdeklarationen hinzuzufügen.
 Explizite Enhancement Points sind von SAP vorbereitete Einfügemöglichkeiten, während implizite
Enhancement Points an bestimmten Stellen von SAP-Objekten standardmäßig, d.h. ohne SAP-
Vorbereitung, vorhanden sind.

(C) SAP AG BC425 4


10.5
Implizite Enhancement Points (1)

am Ende einer Struktur(typ)-Deklaration vor "END OF ..."


(zur Aufnahme von Zusatzfeldern)

am Anfang und Ende von


- Unterprogrammen
- Funktionsbausteinen
- Methoden lokaler / globaler Klassen
(zum Hinzufügen von Zusatzfunktionalität)

am Ende des IMPORTING-/EXPORTING-/CHANGING-Deklarationsblocks


von Methoden lokaler Klassen
(zur Aufnahme von zusätzlichen Schnittstellenparametern)

in Schnittstellen-Definitionen von
- Funktionsbausteinen
- Methoden globaler Klassen
(zur Aufnahme von zusätzlichen Schnittstellenparametern)
...
 SAP AG 2006

 Die obige sowie nächste Abbildung zeigen, an welchen Stellen implizite Enhancement Points
vorliegen. Die Nutzung eines impliziten Enhancement Point geschieht durch Realisierung einer
Erweiterungsimplementierung. Im Folgenden wird die jeweilige Vorgehensweise zur Nutzung der
verschiedenen impliziten Enhancement Points beschrieben.
 Nutzung von impliziten Enhancement Points, über die Quelltexte eingefügt werden können
(Implizite Source Code Plugins) :
- SAP-Objekt (Programm, Funktionsbaustein, Methode) anzeigen lassen
- Im GUI-Status Taste für Erweiterung betätigen
- Über Menü "Bearbeiten -> Erweiterungsoperationen -> Implizite Erw.Optionen einblenden" die
impliziten Erweiterungsmöglichkeiten einblenden
- Über Kontextmenü des Editors Erweiterungsimplementierung anlegen
- Quelltext einfügen
- Im GUI-Status Taste "Aktivieren Erweiterungen" betätigen
Achtung: Bei Erweitern einer Struktur(typ)-Deklaration direkt vor "END OF ..." muss die Syntax
"DATA <Zusatzfeld> TYPE <Typ>." verwendet werden !
 Schnittstellenerweiterung von SAP-Funktionsbausteinen und Methoden globaler Klassen :
Im Function bzw. Class Builder über Menü "Funktionsbaustein -> Erweitern Schnittstelle" bzw.
"Klasse -> Erweitern" neue Schnittstellenparameter samt Typisierung hinzufügen.
(Solche hinzugefügten Schnittstellenparameter sind generell optional und können in Quelltext-
erweiterungen des/der zugehörigen Funktionsbausteins bzw. Methode angesprochen werden.)

(C) SAP AG BC425 5


10.6
Implizite Enhancement Points (2)

...
am Ende der Public / Protected / Private Section einer lokalen Klasse
(zur Definition von Zusatzattributen und -methoden)

Zu globalen Klassen können beliebige


- Zusatzattribute
- Zusatzmethoden
definiert werden.

Zu einer Methode einer globalen Klasse können eine


- Pre-Methode und / oder
- Post-Methode
definiert werden. (Automatische Ausführung zum Methodenbeginn/-ende)
Alternativ : Definition einer Overwrite-Methode (Ersetzung der SAP-Methode)

am Ende des IMPLEMENTATION-Blocks einer lokalen Klasse


(zur Implementierung von zusätzlich deklarierten Methoden)

am Ende von Includes


(zur Implementierung von Zusatzfunktionalität)
 SAP AG 2006

 Definition von Zusatzattributen/-methoden globaler Klassen :


- Im Class Builder über Menü "Klasse -> Erweitern" Zusatzattribute und -methoden definieren.
- Per Doppelklick auf eine Zusatzmethode verzweigen Sie in den Methodeneditor zur
Implementierung.
Solche Zusatzattribute bzw. -methoden können in Quelltexterweiterungen von Methoden der
globalen Klasse angesprochen werden.
 Definition einer Pre-/Post-/Overwrite-Methode zur Methode einer globalen Klasse :
- Im Class Builder über Menü "Klasse -> Erweitern" den Erweiterungsmodus einschalten
- Gewünschte SAP-Methode mit Cursor markieren
- Menü "Bearbeiten -> Erweiterungsoperationen -> Pre-(Post-/Overwrite-)Methode einfügen"
wählen
- Neu hinzu gekommene Drucktaste in der Spalte "Pre-(Post-/Overwrite-)Exit" betätigen, um die
entsprechende Methode zu implementieren
Es können pro SAP-Methode eine Pre- und/oder eine Post-Methode definiert werden. Alternativ
dazu können Sie eine Overwrite-Methode erstellen, die die SAP-Methode ersetzt. Solche Methoden
werden an den beschriebenen Stellen der SAP-Methode automatisch aufgerufen. Sie sind
Instanzmethoden einer automatisch generierten, lokalen Klasse und verfügen über ein Attribut
namens CORE_OBJECT, das eine Referenz auf die aktuelle Instanz der SAP-Anwendung ist.

(C) SAP AG BC425 6


10.7
Explizite Enhancement Points und Sections

SAP-Objekt
...
ENHANCEMENT-POINT EP_A SPOTS ESPOT_X. Kunden-Coding
expliziter Enhancement Point

...

ENHANCEMENT-SECTION ES_B SPOTS ESPOT_X.


... Kunden-Coding
... ersetzbares SAP-Coding

END-ENHANCEMENT-SECTION.
Enhancement Section
(ausschließlich explizit)
...

Enhancement Section :
Möglichkeit zur modifikationsfreien Ersetzung von SAP-Quelltext
in SAP-Programmen , SAP-Funktionsbausteinen und SAP-Methoden
 SAP AG 2006

 Ein expliziter Enhancement Point ist eine von SAP vorgedachte Möglichkeit zur modifikationsfreien
Erweiterung des SAP-Quelltextes. Eine explizite Enhancement Section ist eine von SAP vorgedachte
Möglichkeit zur modifikationsfreien Ersetzung des SAP-Quelltextes.
Es gibt keine impliziten Enhancement Sections.
 Explizite Enhancement Points und Sections sind stets in Enhancement Spots eingebettet.
 Explizite Enhancement Points und Sections, die Quelltexterweiterung/-ersetzung ermöglichen,
heißen dynamisch. Explizite Enhancement Points und Sections, die Deklarationserweiterung/-
ersetzung ermöglichen, heißen statisch.
 Die Nutzung von expliziten Enhancement Points und Sections geschieht durch Realisierung einer
Erweiterungsimplementierung (Implementierung des übergeordneten Enhancement Spot).
Folgende Schrittfolge beschreibt die Vorgehensweise zur Nutzung von expliziten Enhancement
Points und Enhancement Sections :
- SAP-Objekt (Programm, Funktionsbaustein, Methode) anzeigen lassen
- Gewünschte(n) Enhancement Point/Section suchen
- Im GUI-Status Taste für Erweiterung betätigen
- Über Kontextmenü des/der Enhancement Point/Section Erweiterungsimplementierung anlegen
- Name der Erweiterungsimplementierung angeben
- Quelltext eingeben
- Im GUI-Status Taste "Aktivieren Erweiterungen" betätigen

(C) SAP AG BC425 7


10.8
Gründe für die neue BAdI-Technik

Warum neue BAdI-Technik ?

Performance-Steigerung

Realisierung von Zusatzfunktionalitäten


- erweitertes Filterkonzept
- Möglichkeit, von Beispiel-Implementierungsklasse zu erben
(selektive Methoden-Redefinition !)
- ...

Integration ins neue Enhancement Framework


(zusammen mit Enhancement Points und Enhancement Sections)

Integration ins Switch Framework

 SAP AG 2006

 Zu SAP NetWeaver Application Server 7.0 hat SAP die neue BAdI-Technik vor allem aus Gründen
der Performance und Funktionalitätserweiterung eingeführt. Obige Abbildung zeigt die Gründe im
Einzelnen.
 Die Integration der neuen BAdIs sowie der Enhancement Points und Enhancement Sections ins
Enhancement Framework ermöglicht die Nutzung der neuen Erweiterungsmöglichkeiten innerhalb
eines einheitlichen Werkzeugs.
 Die Integration der neuen Erweiterungstechnik ins Switch Framework erlaubt die Ein- und
Ausschaltung der von Industrie-Lösungen realisierten BAdI-Implementierungen über Schalter (siehe
später).
 Zwar werden bisherige, mit der klassischen Technik erstellte BAdIs im System erhalten bleiben,
doch werden in der Zukunft neue Erweiterungen nur noch mit der neuen BAdI-Technik bzw. über
explizite Enhancement Points und Enhancement Sections realisiert werden.

(C) SAP AG BC425 8


10.9
Klassische BAdIs (Architektur)
BAdI-Definition (SAP) Instanz der IS-
Implementierungsklasse
BAdI-Interface IF_EX_<BAdI-Name>
BAdI-Interface
Methode ABC
Methode ABC
nur Hülle, d.h. nur Name + Schnittstelle
(kein Coding) (IS-Coding)

Aktivieren
Instanz der Partner-
BAdI-Adapterklasse CL_EX_<BAdI-Name> Implementierungsklasse
- enthält BAdI-Interface BAdI-Interface
- automatisch generiertes Coding für ABC
( Brückenmethode zum Aufruf von Methode ABC
zugehörigen Implementierungsmethoden )
(Partner-Coding)

Instanz der Adapterklasse


SAP-Anwendungsprogramm Instanz der Kunden-
... BAdI-Interface Implementierungsklasse
1 Erzeugung einer Instanz der BAdI-Interface
Adapterklasse Methode ABC
... Methode ABC
(Brückenmethode)
2 Aufruf der Brückenmethode (Kunden-Coding)
...
 SAP AG 2006

 In der klassischen BAdI-Technik wird bei der Definition des BAdI bzw. BAdI-Interface die
sogenannte BAdI-Adapterklasse automatisch generiert.
 Im SAP-Anwendungsprogramm wird dann zur Laufzeit eine Instanz der Adapterklasse erzeugt und
von ihr die Interface-Methode(n) aufgerufen. Diese wiederum ruft nacheinander die gleichnamigen
Methoden aktiver Implementierungen auf.

(C) SAP AG BC425 9


10.10
Klassische BAdIs (Aufrufsyntax im SAP-Objekt)

SAP-Anwendungsprogramm

...
DATA r_exit TYPE REF TO <badi-interface> .
...

CALL METHOD cl_exithandler=>get_instance


CHANGING
Instanz der Adapterklasse
instance = r_exit . erzeugen

...

CALL METHOD r_exit->abc


EXPORTING Aufruf der Brückenmethode
... (BAdI-Aufruf)

IMPORTING
...

...
 SAP AG 2006

 Obige Grafik zeigt die Aufrufsyntax klassischer BAdIs im SAP-Programm.

(C) SAP AG BC425 10


10.11
Neue BAdIs (Architektur)
Instanz der IS-
BAdI-Definition innerhalb
Implementierungsklasse
eines Enhancement Spot (SAP)
BAdI-Interface
BAdI-Interface
Methode ABC
Methode ABC
(IS-Coding)
nur Hülle, d.h. nur Name + Schnittstelle
(kein Coding)
Instanz der Partner-
Implementierungsklasse

BAdI-Interface

BAdI-Handle Methode ABC


(im Kernel)
SAP-Anwendungsprogramm (Partner-Coding)

.. Methode ABC
.
1 Beschaffen BAdI-Handle ... Instanz der Kunden-
Implementierungsklasse
...
BAdI-Interface
2 Methodenaufruf am BAdI-Handle
.. Methode ABC
.
(Kunden-Coding)
 SAP AG 2006

 Die neue BAdI-Technik funktioniert völlig analog zur klassischen. Nur wird hier keine
Adapterklasse mehr erstellt, was ihre Instanzierung durch das SAP-Anwendungsprogramm erspart.
Stattdessen wird zur Laufzeit des Anwendungsprogramms ein im Kernel befindliches BAdI-Handle
beschafft, das die gleiche Funktion wie die Adapterklasse übernimmt, jedoch wesentlich
performanter die vorhandenen Implementierungsmethoden aufruft.

(C) SAP AG BC425 11


10.12
Neue BAdIs (Aufrufsyntax im SAP-Objekt)

SAP-Anwendungsprogramm
...
DATA r_exit TYPE REF TO <badi-name> .
...

TRY.
GET BADI r_exit. BAdI-Handle beschaffen

CATCH cx_badi_not_implemented.
...
ENDTRY.
...

TRY.
CALL BADI r_exit->abc Methodenaufruf
... am BAdI-Handle

CATCH cx_badi_initial_reference.
...
ENDTRY.

...
 SAP AG 2006

 Obige Grafik zeigt die Aufrufsyntax neuer BAdIs im SAP-Programm.


 Wird bei GET BADI keine aktive Implementierung des BAdI gefunden, wird die Ausnahme
cx_badi_not_implemented ausgelöst.
 Ist bei CALL BADI die Handle-Referenz initial (z.B. weil GET BADI nicht erfolgreich war), wird
die Ausnahme cx_badi_initial_reference ausgelöst.

(C) SAP AG BC425 12


10.13
Suche nach BAdIs

Freie Suche : SE84


Auflistung frei selektierter BAdIs bzw. Enhancement Spots

Anwendungsbezogene Suche : SE81 -> SE84


Auflistung anwendungsbezogener BAdIs bzw. Enhancement Spots

Programmbezogene Suche :

1. Globale Suche nach ' GET BADI '


(ggfs auch in gerufenen Funktionsbausteinen und Methoden)

2. Per Doppelklick auf Referenzvariable zur Variablendefinition navigieren

3. Per Doppelklick auf BAdI-Name zur Anzeige des zugehörigen


Enhancement Spot navigieren

 SAP AG 2006

 Obige Abbildung zeigt die Vorgehensweise bei der Suche nach BAdIs.

(C) SAP AG BC425 13


10.14
Nutzung von BAdIs

Schritte zum Anlegen einer BAdI-Implementierung (BAdI-Nutzung) :


1. Zugehörigen Enhancement Spot anzeigen lassen
2. Über Taste "Erweiterungsspot implementieren" (F6)
Erweiterungsimplementierung anlegen
3. Name für Erweiterungsimplementierung angeben
4. Name für BAdI-Implementierung(en) angeben
5. Attribute für BAdI-Implementierung(en) pflegen
6. Im Navigationsbereich zum gewünschten BAdI die zugehörige
Komponente " Implementierende Klasse " anklicken
7. Name der implementierenden Klasse angeben
und Änderungstaste betätigen
(ggfs von Beispielklasse erben bzw. diese kopieren lassen)

8. Methode(n) per Doppelklick implementieren / anpassen


9. Methode und alles Zugehörige samt Erweiterungsimplementierung
aktivieren
 SAP AG 2006

 Um ein gefundenes BAdI zu nutzen, muss eine Erweiterungsimplementierung (Implementierung des


übergeordneten Enhancement Spot) realisiert werden. Dabei wird für die im Spot befindlichen
BAdIs je eine BAdI-Implementierung realisiert.
 Die Beschreibungen zur Suche und Nutzung von BAdIs beziehen sich auf Programmexits (häufigste
Exit-Art). Die Suche und Implementierung von Menü- und Dynpro-Exits verlaufen völlig analog zur
klassischen BAdI-Technik bzw. zum oben Beschriebenen. Lediglich muss bei Dynpro-Exit im PBO
des Kunden-Subscreen-Dynpros statt der Methode GET_INSTANCE_FOR_SUBSCREENS die
Anweisung GET BADI benutzt werden, um das BAdI-Handle für den Datentransport zu bekommen.

(C) SAP AG BC425 14


10.15
Filterabhängige BAdIs

BAdI-Definition
Interface IF_ . . . mit Methode ABC

Filter : Beis Obligatorische


piel
COUNTRY Filterwertangabe
( mit Filterwerten aus Wertetabelle T005
in Implementierungen !
des Datenelements / der Domäne LAND1
-> DE, GB, US, . . . ) Implementierungen
zum Filterwert . . .
'DE'
SAP-Anwendungsprogramm
ABC-Implementierung
...
für 'DE'
DATA r_exit TYPE REF TO <badi-name> .
... 'GB'
GET BADI r_exit
ABC-Implementierung
FILTERS für 'GB'
COUNTRY = <aktuelles Land> . (z.B. 'GB ' )
... 'US'
CALL BADI r_exit->abc ABC-Implementierung
... für 'US'
 SAP AG 2006

 Obige Abbildung zeigt das Konzept filterabhängiger BAdIs, das mit dem der klassischen BAdIs
übereinstimmt.
 Doch ist die Funktionalität erweitert worden. Es können nun auch numerische Filter zum Einsatz
kommen.
 Ferner können bei Implementierungen nicht nur einzelne Filterwerte, sondern auch
Filterbedingungen unter Nutzung der Operatoren <>, >, <, >=, <=, CP, NP angegeben werden.
 Außerdem können zu einem BAdI mehrere Filter definiert werden.

(C) SAP AG BC425 15


10.16
Switch Framework

Business Function Set


( Industrie-Lösung ) Aktivieren
über SFW5

Business Function 1

Schalter A Paket X

Schalter B Menü-Einträge

Schalter C Dynpro-Elemente

Business Function 2

Schalter D Paket Y

Schalter E Menü-Einträge

 SAP AG 2006

 Das Switch Framework wurde konzipiert, um SAP-Kunden die Möglichkeit zu geben, eine
Industrie-Lösung bzw. Enterprise Add Ons zur Nutzung einzuschalten statt sie installieren zu
müssen.
 Obige Grafik zeigt den Zusammenhang zwischen einzelnen Repository-Objekten, Schaltern,
Business Functions und Business Function Sets (Industrie-Lösungen). Über die Transaktion SFW5
können Industrie-Lösungen bzw. Enterprise Add Ons eingeschaltet werden. Erst dann sind die
zugehörigen Repository-Objekte verfügbar.
 Dies hat im Zusammenhang mit den neuen Erweiterungsmöglichkeiten folgende Auswirkung :
Befinden sich Erweiterungsimplementierungen in einem switchbaren Paket, so werden diese nur
dann im System wirksam, wenn die entsprechende Business Function eingeschaltet ist.

(C) SAP AG BC425 16


10.17
Übung: Implizite Enhancement Points

Implizite Enhancement Points zur Erweiterung von SAP-Quelltexten verwenden

1. Analysieren Sie den Quelltext des SAP-Programms SAPD70AW_##_ISP.


( ## steht für Ihre zweistellige Gruppennummer. )

2. Ergänzen Sie unter Verwendung des entsprechenden impliziten Enhancement Point die Definition
der Strukturvariablen mystr um die Felder cityfrom und cityto (Feldtypisierung jeweils mit
Datenelement S_CITY).
Wählen Sie dabei ZBC425_##_ISP als Name für Ihre Erweiterungsimplementierung.

3. Bewerten Sie (unter Verwendung des entsprechenden impliziten Enhancement Point) im


Unterprogramm vor der Ausgabe der Felder carrid und connid die Zusatzfelder cityfrom und cityto
des Formalparameters f_str.

4. Geben Sie (unter Verwendung des entsprechenden impliziten Enhancement Point) im


Unterprogramm nach Ausgabe der Felder carrid und connid auch fldate, cityfrom und cityto mit
aus.

Lösung: siehe Vorgehensweise in Kursunterlagen

 SAP AG 2006

(C) SAP AG BC425 17


10.18
Übung: Explizite Enhancement Points und
Enhancement Sections

Explizite Enhancement Points und Enhancement Sections zur Erweiterung bzw.


Ersetzung von SAP-Quelltexten verwenden

1. Analysieren Sie den Quelltext des SAP-Programms SAPD70AW_##_ESP.


( ## steht für Ihre zweistellige Gruppennummer. )

2. Verwenden Sie den expliziten Enhancement Point D70AW_##_EP1, um die Felder distance und
distid mit auszugeben.
Wählen Sie dabei ZBC425_##_ESP als Name für Ihre Erweiterungsimplementierung.

3. Verwenden Sie die explizite Enhancement Section D70AW_##_ES1, um einen anderen Text als
von SAP vorgesehen auszugeben.

Lösung: siehe Vorgehensweise in Kursunterlagen

 SAP AG 2006

(C) SAP AG BC425 18


10.19
Übung: Neue BAdIs

Nach neuen BAdIs suchen und sie zur Funktionalitätserweiterung verwenden

1. Suchen Sie in dem SAP-Programm SAPD70AW_##_BADI nach einem BAdI-Programmexit.


( ## steht für Ihre zweistellige Gruppennummer. )

2. Lassen Sie sich den übergeordneten Enhancement Spot samt BAdI-Definition anzeigen.

3. Legen Sie eine Erweiterungsimplementierung (zum Spot) mit einer BAdI-Implementierung


(zum BAdI) an.
Name der Erweiterungsimplementierung : ZBC425_##_ESPOT_BADI
Name der BAdI-Implementierung : ZBC425_##_BADI

4. Realisieren Sie die BAdI-Implementierung so, dass weitere Felder der internen Tabelle
ausgegeben werden.
Hinweis: Sie können wahlweise
- die vorhandene Beispielimplementierungsklasse zu Ihrer Implementierungsklasse
kopieren lassen und die kopierte Methode anpassen oder
- eine leere Implementierungsklasse anlegen lassen und die Methode selbst
implementieren.

Lösung: siehe Vorgehensweise in Kursunterlagen

 SAP AG 2006

(C) SAP AG BC425 19


10.20
Feld-Exits: Lernziele

Nach Behandlung dieses Themas können Sie:

 Feld-Exits für Prüfungen auf ein Dynpro-Feld


verwenden

 SAP AG 2002

(C) SAP AG BC425 20


10.21
Globale Erweiterungen

SAP Kunde

Globale
Datenelement Erweiterungen
definieren definieren

Datenelement Feld-Exit anlegen


dokumentieren

 SAP AG 1999

 Der SAP-Anwendungsprogrammierer legt bei der Definition eines Datenelements Schlüsselwörter in


verschiedenen Längen und einen Kurztext fest.
 In der Projektverwaltung können Sie Feld-Exits anlegen. Diese werden durchlaufen, wenn ein
Dynpro verlassen wird, das ein Feld enthält, welches sich auf ein Datenelement bezieht, das
wiederum diesen Feld-Exit enthält.

(C) SAP AG BC425 21


10.22
Feld-Exits

ABAP Dictionary

Abflugstadt___
Ankunftstadt__

? – Prüfung

FUNCTION FIELD_EXIT_...
Feldformat- * IMPORTING INPUT *
Prüfung * EXPORTING OUTPUT *
****************************

MESSAGE E035(bc425).
Feld-Exit
ENDFUNCTION.

 SAP AG 2006

 SAP ermöglicht Ihnen, zu jedem eingabebereiten Dynprofeld mit Bezug auf das ABAP Dictionary
einen Feld-Exit anzulegen. Die zusätzliche Programmlogik wird in einem Funktionsbaustein
hinterlegt und zu einem bestimmten Zeitpunkt bei PAI durchlaufen.
 Die Grafik verdeutlicht die Reihenfolge der Abarbeitung: Bevor die bei PAI des Dynpros definierten
Module ausgeführt werden, werden systemseitig Prüfungen durchgeführt: Zunächst prüft das
System, ob alle Muss-Felder ausgefüllt sind. Ist ein Muss-Feld leer, wird der Bildschirm wieder
gesendet.
 Als nächstes prüft das System, ob die Eingaben im richtigen Format getätigt wurde.
 Im nächsten Schritt werden alle Feld-Exits abgearbeitet. Hier können Sie zum Beispiel durch Senden
einer Fehlermeldung erreichen, dass das Dynpro nochmals gesendet wird.
 Nach erfolgreichem Verlassen aller Feld-Exits werden die weiteren Schritte wie gewohnt
abgearbeitet
 Feld-Transport
 Fremdschlüssel-Prüfung
 Abarbeiten der PAI-Module des Dynpros.

(C) SAP AG BC425 22


10.23
Globale und lokale Feld-Exits

Program one

FIELD_EXIT_GLOB
Abflugstadt___
Datenelement Ankunftstadt__
GLOB
Program two

Fluggesellschaft_
FIELD_EXIT_
Abflugstadt___
Ankunftstadt__
LOC_1
Program three
Datenelement
Abflugstadt___ LOC

Nichtraucher
Raucher
egal
FIELD_EXIT_LOC_2

 SAP AG 1999

 Feld-Exits sind Verzweigungen von einem Dynprofeld mit Datenelementbezug in einen


Funktionsbaustein. Diese Verzweigungen können global oder lokal gelten:
 Globale Feld-Exits sind nicht auf ein Dynpro beschränkt: Gibt es mehrere Dynpros mit Feldern, die
sich auf dasselbe Datenelement beziehen, wird nach Aktivierung des Feld-Exits bei all diesen
Dynpros in einen Funktionsbaustein verzweigt. Dort kann z.B. der Feldinhalt verarbeitet werden,
durch Ausgeben einer Fehlermeldung (E-Message) eine erneute Eingabe erzwungen werden oder
bestimmten Benutzern durch Prüfen der Berechtigung das Verlassen des Dynpros verweigert
werden.
 Im Gegensatz dazu wirken lokale Feld-Exits jeweils auf ein Dynpro beschränkt. Wird ein Dynpro
einem Feld-Exit zugeordnet, so wird nur auf diesem Dynpro nach Aktivierung des Feld-Exits in den
entsprechenden Funktionsbaustein verzweigt.
 Sie können entweder einen globalen oder bis zu 36 lokale Feld-Exits zu einem Datenelement
anlegen, aber nicht beides.
 Die Funktionsbausteine, die für einen Feld-Exit angelegt werden, unterliegen folgender
Namenskonvention:
 Präfix: FIELD_EXIT_
 Infix: <Datenelement-Name>
 Suffix (bei lokalen Feld-Exit): _0 bis _9, _A bis _Z

(C) SAP AG BC425 23


10.24
Anlegen eines Feld-Exits
 Programm RSMODPRF starten

 Feld-Exit  Anlegen
Function Builder

Funktionsbaustein__ FIELD_EXIT_<DE>

Anzeigen Ändern Anlegen


Function Builder

Funktionsbaustein__ FIELD_EXIT_<DE>
Import Parameter
INPUT

Export Parameter
OUTPUT
 SAP AG 1999

 Zum Anlegen von Feld-Exits wählen sie in der ABAP Workbench das Menü Hilfsmittel. Dort finden
Sie unter "Erweiterungen" den Unterpunkt "Projektverwaltung", der als Einstieg sowohl zum
Bearbeiten von Feld-Exits, als auch später zum Implementieren von Customer-Exits fungiert.
 Hier finden Sie unter "Springen  Globale Erweiterungen  Feldexits" die Transaktion zum
Pflegen von Feld-Exits. Legen Sie einen Feld-Exit an über "Feld-Exit  Anlegen".
 In dem nun erscheinenden modalen Dialogfenster geben sie den Namen des Datenelements an, auf
das sich das von ihnen betrachtete Dynpro-Feld bezieht. Sie gelangen in den Function Builder. Das
System gibt den Namen des Feld-Exits vor. Ändern sie diesen Vorschlag nicht. Legen Sie den
Funktionsbaustein in einer Kunden-Funktionsgruppe an.
 Die Schnittstelle des Funktionsbausteins ist fest vorgegeben und nicht änderbar. Der
Funktionsbaustein hat einen Importparameter INPUT und den Exportparameter OUTPUT. Dem
Parameter INPUT wird der Inhalt des Dynpro-Feldes zugewiesen. Beim Verlassen des
Funktionsbausteins wird der Inhalt von OUTPUT in das Dynpro-Feld zurückgestellt.

(C) SAP AG BC425 24


10.25
Feld-Exit: Quelltext

Quelltext

FUNCTION field_exit_<DE>.
...
output = input
ENDFUNCTION.

 In Feld-Exits nicht erlaubte Anweisungen:


BREAK-POINT
CALL ..., SUBMIT
COMMIT WORK / ROLLBACK WORK
STOP, REJECT
Message I, Message W

 SAP AG 1999

 Dem Export-Parameter OUTPUT des Funktionsbausteins muß im Quelltext ein Wert zugewiesen
werden, der zu dem Dynpro-Feld zurücktransportiert wird. Ansonsten wäre das Dynpro-Feld nach
Durchlaufen des Feld-Exit initial.
 Folgende ABAP-Anweisungen in einem Funktionsbaustein eines Feld-Exits nicht erlaubt:
CALL SCREEN, CALL DIALOG, CALL TRANSACTION, SUBMIT
COMMIT WORK, ROLLBACK WORK
COMMUNICATION RECEIVE
EXIT FROM STEP-LOOP
MESSAGE I, MESSAGE W
STOP, REJECT
 Beim Debuggen eines Dynpros, auf welches sich ein Feld-Exit bezieht, wird der Feld-Exit nicht im
Debugger durchlaufen. Wie jeden anderen Funktionsbaustein auch kann man allerdings einen Feld-
Exit in der Testumgebung des Function Builder debuggen.

(C) SAP AG BC425 25


10.26
Lokaler Feld-Exit

Feld-Exits zu den Datenelementen


Prog/Dynp. zuordnen

Data Element Feld-


Feld-Exits
Status zu den Datenelementen
Programm
<Data Element> inaktivDatenelement
global <Data Element>

Feld-Exit Programm-Name Dynpro


1 <program_name> 0100

Function Builder

Funktionsbaustein__ FIELD_EXIT_<DE>_1

Anzeigen Ändern Anlegen

 SAP AG 1999

 Sie können die Wirkung eines Feld-Exits auf ein Dynpro beschränken. Legen sie dazu einen lokalen
Feld-Exit an. Voraussetzung ist, dass schon ein globaler Feld-Exit existiert. Ausgehend von diesem
bearbeiten sie den lokalen Feld-Exit.
 Sie können bis zu 36 lokalen Feld-Exits anlegen, die jeweils durch einen einstelligen Suffix
voneinander unterschieden werden. Das System schlägt Ihnen den entsprechenden Namen für den
Funktionsbaustein vor, den sie unverändert übernehmen.
 Durch das Definieren von lokalen Feld-Exits wird der Funktionsbaustein des zunächst angelegten
globalen Feld-Exits nicht mehr verwendet. Aus technischen Gründen dürfen sie diesen jedoch nicht
löschen. Unter anderem würde beim Löschen des globalen Funktionsbausteins der Feld-Exit aus der
Liste der im System vorhandenen Feld-Exits gelöscht.

(C) SAP AG BC425 26


10.27
Feld-Exit aktivieren

 Funktionsbaustein aktivieren

Function Builder

Funktionsbaustein__ FIELD_EXIT_<DE>

Anzeigen Ändern Anlegen

 Feld-Exit aktivieren
Feld-Exit
...
...
Feld-Exits zu den Datenelementen
Aktivieren
Aktivieren
...
...
Data Element Status Programm
<Data Element> inaktiv global

 SAP AG 1999

 Neben dem Funktionsbaustein müssen Sie auch den Feld-Exit aktivieren. Beachten sie, daß Feld-
Exits nur dann bei der Dynprogenerierung berücksichtigt werden, wenn der R/3-Profilparameter
abap/fieldexit = YES auf allen Applikationsservern gesetzt ist. (Standardmässig ist dieser
Profilparameter auf 'NO' gesetzt.)
 Falls Sie für mehrere Dynprofelder je einen Feld-Exit vereinbaren, können Sie keine Annahmen
über die Reihenfolge der Abarbeitung machen. Insbesondere ist es nicht möglich, in einem Feld-
Exit auf Inhalte anderer Dynprofelder zurückzugreifen.
 Bitte beachten Sie zu Feld-Exits auch Hinweis 29377.

(C) SAP AG BC425 27


10.28
Append-Suchhilfen: Lernziele

Nach Behandlung dieses Themas können Sie:

 Append-Suchhilfen anlegen, um eigene


Suchpfade zu definieren
 Append-Suchhilfen anlegen, um ausgelieferte
Suchpfade auszublenden

 SAP AG 2002

(C) SAP AG BC425 28


10.29
Append-Suchhilfen

Append
(SAP) Sammelsuchhilfe

Inkludierte Suchhilfen Inkludierte Suchhilfen

... ...

(Kunden-) Append-
Suchhilfe

 SAP AG 2002

 Die Menge der für ein Objekt sinnvollen Suchpfade hängt stark von den besonderen Gegebenheiten
beim jeweiligen SAP-Kunden ab. Daher besteht oft der Wunsch, Sammelsuchhilfen des SAP
Standards um eigene elementare Suchhilfen zu erweitern. Ab Release 4.6 steht eine Appendtechnik
zur Verfügung, die die modifikationsfreie Erweiterung von Sammelsuchhilfen erlaubt.
 Eine Append-Suchhilfe ist eine Sammelsuchhilfe, die einer anderen Sammelsuchhilfe (ihrer
Appendierenden) fest zugeordnet ist und diese um die in sie inkludierten Suchhilfen erweitert. Die
Append-Suchhilfe übernimmt die Schnittstelle ihrer Appendierenden.
 Die Append-Suchhilfe liegt dabei im Namensraum des Kunden. Im Normalfall werden die in die
Append-Suchhilfe inkludierten Suchhilfen ebenfalls vom Kunden angelegt und liegen in dessen
Namensraum. Es ist aber auch möglich, daß die benötigte elementare Suchhilfe schon von SAP
bereit gestellt ist und vom Kunden nur noch in seine Append-Suchhilfe aufgenommen werden muß.
 Innerhalb der SAP werden Append-Suchhilfen benutzt, um eine bessere Komponententrennung zu
erreichen. Einige SAP-Sammelsuchhilfen besitzen daher bereits im Standard eine oder mehrere
Append-Suchhilfen. Kundenerweiterungen sollten aber immer durch das Anlegen einer eigenen
Append-Suchhilfe vorgenommen werden.
 SAP-Sammelsuchhilfen beinhalten oft elementare Suchhilfen, die nicht von allen Kunden benötigt
werden. Die nicht benötigten Suchhilfen können mit Hilfe einer Append-Suchhilfe ausgeblendet
werden. Dazu muß die entsprechende Suchhilfe in die Append-Suchhilfe aufgenommen werden,
wobei das Kennzeichen ausgeblendet zu setzen ist.

(C) SAP AG BC425 29


10.30
Business Data Toolset: Lernziele

Nach Behandlung dieses Themas können Sie:

 Beschreiben, welche Erweiterungsmöglichkeiten


das Business Data Toolset bietet

 SAP AG 2002

(C) SAP AG BC425 30


10.31
Business Data Toolset (BDT)

 Definition:

Toolset für Stammdaten und einfache Bewegungsdaten


 Designziele

- Erweiterbarkeit
- Konfigurierbarkeit
- Teilbarkeit
- Alternative Benutzungsoberflächen
- Verwendbarkeit
- Schnellere Entwicklung
- Generische Objektservices

 SAP AG 2002

 Das BDT (Business Data Toolset) stellt ein zentrales Steuerungswerkzeug für die Pflege von
Stammdaten und einfachen Bewegungsdaten dar. Zusätzlich zur Dialogpflege unterstützt das BDT
auch die Pflege über Direct Input und/oder Funktionsbausteine.
 Das BDT stellt außerdem generische Objektservices für konsistente wiederkehrende Anforderungen
wie z.B. die Änderung von Beleglisten, Feldmodifikationen sowie das Löschprogramm bereit. Das
BDT steuert diese Objekte sowie generische Teile davon und ruft die Anwendungen mit Hilfe von
vordefinierten Schnittstellen (Steuerungstabellen und Zeitpunkte) auf. Die jeweiligen Anwendungen
führen anwendungssspezifische Erweiterungen, wie z.B. das Schreiben und Lesen von
Anwendungstabellen der Datenbank, durch.
Anmerkung: Das BDT wird bei SAP für die Pflege mehrerer Anwendungsobjekte verwendet.
Entwicklungspartner und Kunden können diese Anwendungsobjekte über die BDT-Schnittstellen
ebenfalls modifikationsfrei erweitern. So ist es aber auch möglich, komplett eigene
Anwendungsobjekte mit Hilfe des BDT zu erstellen. Eigenentwicklungen von Entwicklungspartnern
und Kunden werden jedoch hinsichtlich der BDT-Technologie nicht unterstützt, da es sich hierbei
nicht um ein Entwicklungstool der ABAP Workbench handelt.
 Das BDT entstand aus dem Projekt ‚Zentraler Geschäftspartner‘. Zunächst wurde die notwendige
Technik in einem gemeinsamen Programm mit den Anwendungsdaten zum Geschäftspartner
entwickelt. Sehr schnell stellte sich aber heraus, dass nicht nur der zweite Teil dieses Projektes - die
GP-Beziehungen - die gleichen technischen Anforderungen an die Datenpflege stellte, sondern
darüber hinaus auch weitere Anwendungsobjekte. Aus diesem Grund entschloss sich die
Projektgruppe Geschäftspartner, den Technikteil von den Anwendungsdaten zu trennen und diese
Technik auch anderen Anwendungsobjekten zur Verfügung zu stellen. Dieser technische Teil, der
lange Zeit GP-Steuerung bzw. Stammdatensteuerung hieß, trägt mittlerweile den Namen Business
Data Toolset, abgekürzt BDT.

(C) SAP AG BC425 31


 Erweiterbarkeit: Modifikationsfreie Erweiterung verschiedener Dialogteile, z.B. Bildaufbau,
Bildfolge, Programmlogik, Menü, Feldmodifikation usw. durch mehrere Schichten.
 Konfigurierbarkeit: Anpassen von Bildaufbau und Bildfolge können durch Anwendungsentwickler
(Pflege der Steuertabellen des BDT) bzw. Kunden (Visual Configuration Tool)
 Teilbarkeit: Pflege großer Objektteile kann in Teile zerlegt werden.
 Alternative Benutzerobeflächen: Im BDT sind Oberfläche und Programmlogik getrennt. Die
Programmlogik der Anwendung liegt komplett in den Funktionsbausteinen. Diese werden an
definierten Zeitpunkten aufgerufen. Dadurch kann die SAP GUI Oberfläche durch eine andere
Oberfläche ersetzt werden.
 Verwendbarkeit: Neben dem SAP-Geschäftspartner können weitere Anwendungsobjekte die
Vorteile des BDT nutzen. Verschiedene Anwendungsobjekte haben gleiche Designziele.
 Schnellere Entwicklung: Die Dialogsteuerung erfolgt durch das BDT. Die betriebswirtschaftlichen
Funktionen werden von den Anwendungen realisiert. Darüber hinaus bietet das BDT einige Services,
in die sich die Anwendungen einbinden können.
 Generische Objektservices: Direct Input, Übernehmen Modus, Feldsteuerung, usw.

(C) SAP AG BC425 32


10.32
Entwicklung: Ohne BDT

Bearbeitungs- Daten-
transaktionen Übernahme

Feld- Änderungs-
modifi- Service belegaus-
kation wertungen

Berechti-
Notizen
gungen

 SAP AG 2002

 Bei einem Entwicklungsprojekt ebenso wie in einem Implementierungsprojekt benötigen Sie stets
dieselben Funktionen. Die SAP-Basis stellt Servicefunktionen zur Verfügung, die allermeisten
Funktionen müssen jedoch noch entwickelt werden.
 Beispiele hierfür sind die Feldmodifikation, die Änderungsbelegauswertung sowie die
Dynproprüfung aus dem ABAP Dictionary.

(C) SAP AG BC425 33


10.33
Schnellere Entwicklung: Mit BDT

-
ngs Da
u n te
b eit ione nü
ar kt be
Be nsa rn
.
Feldmodifikation tra

Änderungsbel.-
Auswert.
Service

Be
rec
h ti n
gu ti ze
ng
en No

zentrale
zentrale Pflege
Pflege
geringerer
geringerer Entwicklungsaufwand
Entwicklungsaufwand
 SAP AG 2002

 Da das BDT Dialogprozesse steuert, beschränken sich die Anwendungen auf die Realisierung
betriebswirtschaftlicher Funktionen. Das BDT stellt außerdem Services bereit, in denen
Anwendungen integriert werden können. Diese Faktoren führen zu einer erheblichen Verringerung
der Entwicklungszeit.
 Die Anwendungen verlieren einen kleinen Teil an Individualität, erhalten aber dadurch den Vorteil
geringerer Objektpflege, einheitliche Dialoge, generische Objektservices sowie eine schnellere
Entwicklung.

(C) SAP AG BC425 34


10.34
Verwendbarkeit bei beliebigen Objekten

Weitere...
SAP-GP AnwObjekt
AnwObjekt
BUPA

BDT
SAP-GP-
Beziehungen Claims
AnwObjekt Capture
BUPR AnwObjekt
ICL
Bank- IS-RE-
konto Vertrags- Vertrag
AnwObjekt konto AnwObjekt
BKK AnwObjekt RECN
FICA

 SAP AG 2002

 Im folgenden finden Sie einige Beispiele für Objekte, die mit Hilfe von BDT entwickelt wurden.
 Central Business Partner
 Partner maintenance
 Relationship maintenance
 Contract Accounts Receivable and Payable
 Contract account
 IBU Banking
 Bank account
 Standing order
 Financial product
 Financial conditions
 Risk object
 Variable transactions
 IBU Insurance
 Insurance: Claims
 Insurance: Loss event
 Commissions: Remuneration agreements
 IS-RE
 Real estate contract
 Cost efficiency analysis

(C) SAP AG BC425 35


10.35
Zeitpunkte, Ablauf

Einstiegsbild Datenbild

DTITL DTITL
DCUAD DCUAC DCUAD DCUAC
ISDAT
Vor d. Ausgabe ISDST Vor d. Ausgabe A
Vor d. Vor d.
ISSTA Aufruf Call Subscreen AUTH1 Aufruf Call Subscreen
Start
Call Subscreen Call Subscreen
Nach d. Eingabe Nach d.Eingabe

FCODE FCODE

Sichern Zurück Beenden Abbrechen

XCHNG XCHNG XCHNG XCHNG

nein nein nein nein


Änderung? Änderung? Änderung? Änderung?

ja ja ja ja

DSAVB Abbr.. Wollen Sie nein Abbr.. Wollen Sie nein Wollen Sie ja
sichern? sichern? abbrechen?
AUTH1
ja ja nein
DCHCK A A
DTAKE DSAVB DSAVB A
DSAVC AUTH1 AUTH1
DSAVE DCHCK DCHCK
DTAKE DTAKE
DSAVC DSAVC
DSAVE DSAVE

DLVE1
DLVE2

Bild 1: Zeitpunkte beim Dialog: Sichern-


Modus Ende

 SAP AG 2002

 Innerhalb des Programmablaufs werden vom BDT definierte Zeitpunkte verwendet, für die die
Anwendungen separate Programmlogik in Form von Funktionsbausteinen entwickeln können. Die
Funktionsbausteine können für jeden Zeitpunkt definiert werden; das BDT ruft diese Bausteine
dynamisch auf.
 Ausgangspunkt ist ein normaler Transaktionscode. Der Transaktionscode führt stets dasselbe
Programm (in GP BUSSTART) aus. Das BDT liest zusammen mit dem Namen des
Transaktionscodes alle erforderlichen Informationen in den Steuerungstabellen.
 Der Programmablauf ist fest definiert. Alle Funktionsbausteine, die zum ausgeführten Objektteil
gehören, werden in den jeweiligen Zeitpunkten dynamisch aufgerufen.

(C) SAP AG BC425 36


10.36
BDT-Entwicklung und Development Workbench

Funktions-
Funktionsbausteine
gruppe
gruppe
ISSTA
ISDAT Zeitpunkte je
Anwendung
ISDST
...

Programmlogik
GET Zeitpunkte je
Dynpros PBO-Modul Tabelle
Collect

• 0010 Erstkontakt • PBO ...


• ...
..._PBC_..
Zeitpunkte je
PAI-Modul ..._PBO_..
Sicht
• PAI ..._PAI_..
• ...
...
 SAP AG 2002

 Jede Anwendung entwickelt innerhalb einer eigenen Funktionsgruppe.


 In der Funktionsgruppe werden Dynpros (Subscreens), PBO- und PAI-Module sowie
Funktionsbausteine zu den Zeitpunkten (je Anwendung, je Tabelle und je Sicht) erstellt.
 Das PBO-Modul ruft nur einen BDT-Servicefunktionsbaustein zur Ausführung des Feldstatus auf.
 Das PAI-Modul ruft nur einen BDT-Servicefunktionsbaustein zum Holen der Cursorposition auf.
 Programmlogik:
 Zeitpunkte je Anwendung (Lesen, Überprüfen, Sichern von Daten)
 Zeitpunkte je Tabelle (Kommunikation zwischen Anwendungen / Funktionsgruppen)
 Zeitpunkte je Sicht
A) PBC - Zeitpunkt zur Vorbereitung von Tabellen (Sortierung, …)
B) PBO - Zeitpunkt vor der Eingabe (Lesen von Textbeschreibungen aus Customizingtabellen, …)
C) PAI - Zeitpunkt nach der Eingabe (Prüfen der Eingabewerte, …)
 Anmerkung: Im Pflegemodus ohne Dialog (z.B. Direct Input) wird das gleiche Coding ausgeführt.
Eine redundante Programmierung entfällt

(C) SAP AG BC425 37


10.37Anhang Übungen

Kapitel: Anhang
Thema: Feld-Exits

Am Ende dieser Übungen können Sie:


 Einen Feld-Exit implementieren, mit dessen Hilfe Sie
zusätzliche Prüfungen auf einem Dynpro-Feld durchführen
können.

Die von Ihren Anwendern zur Anzeige von Flügen genutzte


Transaktion BC425_## ermöglicht den Zugriff auf die Flüge
aller Fluggesellschaften. Die Kundenbetreuer sollen jedoch nur
auf die Fluggesellschaften Zugriff haben, für die sie explizit die
Berechtigung besitzen.

Wie heißt das Programm zur oben genannten Transaktion.


1-1-1 Welchen Namen hat das Datenelement, auf das sich das Eingabefeld für die
Fluggesellschaft bezieht?
1-1-2 Sind die Voraussetzungen gegeben, damit Sie an dieses Dynpro-Feld einen
Feld-Exit knüpfen können?

1-2 Wie legen Sie einen Feld-Exit an?


1-2-1 Legen Sie einen Feld-Exit zu dem unter 1-1 ermittelten Dynpro-Feld an.
Beziehen Sie sich auf das entsprechende Datenelement.
1-2-2 Sie gelangen in den Function Builder. Können Sie die Schnittstelle des
Funktionsbausteins verändern? Falls Sie eine Funktionsgruppe benötigen,
legen Sie eine an mit dem Namen ZBC425_##.
1-2-3 Was müssen Sie im Quelltext unbedingt codieren? Programmieren Sie eine
Berechtigungsprüfung. Wie können Sie eine Berechtigungsprüfung
durchführen?
1-2-4 Bei negativem Prüfungsausgang senden Sie eine entsprechende Nachricht.
Sie können diese selbst anlegen (Nachrichtenklasse ZBC425_##); oder Sie
verwenden Nachricht 010 aus der Nachrichtenklasse BC425.
1-2-5 Aktivieren Sie den Funktionsbaustein und den Feld-Exit.

1-3 Überprüfen Sie das Ergebnis Ihrer Arbeit


1.3.2 Für welche Fluggesellschaft(en) haben Sie keine Berechtigung?

1-4 Legen Sie basierend auf dem globalen Feld-Exit einen lokalen Feld-Exit für Dynpro
0100 der Transaktion BC425_## an.

(C) SAP AG BC425 38


Verwenden Sie einen zweiten Modus! Dieser ist
insbesondere sinnvoll zum parallelen Anlegen von
Funktionsgruppen.

(C) SAP AG BC425 39


10.38Anhang Lösungen

Kapitel: Anhang
Thema: Feld-Exits

 Einen Feld-Exit implementieren, mit dessen Hilfe Sie zusätzliche


Prüfungen auf einem Dynpro-Feld durchführen können.

Die von Ihren Anwendern zur Anzeige von Flügen genutzte Transaktion
BC425_## ermöglicht den Zugriff auf die Flüge aller
Fluggesellschaften. Die Kundenbetreuer sollen jedoch nur auf die
Fluggesellschaften Zugriff haben, für die sie explizit die Berechtigung
besitzen.

1-1 Der Name des Programms zur Transaktion BC425_## lautet


SAPBC425_FLIGHT##. Sie erhalten diese Information über den Menüpfad
System  Status.
1-1-1 Der Name des Datenelements, auf das sich das Eingabefeld für die
Fluggesellschaft bezieht, lautet S_CARRID##. Sie erhalten ihn, indem Sie
auf dem entsprechenden Dynpro den Cursor auf das Feld "Fluggesellschaft"
stellen. Dort wählen Sie F1, auf dem folgenden Dialogfenster Technische
Info.
1-1-2 Um ganz sicher zu gehen, daß die Voraussetzungen erfüllt sind, verzweigen
Sie in den Screen-Painter für Dynpro 0100. Dort sehen Sie in den
allgemeinen Attributen der Elementliste, daß für das Feld SFLIGHT00-
CARRID das Attribut "Dictionary" gesetzt ist.

1-2 Einen Feld-Exit legen Sie über das Programm RSMODPRF an Starten Sie das
Programm. Lassen sie das Selektionsbild initial. Ausführen führt Sie auf die Liste
der existierenden Feld-Exits.
1-2-1 Wählen Sie hier im Menü Feldexit  Anlegen. Geben Sie im nun
erscheinenden Dialogfenster als Datenelement-Name S_CARRID ein und
wählen Sie "Weiter". Sie gelangen in den Function Builder.
1-2-2 Sie gelangen in den Function Builder. Der Name des Funktionsbausteins ist
im Eingabefeld bereits vorgegeben. Mit "Anlegen" wird der
Funktionsbaustein angelegt.
Sie müssen den Funktionsbaustein einer Funktionsgruppe
zuordnen. Legen Sie in einem zweiten Modus die
Funktionsgruppe ZBC425_## an.

Sie können die Schnittstelle des Funktionsbausteins nicht verändern?


1-2-3 Der Quelltext sollte folgendermaßen aussehen:

(C) SAP AG BC425 40


output = input.
AUTHORITY-CHECK OBJECT 'S_CARRID'
ID 'CARRID' FIELD input
ID 'ACTVT' FIELD '03'.
IF sy-subrc <> 0.
MESSAGE e010(bc425).
ENDIF.

1-3 Aktivieren Sie den Funktionsbaustein. Gehen Sie zurück. Sie gelangen wieder in
die Liste der Feld-Exits. Aktivieren Sie den Feld-Exit unter Feldexit  Aktivieren.

(C) SAP AG BC425 41