BC425 - DE - Erweiterungen Und Modifikationen PDF [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

BC425 Erweiterungen und Modifikationen

Erweiterungen und Modifikationen  SAP AG 2002

„

System R/3

„

Systemanforderungen: SAP_ Basis 6.10 oder höher

„

2002/Q4

„

5005 9055

© SAP AG

BC425

0-1

Copyright

Copyright 2002 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. Alle Rechte vorbehalten.

 SAP AG 2001

Warenzeichenvermerke „

Die von SAP AG oder deren Vertriebsfirmen angebotenen Software-Produkte können SoftwareKomponenten auch anderer Software-Hersteller enthalten.

„

Microsoft®, WINDOWS®, NT®, EXCEL®, Word®, PowerPoint® und SQL Server® sind eingetragenen Marken der Microsoft Corporation.

„

IBM®, DB2®, OS/2®, DB2/6000®, Parallel Sysplex®, MVS/ESA®, RS/6000®, AIX®, S/390®, AS/400®, OS/390® und OS/400® sind eingetragene Marken der IBM Corporation.

„

ORACLE® ist eine eingetragene Marke der ORACLE Corporation.

„

INFORMIX®-OnLine for SAP und INFORMIX® Dynamic ServerTM sind eingetragene Marken der Informix Software Incorporated.

„

UNIX®, X/Open®, OSF/1® und Motif® sind eingetragene Marken der Open Group.

„

HTML, DHTML, XML, XHTML sind Marken oder eingetragene Marken des W3C®, World Wide Web Consortium, Massachusetts Institute of Technology.

„

JAVA® ist eine eingetragene Marke der Sun Microsystems, Inc.

„

JAVASCRIPT® ist eine eingetragene Marke der Sun Microsystems, Inc., verwendet unter der Lizenz der von Netscape entwickelten und implementierten Technologie.

„

SAP, SAP Logo, R/2, RIVA, R/3, ABAP, SAP ArchiveLink, SAP Business Workflow, WebFlow, SAP EarlyWatch, BAPI, SAPPHIRE, Management Cockpit, mySAP.com Logo und mySAP.com sind Marken oder eingetragene Marken der SAP AG in Deutschland und vielen anderen Ländern weltweit. Alle anderen Produkte sind Marken oder eingetragene Marken der jeweiligen Firmen.

© SAP AG

BC425

0-2

Voraussetzungen für Teilnehmer

z SAP50 - Basistechnologie z BC400 - ABAP Workbench: Grundlagen z BC402 - ABAP Programmiertechniken z Erfahrung in Customizing-Projekten nützlich

 SAP AG 1999

© SAP AG

BC425

0-3

Zielgruppe

z Teilnehmer Leiter des Projektteams Mitarbeiter des Projektteams, das mit der Anpassung des R/3 an die Unternehmensbedürfnisse beauftragt ist

z Dauer: 3 Tage

 SAP AG 1999

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.

© SAP AG

BC425

0-4

Grobziel des Kurses

Dieser Kurs vermittelt Ihnen Kenntnisse zu: z Anpassen des R/3 Standards an die

Kundenbedürfnisse durch

„ Personalisierungstechniken „ Erweiterung des von SAP ausgelieferten

Standards

„ Modifikation des Standards und

Modifikationsabgleich

 SAP AG 1999

© SAP AG

BC425

0-5

Einführung: Inhalt

z Grobziel des Kurses z Lernziele des Kurses z Inhaltsverzeichnis z Übersichtsdiagramm z Gesamtunternehmensszenario z Einführung des Kurses

 SAP AG 1999

© SAP AG

BC425

1-1

Zielsetzungen des Kurses

Dieser Kurs ermöglicht es Ihnen: z Änderungen am SAP Standard fachgerecht

durchzuführen.

z die verschiedenen Änderungsmethoden bewerten

zu können und je nach Sachlage die richtige auszuwählen

 SAP AG 2002

© SAP AG

BC425

1-2

Lernziele des Kurses

Am Ende des Kurses können Sie: z einen Überblick über die verschiedenen

Änderungsebenen des R/3-Systems geben

z Dictionary-Objekte erweitern, ohne sie zu

modifizieren

z Erweiterungen des R/3 Standards mit Hilfe von

Customer-Exits , Business Transaction Events und Business Add Ins realisieren

z Modifikationen mit Hilfe des

Modifikationsassistenten durchführen und abgleichen

 SAP AG 2002

© SAP AG

BC425

1-3

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 2002

© SAP AG

BC425

1-4

Übersichtsdiagramm R/3 Business Anwendungen (SAP Standard) Personali sierung

Modifikation

z Transaktions varianten

z Modifikationsassistent z User-Exits

Erweiterung z ABAP Dictionary

Tabellen Datenelemente

z Customer-Exits

3

Funktionsbaustein-Exits Menü-Exits Dynpro-Exits

8

z Business Transaction Events z Business Add Ins

z Überblick

4 5 6 7

2

 SAP AG 2002

© SAP AG

BC425

1-5

Gesamtunternehmensszenario

z Als Mitarbeiter der EDV-Abteilung eines

Reiseveranstalters haben Sie die Aufgabe, von Ihren Kundenberatern eingesetzte Programme um Funktionalität zu erweitern

z Dazu stehen Ihnen verschiedene Möglichkeiten

zur Verfügung, die Sie einsetzen können, ohne den ausgelieferten Standard zu modifizieren

 SAP AG 1999

© SAP AG

BC425

1-6

Änderungen des SAP Standards

Inhalt: z Überblick über die Änderungsebenen z Entscheidungsdiagramm z Änderungstechniken

 SAP AG 1999

Änderungen des SAP Standards: Lernziele des Kapitels

Am Ende dieses Kapitels können Sie: z erklären, auf welchen Ebenen Sie den von SAP ausgelieferten Standard ändern können z die geeignete Methode auswählen, mit deren Hilfe Sie den Standard verändern z aufzählen, welche Erweiterungstechniken Ihnen zur Verfügung stehen und wie diese prinzipiell arbeiten

 SAP AG 1999

Übersichtsdiagramm Änderungen des Standards R/3 Business Anwendungen (SAP Standard) Personali sierung

Modifikation

z Transaktions varianten

z Modifikationsassistent z User-Exits

Erweiterung z ABAP Dictionary

Tabellen Datenelemente

z Customer-Exits

3

8

Funktionsbaustein-Exits Menü-Exits Dynpro-Exits

z Business Transaction Events z Business Add Ins

z Überblick  SAP AG 2002

2

4 5 6 7

Änderungsebenen

R/3 Business Anwendungen (SAP Standard)

Customizing

Personalizing

Customizing

Kundenprogramme

Modifikation

Erweiterung

Eigenentwicklung

ABAP Workbench

 SAP AG 2002

„

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.

Originale und Kopien

Entwicklungssystem

Kundenobjekt

Original

Folgesystem

Kundenobjekt

Kopie Transport der Entwicklung

SAP-Objekt

Original

SAP-Objekt

Kopie

SAP-Objekt

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.

Korrekturen und Reparaturen

Entwicklungssystem

Kundenobjekt

korrigiertes Original Korrektur

SAP-Objekt

korrigiertes Original Korrektur

Reparatur

Kundenobjekt

Kopie Transport der Korrektur

SAP-Objekt

modifizierte Kopie

Folgesystem

SAP-Objekt

Kopie Transport 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.

Modifikationen beim Upgrade

Entwicklungssystem

Folgesystem

Kundenobjekt

Kundenobjekt

korrigiertes Original

SAP-Objekt

korrigiertes Original

Upgrade

Kopie

SAP-Objekt

modifizierte Kopie Modifikations abgleich

SAP-Objekt

Kopie Transport des Abgleichs

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.

Customizing

Vorgehensweise bei Funktionalitätsänderungen

Gibt es eine Standardfunktionalität, die über Customizing/Personalizing dem Kundenwunsch angepaßt werden kann?

Customizing Personalizing Ja

Nein

Entwicklung

Ist im SAP-Standard überhaupt eine ähnliche Funktionalität abgebildet?

Eigenentwicklung CSP-Lösung Nein

Ja Ermöglicht die SAP-Applikation, zusätzliche Funktionalität über Erweiterungen einzubinden? Nein

Eigenentwicklung mit SAP-Prog. als Vorlage

Nein

Erweiterung Ja

Modifikation

 SAP AG 2002

„

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 CSPLö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 y Customizing oder Personalizing Ihre Anforderung nicht umsetzen können y Geeignete Erweiterungen oder User-Exits nicht vorgedacht sind y das Kopieren des SAP-Objekts in den Kundennamensraum nicht sinnvoll ist.

Customizing Vorgehensmodell

Geschäftsprozeßszenarien

Einführungsleitfaden

Anwendungskomponenten

Bestandsführung

Einkauf

Lieferantenanfrage /-angebot

Business-Objekte Purchase order

Materialwirtschaft

Prozeßmodell

ASAP

Informationssystem

Schedule lines

Purchase order item Purchase order consignment

Lagerverwaltung

Time

Purchase order returnable packaging Bestellanforderung

Purchase order third party delivery

Bestellung

Objektorientiertes Datenmodell

Unternehmensorganisation Purchase requisition

Vendor inquiry

Vendor quotation

R/3 -Re mo feren del zl

Purchase information Shipping notification Purchase order

Vendor scheduling agreement

Workflow und Organisation

 SAP AG 1999

„

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

Personalizing Vereinfachung und Personalisierung der Anwendung ist oftmals außerhalb der ABAP Workbench möglich. z Globale Anzeigeeigenschaften von Feldern z SET/GET Parameter z Variantentransaktionen z Systemweite Table-Control-Einstellungen z Personalisierte Menüs z Rollenbasiertes Menü z Favoriten z Shortcuts auf Desktop

 SAP AG 2002

„

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.

ABAP Workbench Änderungsebenen R/3 Business Anwendungen (SAP Standard)

Kundenprogramme

Modifikation z Modifikationsassistent

Erweiterung z ABAP Dictionary

Tabellen Datenelemente

z ProgrammErweiterungen

Eigenent wicklung z Mit Aufruf von SAP Objekten z Ohne Aufruf von SAP Objekten

Funktionsbaustein-Exits Business Transaction Events Business Add Ins

z Menü-Erweiterungen Menü-Exits Business Add Ins

z Dynpro-Erweiterungen Dynpro-Exits Business Add Ins

z User-Exits  SAP AG 2002

„

Modifikationen sind Änderungen an SAP-Objekten in Kundensystemen. Sie existieren: y geführt durch User-Exits (für Kunden reservierte Unterprogramme in Objekten des SAPNamensraums) y 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: y im ABAP-Programm (Funktionsbaustein-Exit) y in der GUI-Oberfläche (Menü-Exit) y in Dynpros als Einblendung eines Subscreens in einem von SAP vorgedachten Bereich (DynproExit) y als Durchlaufen kundeneigener Programmstrecken bezogen auf ein Dynprofeld (Feld-Exit) y in Tabellen oder Strukturen des ABAP Dictionary (Tabellenerweiterung).

Tabellenerweiterungen ABAP Dictionary

Tabellendefinition Feld 1

Feld 2

YYFeld ZZFeld

Feld 3

Append-Struktur

Tabellendefinition Feld 1 Feld 2 Feld 3 CI_Incl

YYFeld ZZFeld CI_Include

Datenbank

Feld 1 Feld 2 Feld 3 YYFeld ZZFeld

 SAP AG 1999

„

SAP bietet Ihnen zwei Möglichkeiten, Tabellen und Strukturen um Felder zu erweitern: y Append-Strukturen y 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 IncludeStruktur 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.

Tabellenerweiterungen: SAP und Kunde

SAP

Kunde

Tabelle

Tabellenerweiterung

Append-Struktur

Tabelle + IncludeAnweisung

Tabellenerweiterung

CI_Include

 SAP AG 1999

„

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

Programm-Erweiterungen: Funktionsweise *** *** SAP SAP program program *** *** ********************************* ********************************* PROGRAM PROGRAM .



Customer-Exit

Exit-Funktionsbaustein

Business Transaction Event Funktionsbaustein Business Add In

Methode

 SAP AG 1999

„

Bei Programm-Erweiterungen ist das Ziel prinzipiell immer, ein Objekt im Kundennamensraum zu rufen. Dazu gibt es verschiedene Techniken: y 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. y Business Transaction Events Vom SAP Anwendungsprogramm wird ein Funktionsbaustein im Kundennamensraum dynamisch aufgerufen. y Business Add Ins Das Anwendungsprogramm ruft eine Methode einer Klasse oder Instanz einer Klasse auf. Diese Klasse liegt im Kundennamensraum.

Programm-Erweiterungen: SAP und Kunde

SAP

Kunde Customer-Exit: Funktionsbaustein-Exit

FB-Coding

Aufruf Verwaltung Schnittstelle

Business Transaction Events

Funktionsbaustein im Kunden namensraum

Business Add Ins

Methode in Kunden-Klasse

Dokumentation

 SAP AG 1999

„

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.

Menü-Erweiterungen: SAP und Kunde

SAP Menu 1

Menu 2

Menu 3

Kunde Menu 1

Function Function11 Function Function22 Function Function33

Dokumentation

Menu 3

Function Function11 Function Function22 Function Function33

Kundenfunktion

Funktionscode Erweiterung

Menu 2

Menü-Exits

Text (Ikonen)

 SAP AG 1999

„

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: y Customer-Exits y 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.

Dynpro-Erweiterungen

SAP

Kunde

SAP R/3

SAP R/3

Feld 1 Feld 2

Feld 1 Feld 2

Feld Z

Feld X Feld Y

Subscreen-Bereiche Ablauflogik Erweiterung

Dynpro-Exit

Subscreen-Dynpros

Business Add In

FB-Coding

Dokumentation  SAP AG 2002

„

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: y die Subscreen-Bereiche definieren y die entsprechenden Aufrufe in der Ablauflogik vorsehen y den Rahmen für den Datentransport zur Verfügung stellen y den Dynpro-Exit in eine Erweiterung aufnehmen y 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.

Modifikationen

SAP

Kunde

SAP-Programm

SAP-Programm

PROGRAM ... ...

PROGRAM ... ...

.

*Original Coding.. ... ... ... ... *Original Coding.. ...

.

*Original Coding.. ... ... ... * vom Kunden geändertes/hinzugefügtes * 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.

Änderungen des SAP Standards: Zusammenfassung des Kapitels

Sie können nun: z einen Überblick über die von SAP angebotenen Änderungsebenen geben z entscheiden, welche Methode geeignet ist, wenn Sie den SAP Standard ändern wollen z erklären, warum SAP Erweiterungstechniken anbietet, um den ausgelieferten Standard zu verändern z die von SAP angebotenen Erweiterungstechniken aufzählen

 SAP AG 1999

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

Personalisierung

Inhalt: z Personalisierung von Transaktionen

 SAP AG 2002

© SAP AG

BC425

3-1

Personalisierung: Lernziele des Kapitels

Am Ende dieses Kapitels können Sie: z Transaktionen personalisieren indem sie z Screen-Varianten anlegen z Transaktionsvarianten anlegen z Bildschirme mit Hilfe von GuiXT verändern

 SAP AG 2002

© SAP AG

BC425

3-2

Personalisierung: Unternehmensszenario

z Ihre Endanwender nutzen nur einen geringen Teil des im R/3 vorhandenen Funktionalität. Um die tägliche Arbeit zu erleichtern, sollte der Arbeitsplatz entsprechend eingerichtet werden. z Von ihrem Arbeitsplatz aus sollen Ihre Mitarbeiter auch vereinfachte Transaktionen ausführen können. Diese sind in der Regel mit Hilfe von Transaktionsvarianten realisiert.

 SAP AG 1999

© SAP AG

BC425

3-3

Übersichtsdiagramm Personalisierung R/3 Business Anwendungen (SAP Standard) Personali sierung

Modifikation z Modifikationsassistent

z Transaktions varianten

z User-Exits

Erweiterung z ABAP Dictionary

Tabellen Datenelemente

4

z Customer-Exits

3

Funktionsbaustein-Exits Menü-Exits Dynpro-Exits

8

z Business Transaction Events z Business Add Ins

5 6 7

z Überblick

2

 SAP AG 2002

© SAP AG

BC425

3-4

Personalisierungsebenen

TOP-DOWN Konfiguration

Unternehmen: z Unternehmensstruktur z Geschäftsprozesse

Rollenspezifische Konfiguration

Ber. menüs

Benutzerrollen: z Bereichsmenüs z Rollenbasierte Menüs z Transaktionsvarianten

Rollenbasierte Rollenbasierte TA Menüs Menüs varianten

Persönliche Konfiguration

Favoriten

Links

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

Desktop

 SAP AG 2002

„

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.

© SAP AG

BC425

3-5

Transaktionsvarianten: Ziele z Vereinfachung des Systems durch Ausblenden nicht benötigter Funktionen z Vorbelegung von Feldern z Wegnahme der Eingabebereitschaft z Ausblenden nicht benötigter Bildschirmelemente (Felder, Subscreens, Screens)

z Standardvariante oder individuelle Variante z WYSIWYG-Pflege durch spezielle Aufzeichnungsfunktion

 SAP AG 2002

„

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 y Felder mit Werten vorbelegen. Diese Vorbelegung kann vom Anwender wieder überschrieben werden. y Bei Feldern, in denen der Anwender keine Eingabe mehr vornehmen muss, die Eingabebereitschaft zurücknehmen; y nicht benötigte Bildschirmelemente ausblenden. Das können Eingabefelder oder andere Bildschirmelemente sein. y Ganze Bildschirme ausblenden.

„

Die Pflege von Transaktionsvarianten werden wir im folgenden näher beleuchten.

© SAP AG

BC425

3-6

Transaktionsvarianten: Beispiel 100

Program

100

Program

Abflugstadt Ankunftstadt Abflugzeit

Ankunftstadt Abflugzeit

New York

Button1 Button1

Button2

TA 200 Variante

Program

Fluggesellschaft Verbindung Flugdatum

200 Program

Fluggesellschaft Verbindung Flugdatum

Buchen Info

Buchen

Bel. Plätze Freie Plätze Flugpreis

Bel. Plätze Freie Plätze Flugpreis

z z z

Info

Felder mit Werten vorbelegen Felder ausblenden Dynpros ausblenden

 SAP AG 1999

„

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.

© SAP AG

BC425

3-7

Transaktionsvarianten: Prinzip

Transaktions-Variante

Screen-Variante Screen-Variante ztest_0100 Screen-Variante ztest_0100 ztest_0100

Screen-Variante ztest_0200

Screen-Variante Screen-Variante ztest_0300 ztest_0300

 SAP AG 1999

„

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.

© SAP AG

BC425

3-8

Transaktionsvarianten: Möglichkeiten

Standardvariante

z Eine Standardvariante oder

TA-Variante 1

SAP Transaktion TA-Variante 2

z beliebig viele individuelle Varianten z Standardvariante überblendet SAP Transaktion z sonst: Variantentransaktionen

TA-Variante 3

 SAP AG 1999

„

Zu einer SAP-Transaktion können sie verschiedene Arten von Transaktionsvarianten anlegen: y eine Standard-Variante y beliebig viele "normale" Transaktionsvarianten

„

Die Standard-Variante wird zur Laufzeit anstatt der von SAP ausgelieferten Transaktion ausgeführt. Dazu ist kein neuer Transaktionscode erforderlich.

„

Eine normale Transaktionsvariante wird über einen eigenen Transaktionscode vom Typ "Variantentransaktion" aufgerufen.

© SAP AG

BC425

3-9

Transaktionsvarianten anlegen

Transaktionsvarianten

Name der Transaktion

Transaktion Variante

Name der Varianten Anlegen

z Werkzeuge Æ AcceleratedSAP Æ Personalization Æ Transaktionsvarianten  SAP AG 1999

„

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

© SAP AG

BC425

3-10

Transaktionsvarianten: Felder bewerten 100

Program

Abflugstadt Ankunftstadt Abflugzeit Button1

Button2

Abflugstadt Ankunftstadt Abflugzeit Button1 Button2

Frankfurt New York

Beenden u. Sichern

Menüfunktionen

GuiXT

 SAP AG 1999

„

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.

© SAP AG

BC425

3-11

Screen-Varianten

Name der Screenvariante Abflugstadt Ankunftstadt Abflugzeit Button1 Button2

Kurztext

Frankfurt New York

Beenden u. Sichern

Menüfunktionen

GuiXT

Feldattribute setzen Menüfunktionen deaktivieren

 SAP AG 1999

„

Eine Screen-Variante ist ein eigenständiges Repository-Objekt mit einem im System eindeutigen Namen. Der Name setzt sich zusammen aus y Variantenname y Mandant (nur bei mandantenabhängigen Transaktionsvarianten) y 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.

© SAP AG

BC425

3-12

GuiXT Abflugzeit Button1 Button2

Beenden u. Sichern

Pflegebild der Screenvariante Menüfunktionen

GuiXT

z Skript-Editor

z Skript wird als Text-Datei gespeichert z Skripte können importiert werden

Bilddateien  SAP AG 1999

„

Das Zusatzwerkzeug GuiXT ermöglicht ihnen eine flexiblere Gestaltung der einzelnen Bildschirme. GuiXT bedient sich dabei einer Skript-Sprache, um y Objekte auf dem Dynpro zu positionieren, y Attribute zu setzen, y 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.

© SAP AG

BC425

3-13

GuiXT: Scriptsprache // Version: 19990921151118

Kommentar

IMAGE (1,1) "C:\temp\sap.jpg"

Bild einfügen

BOX (10,20) (16,44) "Frame"

Rahmen einfügen

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

Element verschieben

POS [Bereich] [Bereich]+(10,0) Pushbutton (10,50) "Text" "SCMP"

Drucktaste mit Text und Funktionscode

 SAP AG 1999

„

Mit Hilfe der von GuiXT verwendeten Skript-Sprache können Sie das Layout eines Bildschirmbildes beeinflussen. Sie können y Objekte verschieben y Bilder einfügen y Drucktasten einfügen y Wertehilfen einfügen y Eingabeeigenschaften von Feldern beeinflussen y 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).

© SAP AG

BC425

3-14

Transaktionsvarianten starten

Möglichkeiten zum Starten von Transaktionsvarianten z Test-Umgebung z Transaktions-Code z aus Benutzer-Menü

 SAP AG 1999

„

Zum Starten einer Transaktionsvariante stehen ihnen folgende Möglichkeiten zur Verfügung: y Testumgebung y Transaktionscode vom Typ "Variantentransaktion" y 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.

© SAP AG

BC425

3-15

Variantentransaktion anlegen Transaktionspflege

Name des Transaktionscodes

Transaktionscode__ Anzeigen

Ändern

Anlegen

Anlegen

Transaktion anlegen

Transaktionscode Transaktionsattribute Dialogtransaktion Reporttransaktion OO-Transaktion

Variantentransaktion Paramentertransaktion  SAP AG 2002

„

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.

© SAP AG

BC425

3-16

Personalisierung: Zusammenfassung des Kapitels

Sie können nun: z Transaktionen personalisieren indem sie z Screen-Varianten anlegen z Transaktionsvarianten anlegen z Bildschirme mit Hilfe von GuiXT verändern

 SAP AG 2002

© SAP AG

BC425

3-17

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

© SAP AG

BC425

3-18

Übungen Kapitel: Personalisierung Thema: Transaktionsvarianten Am Ende dieser Übungen können Sie: • Mit Hilfe von Screen Varianten und 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 EnjoyInitiative!) Eigentlich haben sie nur ein paar Felder auszufüllen. Viele weitere Felder sind hingegen überflüssig. Helfen sie ihren Anwendern, indem Sie die Transaktion in der Bedienung vereinfachen. 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

Nehmen sie die Variante in das von ihnen angelegte Bereichsmenü auf.

1-5

Testen Sie Ihr Ergebnis.

© SAP AG

BC425

3-19

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 o ABAP Workbench o Übersicht o Object Navigator 1-1-1 Alternativ können sie Transaktion SE80 wählen 1-1-2 Wählen Sie den Menüpfad Workbench o 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.

© SAP AG

BC425

3-20

Lösungen Kapitel: Personalisierung Thema: Transaktionsvarianten 1-1

Erzeugen einer Transaktionsvariante zu der Transaktion BC425_TAVAR: 1-1-1 In die Pflege von Transaktionsvarianten können Sie über verschiedene Wege gelangen, zum Beispiel über SAP Menü Æ Werkzeuge Æ Customizing Æ IMG ÆProjektbearbeitung. Dort Springen Æ SAP Referenz IMG anzeigen. Dort Allgemeine Einstellungen Æ Anzeigeeigenschaften von Feldern. Selektieren Sie die Ausführen-Ikone. Die Transaktion SHD0 wird gestartet. Wählen Sie hier System Æ Benutzervorgaben Æ Favoriten erweitern um die Transaktion in Ihre Favoriten aufzunehmen. 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 ScreenVarianten. Hier haben Sie nochmals die Gelegenheit, Ihre Eingaben zu überprüfen. Sichern Sie, um die Transaktionsvariante endgültig anzulegen.

1-3

© SAP AG

Zum Anlegen eines Transaktionscodes für die Variante können Sie entweder die Transaktionscode-Pflege aufrufen. Oder Sie wählen aus der Transaktion SHD0 den BC425

3-21

Menüpfad Springen Æ Transaktionscode anlegen. Vergeben Sie als Namen ZBC425##. 1-4

© SAP AG

Gehen Sie in die Bereichsmenü-Pflege (Transaktion SE43). Nehmen Sie dort Ihre Transaktionsvariante in Ihr Bereichsmenü ZBC425_## auf. Gehen Sie dabei vor, wie in der Übung zur Bereichsmenü-Pflege beschrieben.

BC425

3-22

Erweiterungen an Elementen des Dictionary

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

 SAP AG 2002

© SAP AG

BC425

4-1

Erweiterungen an Elementen des Dictionary: Lernziele des Kapitels

Am Ende dieses Kapitels können Sie: z Tabellen mit Hilfe von Append-Strukturen erweitern z Tabellen mit Hilfe von Customizing-Includes erweitern z Feldbezeichner und F1-Hilfe von Datenelementen modifikationsfrei ändern

 SAP AG 2002

© SAP AG

BC425

4-2

Übersichtsdiagramm Erweiterung ABAP Dictionary R/3 Business Anwendungen (SAP Standard) Personali sierung

Modifikation

z Transaktions varianten

z Modifikationsassistent z User-Exits

Erweiterung z ABAP Dictionary

Tabellen Datenelemente

4

z Customer-Exits

3

Funktionsbaustein-Exits Menü-Exits Dynpro-Exits

8

z Business Transaction Events z Business Add Ins

5 6 7

z Überblick

2

 SAP AG 2002

© SAP AG

BC425

4-3

Tabellenerweiterungen: Lernziele

Nach Behandlung dieses Themas können Sie: z Tabellen mit Hilfe von Append-Strukturen erweitern z Tabellen mit Hilfe von Customizing-Includes erweitern

 SAP AG 2002

© SAP AG

BC425

4-4

Tabellenerweiterungen: Überblick z Es gibt zwei Möglichkeiten, Tabellen ohne zu modifizieren um zusätzliche Felder zu erweitern: z Append-Struktur z Eine Append-Struktur wird zu einer Tabelle angelegt z Zu einer Tabelle sind beliebig viele AppendStrukturen möglich z Diese können wie jede andere Struktur verwendet werden z Customizing-Include z muß vom SAP-Entwickler vorgedacht sein z wird vom Kunden angelegt

 SAP AG 1999

„

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.

© SAP AG

BC425

4-5

Append-Strukturen

YYField ZZField Append-Struktur

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

© SAP AG

BC425

4-6

Append-Strukturen beim Upgrade

YYField ZZField Append-Struktur

Tabelle Field1 Field2 Field3

Field4

Neue SAP-Version wird importiert Field1 Field2 Field3

Aktivieren Anhängen des Feldes auf der Datenbank

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.

© SAP AG

BC425

4-7

Customizing-Includes Customizing-Transaktion oder SAP-Empfehlung Customizing-Include YYField ZZField

Tabelle A

Tabelle B

Field1 Field2 CI_Incl Field3

FieldL FieldM CI_Incl FieldN

Field1 Field2 Field3 YYField ZZField

FieldL FieldM FieldN YYField ZZField

 SAP AG 1999

„

Im R/3-Standard können Tabellen und Strukturen ausgeliefert werden, die spezielle IncludeAnweisungen 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.

© SAP AG

BC425

4-8

Texterweiterungen: Lernziele

Nach Behandlung dieses Themas können Sie: z Feldbezeichner und F1-Hilfe von Datenelementen modifikationsfrei ändern

 SAP AG 2002

© SAP AG

BC425

4-9

Überblick Texterweiterungen

SAP System Hilfe

SAP R/3

Kunde

      

System Hilfe

Schlüsselwort SAP

SAP R/3

      

Schlüsselwort Kunde

?

?

SAP-Dokumentation ..... ..... .....

SAP-Dokumentation ..... ..... kundeneigene Dokumentation .....

 SAP AG 1999

„

Bei Texterweiterungen handelt es sich um kundeneigene Schlüsselwörter und kundeneigene Dokumentation zu Datenelementen.

„

Bei Texterweiterungen sind im Gegensatz zu Anwendungserweiterungen nach Aktivierung die Änderungen global für alle betroffenen SAP-Anwendungen wirksam (globale Erweiterungen).

© SAP AG

BC425

4-10

Schlüsselwörter

SAP

Kunde

Datenelement definieren

Globale Erweiterungen definieren

Schlüsselwort

Schlüsselwort

kurz: mittel: lang: Überschrift: Kurztext (bei F1):

kurz: mittel: lang: Überschrift: Kurztext (bei F1):

 SAP AG 1999

„

Der SAP-Anwendungsprogrammierer legt bei der Definition eines Datenelements Schlüsselwörter in verschiedenen Längen und einen Kurztext fest. Diese Schlüsselwörter und Kurztexte können vom Kunden über die Projektverwaltung verändert werden.

„

Alle Dynprofelder, die den Schlüsselworttext eines Datenelements übernehmen, können so mit neuen Namen belegt werden.

„

Durch einen neuen Kurztext im Datenelement wird die F1-Hilfe auf das Dynprofeld dahingehend geändert, daß der Text für die Feldbeschreibung mit dem neuen Kurztext erscheint.

© SAP AG

BC425

4-11

Texterweiterungen bearbeiten

       

Projektverwaltung System Hilfe

Projekt Globale Erweiterungen Schlüsselwörter SAP R/3 System Hilfe

Datenelemente

       

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

SAP R/3 System Hilfe

       

Kundendokumentation:

?

 SAP AG 1999

„ „

Texterweiterungen werden über die Projektverwaltung (ABAP Workbench Æ Hilfsmittel Æ Erweiterungen Æ Projektverwaltung) bearbeitet. Über Globale Erweiterungen gelangen Sie in die Erweiterungsfunktionen für Schlüsselwörter und die Dokumentation zu Datenelementen.

© SAP AG

BC425

4-12

Voraussetzung für Schlüsselwortänderung

SAP ScreenScreen-Painter

Feldliste

    

Screen Painter: Feldliste System Hilfe

. .

E A

MOD

LFA1-LFNR LFA1-LFNR . . .  SAP AG 1999

„

Damit eine Schlüsselwortänderung auf einem Dynpro wirksam wird, muß der SAPAnwendungsprogrammierer in der Feldliste das Attribut MOD (Schlüsselwortmodifikationskennzeichen) des betreffenden Feldes entsprechend gepflegt haben.

„

Für das Attribut MOD gibt es folgende Möglichkeiten: SPACE: das der Feldlänge am besten angepaßte Schlüsselwort 1: kurzes Schlüsselwort 2: mittleres Schlüsselwort 3: langes Schlüsselwort 4: Schlüsselwort für Überschrift V: variable Textübernahme aus Dictionary F: fix, keine Textübernahme

„

Wurde ' F'eingetragen, dann wird das Schlüsselwort hart auf dem Dynpro eingetragen und kann nicht ersetzt werden. In den anderen Fällen zeigen alle Dynpros, die sich auf das betreffende Datenelement beziehen, das geänderte Schlüsselwort.

© SAP AG

BC425

4-13

Schlüsselwortänderungen und Releasewechsel SAP

Kunde Release x.x

Release x.x SAP R/3 System Hilfe

SAP R/3

     

System Hilfe

Schlüsselwort Kunde

altes Schlüsselwort SAP

     

Release y.y SAP R/3

Release y.y SAP R/3 System Hilfe

System Hilfe

    

     

neues Schlüsselwort SAP

neues Schlüsselwort SAP

Restaurieren Kunde

Release x.x SAP R/3 System Hilfe

Schlüsselwort Kunde

     

 SAP AG 1999

„

Nach einem Releasewechsel oder der Einspielung eines neuen Korrekturstandes ist eine Restaurierung der Schlüsselwörter immer dann erforderlich, wenn SAP vorhandene Schlüsselwörter nochmals ausliefert. Möchte der Kunde dann seine eigenen Schlüsselwörter aus dem letzten Release wiederhaben, wählt er den entsprechenden Menüpunkt zum Restaurieren der Kundenschlüsselwörter. SAP empfiehlt, grundsätzlich eine Restaurierung durchzuführen (Schlüsselwortfortschreibung).

„

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 Schlüsselwörter und den Kurztext.

„

Bei zentralen Schlüsselwörtern wie 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.

© SAP AG

BC425

4-14

SAP-Schlüsselwörter restaurieren

SAP

Kunde Release x.x SAP R/3 System Hilfe

Schlüsselwort Kunde

Release x.x SAP R/3 System Hilfe

Schlüsselwort SAP

     

     

Restaurieren SAP

Release x.x SAP R/3 System Hilfe

Schlüsselwort SAP

    

 SAP AG 1999

„

Möcht der Kunde eine Schlüsselwortänderung wieder rückgängig machen, wählt er den entsprechenden Menüpunkt zum Restaurieren der SAP-Schlüsselwörter.

„

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 Schlüsselwörter und den Kurztext.

„

Bei zentralen Schlüsselwörtern wie 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.

© SAP AG

BC425

4-15

Erweiterte Dokumentation zu Datenelementen Kunde

SAP

Globale Erweiterungen

Datenelemente

Datenelemente Dokumentation SAP R/3 System Hilfe

Kundendokumentation

    

SAP R/3 System Hilfe

    

INCLUDE

SAP-Dokumentation:

Kundendokumentation:

 SAP AG 1999

„

Bei Erweiterung der Datenelementdokumentation übernimmt der Kunde die SAP-Dokumentation als Include-Baustein. Der Bezug zur SAP-Dokumentation geht damit nicht verloren. Auch nachfolgend von SAP ausgelieferte Dokumentation wird berücksichtigt.

„

Betätigt der Kunde nach Aktivierung der Erweiterung der Datenelementdokumentation die F1-Taste auf dem entsprechenden Dynprofeld, erscheint 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 Dokumentation weiter überarbeiten.

„

Möchte der Kunde die ursprüngliche Dokumentation ohne Erweiterung wieder herstellen, löscht er einfach seine eigene Dokumentation.

© SAP AG

BC425

4-16

Kundeneigene Dokumentation

Globale Erweiterungen Datenelemente Kundendokumentation

SAP R/3 System Hilfe

     

SAP R/3 System Hilfe

    

INCLUDE Kundendokumentation:

Kundendokumentation:

 SAP AG 1999

„

Der Kunde hat auch die Möglichkeit, die Datenelementdokumentation unabhängig von der SAPDokumentation zu erstellen. Diese Variante wird jedoch nicht empfohlen, da der Bezug zur SAPDokumentation verloren geht. Liefert SAP eine neue Version des betreffenden Dokuments aus, entgehen dem Kunden möglicherweise wichtige Informationen.

„

Weiter kann der Kunde auch den Include-Baustein für die SAP-Dokumentation aufgelöst in seine eigene Dokumentation übernehmen. Diese Variante sollte der Kunde aber nur wählen, wenn für die Verwendung im Kundensystem unbedingt inhaltliche Änderungen der Originaldokumentation erforderlich sind. Hierbei geht der Bezug zur SAP-Dokumentation nicht völlig verloren, nachfolgende Versionen der SAP-Dokumentation werden jedoch ebenfalls nicht berücksichtigt.

© SAP AG

BC425

4-17

Texterweiterungen: Zusammenfassung

Kundeneigene Kurztexte Kundeneigene Dokumentation

Kundeneigene Schlüsselwörter SAP R/3 System Hilfe

     

Schlüsselwort SAP

 SAP AG 1999

„

Im Rahmen der Projektverwaltung kann der Kunde SAP-Anwendungen durch eigene Schlüsselwörter, Kurztexte und Dokumentation für Datenelemente erweitern.

„

Diese Erweiterungen sind nach Aktivierung für alle SAP-Anwendungen wirksam, die die betroffenen Datenelemente verwenden.

© SAP AG

BC425

4-18

Erweiterungen an Elementen des Dictionary: Zusammenfassung des Kapitels

Sie können nun: z Tabellen mit Hilfe von Append-Strukturen erweitern z Tabellen mit Hilfe von Customizing-Includes erweitern z Feldbezeichner und F1-Hilfe von Datenelementen modifikationsfrei ändern

 SAP AG 2002

© SAP AG

BC425

4-19

Ü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. Ihr Unternehmen hat R/3 im Einsatz. Im R/3 existiert eine Transaktion, die sie speziell in Fragen von Flugreisen unterstützt. 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 oder die Hauptmahlzeit. Die Flugdaten sind in der Tabelle SFLIGHT## abgelegt. Diese sollen sie um die zwei gewünschten Spalten erweitern, ohne die Tabelle selbst zu modifizieren. 1-1

Welche Möglichkeiten bestehen, die Tabelle SFLIGHT## um zwei 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 zwei Felder in die Struktur auf: Eines zur Aufnahme des Piloten-Namens (Zeichenkette der Länge 25) Eines zur Aufnahme der Mahlzeit (Zeichenkette der Länge 20). 1-2-2 Typisieren Sie die Felder. Wählen sie die Ihnen am geeignetsten scheinende Typisierungsform. Sie werden diese Felder später auf einem Dynpro verwenden. Ein wenig Mehrarbeit an dieser Stelle erleichtert Ihnen die Arbeit später.

© SAP AG

BC425

4-20

Lösungen Kapitel: Erweiterungen an Objekten des Dictionary Thema: Tabellen-Erweiterungen 1-1

Append-Strukturen sind die einzige Möglichkeit, eine transparente Tabelle (SFLIGHT## ist eine solche) zu erweitern, ohne sie zu modifizieren. 1-1-1 Wie gehen Sie vor, um die Tabelle SFLIGHT## zu erweitern? Mit AppendStrukturen 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… oder die entsprechende Drucktaste an; übernehmen Sie den Namensvorschlag. Vergeben Sie einen Kurztext für die Append-Struktur und sichern Sie sie unter der von Ihnen angelegten Entwicklungsklasse. 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. Eines zur Aufnahme des Piloten-Namens (Zeichenkette der Länge 25) Eines zur Aufnahme der Mahlzeit (Zeichenkette der Länge 20). 1-2-2 Zum Typisieren der Felder legen Sie sinnvollerweise je ein Datenelement an. Nutzen Sie dazu idealerweise die Vorwärtsnavigation. Geben Sie den Namen Z_PILNAME## ein und doppelklicken Sie das Feld. Vergeben Sie für das Datenelement Kurztext und adäquate Feldbezeichner. Legen Sie für die Mahlzeit ein Datenelement mit dem Namen Z_MEAL## an. Vergessen Sie nicht, die Datenelemente zu aktivieren.

1-3

© SAP AG

Aktivieren Sie die Append-Struktur. Falls dabei Fehler auftreten, können Sie nähere Hinweise dazu dem Aktivierungsprotokoll entnehmen.

BC425

4-21

Erweiterungen über Customer-Exits

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

 SAP AG 1999

© SAP AG

BC425

5-1

Erweiterungen über Customer-Exits: Lernziele des Kapitels

Am Ende dieses Kapitels können Sie: z die Komponenten einer Erweiterung aufzählen z ein Erweiterungsprojekt anlegen z den Anschluß an Workbench Organizer und

Transportsystem erläutern

z die Begriffe Komponente, Erweiterung und

Erweiterungsprojekt unterscheiden

z ein Erweiterungsprojekt transportieren

 SAP AG 1999

© SAP AG

BC425

5-2

Übersichtsdiagramm Erweiterung Customer-Exits

R/3 Business Anwendungen (SAP Standard) Personali sierung

Modifikation

z Transaktions varianten

z Modifikationsassistent z User-Exits

Erweiterung z ABAP Dictionary

Tabellen Datenelemente

4

z Customer-Exits

3

Funktionsbaustein-Exits Menü-Exits Dynpro-Exits

8

z Business Transaction Events z Business Add Ins

5 6 7

z Überblick  SAP AG 2002

© SAP AG

2

BC425

5-3

Customer-Exits: Überblick

Überblick Überblick Erweiterungsverwaltung Erweiterungsverwaltung Funktionsbaustein-Exit Funktionsbaustein-Exit Menü-Exit Menü-Exit Dynpro-Exit Dynpro-Exit

 SAP AG 1999

© SAP AG

BC425

5-4

SAP-Anwendungserweiterung

SAP

Kunde

entwickelt

Anwendungsfunktion

benutzt

definiert

Komponenten der Anwendungserweiterung

bearbeitet

faßt zusammen

Anwendungserweiterung

aktiviert

 SAP AG 1999

„

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.

© SAP AG

BC425

5-5

Kundenerweiterungsprojekt

SAP

Kunde

Definition von SAPErweiterungen

Definition von Erweiterungsprojekten

SMOD

CMOD

 SAP AG 1999

„

Der SAP-Anwendungsprogrammierer stellt aus Funktionsbaustein-, Menü- und Dynpro-Exits SAPErweiterungen 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).

© SAP AG

BC425

5-6

Erweiterungen und Erweiterungsprojekte Erweiterungsprojekt

E C

C C

E C

C C

C

C

C

E C

C C

C

E

C

C

Erweiterungsprojekt

E

C

C

SAP Erweiterung

C

Erweiterungsprojekt

C

E

E

E

C

E

C

C Komponente

 SAP AG 1999

„

Funktionsbaustein-, 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).

© SAP AG

BC425

5-7

Customer-Exits: Erweiterungsverwaltung

Überblick Überblick Erweiterungsverwaltung Erweiterungsverwaltung Funktionsbaustein-Exit Funktionsbaustein-Exit Menü-Exit Menü-Exit Dynpro-Exit Dynpro-Exit

 SAP AG 1999

© SAP AG

BC425

5-8

Vorgehen bei SAP Funktionsbaustein-Exits

Customer-Exits in Anwendungsfunktionen definieren

Menü-Exits Dynpro-Exits

E

Komponenten zu SAP-Erweiterungen zusammenfassen

C

C

C

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.

© SAP AG

BC425

5-9

Vorgehen beim Kunden Erweiterungsprojekt Erweiterungsprojekt Erweiterungsprojekt aus aus SAP-Erweiterungen SAP-Erweiterungen aufbauen aufbauen

E

C

C

E

C

Exit-Funktionsbausteine Komponenten Komponenten des des Erweiterungsprojekts Erweiterungsprojekts bearbeiten bearbeiten

Menü-Einträge 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).

© SAP AG

BC425

5-10

Kundenerweiterungsprojekt anlegen Projektverwaltung von SAP Erweiterungen

Projekt

Anlegen

Name Name des des Erweiterungsprojekts Erweiterungsprojekts Anlegen Anlegen

Teilobjekte Attribute Zuordnung Erweiterungen Komponenten Dokumentation

Anzeigen

Ändern

Attribute Erweiterungsprojekt

Projekt

Kurztext

 SAP AG 1999

„

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.

© SAP AG

BC425

5-11

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 SAPErweiterungen auswählen.

© SAP AG

BC425

5-12

Komponenten bearbeiten Projektverwaltung von SAP Erweiterungen Function Builder

Projekt

Anlegen

Funktionsbaustein

Teilobjekte

Text ändern

Attribute Zuordnung Erweiterungen

Menü-Text

Komponenten Dokumentation

Anzeigen

Übernehmen

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

© SAP AG

BC425

5-13

Erweiterungsprojekt aktivieren Projektverwaltung von SAP Erweiterungen

Projekt

Anlegen

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.

© SAP AG

BC425

5-14

Transport von Projekten

Entwicklungssystem

Folgesystem

Erweiterungsprojekt

E C

E C

C

Erweiterungsprojekt Transport auftrag

E

C

C

E

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, SubscreenDynpros, Include mit Subscreen-Modulpools) einer oder mehreren Aufgaben innerhalb eines Änderungsauftrags zuordnen.

© SAP AG

BC425

5-15

Customer-Exits: Funktionsbaustein-Exit

Überblick Überblick Erweiterungsverwaltung Erweiterungsverwaltung Funktionsbaustein-Exit Funktionsbaustein-Exit Menü-Exit Menü-Exit Dynpro-Exit Dynpro-Exit

 SAP AG 1999

© SAP AG

BC425

5-16

Überblick Funktionsbaustein-Exit

SAP festlegen

Kunde FunktionsbausteinExit

aktivieren

Aufruf Verwaltung

Funktionsbaustein

Schnittstelle

Quelltext

Dokumentation

 SAP AG 1999

„

Funktionsbaustein-Exits erlauben dem Kunden, in einer Anwendungsfunktion zusätzliche Logik zu implementieren. Der SAP-Anwendungsprogrammierer bestimmt, wo in einer Anwendungsfunktion Funktionsbaustein-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 Funktionsbaustein-Exit vorgesehene Funktionalität in der zugehörigen SAPDokumentation.

„

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 Funktionsbaustein-Exits nicht aus.

© SAP AG

BC425

5-17

Funktionsbaustein-Exit: Ablaufdiagramm Anwendungsprogramm X-Funktionsgruppe Exit-Funktionsbaustein EXIT__001 CALL CUSTOMER-FUNCTION Include im Kundennamensraum

 SAP AG 1999

„

In diesem Bild ist der Ablauf eines Programmes dargestellt, das eine Erweiterung in Form eines Funktionsbaustein-Exits anbietet.

„

An einer vom SAP-Anwendungsentwickler definierten Stelle im Quelltext wird der ExitFunktionsbaustein aufgerufen. Innerhalb des Funktionsbausteins kann der Verwender mit Hilfe eines Includes im Kundennamensraum Funktionalität hinzufügen.

© SAP AG

BC425

5-18

Funktionsbaustein aufrufen und anlegen PROGRAM PROGRAM . . START-OF-SELECTION. START-OF-SELECTION. ... ... CALL CUSTOMER-FUNCTION ’001’ EXPORTING .... IMPORTING .... .

FUNCTION-POOL FUNCTION-POOL XAAA. XAAA. ... ... FUNCTION FUNCTION exit__001. exit__001. ... ... INCLUDE zxaaau01.

ENDFUNCTION. ENDFUNCTION.

 SAP AG 1999

„

Den Aufruf eines Funktionsbausteins legt der SAP-Anwendungsprogrammierer durch die ABAPAnweisung 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 (XFunktionsgruppe).

„

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.

© SAP AG

BC425

5-19

Funktionsbaustein-Exits finden z aus Anwendungsprogramm:

z Suche über Tools

System Æ Status Æ Doppelklick auf Programmnamen

Anwendungs hierarchie

Suchen nach Zeichenkette... call customer  global in Programm ¢prog² prog²

Repository Infosystem

Æ CMOD Hilfsmittel ¬ SAP-Erweiterungen

IMG

Æ Suche einschränken mit *¢program_name²*

Dokumentation  SAP AG 1999

„

Wie können sie erkennen, ob ein Anwendungsprogramm einen Funktionsbaustein-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: y Entwicklungsklasse (Versuchen sie auch generische Eingaben) y Technischer Name der Erweiterung

© SAP AG

BC425

5-20

Funktionsbaustein-Exit bearbeiten Projektverwaltung von SAP Erweiterungen

Projekt

Function Builder

Anlegen

FUNCTION exit__001.

Teilobjekte Attribute Zuordnung Erweiterungen

INCLUDE zxaaau01. ENDFUNCTION.

Komponenten Dokumentation

Anzeigen

Ändern ABAP Editor *INCLUDE zxaaau01

 SAP AG 1999

„

Sie bearbeiten den Funktionsbaustein eines Funktionsbaustein-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.

© SAP AG

BC425

5-21

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: y 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. y Globale Daten werden in dem sogenannten TOP-Include abgelegt. Dieses Include wird beim Anlegen einer Funktionsgruppe automatisch erzeugt. y Funktionsbausteine werden in Includes mit fortlaufenden Nummern abgelegt, die ihrerseits alle wieder in einem Include mit der Endung UXX liegen. y 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.

© SAP AG

BC425

5-22

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 LXAAAF00

...

Kundeneigener Quelltext 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.

© SAP AG

BC425

5-23

Exit-Funktionsgruppe: Globale Daten FUNCTION-POOL FUNCTION-POOL xaaa. xaaa. SAPLXAAA

INCLUDE INCLUDE INCLUDE INCLUDE

LXAAATOP LXAAATAP

LXaaaTOP. LXaaaTOP. ZXaaaTOP. ZXaaaTOP.

TABLES: TABLES: ... ... DATA: ... DATA: ...

ZXAAATOP

TABLES: TABLES: ... ... DATA: ... DATA: ...

LXAAAUXX LXAAAU01 ZXAAAU01 LXAAAU02 ZXAAAU02 LXAAAF00

...

 SAP AG 1999

„

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

© SAP AG

BC425

5-24

Kundeneigener Quelltext

SAPLXAAA LXAAATOP FUNCTION FUNCTION exit__001. exit__001. ... ...

LXAAATAP ZXAAATOP

INCLUDE INCLUDE ZXaaaU01. ZXaaaU01. ... ... ENDFUNCTION. ENDFUNCTION.

LXAAAUXX LXAAAU01

*INCLUDE *INCLUDE ZXaaaU01. ZXaaaU01. DATA: DATA: .

ZXAAAU01 LXAAAU02

FORM. FORM. MODULE. MODULE. GET GET ... ... AT AT ... ...

ZXAAAU02 LXAAAF00

... ... ... ...

ENDFORM. ENDFORM. ENDMODULE. ENDMODULE.

...

 SAP AG 1999

„

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.

© SAP AG

BC425

5-25

Exit-Funktionsgruppe: Weitere SAP-Objekte

SAPLXAAA

Programmname

LXAAATOP

Globale Daten

LXAAAUXX

Alle Funktionsbausteine

LXAAAF01

Unterprogramme

LXAAAO01

PBO-Module

LXAAAI01

PAI-Module

LXAAAE01

ABAP-Ereignisse

... ...

...

 SAP AG 1999

„

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

„

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

© SAP AG

BC425

5-26

Exit-Funktionsgruppe: Kunden-Objekte

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 1999

„

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: y ZXaaaFnn für Unterprogramme y ZXaaaOnn für PBO-Module y ZXaaaInn für PAI-Module y ZXaaaEnn für Ereignisse

© SAP AG

BC425

5-27

Kundeneigene Dynpros

SAPLXAAA LXAAATOP

...

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

LXAAAUXX LXAAAU01

*INCLUDE *INCLUDE ZXaaaO01. ZXaaaO01.

ZXAAAU01

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.

© SAP AG

BC425

5-28

Zusammenfassung Funktionsbaustein-Exits SAP Anwendungs-Programm

X-Funktionsgruppe XAAA

ABAP

ABAP

***Global Data*** DATA: gl_field... CALL CUSTOMERFUNCTION ’001’ EXPORTING i_vars = gl_field.

Dynpros

9000 FUNCTION exit_prg_001. *IMPORTING i_vars INCLUDE ZXaaaU01. ENDFUNCTION. *INCLUDE ZXaaaU01 CALL SCREEN 9000.

9100

Textelemente GUI-Oberfläche  SAP AG 1999

„

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.

© SAP AG

BC425

5-29

Customer-Exits: Menü-Exit

Überblick Überblick Erweiterungsverwaltung Erweiterungsverwaltung Funktionsbaustein-Exit Funktionsbaustein-Exit Menü-Exit Menü-Exit Dynpro-Exit Dynpro-Exit

 SAP AG 1999

© SAP AG

BC425

5-30

Überblick Menü-Exits

SAP Menu 1

Menu 2

Kunde

Menu 3

Menu 1

Function Function11 Function Function22 Function Function33

Menu 2

Menu 3

Function Function11 Function Function22 Function Function33

Kundenfunktion

 SAP AG 1999

„

Menü-Exits erlauben es ihnen, eigene Abläufe mit Menüeinträgen in SAP-Menüs zu verknüpfen. Der SAP-Anwendungsprogrammierer reserviert hierzu in der GUI-Oberfläche bestimmte Menüeinträge. Sie können den Text zu einem reservierten Menüeintrag später selbst bestimmen. Darüber hinaus können Sie oft in einem dazugehörigen Funktionsbaustein-Exit auf die Auswahl reagieren.

„

Die Menü-Exits werden von ihnen aktiviert und sind ab diesem Zeitpunkt in dem SAP-Menü sichtbar. Beim Auswählen des entsprechenden Menüpunktes wird die vom SAPAnwendungsentwickler vorgesehene Funktionalität abgespielt oder in einen Funktionsbaustein-Exit verzweigt und damit die kundeneigene Funktionalität abgespielt.

© SAP AG

BC425

5-31

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.

© SAP AG

BC425

5-32

Menü-Exits bearbeiten Projektverwaltung von SAP Erweiterungen

Projekt

Projektverwaltung

Anlegen

Teilobjekte

Menü-Exit

Attribute Zuordnung Erweiterungen

SAPMabbc+abc

Komponenten Dokumentation

Anzeigen

Ändern

Text ändern

Menü-Text Übernehmen

 SAP AG 1999

„

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.

© SAP AG

BC425

5-33

Menü- und Funktionsbaustein-Exits

PROGRAM PROGRAM DATA DATA

. . ok_code ok_code LIKE LIKE sy-ucomm. sy-ucomm.

... ... CASE CASE ok_code. ok_code. WHEN WHEN ’DISP’. ’DISP’. ... ... WHEN ’+ABC’. CALL CUSTOMER-FUNCTION ’001’ EXPORTING

IMPORTING . ... ... ENDCASE. ENDCASE.

 SAP AG 1999

„

Der SAP-Anwendungsprogrammierer bestimmt, wo im Programm zusätzliche Funktionscodes abgefragt werden und wie darauf reagiert werden soll, entweder durch einen Funktionsbaustein-Exit oder durch eine bereits fest vorgegebene Funktionalität.

© SAP AG

BC425

5-34

Zusammenfassung Menü-Exits

FunktionsbausteinExits

Zusätzliche Menüeinträge

SAP R/3 System Hilfe

      

SAP Anwendung

 SAP AG 1999

„

Sie können aufgrund von reservierten Funktionscodes Menü-Exits durchführen. Die betreffenden Funktionscodes legt der SAP-Anwendungsprogrammierer fest und ordnet sie Menüs zu. Außerdem sieht er in der Regel einen Funktionsbaustein-Exit vor.

„

Menü-Exit und Funktionsbaustein-Exit gehören zur selben SAP-Erweiterung.

„

Den zusätzlichen Funktionscodes können keine Drucktasten zugeordnet werden.

„

Sie können den Menüeintrag ändern und den Funktionscode aktivieren.

© SAP AG

BC425

5-35

Customer-Exits: Dynpro-Exit

Überblick Überblick Erweiterungsverwaltung Erweiterungsverwaltung Funktionsbaustein-Exit Funktionsbaustein-Exit Menü-Exit Menü-Exit Dynpro-Exit Dynpro-Exit

 SAP AG 1999

© SAP AG

BC425

5-36

Überblick Dynpro-Exit

SAP

Kunde

SAP R/3

SAP R/3

Feld 1 Feld 2

Feld 1 Feld 2

Feld Z

Feld X Feld Y

 SAP AG 1999

„

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.

© SAP AG

BC425

5-37

Subscreens im R/3 Telefon Telefax

SAP R/3

Email 200

Name Telefon Telefax

SAP R/3

Email

abcd

Name

200

abcd

SAP R/3 Name

Straße Wohnort

Straße Wohnort

Land

Land

300

abcd 300

 SAP AG 1999

„

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.

© SAP AG

BC425

5-38

Aufruf eines normalen Subscreens z Ablaufsteuerung des Hauptdynpros PROCESS BEFORE OUTPUT. MODULE ... CALL SUBSCREEN abcd INCLUDING sy-cprog ’1234’. MODULE ... PROCESS AFTER INPUT. MODULE ... CALL SUBSCREEN abcd. MODULE user_command_0100.

 SAP AG 1999

„

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

„

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!

© SAP AG

BC425

5-39

Definition eines Dynpro-Exits Dynpro Dynpro von von SAP SAP Anwendungs-Programm Anwendungs-Programm SAP R/3

SAPLXAAA Dynpro 1234 Kundenfeld1

abcd

Kundenfeld2

PROCESS BEFORE OUTPUT. ... CALL CUSTOMER-SUBSCREEN abcd INCLUDING ’SAPLXAAA’ ’1234’. ...  SAP AG 1999

„

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 FunktionsbausteinExits enthält.

© SAP AG

BC425

5-40

Aufruf eines Customer-Subscreens SAP Anwendungs-Programm

X-Funktionsgruppe XAAA

Dynpro

Dynpro 1234

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

PROCESS BEFORE OUTPUT.

MODULE ...

MODULE ... MODULE ...

abcd PROCESS AFTER INPUT. MODULE ...

PROCESS AFTER INPUT.

CALL CUSTOMER-SUBSCREEN abcd.

MODULE ... MODULE ...

MODULE ...  SAP AG 1999

„

An allen Stellen in der Ablaufsteuerung eines Dynpros, an denen zum PBO-Zeitpunkt der Aufruf CALL CUSTOMER-SUBSCREEN INCLUDING 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 aufruft.

© SAP AG

BC425

5-41

Datentransport zum Subscreen SAP Anwendungs-Programm Dynpro

X-Funktionsgruppe XAAA

ABAP

ABAP

Dynpro

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

MODULE...

CALL CUSTOMERSUBSCREEN...

CALL CUSTOMERFUNCTION ’001’ EXPORTING i_vars = gl_field.

FUNCTION exit_prg_001. *IMPORTING i_vars gl_var = i_vars. ENDFUNCTION. ***Global ***Global Data*** DATA: gl_var...

abcd

 SAP AG 1999

„

Die globalen Daten des rufenden Programms sind der den Subscreen enthaltenden XFunktionsgruppe nicht bekannt; sie werden explizit vom SAP-Anwendungsentwickler über Funktionsbaustein-Exits zur Verfügung gestellt.

„

Dazu werden in der Ablaufsteuerung des rufenden Programms Module aufgerufen, die Funktionsbaustein-Exits enthalten, welche schließlich über die Schnittstellenparameter die Daten übergeben.

„

Die zu den Funktionsbaustein-Exits gehörenden Funktionsbausteine liegen in der gleichen XFunktionsgruppe, zu der auch der Subscreen gehört.

© SAP AG

BC425

5-42

Datentransport vom Subscreen SAP Anwendungs-Programm Dynpro

X-Funktionsgruppe XAAA

ABAP

ABAP

abcd

Dynpro

***Global ***Global Data*** DATA: gl_var...

CALL CUSTOMERSUBSCREEN... MODULE...

CALL CUSTOMERFUNCTION ’002’ IMPORTING e_vars = gl_field.

FUNCTION exit_prg_002. *EXPORTING e_vars e_vars = gl_var.

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

ENDFUNCTION.

 SAP AG 1999

„

Umgekehrt sind dem rufenden Programm auch nicht die globalen Daten der X-Funktionsgruppe bekannt, die den Subscreen enthält. Daher läßt der SAP-Anwendungsprogrammierer die auf dem Subscreen geänderten Daten wieder über einen Funktionsbaustein-Exit an das rufende Programm zurückgeben.

„

Dazu wird zu PAI des Hauptdynpros ein Modul aufgerufen, das einen Funktionsbaustein-Exit enthält, welcher die Kundendaten über die Schnittstellenparameter zurückgibt.

© SAP AG

BC425

5-43

Subscreens bearbeiten (1) Projektverwaltung von SAP Erweiterungen

Projekt

Anlegen

Projektverwaltung

Dynpro-Exit

Teilobjekte Attribute Zuordnung Erweiterungen

SAPMabbc1234_abcd_SAPLXaaa1234

Komponenten Dokumentation

Anzeigen

Ändern

Screen Painter

 SAP AG 1999

„

Sie bearbeiten Subscreens über die Projektverwaltung.

„

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

© SAP AG

BC425

5-44

Subscreens bearbeiten (2) Komponenten bearbeiten Nein

Dynpro vorhanden?

Dynpro anlegen?

Ja Screen Painter

System Hilfe Screen Painter

System Hilfe System Hilfe

                   

System Hilfe Screen Painter

Dynproattribute

       

* SAPLXaaa Dynpro 0444 PROCESS BEFORE OUTPUT. MODULE a . ... PROCESS AFTER INPUT. MODULE m.

Dynprotyp

Objekt auswählen

Subscreen

*INCLUDE ZXaaaO01. MODULE a OUTPUT. ...  SAP AG 1999

„

Den Subscreen selbst legen sie an, ebenso die dazugehörigen PBO- und PAI-Module. Die SAPEntwicklungsumgebung unterstützt das Anlegen durch Vorwärtsnavigation.

„

Zu beachten ist, daß der Subscreen beim erstmaligen Anlegen auch als Dynprotypen Subscreen erhält.

„

In der X-Funktionsgruppe, zu dem der Subscreen und die Funktionsbaustein-Exits gehören, dürfen keine Schnittstellen geändert und auch keine eigenen Funktionsbausteine hinzugefügt werden.

„

Im übrigen gelten die bei ' Aufruf eines Subscreens'angegebenen Einschränkungen.

© SAP AG

BC425

5-45

Zusammenfassung Dynpro-Exit kundeneigener Subscreen kundeneigene Verarbeitung

Schnittstelle

System Hilfe

SAP R/3

       

Datenübergabe

Subscreenbereich

 SAP AG 1999

„

Dynpro-Exits gestatten ihnen, vom SAP-Anwendungsprogrammierer vorgesehene Bereiche eines Dynpros selbst zu gestalten, um Zusatzinformationen anzuzeigen oder Daten zu erfassen und zu verarbeiten.

„

Für den Kunden vorgesehene Subscreenbereiche werden mit der Anweisung CALL CUSTOMERSUBSCREEN zu den Zeitpunkten PBO und PAI in die Ablaufsteuerung des rufenden Dynpros eingebunden.

„

Sobald der Kunde ein Erweiterungsprojekt aktiviert, das Subscreens als Komponenten enthält, wird das rufende Dynpro nachgeneriert und der Subscreen beim nächsten Aufruf der Anwendungsfunktion angezeigt.

© SAP AG

BC425

5-46

Erweiterungen über Customer-Exits : Zusammenfassung des Kapitels

Sie können nun: z Erklären, wie Erweiterungen mit Hilfe von Customer-Exits arbeiten z Programme mit Hilfe von Funktionsbaustein-Exits erweitern z Menüs erweitern unter Verwendung von MenüExits z Dynpros erweitern mit Hilfe von Dynpro-Exits z Erklären, wie die verschiedenen Erweiterungstypen zusammenspielen

 SAP AG 1999

© SAP AG

BC425

5-47

Übungen Kapitel: Customer-Exits Thema: Funktionsbaustein-Exit Am Ende dieser Übungen können Sie: • Eine Erweiterung mit Hilfe eines Funktionsbaustein-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 möglichst, das Programm zu modifizieren. 1-1

Untersuchen Sie die Transaktion auf Erweiterungsmöglichkeiten. 1-1-1 Hat der SAP-Entwickler für die angegebene Transaktion einen CustomerExit 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. 1-2-3 Legen Sie eine geeignete Nachricht in der Nachrichtenklasse ZBC425_## an oder verwenden Sie die Nachricht 011 aus der Nachrichtenklasse BC425. 1-2-5 Überprüfen Sie das Ergebnis Ihrer Arbeit.

© SAP AG

BC425

5-48

Ü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 Funktionsbaustein-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 aktuellen Buchungen zu dem angezeigten Flug auszugeben. Ein geeignetes listenerzeugendes Programm verwenden sie schon immer, mußten es bisher aber stets separat aufrufen: Es hat den Namen SAPBC425_BOOKING_##. 1-1

Untersuchen Sie die Transaktion BC425_##. Gibt es eine Möglichkeit, evtl. einen Menüeintrag, den man nutzen könnte, um ein Programm aus Ihrer Transaktion aus aufzurufen? 1-1-1 Hat der SAP-Entwickler für die angegebene Transaktion einen CustomerExit 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 relevanten Parameter an das Programm SAPBC425_BOOKING_##. Beachten Sie, welche Daten Ihnen im Funktionsbaustein-Exit zur Verfügung stehen.

1-3

© SAP AG

Überprüfen Sie das Ergebnis Ihrer Arbeit.

BC425

5-49

Ü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 freien Plätze, die auf diesem Flug noch zur Verfügung stehen.

1-2-2 Sorgen Sie für den korrekten Datentransport auf das Subscreen-Dynpro. 1-3

© SAP AG

Überprüfen Sie das Ergebnis Ihrer Arbeit.

BC425

5-50

Lösungen Kapitel: Customer-Exits Thema: Funktionsbaustein-Exit 1-1

Auf folgende Weise können Sie die Transaktion daraufhin untersuchen, ob sie Customer-Exits anbietet: 1-1-1 System o 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 *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 o ABAP Workbench o Hilfsmittel o Erweiterungen o 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 Function Builder in den Quelltext des Exit-Funktionsbausteins. Legen Sie das Include per Doppelklick an. Folgendermaßen könnte der von Ihnen erfaßte Quelltext aussehen: IF flight-fldate < sy-datum. MESSAGE w011(bc425) WITH sy-datum. ENDIF. 1-2-4 Aktivieren Sie Ihr Include. Gehen Sie zurück zur Projektverwaltung und aktivieren Sie Ihr Erweiterungsprojekt.

© SAP AG

BC425

5-51

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. 1-1-1 Idealerweise verwenden Sie das Repository Infosystem, um nach einer geeigneten Erweiterung zu suchen, 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 o ABAP Workbench o Hilfsmittel o Erweiterungen o 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 Funktionsbaustein-Exit per Doppelklick. Legen Sie das KundenInclude per Vorwärtsnavigation an. 1-2-3 Der Quelltext des Includes sollte für Gruppe 00 folgendermaßen aussehen: SUBMIT sapbc425_booking_00 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.

© SAP AG

BC425

5-52

Lösungen Kapitel: Customer-Exits Thema: Dynpro-Exits 1-1

Schauen Sie sich die Dynpros der Transaktion im Screen-Painter an. Sie stellen fest, daß Dynpro 200 der Transaktion BC425_## einen Dynpro-Exit bietet. 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 Dynprotypen "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 XFunktionsgruppe, generieren das Programm. Danach können Sie dieses Programm-Feld auf dem Dynpro plazieren. Generieren sie das Dynpro. (Oder: Sie können Ihre Append-Struktur erweitern. Diese Möglichkeit sollten Sie nicht in der Übung nicht nutzen, da der Referent die Felder der Append-Struktur mit einem Programm füllt. Die Erweiterung der AppendStruktur könnte zu Fehlern in diesem Programm führen.). 1-2-2 Für den korrekten Datentransport verwenden Sie die FunktionsbausteinExits. Legen Sie das Kunden-Include an und erfassen Sie folgenden Quelltext (Beispiel für Gruppe 00): MOVE-CORRESPONDING flight TO sflight00. seatsfree = flight-seatsmax – flight-seatsocc. TOP-Include: TABLES: sflight00. DATA: seatsfree type s_seatsocc. Aktivieren Sie die Programme. Aktivieren Sie das Erweiterungsprojekt.

1-3

© SAP AG

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

5-53

Business Transaction Events

Inhalt: z Was sind Business Transaction Events? z Verschiedene Arten von Schnittstellen z Business Transaction Events verwenden z Business Transaction Events finden z Unterschiede Customer-Exits – Business Transaction Events

 SAP AG 1999

© SAP AG

BC425

6-1

Business Transaction Events: Lernziele des Kapitels

Am Ende dieses Kapitels können Sie: z beschreiben, was ein Business Transaction Event ist z Programm-Erweiterungen mit Hilfe von Business Transaction Events realisieren z passende Business Transaction Events finden

 SAP AG 1999

© SAP AG

BC425

6-2

Übersichtsdiagramm Transaction Events R/3 Business Anwendungen (SAP Standard) Personali sierung

Modifikation

z Transaktions varianten

z Modifikationsassistent z User-Exits

Erweiterung z ABAP Dictionary

Tabellen Datenelemente

4

z Customer-Exits

3

Funktionsbaustein-Exits Menü-Exits Dynpro-Exits

8

z Business Transaction Events z Business Add Ins

5 6 7

z Überblick

2

 SAP AG 2002

© SAP AG

BC425

6-3

BTE: Software-Auslieferungswege z Auslieferungswege mit Customer-Exits SAP

Kunde

CustomerExits

z Auslieferungswege mit Business Transaction Events

SAP

IBU

Partner

Kunde

Business Transaction Events

 SAP AG 1999

„

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

© SAP AG

BC425

6-4

Business Transaction Events (BTE)

z Erweiterungsform, die im Finanzwesen (FI) entwickelt wurde z Vordefinierte Schnittstellen, an denen der Verwender Erweiterungen anhängen kann z Unterscheide zwei Arten von Schnittstellen: Publish & Subscribe 



Prozeß-Schnittstellen

 SAP AG 1999

„

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

© SAP AG

BC425

6-5

BTE: Mögliche Szenarien (1)

SAP-Transaktion Schnittstellen Datenfluß

Add-on-Komponente eines Partners

 SAP AG 1999

„

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.

© SAP AG

BC425

6-6

BTE: Mögliche Szenarien (2)

SAP-Transaktion Schnittstellen Datenfluß

Add-on-Komponente von Partner A Add-on-Komponente von Partner B

Beide zusätzlichen Produkte existieren, ohne sich gegenseitig zu behindern.

 SAP AG 1999

„

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

„

Im Gegensatz zu Customer-Exits bieten Business Transaction Events die Möglichkeit, daß eine Schnittstelle mehr als einmal für zusätzliche Logik verwendet wird.

„

Ist dies der Fall, muß der Anwender entscheiden, welche Erweiterung er zu einem gegebenen Zeitpunkt ausführen will.

„

Die beiden Erweiterungen existieren also nebeneinander, ohne sich gegenseitig zu behindern; zur Laufzeit wird jedoch nur jeweils eine Erweiterung abgearbeitet.

© SAP AG

BC425

6-7

P/S- und Prozess-Schnittstellen z P/S-Schnittstellen

z Prozess-Schnittstellen IBU

Partner 1 Partner 2 Kunde

SAP-Transaktion

SAP-Transaktion

IBU

IBU Partner 1 Partner 2 Kunde

Partner 1 Partner 2 Kunde

IBU Partner 1 Partner 2 Kunde

Genau eine Add-on-Komponente wird durchlaufen

Auslösen einer oder mehrerer zusätzlicher Operationen  SAP AG 2002

„

Publish & Subscribe Schnittstellen: y Wenn das Ereignis ausgelöst wird, können eine oder mehr zusätzliche Operationen gestartet werden. Sie beeinflussen das R/3-Standardprogramm nicht. y Auch mehr als zwei Operationen behindern sich nicht gegenseitig. y Add-on-Komponenten können nur Daten importieren. y Mögliche Anwendungen: Zusätzliche Prüfungen (Berechtigungen, vorhandene Duplikate, etc.)

„

Prozeß-Schnittstellen: y 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. y Wenn das Ereignis ausgelöst wird, kann ein Prozeß im Standardprogramm nur durch einen anderen Prozeß ersetzt werden. y 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.

© SAP AG

BC425

6-8

BTE Funktionsweise: Ablaufdiagramm Aktive Implementierung

Anwendungsprogramm

Funktionsbaustein OPEN_FI_PERFORM_

BTE: Funktionsbaustein im Kundennamensraum

CALL FUNCTION CALL FUNCTION

 SAP AG 1999

„

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 Funktionsbausteine beginnen mit "OPEN_FI_PERFORM_" bzw. "OUTBOUND_CALL_").

„

Der Funktionsbaustein OPEN_FI_PERFORM_ oder OUTBOUND_CALL_ ("ServiceFunktionsbaustein") 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.

© SAP AG

BC425

6-9

BTE: Aufrufendes Programm REPORT REPORT . . START-OF-SELECTION. START-OF-SELECTION. ... ... CALL FUNCTION ’OPEN_FI_PERFORM_00001350_E’ EXPORTING .

1

FUNCTION-POOL FUNCTION-POOL . . ... ... FUNCTION FUNCTION open_fi_perform_00001350_e. open_fi_perform_00001350_e. ... ... LOOP LOOP AT AT itab itab into into wa. wa.

2

CALL FUNCTION wa-fb_name EXPORTING .

FB_NAME 00001350 Z_FUBA001 00001350 /ABC/FUBA002

ENDLOOP. ENDLOOP. ... ... ENDFUNCTION. ENDFUNCTION.

00001350 /CUSNR/FUBA003

 SAP AG 1999

„

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

© SAP AG

BC425

6-10

Business Transaction Events: SAP und Kunde

SAP definieren

Kunde Event

Produkt anlegen FB über Produkt dem Event zuordnen

registrieren Funktionsbaustein

kopieren Quelltext aktivieren

SAMPLE_INTERFACE_ anlegen

 SAP AG 1999

„

Business Transaction Events erlauben dem Verwender, ähnlich wie Funktionsbaustein-Exits, in einer Anwendungsfunktion zusätzliche Programmlogik zu implementieren. Der SAPAnwendungsentwickler 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 die 5. und 6. Stelle mit Zeitpunkten im gleichen Programm identisch sein.

„

Der SAP-Entwickler registriert den Event und legt einen Muster-Funktionsbaustein sample_interface_ an, der die Schnittstelle für den Verwender festlegt.

© SAP AG

BC425

6-11

Business Transaction Events suchen z direkt aus Anwendung:

z Suche über Tools

Business Transaction Events

System o Status oDoppelklick auf Programmnamen

IMG

Suchen nach Zeichenkette...

zum Beispiel:

OPEN_FI_PERFORM

Finanzwesen ¬ Grundeinstellungen ¬BTE verwenden

 global in Programm ¢prog² prog² o SAP Referenz-IMG

Umfeld ¬ Infosystem o entsprechende Anwendungskomponente auswählen

Finanzwesen ¬ Grundeinstellungen ¬BTE verwenden Umfeld ¬ Infosystem

o Dokumentation

 SAP AG 1999

„

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.

© SAP AG

BC425

6-12

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

z Musterbaustein z Schnittstelle

Beschreibung *** Liste selektierter Events ***

z Dokumentation

 SAP AG 1999

„

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: y Musterfunktionsbaustein anschauen (In den Function Builder navigieren, z.B. zum Kopieren des Musterbausteins) y sich die Schnittstelle anzeigen lassen y die Dokumentation studieren

„

Aus der Dokumentation muss eindeutig hervorgehen, wie sie die Erweiterung einsetzen können und welchen Beschränkungen sie unterliegt.

© SAP AG

BC425

6-13

BTE: Funktion des Produkts

z kann als Ganzes aktiviert/deaktiviert werden

Kunde

Kunde

Produkt

SAP-Transaktion

z Produkt faßt Erweiterungen zusammen

ON

Kunde

OFF

 SAP AG 1999

„

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.

© SAP AG

BC425

6-14

Implementieren eines BTE Function Builder

Funktionsbaustein

SAMPLE_INTERFACE__E

z Funktionsbaustein kopieren in Kundennamensraum z Quelltext z Aktivieren

Z_* Event ...

z Produkt anlegen

Event ...

z Funktionsbaustein zuordnen

Einstellungen Umfeld ... ... 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

Einstellungen Umfeld ... ... SAP Business Framework: Business Transaction Events Produkte Produkte ...einer ...einer SAP-Anw. SAP-Anw. P/S-Bausteine P/S-Bausteine ...eines Partners ...eines Partners Prozeß-Bausteine Prozeß-Bausteine ...eines ...eines Kunden Kunden  SAP AG 1999

„

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

© SAP AG

BC425

6-15

Customer-Exits vs. BTE: Unterschiede Customer-Exits

Business Transaction Events

Quelltext Menüs Dynpros Tabellen Verwaltungs ebene mehrfach verwendbar mandanten abhängig filterabhängig  SAP AG 1999

„

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.

„

Bei Publish & Subscribe-Schnittstellen hat der Anwender dann die Wahl, welche Erweiterung er ausführen will.

„

Bei Prozeß-Schnittstellen wird in der Reihenfolge SAP-Anwendung - Add-On - Kunde genau eine Komponente ausgeführt.

© SAP AG

BC425

6-16

Business Transaction Events: Zusammenfassung des Kapitels

Sie können nun: z Beschreiben, wie Business Transaction Events arbeiten z Programm-Erweiterungen mit Hilfe von Business Transaction Events inplementieren z Business Transaction Events zu einem Anwendungsprogramm finden z Erklären, wie sich Business Transaction Events von Customer-Exits unterscheiden

 SAP AG 1999

© SAP AG

BC425

6-17

Business Add-Ins

Inhalt: z Implementieren von Business Add-Ins z Definition von Business Add-Ins z Dynpro-Erweiterungen mit Business Add-Ins

 SAP AG 2002

© SAP AG

BC425

7-1

Business Add-Ins: Lernziele des Kapitels

Am Ende dieses Kapitels können Sie: z Programme funktional mit Business Add-Ins erweitern z Business Add-Ins anlegen, um sie in der Software-Entwicklungskette nachfolgenden R/3Verwendern zur Verfügung zu stellen z Dynpro-Erweiterungen mit Business Add-Ins realisieren

 SAP AG 2002

© SAP AG

BC425

7-2

Business Add-Ins: Unternehmensszenario

z Eine Transaktion der Flugverwaltung soll funktional erweitert werden. Dazu stellt der SAPEntwickler ein BAdI bereit. z Des weiteren werden sie selbst ein Business Add In definieren und in einem Programm verwenden.

 SAP AG 2002

© SAP AG

BC425

7-3

Übersichtsdiagramm Add Ins R/3 Business Anwendungen (SAP Standard) Personali sierung

Modifikation

z Transaktions varianten

z Modifikationsassistent z User-Exits

Erweiterung z ABAP Dictionary

Tabellen Datenelemente

4

z Customer-Exits

3

Funktionsbaustein-Exits Menü-Exits Dynpro-Exits

8

z Business Transaction Events z Business Add Ins

z Überblick

5 6 7

2

 SAP AG 2002

© SAP AG

BC425

7-4

Business Add Ins: Motivation z Nachteile bisheriger Erweiterungstechniken: nur einfach verwendbar (Customer-Exits) 

keine Dynpro-Erweiterungen (BTEs) 

keine Menü-Erweiterungen (BTEs) 

keine Verwaltungsebene (BTEs) 

z Anforderungen an neue Erweiterungstechnik: Mehrfach verwendbar 

Alle Erweiterungsarten (Programm / Menü / Dynpro) 

Verwaltungsebene 



Mit modernsten Techniken implementiert

 SAP AG 1999

© SAP AG

BC425

7-5

Software-Auslieferungswege z früher SAP

Kunde

CustomerExits

z heute SAP

IBU

Partner

Kunde

Erweiterung von ABAP: ABAP Objects

Business Add Ins

 SAP AG 1999

© SAP AG

BC425

7-6

Interfaces: Lernziele

Nach Behandlung dieses Themas können Sie: z Erläutern, was ein Interface in ABAP Objects ist

 SAP AG 2002

© SAP AG

BC425

7-7

Objekte

Schnittstelle Private Komponenten Flug Adresse

Kunde Passagierliste

FLUG

Öffentliche Attribute Fluggesellschaft Flugnummer

Öffentlicher Zugriff

Öffentliche Methoden z BUCHEN

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

© SAP AG

BC425

7-8

Instanzen von Funktionsgruppen als Objekte

Funktionsgruppe 1

Funktionsgruppe 2

Funktionsbaustein

Funktionsbaustein

Daten ...



Daten ...



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.

© SAP AG

BC425

7-9

Klassen verallgemeinern Funktionsgruppen

n. Instanz, Klasse 1 1. Instanz, Klasse 1 Daten SchnittDaten stelle Daten Schnittstelle ...



...



n. Instanz, Klasse m 1. Instanz, DatenKlasse m Funktions- Daten baustein Daten Schnittstelle ...



...



...



...



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.

© SAP AG

BC425

7-10

Interfaces z Definition einer Schnittstelle ohne Implementierung z Interfaces werden von Klassen implementiert z 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.

© SAP AG

BC425

7-11

BAdIs implementieren: Lernziele

Nach Behandlung dieses Themas können Sie: z Business Add Ins zur Realisierung von Programmerweiterungen einsetzen

 SAP AG 2002

© SAP AG

BC425

7-12

Business Add Ins: Architektur SAP

IBU

Partner



Kunde

Generierte BAdIKlasse

SAP Programm

Implemen tierung

Software produkt Implemen tierung

BAdI-Interface

 SAP AG 2002

„

Im Gegensatz zu Customer-Exits tragen Business Add Ins der veränderten SoftwareAuslieferungslandschaft 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.

© SAP AG

BC425

7-13

Business Add Ins: Komponenten

BAdI

Eigensch.

INTERFACE . Mehrfach verwendbar Filterabhängig FCodes Programm

Funktionscode +ABC

DATA:

a1 ...

METHODS m1 EXPORTING e_par1 e_par2 IMPORTING i_par1.

Generierte BAdIKlasse

METHODS m2 ... ENDINTERFACE. Subscreens Rufendes Programm

Dyn-Nr Subscr-Bereich Besc 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: y 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 InterfaceMethoden der generierten BAdI-Klasse auf. y 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. y 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: y Interface y generierte Klasse (BAdI-Klasse), die das Interface implementiert

„

Die generierte Klasse (BAdI-Klasse) hat folgende Aufgaben: y 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. y Steuerung: Die BAdI-Klasse ruft die aktiven Implementierungen auf.

© SAP AG

BC425

7-14

Business Add Ins: Ablaufdiagramm Anwendungsprog. Service-Klasse CL_EXITHANDLER

1

Abarbeiten aktiver Implementierungen

Instanz von BAdI-Klasse

BAdI: Instanz von Implement. Implement. Klasse

2

 SAP AG 2002

„

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.

© SAP AG

BC425

7-15

Business Add Ins: Aufrufendes Programm REPORT REPORT . .

Instanz von

badi-class>

DATA: r_var r_var TYPE REF TO . . START-OF-SELECTION. START-OF-SELECTION. CALL METHOD cl_exithandler=>get_instance CHANGING instance = r_var . r_var.

CALL METHOD r_var ->method r_var->method EXPORTING

IMPORTING .

1 r_var

2

END-OF-SELECTION. END-OF-SELECTION.  SAP AG 2002

„

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

© SAP AG

BC425

7-16

Business Add Ins implementieren: Einstieg

Business Add-Ins: Einstieg Implementierungspflege

Implementierungsname Anzeigen

Name der Implementierung

Ändern

Anlegen

Anlegen

Business Add Ins: Auswahl Def

Definitionsname

 SAP AG 1999

„

Zum Implementieren von Business Add Ins verwenden sie die 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.

© SAP AG

BC425

7-17

BAdIs implementieren: Methoden Eigensch.

Interface

FCodes

Interfacename

Name der implementierenden Klasse Methode

Beschreibung Methode des BAdI

Class Builder: Editieren Methode ~ METHOD ~. *... ENDMETHOD.

 SAP AG 2002

„

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 y Namensraumpräfix, Y oder Z y CL_ (steht für Klasse) y IM_ (steht für Implementierung) y 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.

© SAP AG

BC425

7-18

BAdIs implementieren: private Methoden

Class Builder: Editieren Methode ~ METHOD ~. CALL METHOD EXPORTING ... . ENDMETHOD.

Class Builder: Klasse ändern Eigensch.

Methoden

Ausnahmen

Parameter Methode

Events

Art

Beschreibung new method in Implementation

 SAP AG 2002

„

Sie können in der implementierenden Klasse private Methoden anlegen, die sie aus der InterfaceMethode 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.

© SAP AG

BC425

7-19

BAdIs implementieren: Aktivieren

Business Add-Ins: Einstieg Implementierungspflege

Implementierungsname Anzeigen

Ändern

Anlegen

z Aktivieren z Aktivierung zurücknehmen

 SAP AG 1999

„

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.

© SAP AG

BC425

7-20

BAdI: Funktionscodes - Überblick

SAP Menu 1

Menu 2

Kunde

Menu 3

Menu 1

Function Function11 Function Function22 Function Function33

Menu 2

Menu 3

Function Function11 Function Function22 Function Function33

Kundenfunktion

 SAP AG 1999

„

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

© SAP AG

BC425

7-21

BAdI: Funktionscodes - Voraussetzung

SAP Menu Painter Menu 1

Menu 2

Menu 3

BACK Zurück DISP Anzeigen +XXX Kundenfunktion

 SAP AG 1999

„

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.

© SAP AG

BC425

7-22

BAdI: Funktionscodes - Einschränkung

Eigensch. Programm /namespace/...

Interface

FCodes

Funktionscode +xxx

Beschreibung

Eigensch.

Mehrfach verwendbar Filterabhängig

 SAP AG 2002

„

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üeintrag soll zur Anzeige gebracht werden?").

© SAP AG

BC425

7-23

BAdI: Funktionscodeverarbeitung im Programm

PROGRAM PROGRAM DATA DATA DATA: DATA:

. . ok_code ok_code LIKE LIKE sy-ucomm. sy-ucomm. r_var r_var TYPE TYPE REF REF TO TO . .

... ... CASE CASE ok_code. ok_code. WHEN WHEN ’DISP’. ’DISP’. ... ... WHEN ’+XXX’. CALL METHOD r_var -> > r_var->< EXPORTING

IMPORTING .

ENDCASE. ENDCASE.

 SAP AG 2002

„

Wird im Anwendungsprogramm der Menüeintrag ausgewählt, zu dem der Funktionscode "+" 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.

© SAP AG

BC425

7-24

Definition von BAdIs: Lernziele

Nach Behandlung dieses Themas können Sie: z Ein Business Add In definieren z Ein Programm schreiben, das eine Erweiterung mit Hilfe eines BAdIs anbietet

 SAP AG 2002

© SAP AG

BC425

7-25

BAdI Definition: Einstieg

Business Add-Ins: Einstieg Definitionspflege

Name der BAdI Definition

Definitionsname__ Anzeigen

Ändern

Anlegen

Anlegen

 SAP AG 1999

„

Zum Anlegen eines BAdIs verwenden Sie den BAdI Builder (Werkzeuge --> ABAP Workbench --> Hilfsmittel --> Business Add-Ins --> Definition) oder den Transaktionscode SE18.

© SAP AG

BC425

7-26

BAdI Definition: Eigenschaften

Eigensch.

Interface

Programm

FCodes

Funktionscode

Beschreibung

Eigensch.

Mehrfach verwendbar Filterabhängig

Filtertyp__

 SAP AG 2002

„

Unter den Eigenschaften können sie zwei wichtige Eigenschaften des Business Add Ins festlegen: y Mehrfach verwendbar y 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.

© SAP AG

BC425

7-27

BAdI Definition: Funktionscodes

Eigensch. Programm /namespace/...

Interface

FCodes

Funktionscode +xxx

Beschreibung

Eigensch.

Mehrfach verwendbar Filterabhängig

 SAP AG 1999

„

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: y Es können zur Zeit keine BAdIs angelegt werden, die nur aus Menü-Erweiterungen (Funktionscodes) bestehen. y Die Aufnahme von Menü-Erweiterungen schliesst die Mehrfachverwendbarkeit und die Filterabhängigkeit aus.

© SAP AG

BC425

7-28

BAdI Definition: Interface-Methoden Eigensch.

Interface

FCodes

Interfacename

Class Builder: Interface ändern Eigensch.

Methoden

Ausnahmen

Parameter Methode

Events

Art

Beschreibung Methode der Erweiterung Methode 2 der Erweiterung

 SAP AG 2002

„

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: y Namensraum-Präfix y CL_ (für Klasse allgemein) y EX_ (steht für "Exit") y 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.

© SAP AG

BC425

7-29

BAdI Definition: Methoden-Schnittstellenparameter Class Builder: Interface ändern Eigensch.

Methoden

Ausnahmen

Parameter Methode

Events

Art

Beschreibung methode des BAdI

Eigensch.

Methoden

Ausnahmen

Methoden Parameter

Events

Art Type Importing Exporting Changing

Beschreibung

 SAP AG 2002

„

Im Class Builder können sie alle gewohnten Aktivitäten ausführen. Sie können unter anderem y Interface-Methoden definieren y Schnittstellenparameter der Methoden definieren y 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.

© SAP AG

BC425

7-30

BAdI Definition: Interface aktivieren

Class Builder: Interface ändern

Eigensch.

Methoden

Ausnahmen

Parameter Methode

Events

Art

Aktivieren

Beschreibung methode des BAdI

 SAP AG 2002

„

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

© SAP AG

BC425

7-31

BAdI Definition: Aufruf im Programm REPORT REPORT . . DATA: r_var r_var TYPE REF TO . .

Instanz von

badi-class>

1

START-OF-SELECTION. START-OF-SELECTION. CALL METHOD cl_exithandler=>get_instance CHANGING instance = r_var . r_var.

CALL METHOD r_var -> > r_var->< EXPORTING

IMPORTING .

2 r_var

3

END-OF-SELECTION. END-OF-SELECTION.  SAP AG 2002

„

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.

© SAP AG

BC425

7-32

Aufruf eines filterabhängigen BAdIs REPORT REPORT . .

Instanz von

badi-class>

DATA: DATA: r_var r_var 1 TYPE TYPE REF REF TO TO . . START-OF-SELECTION. START-OF-SELECTION. CALL CALL METHOD METHOD cl_exithandler=>get_instance cl_exithandler=>get_instance CHANGING CHANGING instance instance == r_var. r_var.

CALL METHOD r_var -> > r_var->< EXPORTING flt_val =

IMPORTING .

2 r_var

3

END-OF-SELECTION. END-OF-SELECTION.  SAP AG 2002

„

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

© SAP AG

BC425

7-33

BAdI Screen Erweiterung anlegen: Lernziele

Nach Behandlung dieses Themas können Sie z Ein Programm erstellen, das eine ScreenErweiterung mit Hilfe von Business Add-Ins anbietet

 SAP AG 2002

© SAP AG

BC425

7-34

BAdI Screen-Erweiterung: Prinzip SAP AnwProg

PBO.

SET INSTANCE

Implement. Programm (Funktionsgruppe) GET INSTANCE GET DATA

PUT DATA

PBO.

Statisches Attribut: Attribut: DynproDynpro-Instanz

abcd PAI.

Badi-Klasse

PUT DATA

PAI.

GET DATA

PUT DATA

GET DATA

Implement. Klasse Instanz-Attribute: Instanz-Attribute: DynproDynpro-Daten  SAP AG 2002

„

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

„

Auf den folgenden Graphiken wird diese Kommunikation Schritt für Schritt abgebildet.

© SAP AG

BC425

7-35

BAdI Screen-Erweiterungen: Komponenten

BAdI

Eigensch.

DATA: gl_ gl_dat... dat...

Mehrfach verwendbar Filterabhängig FCodes Programm

INTERFACE IF_EX_.

Funktionscode +ABC

METHODS put_ put_data IMPORTING . . METHODS get_ get_data EXPORTING . . METHODS ... ENDINTERFACE.

Subscreens Rufendes Programm

Dyn-Nr Subscr-Bereich Besc 0200 ABCD Bla..

 SAP AG 2002

„

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.

© SAP AG

BC425

7-36

BAdI Screen-Erweiterung: Aufrufe im Anw.prog. I z PBO: z Instanz erzeugen z Instanz bekannt machen, damit Implementierer darauf zugreifen kann z Programmname und Dynpronummer der Implementierung beschaffen z Daten zur Verfügung stellen z Subscreen aufrufen

 SAP AG 2002

„

Um eine Dynpro-Erweiterung über ein Business Add-In anbieten zu können, müssen im Anwendungsprogramm folgende Schritte implementiert werden: y Instanz der BAdI-Klasse erzeugen. y Eine Referenz auf diese Instanz in der BAdI-Klasse ablegen. y Daten, die der Erweiterung zur Verfügung gestellt werden sollen, der BAdI-Klasse übergeben y Programmname und Dynpronummer des Erweiterungs-Dynpros beschaffen. y Schließlich wird das Subscreen-Dynpro aufgerufen

© SAP AG

BC425

7-37

BAdI Screen-Erweiterung: Aufrufe im Anw.prog. II z PAI: z Subscreen aufrufen z Daten zurücknehmen

 SAP AG 2002

„

Bei PAI des Hauptdynpros müssen je nach Design der Erweiterung vom Implementierer geänderte Daten in das Anwendungsprogramm zurückgenommen werden. Dazu dient ein weiterer Methodenaufruf.

© SAP AG

BC425

7-38

Screen-Erweiterung I: Instanz erzeugen SAP Anwendungs-Programm Dynpro

ABAP DATA:

MODULE... MODULE... MODULE... MODULE...

CL_EXITHANDLER

exit TYPE REF TO .

CALL METHOD cl_exithandler cl_exithandler =>get _instance =>get_ CHANGING instance = exit. exit.

Badi-Klasse

CALL SUBSCREEN...

abcd

 SAP AG 2002

„

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.

„

Die mit dem Interface typisierte Referenzvariable zeigt auf die Instanz der BAdI-Klasse.

© SAP AG

BC425

7-39

Screen-Erweiterung II: Instanz bekanntmachen SAP Anwendungs-Programm Dynpro

ABAP DATA:

MODULE... MODULE... MODULE... MODULE... CALL SUBSCREEN...

CL_EXITHANDLER

exit TYPE REF TO .

CALL METHOD cl_exithandler cl_exithandler =>set _instance_ =>set_ instance_for _subscreens EXPORTING instance = exit. exit.

Badi-Klasse

abcd

 SAP AG 2002

„

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 die Übergabe der Referenzvariable an ein Attribut der generierten BAdI-Klasse, die diese Interfacereferenz wiederum an die BAdI-Klasse weitergibt.

„

Die Übergabe erfolgt durch den Aufruf von CALL METHOD cl_exithandler=>set_instance_for_subscreens

© SAP AG

BC425

7-40

Screen-Erweiterung IV: Daten bereitstellen SAP Anwendungs-Programm Dynpro

ABAP DATA:

MODULE... MODULE... MODULE... MODULE... CALL SUBSCREEN...

CL_EXITHANDLER

exit TYPE REF TO .

CALL METHOD exit-> put_ _data exit->put EXPORTING

Badi-Klasse

daten

abcd

 SAP AG 2002

„

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.

© SAP AG

BC425

7-41

Screen-Erweiterung III: Prog.name und Dynpronummer beschaffen SAP Anwendungs-Programm Dynpro

CL_EXITHANDLER

ABAP DATA:

exit TYPE REF TO .

MODULE... MODULE... MODULE... MODULE...

CALL METHOD cl_exithandler cl_exithandler =>get _prog_and_ dynp =>get_ prog_and_dynp _for_ for_subscr CALL EXPORTING SUBSCREEN... ... IMPORTING called_ called_program =.. called_ called_dynpro =..

Badi-Klasse

abcd

 SAP AG 2002

„

Vor der Anweisung CALL SUBSCREEN in der Ablauflogik des Trägerdynpros müssen die Variablen für Programmname und Dynpro-Nummer mit den Daten erweiternden Subscreen-Dynpros versorgt werden.

„

Der Methodenaufruf CALL METHOD cl_exithandler=>get_prog_and_dynp_for_subscr ermittelt dazu das aufzurufende Subscreendynpro.

„

Falls noch keine aktive Implementierung existiert, wird ein leeres Dummy-Subscreen-Dynpro (0200) aus einer existierenden Dummy-Funktionsgruppe (SAPLSEXM) ermittelt. Dieses Dynpro wird dann mit der Anweisung CALL SUBSCREEN . aufgerufen.

„

Ist jedoch eine aktive Implementierung zu der verwendeten BAdI-Definition vorhanden, wird das bei der Implementierung angegebene Subscreen-Dynpro aus dem angegebenen Programm verwendet.

© SAP AG

BC425

7-42

Screen-Erweiterung V: Subscreen rufen SAP Anwendungs-Programm Dynpro

CL_EXITHANDLER

ABAP DATA:

Implementierendes Programm Dynpro

exit TYPE REF TO .

MODULE... MODULE... MODULE... MODULE...

Badi-Klasse

CALL SUBSCREEN abcd INCLUDING prog dynnr. dynnr.

daten

abcd

 SAP AG 2002

„

Schließlich erfolgt im Anwendungsprogramm der Aufruf des Subscreen-Dynpros. Falls keine aktive Implementierung existiert, ermittelt die BAdI-Umgebung automatisch ein leeres Default-SubscreenDynpro, das angezeigt wird.

© SAP AG

BC425

7-43

Screen-Erweiterung VI: Subscreen-Daten zurücknehmen SAP Anwendungs-Programm Dynpro

CL_EXITHANDLER

ABAP DATA:

Implementierendes Programm Dynpro

exit TYPE REF TO .

abcd CALL SUBSCREEN abcd INCLUDING prog dynnr. dynnr.

Badi-Klasse

daten

MODULE...

CALL METHOD exit-> get_ _data exit->get IMPORTING

 SAP AG 2002

„

Sollen nach Verlassen des Dynpros Daten von der Implementierung zurückgenommen werden, muss eine weitere Methode aufgerufen werden.

© SAP AG

BC425

7-44

BAdI Screen Erweiterung implementieren: Lernziele

Nach Behandlung dieses Themas können Sie z Ein BAdI-Screen-Erweiterung implementieren

 SAP AG 2002

© SAP AG

BC425

7-45

BAdI-S-E implementieren: Schritte z Programm anlegen (Funktionsgruppe) z Subscreen-Dynpro anlegen z PBO: z Instanz der Adapterklasse beschaffen z Daten aus Adapterklasse beschaffen z PAI: z Geänderte Daten in Adapterklasse zurückschreiben

 SAP AG 2002

„

Um eine BAdI-Dynpro-Erweiterung zu implementieren, müssen folgende Schritte durchlaufen werden: y Anlegen der Implementierung zur BAdI-Definition. Hier wird das Programm angegeben, welches das Subscreen-Dynpro enthält sowie die Nummer des Subscreen-Dynpros. y Anlegen des in der BAdI-Implementierung angegebenen Programms y Anlegen und Gestalten des Subscreen-Dynpros y Das implementierende Programm muss sich die Instanz der BAdI-Klasse beschaffen y Von der Anwendung an die BAdI-Klasse übergebene Daten können danach beschafft werden.

„

Falls vorgesehen ist, dass Daten zurückgegeben werden, muss bei PAI des Subscreen-Dynpros eine Methode aufgerufen werden, die die geänderten Daten an die BAdI-Klasse zurückgibt.

© SAP AG

BC425

7-46

BAdI-S-E implemetieren: Instanz beschaffen SAP AnwProg

CL_EXITHANDLER

Implementierendes Programm

Dynpro

ABAP DATA:

Dynpro

exit1 TYPE REF TO . PBO.

CALL METHOD cl_exithandler cl_exithandler =>get _instance_ =>get_ instance_for _subscreens IMPORTING instance = exit1.

Badi-Klasse

daten

MODULE...

abcd

 SAP AG 2002

„

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

„

Die Übergabe erfolgt durch den Aufruf von CALL METHOD cl_exithandler=>get_instance_for_subscreens

„

Damit kann im implementierenden Programm auf die Interface-Methoden und Attribute der BAdIKlasse zugegriffen werden.

© SAP AG

BC425

7-47

BAdI-S-E implemetieren: Daten beschaffen SAP AnwProg

CL_EXITHANDLER

Implementierendes Programm

Dynpro

ABAP DATA:

Dynpro

exit1 TYPE REF TO . PBO.

Badi-Klasse

CALL METHOD exit1->get _data exit1->get_ IMPORTING . .

MODULE... MODULE...

daten

abcd

 SAP AG 2002

„

Das Implementierende Programm beschafft sich die Daten von der BAdI-Klasse durch Aufruf der entsprechenden Interface-Methode. In der Methode müssen die in globalen Attributen in der BAdIKlasse gespeicherten Daten an die Schnittstelle übergeben werden.

© SAP AG

BC425

7-48

BAdI-S-E implemetieren: Daten zurückschreiben SAP AnwProg

CL_EXITHANDLER

Implementierendes Programm

Dynpro

ABAP DATA:

Dynpro

exit1 TYPE REF TO . PBO.

Badi-Klasse

daten

PAI. CALL METHOD exit1->put _data exit1->put_ EXPORTING . .

abcd

MODULE...

 SAP AG 2002

„

Ist die Änderung von Daten vorgesehen, werden die geänderten Daten anlog zur Beschaffung wieder in die globalen Attribute der Instanz der BAdI-Klasse zurückgeschrieben. Dies erfolgt durch Aufruf der entsprechenden BAdI-Methode.

© SAP AG

BC425

7-49

BAdIs: Weitere Anmerkungen: Lernziele

Nach Behandlung dieses Themas können Sie: z Erklären, was erweiterbare Filtertypen sind z Default- und Beispiel-Coding erläutern

 SAP AG 2002

© SAP AG

BC425

7-50

Erweiterbare Filtertypen: Voraussetzungen Filtertyp



Domäne Domäne Wertetabelle Wertetabelle

Feldname ... ...

Key

Texttabelle Texttabelle

Typ

Feldname ...

Key

Typ

...

language

SPRAS

...

...

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

© SAP AG

BC425

7-51

Defaultimplementierung z Wird durchlaufen, falls keine aktive Implementierung vorhanden

Programm-Erweiterung aufrufen

z Vom Anbieter angelegt Aktive Implementierung vorhanden? Ja Implementierung ausführen

Nein

Default Implementierung vorhanden?

Nein

Ja DefaultImplementierung ausführen

 SAP AG 1999

„

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 --> DefaultCoding. 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 Beispielimplementierung anzulegen. Hierbei handelt es sich um Kopiervorlagen, die in die Methoden der Implementierungen eingebunden werden können.

„

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

© SAP AG

BC425

7-52

Vergleich mit anderen Erweiterungstechniken z Erweiterungsmöglichkeiten: Customer-Exits

Business Transaction Events

Business Add Ins

Quelltext Menüs Dynpros Tabellen Verwaltungs ebene mehrfach verwendbar filterabhängig  SAP AG 2002

„

Business Add Ins sind die natürliche Erweiterung der bisher verfügbaren Erweiterungstechniken. Von Customer-Exits wurden die Verwaltungsschicht übernommen ebenso wie die Verfügbarkeit der unterschiedlichen Erweiterungskomponenten.

„

Von Business Transaction Events wurde die Idee der Mehrfachverwendbarkeit aufgegriffen und mit einem konsequent objektorientierten Ansatz verwirklicht.

„

Die objektorientierte Implementierung der neuen Technik bietet bisher undenkbare Ansätze. So kann man sich vorstellen, eine Erweiterung des Objekts "Beleg" anzubieten. Für jeden einzelnen Beleg könnte man auf diese Weise eine neue Instanz der Erweiterung anbieten.

© SAP AG

BC425

7-53

BAdI-Definition: Namenskonventionen

z BAdI-Definition oder Z oder /../ (frei wählbar; Namensräume beachten) 

z Interface IF_EX_ oder ZIF_EX_ oder /../IF_EX_ (frei wählbar; Namensräume beachten) 

z Methoden Namen beliebig 

z Generierte BAdI-Klasse (Adapter-Klasse) 

CL_EX_ oder ZCL_EX_ oder /../CL_EX_ (nicht änderbar)

 SAP AG 1999

© SAP AG

BC425

7-54

BAdI-Implementierung: Namenskonventionen

z BAdI-Implementierung oder Z oder /../ (frei wählbar; Namensräume beachten) 

z Interface IF_EX_ oder ZIF_EX_ oder /../IF_EX_ (von BadI-Definition vorgegeben) 

z Methoden von BAdI-Definition vorgegeben 

z Implementierende Klasse 

CL_IM_ oder ZCL_IM_ oder /../CL_IM_ (frei wählbar; Namensräume beachten)

 SAP AG 1999

© SAP AG

BC425

7-55

Business Add Ins finden z direkt aus Anwendung:

z Suche über Tools

System o Status oDoppelklick auf Programmnamen Suchen nach Zeichenkette...

Anwendungs hierarchie

CL_EXITHANDLER  global in Programm ¢prog² prog² o Doppelklick auf Referenzvariable Doppelklick auf Interface o Class Builder

Repository Infosystem

o Verwendungsnachweis Interface

IMG

o CL_EX_ o SE18:

o Dokumentation

o Dokumentation

 SAP AG 2002

„

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.

© SAP AG

BC425

7-56

Business Add-Ins: Zusammenfassung des Kapitels

Sie können nun: z Programme funktional mit Business Add-Ins erweitern z Business Add-Ins anlegen, um sie in der Software-Entwicklungskette nachfolgenden R/3Verwendern zur Verfügung zu stellen z Dynpro-Erweiterungen mit Business Add-Ins realisieren

 SAP AG 2002

© SAP AG

BC425

7-57

Ü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

© SAP AG

Überprüfen Sie das Ergebnis Ihrer Arbeit.

BC425

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

© SAP AG

BC425

7-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 ArrayFetch 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

© SAP AG

Überprüfen Sie das Ergebnis Ihrer Arbeit.

BC425

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

© SAP AG

BC425

7-61

1-4-2 Nehmen Sie die notwendigen Einstellungen auf der Karteikarte "Subscrens" vor. 1-4-3 Aktivieren Sie die Implementierung 1-5

© SAP AG

Testen Sie die erweiterte Anwendung.

BC425

7-62

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.

© SAP AG

BC425

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

© SAP AG

BC425

7-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 © SAP AG

OF BLOCK carrier. BC425

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

*&----------------------------------------------------------* © SAP AG

BC425

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

Aktivieren Sie die Implementierung.

© SAP AG

BC425

7-67

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 o Status, um den Programmnamen herauszufinden. Doppelklicken Sie den Programmnamen. Wählen Sie Springen o 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 o Business Add Ins o 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 o Anlegen o 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 o Anlegen o Dynpro. Vergeben Sie einen Kurztext und wählen Sie Dynprotyp "Subscreen". 1-3-3 Starten Sie den Layout-Editor. Wählen Sie Springen o Sekundärfenster o Dict/Programmfelder. Geben Sie die Dictionary-Struktur an und wählen Sie

© SAP AG

BC425

7-68

"Holen aus Dict". Markieren Sie die gewünschten Felder und bestätigen Sie die Eingabe. Platzieren Sie die Felder auf dem Dynpro. 1-3-4 Navigieren Sie zur Ablauflogik des Subscreen-Dynpros. Folgende Module sollten mindestens in der Ablauflogik aufgerufen werden:



 352&(66%()25(287387  02'8/(JHWBLQVWDQFH 02'8/(JHWBGDWD



 352&(66$)7(5,1387  02'8/(SXWBGDWD   

 

,1&/8'(/=%&B,02

 

 

0RGXOHJHWBLQVWDQFH287387

  02'8/(JHWBLQVWDQFH287387  &$//0(7+2'FOBH[LWKDQGOHU !JHWBLQVWDQFHBIRUBVXEVFUHHQV &+$1*,1* LQVWDQFH UBYDU (;&(37,216 27+(56  ,)V\VXEUF! 0(66$*(,'V\PVJLG7