ABAP Naming Conventions PDF
ABAP Naming Conventions PDF
ABAP Naming Conventions PDF
Werkzeuge
HELP.BCDWBTOO
Release 4.6C
BC - ABAP Workbench: Werkzeuge SAP AG
Copyright
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.
Die von SAP AG oder deren Vertriebsfirmen angebotenen Software-Produkte können Software-
Komponenten auch anderer Software-Hersteller enthalten.
® ® ® ® ® ® ®
Microsoft , WINDOWS , NT , EXCEL , Word , PowerPoint und SQL Server sind eingetragene
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.
® ® TM
INFORMIX -OnLine for SAP und Informix Dynamic Server 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.
2 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Symbole
Symbol Bedeutung
Achtung
Beispiel
Empfehlung
Hinweis
Syntax
Tip
April 2001 3
BC - ABAP Workbench: Werkzeuge SAP AG
Inhalt
4 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
April 2001 5
BC - ABAP Workbench: Werkzeuge SAP AG
6 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
April 2001 7
BC - ABAP Workbench: Werkzeuge SAP AG
8 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
April 2001 9
BC - ABAP Workbench: Werkzeuge SAP AG
10 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
BC - ABAP Workbench: Werkzeuge
April 2001 11
BC - ABAP Workbench: Werkzeuge SAP AG
Neuerungen zum Release 4.6C
12 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Neuerungen zum Release 4.6C
Neuerungen im einzelnen
I
n
t
e
g
r
a
ti
o
n
v
o
n
I
n
t
e
r
n
e
t-
S
e
r
v
i
c
e
s
i
n
d
e
r
S
E
8
0
[
S
e
it
e
5
1
]
April 2001 13
BC - ABAP Workbench: Werkzeuge SAP AG
Neuerungen zum Release 4.6C
S
c
r
e
e
n
P
a
i
n
t
e
r
§ Wizard für Tabstrip Controls [Seite 299]
§ Wizard für Table Controls [Seite 305]
§ Bezug auf den ABAP-Datentyp STRING bei Dynproelementen vom Typ Ein/Ausgabefeld.
Siehe auch: Zusatz zum Attribut Name bei Allgemeinen Attributen [Seite 338].
§ Weiteres Dynproattribut: Halten Scrollposition. Mehr dazu in Dynpros anlegen [Seite 269].
14 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Neuerungen zum Release 4.6C
Z
u
s
ä
t
z
li
c
h
e
F
u
n
k
ti
o
n
e
n
i
m
O
b
j
e
c
t
N
a
v
i
g
a
t
o
r
§ Persistenter Arbeitsvorrat [Seite 44] im Object Navigator.
§ Verwendung von Drag and Drop, um Muster im Quelltext einzufügen. Mehr dazu in
Muster mit Drag and Drop einfügen [Seite 130].
§ Historie für die Objektlistennavigation.
§ Ein- und Ausblenden des Navigationsbereichs [Seite 39].
April 2001 15
BC - ABAP Workbench: Werkzeuge SAP AG
Neuerungen zum Release 4.6C
A
B
A
P
E
d
it
o
r
Zusätzliche Funktionen über das Kontextmenü des Frontend Editors verfügbar:
§ Navigation zu einer beliebigen Zeile. Mehr dazu: Im Quelltext navigieren [Seite 111].
§ Zugriff auf die Zwischenablage und Blockoperationen. Siehe auch: Zwischenablage
verwenden [Seite 121].
K
l
a
s
s
if
i
k
a
ti
o
n
v
o
n
T
r
a
n
s
a
k
ti
o
n
e
n
Transaktionen können klassifiziert werden als Professional User Transaction oder als Easy
Web Transaktion. Über die Kennzeichnung ihrer GUI-Fähigkeit wird gesteuert, welches GUI
zum Ausführen der Transaktion vom Workplace gestartet wird.
16 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Neuerungen zum Release 4.6C
N
e
u
e
F
u
n
k
ti
o
n
e
n
b
e
i
B
u
s
i
n
e
s
s
A
d
d
-
I
n
s
[
S
e
it
e
5
2
9
]
§ Anlegen von Beispiel- und Defaultimplementierungen
Für ein definiertes Business Add-In können eine Beispiel- und eine Defaultimplementierung
mit entsprechendem Quelltext bereitgestellt werden.
• Erweiterbare Filtertypen
Waren Implememtierungen zu filterabhängigen Definitionen von Business Add-Ins nur für
existierende Filterwerte möglich, so können ab dem Release 4.6C auch Implementierungen
zu bisher nicht existierenden Filterwerten angelegt werden.
April 2001 17
BC - ABAP Workbench: Werkzeuge SAP AG
Object Navigator
Object Navigator
Verwendung
Der Object Navigator gewährt einen zentralen Einstieg in die ABAP Workbench und ist als
Nachfolger des Repository Browsers über den Transaktionscode SE80 erreichbar.
Sie verwenden den Object Navigator, um Ihre Entwicklungsarbeit in einer integrierten
Entwicklungsumgebung zu organisieren und Entwicklungsobjekte anzulegen, zu ändern und zu
verwalten.
Entwicklungsobjekte werden in Objektlisten zusammengefaßt, die sämtliche Elemente gleicher
Kategorie z.B. einer Entwicklungsklasse, eines Programms oder einer globalen Klasse enthalten.
Ausgehend von der angezeigten Objektliste, wählen Sie das interessierende Objekt mit
Doppelklick aus. Damit wird automatisch das entsprechende Werkzeug aufgerufen, mit dem das
Objekt erstellt wurde. Siehe auch Arbeiten mit Entwicklungsobjekten [Seite 22].
Um Ihre Entwicklungsarbeit möglichst effizient zu gestalten, stellt der Object Navigator einen
umfangreichen Satz von Navigationsfunktionen zur Verfügung. Weitere Informationen hierzu
finden Sie unter Navigation [Seite 36].
Besonderheiten
§ Einbindung von Controls
Beim Redesign der Workbench-Oberfläche wurde auf die Infrastruktur des Control
Frameworks zurückgegriffen. Die Implementierung der verschiedenen Controls erfolgte auf
der Grundlage von ABAP Objects. Eine Übersicht über die in der Workbench eingesetzten
Controls erhalten Sie unter Controls und die Workbench [Extern].
Der Object Navigator realisiert eine Trennung in einen Navigations- und einen
Werkzeugbereich. Weitere Informationen finden Sie unter Bereiche der Navigation [Seite 37].
Während der Navigationsbereich die Objektliste anzeigt, werden im Werkzeugbereich die
Entwicklungsobjekte in den sie definierenden Werkzeugen angezeigt.
Die folgenden Werkzeuge sind im Werkzeugbereich des Object Navigators integriert:
das Dictionary, der Class Builder, der ABAP Editor, der Function Builder, der Screen Painter,
der Menu Painter und die Textelementpflege.
Die übrigen Werkzeuge nehmen das ganze Bild ein und überlagern auch den
Navigationsbereich.
Bei der Bearbeitung eines Einzelobjektes in einem bestimmten Werkzeug bleibt die Anzeige
weiterer Teilobjekte eines Programms, Entwicklungsklasse, usw. parallel dazu bestehen.
18 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Object Navigator
Entwicklungsobjekte, für die eine häufige Bearbeitung in der Workbench ansteht, können in
eine Favoritenliste aufgenommen werden.
Ausgewählte Objekte können für die Dauer einer Sitzung in einen Arbeitsvorrat
aufgenommen werden.
April 2001 19
BC - ABAP Workbench: Werkzeuge SAP AG
Object Navigator
Navigationsbereich
§ Objektliste
§ Toolbar der Objektlistenanzeige
20 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Object Navigator
§ Kontextmenü
Werkzeugbereich
§ Werkzeuge der ABAP Workbench
§ Funktionen der Werkzeuge
§ Menüs
§ Symbolleiste
§ Drucktastenleiste
§ Kontextmenü (nur im ABAP Editor mit Edit Control Modus)
zusätzliche Fenster
April 2001 21
BC - ABAP Workbench: Werkzeuge SAP AG
Arbeiten mit Entwicklungsobjekten
Objektlisten
Im Object Navigator werden Entwicklungsobjekte in Objektlisten angeordnet, die sämtliche
Elemente einer Entwicklungsklasse, eines Programms, einer globalen Klasse etc. enthalten.
Objektlisten bieten jedoch nicht nur eine hierarchisch angeordnete Übersicht über die
Entwicklungsobjekte einer Kategorie, sondern geben auch den Zusammenhang der Objekte
untereinander wieder. Der Object Navigator stellt eine Objektliste in Form einer Baumstruktur
dar.
Der oberste Knoten einer jeden Objektliste ist eine Entwicklungsklasse. Von der
Entwicklungsklasse aus können Sie bis zur untersten Hierarchiestufe von Objekten navigieren.
Wählen Sie ein Objekt innerhalb der Baumstruktur aus, das selbst eine eigene Objektliste
definiert, so reduziert sich die Darstellung im Object Navigator auf die neue Objektliste
(Fokussierung).
Beispiel:
22 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Arbeiten mit Entwicklungsobjekten
Entwicklungsklasse
Objektarten Entwicklungsklasse
DDIC-Objekte
Klassenbibliothek
Programme
PROG_NAME_01 PROG_NAME_01
PROG_NAME_03 DDIC-Objekte
Felder
Funktionsgruppen
PBO-Module
Includes
PAI-Module
Nachrichtenklassen Unterprogramme
Includes
April 2001 23
BC - ABAP Workbench: Werkzeuge SAP AG
Arbeiten mit Entwicklungsobjekten
24 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Objekte auswählen
Objekte auswählen
Nach dem Aufruf der ABAP Workbench mit dem Object Navigator wird initial die
zuletzt vom Benutzer bearbeitete Objektliste angezeigt. Dies gilt insbesondere nach
einer erneuten Anmeldung am System.
Vorgehensweise
Um ein beliebiges, bereits existierendes Entwicklungsobjekt im Object Navigator für eine weitere
Bearbeitung auszuwählen, gehen Sie wie folgt vor:
1. Wählen Sie im Einstiegsbild des Object Navigators aus der Objektlistenauswahl die Art der
Objektliste aus.
2. Geben Sie den Namen des Objektes im Eingabefeld ein.
Standardmäßig ist das Eingabefeld mit dem Namen des zuletzt verwendeten Objektes
vorbelegt.
Falls Sie auf die Liste der von Ihnen zuletzt verwendeten Objekte zugreifen möchten,
klicken Sie auf die Taste und wählen den interessierenden Eintrag aus.
Der Schritt 2 entfällt bei Auswahl von Anwendunghierarchie im Schritt 1.
Sie können im Schritt 4 das gewünschte Objekt auch über die Funktion Ändern aus
dem Kontextmenü öffnen. Das Objekt wird dann im Änderungsmodus angezeigt.
Alternativ können Sie bei der Auwahl des Objektes im Schritt 4 einen separaten
Modus starten. Wählen Sie dann die Funktion Anzeigen → Im neuen Fenster.
Ergebnis
Der Object Navigator ruft automatisch das Werkzeug auf, in dem das Objekt erstellt wurde. Das
Objekt wird in Anzeigemodus geöffnet. Um in den Änderungsmodus umzuschalten, wählen Sie
in der Drucktastenleiste.
Wenn Sie zum Beispiel ein Include auswählen, ruft der Object Navigator den ABAP Editor auf
und öffnet das Include. Wählen Sie dagegen einen GUI-Satus mit Doppelklick aus, dann wird der
Menu Painter aufgerufen und der Status geöffnet.
April 2001 25
BC - ABAP Workbench: Werkzeuge SAP AG
Objekte auswählen
Sie haben in jedem Werkzeug die Möglichkeit, über die Menü-Funktion Anderers Objekt
ein weiteres Objekt derselben oder einer anderen Kategorie auszuwählen. Wenn Sie
zum Beispiel ein Include im ABAP Editor geöffnet haben, wählen Sie die Funktion
Programm → Anderers Objekt, um ein anderes Include oder ein weiteres Objekt bzw.
Teilobjekt anzuzeigen.
Siehe auch:
Arbeiten mit Entwicklungsobjekten [Seite 22]
Neue Objekte anlegen [Seite 27]
26 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Neue Objekte anlegen
Vorgehensweise
So legen Sie ein neues Entwicklungsobjekt bei bereits vorhandenem Objektknoten innerhalb der
Objektliste an:
1. Markieren Sie den entsprechenden Objektknoten.
2. Wählen Sie Anlegen über die rechte Maustaste.
Ein Dialogfenster zum Anlegen des Objektes erscheint.
3. Geben Sie den Namen des neuen Objektes an.
Beachten Sie dabei, daß im Kundennamensraum alle Repository-Objekte mit Y oder mit
Z beginnen.
4. Bestätigen Sie mit Weiter.
Das System überprüft, ob ein Objekt mit dem eingegebenen Objektnamen bereits im
R/3-System angelegt wurde.
5. Machen Sie die erforderlichen Angaben zum Objekt und wählen Sie Sichern.
Es erscheint das Dialogfenster Objektkatalogeintrag anlegen.
6. Ordnen Sie dem Objekt eine Entwicklungsklasse zu.
So legen Sie im Einstiegsbild des Object Navigators ein neues Entwicklungsobjekt an, falls noch
kein entsprechender Objektknoten existiert.
1. Wählen Sie die Funktion Anderes Objekt, indem Sie die Ikone aus der Drucktastenleiste
anklicken.
2. Wählen Sie im Fenster Objektauswahl die gewünschte Tabstrip-Seite aus.
3. Geben Sie den Namen des anzulegenden Objektes an.
Beachten Sie, daß im Kundennamensraum alle Repository-Objekte mit Y oder mit Z
beginnen.
4. Wählen Sie .
Das System überprüft, ob ein Objekt mit dem eingegebenen Objektnamen bereits im
R/3-System angelegt wurde.
5. Machen Sie die erforderlichen Angaben zum Objekt und wählen Sie Sichern.
Es erscheint das Dialogfenster Objektkatalogeintrag anlegen.
6. Ordnen Sie dem Objekt eine Entwicklungsklasse zu.
April 2001 27
BC - ABAP Workbench: Werkzeuge SAP AG
Neue Objekte anlegen
Ergebnis
Das Objekt wurde im R/3-Repository angelegt und liegt in inaktiver Fassung vor. Durch die
Zuordnung zu einer Entwicklungsklasse ist das Objekt automatisch an das Transport- und
Korrekturwesen angeschlossen.
28 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Programm anlegen
Programm anlegen
Voraussetzungen
In der nachfolgenden Beschreibung wird davon ausgegangen, daß Sie ein neues ABAP-
Programm im Object Navigator anlegen. Darüber hinaus bezieht sich die Vorgehensweise auf
den allgemeinen Fall und läßt sich insbesondere auch dann anwenden, wenn noch kein
Objektknoten Programme innerhalb der Objektliste vorhanden ist.
Anderenfalls können Sie die Funktion Anlegen aus dem Kontextmenü des Objektknotens
verwenden. Siehe auch Neue Objekte anlegen [Seite 27].
Vorgehensweise
8. Wählen Sie die Funktion Anderes Objekt, indem Sie die Ikone aus der Drucktastenleiste
anklicken.
9. Wählen Sie im Fenster Objektauswahl die Tabstrip-Seite Programm aus.
10. Geben Sie den Namen des neuen Programms an.
Beachten Sie, daß im Kundennamensraum alle Programme mit Y oder mit Z beginnen.
11. Wählen Sie .
Es erscheint das Dialogfenster Programm anlegen.
12. Schalten Sie die Option Mit Top-Include aus, falls daß das anzulegende Programm vom Typ
Ausführbares Programm (Report) sein soll. Im entgegengesetzten Fall legen Sie ein
Programm mit TOP-Include, also ein Modulpool an.
April 2001 29
BC - ABAP Workbench: Werkzeuge SAP AG
Programm anlegen
Ergebnis
Das Programm wurde im R/3-Repository angelegt und liegt im ABAP Editor in inaktiver Fassung
vor. Durch die Zuordnung zu einer Entwicklungsklasse ist das Programm automatisch an das
Transport- und Korrekturwesen angeschlossen.
Alternativ können Sie ein Programm vom Einstiegsbild des ABAP Editors (SE38)
anlegen.
30 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Objekte kopieren
Objekte kopieren
Sie können das Anlegen von neuen Objekten eventuell vereinfachen, indem Sie bereits
vorhandene Objekte oder nur ihre Teilobjekte kopieren.
Beim Kopieren wird auf die aktive Fassung des Quellobjektes zurückgegriffen. Nur
bei Funktionsgruppen und Funktionsbausteinen wird nachgefragt, ob die aktive oder
die inaktive Fassung kopiert werden soll.
Voraussetzungen
Falls das Quellobjekt aus Teilobjekten besteht, vergewissern Sie sich, welche Teilobjekte Sie
kopieren möchten.
Vorgehensweise
1. Klicken Sie das gewünschte Objekt an.
2. Wählen Sie die Funktion Kopieren aus dem Kontextmenü.
3. Geben Sie einen Namen für das Zielobjekt ein.
Ergebnis
Das neue Objekt wurde im R/3-Repository angelegt und wird in seiner inaktiven Fassung in die
Objektliste aufgenommen.
April 2001 31
BC - ABAP Workbench: Werkzeuge SAP AG
Objekte löschen
Objekte löschen
Voraussetzungen
Es können nur diejenigen Entwicklungsobjekte gelöscht werden, die von keinen weiteren
Objekten verwendet werden. Führen Sie daher einen Verwendungsnachweis durch.
Vorgehensweise
So löschen Sie ein einzelnes Objekt aus der Objektliste.
9. Klicken Sie das gewünschte Objekt an.
10. Wählen Sie die Funktion Löschen aus dem Kontextmenü.
11. Bestätigen Sie mit Löschen.
Wenn Sie mehrere Objekte aus ein und derselben Objektliste löschen möchten,
dann markieren Sie diese. Verwenden Sie dabei die Taste <STRG> (bzw. SHIFT)
und führen die Schritte 2 - 4 durch. Wiederholen Sie jedoch den Schritt 3 für jedes
einzelne Objekt. Siehe auch Mengenmodus verwenden [Seite 35].
Ergebnis
Sowohl die aktive als auch die inaktive Fassung des (der) Objekte(s) werden gelöscht.
32 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Zuordnung zur Entwicklungsklasse ändern
Verwendung
Sie können einzelne Objekte einer anderen Entwicklungsklasse zuordnen. So können Sie
beispielsweise ein ABAP-Programm in der Liste Ihrer lokalen privaten Objekte
(Entwicklungsklasse $TMP) anlegen und testen; anschließend ordnen Sie das Programm zum
Transport einer anderen Entwicklungsklasse zu.
Vorgehensweise
So ändern Sie im Einstiegsbild des Object Navigators die Entwicklungsklasse eines Objektes:
1. Markieren Sie das betreffende Entwicklungsobjekt in der angezeigten Objektliste.
2. Wählen Sie Weitere Funktionen → Entwicklungsklasse ändern über die rechte
Maustaste.
Es erscheint ein Dialogfenster Umhängen Objekt …
3. Geben Sie den Namen der neuen Entwicklungsklasse an.
Ergebnis
Das System fügt das Objekt dem Änderungsauftrag hinzu und verschiebt es in die neue
Entwicklungsklasse.
April 2001 33
BC - ABAP Workbench: Werkzeuge SAP AG
Objekte aktivieren
Objekte aktivieren
Verwendung
Sie können die Gesamtheit aller Ihrer inaktiven Objekte, ausgewählte Objekte oder auch nur
Teilkomponenten eines Entwicklunsobjektes (Klassen in ABAP Objects) aktivieren.
Voraussetzungen
Um die Aktivierung von Entwicklungsobjekten erfolgreich durchzuführen, wird eine Prüfung des
Gesamtobjektes (Rahmenprogramm, Funktionsgruppe, Klasse,…) durchgeführt. Bei nicht
korrekter Syntax wird die Ausgabe einer Fehlerliste angeboten. Es ist aber auch möglich,
Objekte mit nicht korrekter Syntax zu aktivieren. Dies kann z.B. bei Templates, wie sie bei Code-
Generatoren verwendet werden, von Bedeutung sein.
Vorgehensweise
1. Wählen Sie das entsprechende Objekt aus der Objektliste aus.
2. Wählen Sie die Funktion Aktivieren aus dem Kontextmenü des Object Navigators oder über
die entsprechende Ikone in der Drucktastenleiste des zugehörigen Werkzeugs.
Die Liste des Ihrer inaktiven Objekte wird angezeigt. Das ausgewählte Objekt wird
markiert hervorgehoben.
3. Bestätigen Sie die Auswahl mit .
Bei Includes, die nicht eindeutig einem Rahmenprogramm zugeordnet sind, erscheint
eine Abfrage nach dem Rahmenprogramm. Wählen Sie dann aus der Liste aller
Verwender ein Rahmenprogramm aus.
Bei erfolgreicher Aktivierung erscheint die Meldung Objekt(e) wurde(n) aktiviert in der
unteren Statuszeile.
Ergebnis
Mit dem Aktivieren wird zunächst das Gesamtobjekt in der ausgewählten Konfiguration auf
syntaktische Korrektheit geprüft. Hierbei werden die ausgewählten Teilobjekte in inaktiver, die
übrigen Teilobjekte der Konfiguration dagegen in aktiver Fassung berücksichtigt.
Aus der inaktiven Fassung wird zu jedem Teilobjekt eine aktive erstellt. Danach wird eine neue
Laufzeitversion generiert und schließlich die inaktive Fassung gelöscht und aus der Liste der
inaktiven Objekte entfernt.
Besonderheiten
Beim Aktivieren eines Gesamtobjektes von der Objektliste aus werden zunächst nur die inaktiven
Objekte des Gesamtobjektes in der Auswahlliste angeboten. Über die Drucktaste Alle inaktiven
Objekte wird auch das Umfeld angezeigt und kann eventuell in die Auswahl einbezogen werden.
34 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Mengenmodus verwenden
Mengenmodus verwenden
Verwendung
Bestimmte Operationen können Sie im Object Navigator auch auf einer Menge von
Entwicklungsobjekten in einem Schritt durchführen.
Dieser Mengenmodus kann für die folgenden Operationen ausgeführt werden:
§ Löschen
§ Anzeigen
§ Ändern
§ Drucken
§ Transportauftrag schreiben
§ Entwicklungsklasse ändern
Vorgehensweise
So führen Sie im Object Navigator eine Operation auf einer Menge von Objekten aus:
1. Markieren Sie mehrere Objekte einer Objektliste. Halten Sie dazu die Taste <STRG> (bzw.
<SHIFT>) gedrückt und klicken nacheinander die einzelnen Einträge innerhalb der
Baumanzeige an.
2. Öffnen Sie das Kontextmenü (rechte Maustaste) und wählen Sie die zulässige Operation
aus.
Bei Auswahl der Operationen Anzeigen oder Ändern gelangen die gewählten Einträge in
den Arbeitsvorrat. Die dort enthaltenen Einträge stehen für die Dauer der
Systemsitzung zur Verfügung.
3. Führen Sie die weiteren Schritte durch, die sich aus der gewählten Operation ableiten.
Siehe auch:
Objekte löschen [Seite 32]
Neue Entwicklungsklasse zuordnen [Seite 33]
Arbeitsvorrat [Seite 44]
April 2001 35
BC - ABAP Workbench: Werkzeuge SAP AG
Navigation
Navigation
Trennung von Navigations- und Werkzeugbereich
Der Navigations- und der Werkzeugbereich sind getrennt navigierbar. Ein Navigationsschritt in
einem Bereich hat keine automatische Anpassung in dem anderen Bereich zur Folge.
Angenommen, Sie wählen zunächst ein Include aus einer Objektliste aus. Daraufhin wird dieses
im ABAP Editor angezeigt. Wählen Sie anschließend eine im Include referenzierte globale
Klasse mit Doppelklick aus, so wird der Class Builder gestartet und die betreffende Klasse dort
ausgegeben. Der Navigationsbereich zeigt, nach wie vor, die Objektliste des zuvor ausgewählten
Progremms an.
Wählen Sie umgekehrt aber eine andere Objektliste aus, dann bewirkt dies keine automatische
Anpassung im Werkzeugbereich.
Siehe auch:
Bereiche der Navigation im Object Navigator [Seite 37]
Navigation im Werkzeugbereich [Seite 40]
36 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Bereiche der Navigation
Menü-
Symbol-
Drucktastenleiste
Objektliste Werkzeug
zusätzliche Dialogfenster
April 2001 37
BC - ABAP Workbench: Werkzeuge SAP AG
Bereiche der Navigation
Wählen Sie hierzu die Funktion Objektliste anzeigen über die entsprechende Ikone in der
Drucktastenleiste des Werkzeugs.
Angenommen, Sie verzweigen vom ABAP Editor aus mit Doppelklick auf eine im
Programm referenzierte globale Klasse und gelangen so zur Definition der
betreffenden Klasse im Class Builder. Nach Verwendung dieser Funktion wird
die Objektliste der entsprechenden ABAP Klasse (mit allen Teilkomponenten)
angezeigt.
38 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Navigationsbereich ausblenden
Navigationsbereich ausblenden
Verwendung
Sie können den Navigationsbereich innerhalb des Object Navigators mit der Funktion Vollbild
ein/aus ausblenden, um so den Werkzeugbereich zu vergrößern. Dies kann insbesondere bei
kleinerem Bildschirm von Nutzen sein.
Vorgehensweise
Klicken Sie im Object Navigator die entsprechende Ikone auf der Drucktastenleiste an, um
das Vollbild einzuschalten.
(Wenn Sie wiederholt diese Ikone anklicken, schalten Sie das Vollbild wieder aus, womit der
Navigationsbereich wieder angezeigt wird.)
Siehe auch:
Bereiche der Navigation [Seite 37]
April 2001 39
BC - ABAP Workbench: Werkzeuge SAP AG
Navigation im Werkzeugbereich
Navigation im Werkzeugbereich
Im Werkzeugbereich stellt der Object Navigator einige Navigationsfunktionen bereit:
Einzelschritt-Navigation (Voriges Objekt und Nächstes Objekt)
Der Navigations- und der Bereich der Werkzeuge sind getrennt navigierbar. Ein
Navigationsschritt in einem Bereich hat keine automatische Anpassung in dem anderen Bereich
zur Folge.
Die Auswahl Voriges Objekt und Nächstes Objekt erlaubt eine unabhängige Vorwärts- und
Rückwärtsnavigation in den Werkzeugen. Diese Funktionen sind über die Drucktastenleiste und
vom Navigationsstapel aus, erreichbar und können für ein schnelles Umschalten zwischen zwei
Navigationszielen eines Stapels verwendet werden.
Bereitstellung von Listen mit Navigationszielen
Navigationsstapel [Seite 42]
Arbeitsvorrat [Seite 44]
Erhaltung des Navigationskontextes
Navigationskontext [Seite 43]
Vorwärtsnavigation in den Werkzeugen
Navigation mit Doppelklick [Seite 113]
40 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Funktionen der Objektliste
April 2001 41
BC - ABAP Workbench: Werkzeuge SAP AG
Navigationsstapel
Navigationsstapel
Die Schritte, die Sie im Object Navigator innerhalb einer Arbeitssitzung ausgeführt haben,
werden vom System automatisch in einem Navigationsstapel aufgezeichnet. Sie können diese
Aufzeichnung verwenden, um zu bestimmten Navigationsschritten der Sitzung zurückzukehren.
Der Navigationsstapel kann in einem separaten Fensterbereich angezeigt werden und gewährt
somit einen stets aktuellen Überblick über die Navigationsschritte im Object Navigator während
einer Sitzung.
Sie können nun neben der Einzelschritt-Navigation Voriges Objekt und Nächstes Objekt einen
beliebigen Eintrag mit Doppelklick auswählen, um zum entsprechenden Objekt oder Teilobjekt
zurückzukehren. Damit ist auch ein gezielter Zugriff auf ein Navigationsziel durch Überspringen
mehrerer Schritte innerhalb eines Stapels möglich.
Die Aufzeichnung des Navigationsstapels ist nicht persistent und erlischt nach
Verlassen des Object Navigators. Ferner wird zu jedem internen Modus jeweils ein
separater Navigationsstapel gepflegt.
42 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Navigationskontext
Navigationskontext
Bei Naviagtion zwischen Entwicklungsobjekten bleibt der Navigationskontext erhalten, sofern es
sich entweder um Teilkomponenten einer globalen Klasse oder um Teilobjkete eines Programms
oder einer Funktionsgruppe handelt. Welche Auswirkungen dies hat, sei an einem Beispiel
erläutert.
Eine bereits implementierte Methode M1 (siehe Skizze) einer globalen Klasse wird
aus der Objektliste mit Doppelklick ausgewählt. Demzufolge wird der ABAP Editor
gestartet und die Methode im Anzeigemodus geöffnet. Ein nachfolgender Aufruf
einer weiteren Methode M2 derselben Klasse öffnet diese ebenfalls Anzeigemodus.
Schaltet man anschließend in den Änderundmodus um, so bedingt der nachfolgende
Aufruf einer weiteren Methode M3, daß deren Implementierung ebenfalls im
Änderungsmodus des Editors ausgegeben wird.
M1 Öffnen
Öffnen Ändern
M2
Öffnen
M3
April 2001 43
BC - ABAP Workbench: Werkzeuge SAP AG
Arbeitsvorrat
Arbeitsvorrat
Die Übernahme von Entwicklungsobjekten und ihrer Teilobjekte in den Arbeitsvorrat stellt eine
weitere Möglichkeit dar, die interessierenden Navigationsziele zusammenzustellen.
Der Arbeitsvorrat ist stets benutzerbezogen und wird durch eine Liste repräsentiert, welche die
interessierenden Objekte enthält. Diese Liste muß vom Benutzer explizit gefüllt werden.
Der Arbeitsvorrat kann mit dem Release 4.6C auch gesichert werden und geht nach der
Beendigung der Sitzung nicht verloren.
Sie können zum Beispiel nach erfolgreicher Suche über das Repository Infosystem ein Objekt in
Ihren Arbeitsvorrat übernehmen, um anschließend die Sie interessierenden Quelltextzeilen in Ihr
Programm zu kopieren.
44 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Arbeitsvorrat
Der explizit gesicherte Arbeitsvorrat ist über die aktuelle Sitzung hinaus persistent.
Sofern es bei den Einträgen des Arbeitsvorrats um globale Klassen, ihre Methoden,
Funktionsbausteine oder Unterprogramme handelt, können Sie diese auch
verwenden, um mit Drag and Drop Quelltextmuster in Ihr ABAP-Programm
einzufügen. Siehe auch Muster mit Drag and Drop einfügen [Seite 130].
April 2001 45
BC - ABAP Workbench: Werkzeuge SAP AG
Sprungmarken setzen
Sprungmarken setzen
Verwendung
Im ABAP Editor werden keine impliziten Marken gepflegt. Sie können jedoch explizite Marken
setzen, um zu bestimmten Zeilen im Quelltext innerhalb eines Programms oder über
verschiedene Programme hinweg zu navigieren. Dazu müssen Sie nur die betreffenden Zeilen in
den Arbeitsvorrat übernehmen.
Vorgehensweise
So legen Sie eine Sprungmarke an:
1. Positionieren Sie den Cursor auf der gewünschten Zeile im Quelltext.
2. Wählen Sie die Menüfunktion Hilfsmittel → Arbeitsvorrat → Aktuelles Objekt aufnehmen.
Sie können die gesetzen Sprungamarken auch sichern. Siehe dazu "Einträge des
Arbeitsvorrats sichern" unter Arbeitsvorrat [Seite 44].
46 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Benutzerspezifische Einstellungen
Benutzerspezifische Einstellungen
Eine Vielzahl von benutzerspezifischen Optionen für die Entwicklungswerkzeuge der ABAP
Workbench können voreingestellt werden. Diese sind übersichtlich auf einem Tabstrip
angeordnet und in allen Werkzeugen aufrufbar. Die Änderungen der Einstellungen werden
persistent gesichert.
Aufruf
Benutzerspezifische Einstellungen können Sie vom Object Navigator und von jedem anderen
Werkzeug aufrufen. Wählen Sie dazu den Menüpfad Hilfsmittel → Einstellungen.
April 2001 47
BC - ABAP Workbench: Werkzeuge SAP AG
Benutzerspezifische Einstellungen
48 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Benutzerspezifische Einstellungen
April 2001 49
BC - ABAP Workbench: Werkzeuge SAP AG
Benutzerspezifische Einstellungen
50 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Integration von Internet-Services
Weterführende Dokumentation
HTMLBusiness-Sprachbeschreibung [Extern]
Internet-Anwendungen mit SAP Web Studio entwickeln [Extern]
April 2001 51
BC - ABAP Workbench: Werkzeuge SAP AG
Web Application Builder
Integration
Der Web Application Builder ist als Entwicklungswerkzeug vollständig in die ABAP Workbench
integriert. Die hier angelegten Web-Entwicklungsobjekte, wie Service-Files, HTML-Templates
und MIME-Objekte werden im R/3-Repository abgelegt und sind an das R/3 Change and
Transport System angeschlossen.
Funktionsumfang
• Anlegen von Internet Services zu bestehenden R/3-Transaktionen oder MiniApps.
• Implementieren der Dialoglogik.
• Generieren von HTML-Templates zu Dynpros von Transaktionen. Diese Templates enthalten
Business
Standard-HTML und HTML -Anweisungen, die das Dynpro-Layout nachahmen.
• Editieren des generierten HTML-Templates mit dem Sprachschatz von HTML und
Business
HTML , um sie individuell weiter zu entwickeln.
• Einbinden von MIME-Objekten (Ikonen, Grafiken, Java Applets, Animationen, …) als
zusätzliche Mittel zur Layoutgestaltung.
• Anlegen von sprachspezifischen Texten (Sprachressourcen).
• Publizieren der Services oder einzelner Service-Komponenten an den Internet Transaction
Server (ITS).
• Ausführen der kompletten Web-Anwendung, ausgehend von der ABAP Workbench.
• Anschluß an das Change and Transport System (CTS).
• Anschluß an die Versionsverwaltung.
Einschränkungen
Zur Zeit sind einige Funktionen noch nicht verfügbar:
• kein Syntaxcheck möglich
•
Business
derzeit ist noch kein Debuggeranschluß für HTML und die Flow-Logik gegeben.
52 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Internet-Service anlegen
Internet-Service anlegen
Verwendung
Um sich am R/3-System anzumelden und eine Web-Anwendung zu starten, benötigt der ITS
(Internet Transaction Server) einen entsprechenden Internet Service.
Ein solcher Service besteht aus einem Satz von Komponenten:
• Servicebeschreibung: Parameter zur Beschreibung, wie der Service ausgeführt wird. Hierzu
zählen vor allem Logon-Daten und eventuell Angaben zur Transaktion, die ausgeführt
werden soll.
• HTML-Templates: Sie können zu jedem Dynpro einer EWT ein HTML-Template anlegen und
somit für ein flexibles Layout sorgen.
• Sprachressourcen: Eine Sprachressource enthält alle Texte, die erforderlich sind, um einen
Service in einer bestimmten Sprache auszuführen. Sprachressourcen ermöglichen es also,
den Internet-Service sprachunabhängig zu halten.
• MIME-Objekte: Diese Objekte können aus Ikonen, Grafiken, Java Applets, Ton- und Video-
Komponenten bestehen und werden ergänzend zur Oberflächengestaltung verwendet.
Eine konkrete Instanz eines Services wird durch eine Theme festgelegt. Eine Theme ist jeweils
mit eigenem Satz von HTML-Templates, Sprachressourcen und MIME-Objekten ausgestattet
und verleiht einem Service ein spezifisches Aussehen. Die Funktionalität bleibt dabei
unverändert.
Voraussetzungen
Falls Sie ein Service zu einer R/3-Transaktion anlegen möchten, sollten Sie die Klassifikation
dieser Transaktion überprüfen und gegebenfalls ändern. Der Defaultwert für die Transaktionen
ist Professional User Transaction.
Vorgehensweise
So legen Sie im Einstiegsbild des Object Navigators einen neuen Internet-Service an.
19. Rufen Sie den Object Navigator (SE80) auf.
20. Wählen Sie die Kategorie Internet Service in der Objektlistenauswahl.
21. Geben Sie den Namen des anzulegenden Services an.
Beachten Sie, daß im Kundennamensraum alle Repository-Objekte mit Y oder mit Z
beginnen.
April 2001 53
BC - ABAP Workbench: Werkzeuge SAP AG
Internet-Service anlegen
Setzen Sie den Flag ITS-Mixed-Mode, wenn Sie nur zu ausgewählten Dynpros der R/3-
Transaktion HTML-Templates generieren möchten.
Für weitere Informationen siehe auch Mixed-Modus verwenden [Seite 56].
Ergebnis
Der Internet-Service wurde als Entwicklungsobjekt im R/3-Repository angelegt und in die
Baumanzeige der Objektliste aufgenommen. Die Theme 99 wird als die zur Zeit aktuelle Theme
dem angelegten Internet-Service zugeordnet.
Falls Sie im Schritt 6 eine R/3-Transaktion angegeben haben, wird der entsprechende Parameter
~TRANSACTION zum Service generiert. Wenn darüber hinaus den Flag ITS-Mixed-Mode
aktiviert haben, werden die zugehörigen Parameter mit aktuellen Werten vorbelegt.
Siehe auch:
54 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Internet-Service anlegen
April 2001 55
BC - ABAP Workbench: Werkzeuge SAP AG
Mixed-Modus verwenden
Mixed-Modus verwenden
Verwendung
Mit dem Mixed-Modus haben Sie die Möglichkeit, Templates und die automatische WebGUI-
Generierung gleichzeitig für ein und dieselbe Web-Transaktion einzusetzen. Dynpros ohne
Templates werden dann automatisch vom WebGUI generiert.
Falls dagegen ein Template zu einem Dynpro vorhanden ist, so benutzt der ITS dieses vorrangig
Business
und generiert für das empfangene Dynpro unter Verwendung der HTML -Funktionen aus
dem Template ein entsprechendes HTML-Dokument, bevor er es über den Web Server an den
Web Browser verschickt.
Der Einsatz des Mixed-Modus erlaubt Ihnen, Templates nur für ausgesuchte Dynpros oder
Subscreens einer Transaktion anzulegen. Dies ist insbesondere dann sinnvoll, wenn bestimmte
Dynpros oder Subscreens vom WebGUI nur fehlerhaft abgebildet werden oder wenn deren
Darstellung nicht Ihren Wünschen oder Anforderungen entspricht. Sie können dann an einzelnen
Dynpos oder Subscreens Verbesserungen am Layout vornehmen.
Voraussetzungen
Um die automatische Generierung von Dynpros innerhalb einer Transaktion mittels des WebGUI-
Mechanismus des ITS überhaupt zu ermöglichen, müssen einige Parameter zum Internet
Service hinzugefügt werden. Die automatische Generierung des ITS wird nämlich aus Gründen
der Abwärtskompatibilität nicht standardmäßig unterstützt.
Falls Sie beim Anlegen des Internet Services den Flag ITS-Mixed-Mode nicht gesetzt haben,
fügen Sie die folgenden Parameter und Werte manuell hinzu. Anderenfalls werden diese
Parameter beim Anlegen des Services generiert und mit gültigen Werten vorbelegt.
Parameter Wert Beschreibung
~generateDynpro 1 Einschalten des automatischen Generierungsmodus, sobald zu
einem Dynpro kein Template gefunden wurde.
~listscrolling 0 Simulation des Hinunter-Blätterns in List-Reports.
~popups 1 Zeigt Dialogfenster an, anstatt sie zu unterdrücken.
~style DHTML Gibt an, welcher Generator verwendet werden soll.
~autoscroll 0 Simulation des Hinunter-Blätterns für Step Loops und Table
Controls.
56 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
HTML-Templates anlegen
HTML-Templates anlegen
Verwendung
Wenn Sie eine MiniApp implementieren, müssen Sie HTML-Templates anlegen. Die Dialoglogik
läuft bei MiniApps nicht im R/3, sondern auf dem ITS.
Bei Transaktionen können Sie wählen, ob Sie überhaupt oder zu einzelnen (Mixed-Modus [Seite
56]) oder auch zu allen Dynpros einer Transaktion jeweils ein HTML-Template explizit generieren
lassen wollen. Die explizit angelegten Templates sind mit den HTML-Dokumenten identisch, die
aus der automatischen WebGUI-Generierung resultieren.
Die explizite Generierung von Templates bietet sich immer dann an, wenn Sie mit den
Möglichkeiten des WebGUI nicht auskommen und Erweiterungen gegenüber der
Standardgenerierung vornehmen möchten. Dies kann insbesondere dann der Fall sein, wenn Sie
eine Verbesserung des Layouts anstreben oder wenn Sie Hyperlinks einfügen möchten.
Der Großteil aller Web-Transaktionen sollte jedoch mit der Standardgenerierung des
WebGUIs auskommen. Der WebGUI kann die notwendigen Dynproelemente einer
einfach gestalteten Transaktion (Textfeld, Ein-/Ausgabefeld, Drucktasten, Auswahl- ,
Ankreuzfelder, Tabstrips, Table Controls, Subscreens, …) ohne den zusätzlichen
Aufwand eines Templates darstellen.
Voraussetzungen
§ Der zugehörige Internet-Service wurde bereits angelegt.
Business
§ Sie sind mit der Sprachsatz von HTML und HTML genügend vertraut, um die
Möglichkeiten des template-basierten Ansatzes zu nutzen.
Vorgehensweise
So legen Sie aus der Baumanzeige der Objektliste ein HTML-Template zu einem Internet
Service an:
8. Klicken Sie mit der rechten Maustaste den Service an.
9. Wählen Sie Anlegen → Template aus dem Kontextmenü.
Das Dialogfenster Template anlegen wird angezeigt.
10. Geben Sie die Theme zum Service an und nehmen Sie die weiteren Einstellungen vor.
Falls es sich bei der Web-Anwendung um eine Web-Transaktion handelt und Sie zu
einem bestimmten Dynpro ein Template generieren möchten, dann wählen Sie HTML
aus Dynpro generieren und geben Sie die Dynpronummer der Transaktion an.
Bei Anwendungen ohne Dynprobezug (MiniApps) wählen Sie dagegen Name des
Templates und geben Sie den Namen für das Template an.
April 2001 57
BC - ABAP Workbench: Werkzeuge SAP AG
HTML-Templates anlegen
12. Ordnen Sie dem Template eine Entwicklungsklasse zu und bestätigen Sie mit .
Ergebnis
Das generierte Template wird in die Baumanzeige der Objektliste unter Templates eingefügt und
der generierte Inhalt des Templates im Editor ausgegeben. Es werden nur die statischen Dynpro-
Business
Informationen ausgewertet, indem für jedes Dynpro-Element eine entsprechende HTML -
Funktion (blau hervorgehoben) in das Basis-Template eingefügt wird. Der Inhalt des Templates
Business
kann nun mit Standard-HTML und HTML -Anweisungen erweitert werden.
58 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
HTML-Templates anlegen
Siehe auch:
HTML-Tempaltes erweitern [Seite 60]
MIME-Objekte hinzufügen [Seite 62]
Service publizieren [Seite 66]
April 2001 59
BC - ABAP Workbench: Werkzeuge SAP AG
HTML-Templates erweitern
HTML-Templates erweitern
Nachdem Sie ein HTML-Template angelegt haben, können Sie die gewünschten Erweiterungen
am generierten Quelltext vornehmen.
Dazu sollten Sie jedoch mit Grundlagen von HTML und zusätzlich mit dem Sprachschatz von
Business
HTML vertraut sein.
Business
HTML ist eine von SAP entwickelte Erweiterung des Standard-HTML, um R/3-
Bilddaten mit Feldern auf HTML-Templates dynamisch abmischen zu können und
dem ITS die Datenübergabe zwischen dem R/3-System und dem Web Server zu
erleichtern.
Weitere Informationen finden Sie unter HTMLBusiness-Sprachbeschreibung
[Extern].
Beispiel
Im nachfolgenden Beispiel wird lediglich ein Hyperlink für eine bestimmte Position auf HTML-
Seite eingefügt:
Siehe auch:
Service publizieren [Seite 66]
MIME-Objekte hinzufügen [Seite 62]
60 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
HTML-Templates erweitern
April 2001 61
BC - ABAP Workbench: Werkzeuge SAP AG
MIME-Objekte hinzufügen
MIME-Objekte hinzufügen
Verwendung
MIME-Objekte (Ikonen, Grafiken, Audiodateien, Animationen, …) können Sie als weitere
Stilmittel zur Oberflächengestaltung in die Web-Anwendung einbinden.
Voraussetzungen
Der zugehörige Internet Service wurde bereits angelegt.
Vorgehensweise
So fügen Sie aus der Baumanzeige der Objektliste ein MIME-Objekt zu einem Internet-Service
hinzu:
13. Klicken Sie mit der rechten Maustaste den entsprechenden Service an.
14. Wählen Sie Anlegen → Mime aus dem Kontextmenü.
Es erscheint das Dialogfenster Von lokaler Datei einlesen
15. Geben Sie den Pfadnamen der zu übertragenden Datei an und passen Sie gegebenfalls den
Datenformat an.
16. Wählen Sie Übertragen.
Das Dialogfenster Mime anlegen wird angezeigt.
17. Geben Sie die Theme und ändern Sie eventuell den Namen für das MIME-Objekt ab.
Im Eingabefeld Name können Sie auch einen Unterverzeichnis anlegen, welches durch
einen Schrägstrich " / " vom Namen des MIME-Objektes getrennt wird.
62 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
MIME-Objekte hinzufügen
19. Ordnen Sie dem MIME-Objekt eine Entwicklungsklasse zu und bestätigen Sie mit .
Ergebnis
Das eingefügte MIME-Objekt wurde als eigenständiges Objekt ins R/3-Reposistory
aufgenommen. In der Baumanzeige der Objektliste wird es unter Mimes eingefügt und der Inhalt
(bei Grafiken) angezeigt.
Sie können nun dieses Objekt bei der Gestaltung der Oberfläche der generierten HTML-
Templates verwenden.
April 2001 63
BC - ABAP Workbench: Werkzeuge SAP AG
Sprachressourcen anlegen
Sprachressourcen anlegen
Verwendung
Eine Sprachressource enthält alle sprachspezifischen Anteile einer Theme einenes Internet-
Services und versetzt Sie in die Lage Ihre Web-Anwendung sprachunabhängig zu halten. Ein
weiter Vorteil gegenüber hart kodierten Texten im HTML-Template besteht in einer verbesserten
Lesbarkeit und Wartbarkeit des Quelltextes.
Für jeden sprachspezifischen Text auf Ihrer Web-Oberfläche fügen Sie entsprechende
Platzhalter in den HTML-Templates ein (ähnlich wie bei den Textelementen zu einem ABAP-
Programm). Die eigentlichen Texte dagegen werden über die gleichnamigen Theme-Parameter
gepflegt. Zur Laufzeit erkennt der ITS die Platzhalter zu jedem Template und ersetzt sie mit dem
Text in der jeweiligen Anmeldesprache.
Voraussetzungen
Die HTML-Templates zum Internet-Service sind bereits angelegt.
Vorgehensweise
Platzhalter zu einem HTML-Template hinzufügen
1. Öffnen Sie das betreffende Template.
2. Fügen Sie die Platzhalter für die sprachspezifischen Texte innerhalb des HTML-Quelltextes
ein.
Verwenden Sie dabei die folgende Syntax: `#Platzhalter`
64 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Sprachressourcen anlegen
Ergebnis
Die angelegten Theme-Parameter sind Bestandteil des Services. Als übersetzungsrelevanter
Anteil dieses R/3 Repository-Objektes gelangen sie nach der Freigabe in den Arbeitsvorrat der
Übersetzung.
Wenn Sie den Service in der Orginalsprache starten, zeigt das obige Beispiel die folgende
Oberfläche an.
April 2001 65
BC - ABAP Workbench: Werkzeuge SAP AG
Service publizieren
Service publizieren
Verwendung
Damit ein in der Workbench angelegter Internet-Service vom ITS überhaupt ausgeführt werden
kann, muß er zunächst im ITS-Filesystem abgelegt werden. Dieser Vorgang wird mit Publizieren
bezeichnet. Dabei können Sie sowohl den gesamten Service als auch einzelne Komponenten
publizieren. Beim Publizieren des gesamten Services werden der zugehörige Internet-Service
und die HTML-Templates ins Filesystem des AGate-Rechners, die MIME-Objekte dagegen ins
Filesystem des WGate-Rechners kopiert.
Voraussetzungen
Mindestens ein ITS-Server wurde bereits dem betreffenden R/3-System zugeordnet und ist zum
Zeitpunkt des Publizierens aktiv.
Vorgehensweise
So publizieren Sie aus der Baumanzeige der Objektliste den gesamten Internet Service:
20. Klicken Sie den entsprechenden Service mit der rechten Maustaste an.
21. Wählen Sie Publizieren → Gesamter Service aus dem Kontextmenü.
Sofern irgendwelche Fehler beim Publizieren an irgendeinen ITS-Server auftreten, wird
ein Protokoll mit entsprechenden Meldungstexten ausgegeben.
Falls keine Fehler auftreten, wird in der Statusleiste die Meldung Das Objekt wurde
erfolgreich publiziert ausgegeben.
Ergebnis
Nachdem Sie den gesamten Service erfolgreich publiziert haben, können Sie die Web-
Anwendung starten.
Siehe auch:
Benutzereinstellungen zum Internet-Service [Seite 69]
Service ausführen [Seite 67]
66 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Service ausführen
Service ausführen
Verwendung
Diese Funktionen verwenden Sie, um ausgehend von der ABAP Workbench die Web-
Anwendung (Web-Transaktion oder Mini App) zu testen.
Voraussetzungen
Der gesamte Internet Service wurde erfolgreich an den ITS-Server publiziert. Der ITS-Server ist
zur Zeit aktiv.
Vorgehensweise
So starten Sie die Web-Anwendung aus dem Object Navigator heraus:
1. Klicken Sie den entsprechenden Service an.
2. Wählen Sie Taste Service ausführen auf der Drucktastenleiste
Der Web-Browser wird gestartet und eventuell ein Logon-Fenster angezeigt.
3. Wählen Sie gegebenfalls eine andere Anmeldesprache aus und melden Sie mit Logon am
ITS an.
4. Führen Sie die Web-Anwendung aus.
Sie haben die Möglichkeit, das Logon-Fenster zu unterdrücken, wenn Sie den
Service-Paramter ~LANGUAGE pflegen und ihn mit einem Wert (z.B. EN)
vorbelegen.
Ergebnis
Der Service wird über die HTTP-Adresse http://<ITS>:<Port>/scripts/wgate/<service>/!
gestartet.
April 2001 67
BC - ABAP Workbench: Werkzeuge SAP AG
Service ausführen
68 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Benutzereinstellungen zum Internet-Service
Aktivitäten
Um ITS-Einstellungen zu ändern, gehen Sie wie folgt vor:
1. Wählen Sie den Menüpfad Hilfsmittel → Einstellungen.
2. Unter dem Tabreiter ITS wählen Sie die gewünschte Filtereinstellung aus und ändern Sie
diese.
3. Bestätigen Sie mit .
Filtereinstellungen
Einstellung Bedeutung
April 2001 69
BC - ABAP Workbench: Werkzeuge SAP AG
Benutzereinstellungen zum Internet-Service
Publizieren auf alle ITS- Der Service wird an alle dem SAP-System
Server/Instanzen zugeordneten ITS-Serverinstanzen publiziert.
Die Meldung über ein erfolgreiches Publizieren
wird nur dann ausgegeben, wenn an alle
zugeordneten ITS-Serverinstanzen erfolgreich
publiziert werden konnte. Tritt jedoch an
irgendeiner Instanz ein Fehler auf, dann wird
dies in einem Fehlerprotokoll vermerkt.
70 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Benutzereinstellungen zum Internet-Service
April 2001 71
BC - ABAP Workbench: Werkzeuge SAP AG
Tutorial: MiniApps implementieren
Überblick: Lerninhalte
In diesem Tutorial lernen Sie
Internet-Services für MiniApps anzulegen.
einfache HTML-Templates anzulegen und mittels HTML- und HTML
Business
-Quelltext zu
definieren.
die Dialoglogik zu den Templates mittels Flow-Logik zu implementieren.
den Service auf dem ITS zu publizieren und auszuführen.
die Zuordung zu Komponenten der ITS-Architektur und deren Zusammenspiel kennen.
Voraussetzungen
Systeme und Installationen
SAP-System mit Release 4.6C (oder höher).
Ein erfolgreiches Testen der MiniApp setzt ferner voraus, daß das SAP-System über
entsprechende Business-Daten verfügt.
Der Internet Transaction Server ist installiert und dem SAP-System zugeordnet.
Ein Standard Web-Server zum Starten der Internet-Services im aktuellen SAP-System ist
installiert und dem ITS-Server zugeordnet.
Fortsetzung
Schritt 1: User Interface Design entwerfen [Seite 75]
72 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Komponenten der Architektur
Web-Serverprozess SAP-System
Frontend
Web-
Server
Web- Internet Transaction Server
Browser 1 2 3 4
AGate
WGate
9 8 7 6 5
Web-Seiten Templates
Erläuterungen
Der Web-Browser sendet nach Eingabe der Daten eine HTTP-Anforderung an den Web-Server
(1).
Der Web-Server ruft den WGate auf (2), der wiederum diese Anforderung an den ITS-
Serverprozess, den AGate weiterleitet (3).
AGate lädt den zugehörigen Service und öffnet die Verbindung zum SAP-System. Über den
entsprechenden Kontext werden die Daten zum Applikationsserver des SAP-Systems geschickt
(4).
April 2001 73
BC - ABAP Workbench: Werkzeuge SAP AG
Komponenten der Architektur
Im SAP-System findet der BAPI-Aufruf statt. Die resultierenden Ausgabedaten werden zunächst
an den AGate des ITS-Servers übergeben (5).
Das AGate sucht das passende HTML-Template aus und mischt die Ausgabedaten über einen
Interpreter ins Template ein (6).
Die resultierende formatierte Web-Seite wird an den WGate weitergeleitet (7) und dann über den
Web-Server (8) an den Web-Browser übergeben (9). Der Browser bringt schließlich die
Ergebnisse des BAPI-Aufrufs zur Ansicht.
74 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Schritt 1: User Interface Design entwerfen
Flugverbindungen
Flüge …
Fazit:
Es ist eine Anwendung mit einem Bildwechsel zu realisieren, die nur wenige Bereiche auf jeder
Seite enthält und sich durch eine einfache, sequentielle Navigation und intuitive Bedienung
auszeichnet.
Fortsetzung
Schritt 2: Service anlegen [Seite 76]
April 2001 75
BC - ABAP Workbench: Werkzeuge SAP AG
Schritt 2: Service anlegen
Vorgehensweise
So legen Sie einen neuen Internet-Service für die MiniApp an.
27. Rufen Sie den Object Navigator (SE80) auf.
28. Wählen Sie die Kategorie Internet Service in der Objektlistenauswahl.
29. Geben Sie den Namen des anzulegenden Services an.
76 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Schritt 2: Service anlegen
Ergebnis
Der Internet-Service wurde als Entwicklungsobjekt im R/3-Repository abgelegt.
Die Theme 99 wird als die derzeit aktuelle Theme zum Service angelegt. Die zusätzlich
definierten Parameter legen den Typ des Services fest und die Art wie dieser vom ITS ausgeführt
wird. In unserem Beispiel handelt es um die Ausführung einer MiniApp, die mit dem Tempalte
initial über den X Gateway sapxginet gestartet wird.
April 2001 77
BC - ABAP Workbench: Werkzeuge SAP AG
Schritt 2: Service anlegen
Fortsetzung
Schritt 3: HTML-Templates anlegen [Seite 79]
78 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Schritt 3: HTML-Templates anlegen
Voraussetzungen
Der Internet-Service wurde bereits angelegt.
Vorgehensweise
So legen Sie aus der Objektliste die HTML-Templates zum Service an:
22. Klicken Sie mit der rechten Maustaste den Service an.
23. Wählen Sie Anlegen → Template aus dem Kontextmenü.
Das Dialogfenster Template anlegen wird angezeigt.
24. Geben Sie die Theme zum Service an und geben Sie unter Name des Templates den
Namen für das erste Template an (Vorschlag: INITIAL). Dieser Name stimmt mit dem
Parameterwert von ~INITIALTEMPLATE überein.
5. Ordnen Sie dem Template eine Entwicklungsklasse zu und bestätigen Sie mit .
6. Wiederholen Sie die Schritte 1-5 für das zweite Template. Geben Sie im Schritt 3 den Namen
für das Template (Vorschlag: RESULTS ) an.
April 2001 79
BC - ABAP Workbench: Werkzeuge SAP AG
Schritt 3: HTML-Templates anlegen
Ergebnis
Die angelegten Templates werden in die Baumanzeige der Objektliste eingefügt und der
Business
vorgenerierte Rahmen für den HTML- bzw. HTML -Quelltext im Editor ausgegeben.
Fortsetzung
Schritt 4: Layout definieren [Seite 81]
80 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Schritt 4: Layout definieren
Vorgehensweise
Für das erste Template (INITIAL) fügen Sie zwischen den Tags <body> </body> die folgende
Formulardefinition ein:
April 2001 81
BC - ABAP Workbench: Werkzeuge SAP AG
Schritt 4: Layout definieren
Für das zweite Template (RESULTS) fügen Sie zwischen den Tags <body> </body> den
folgenden Quelltext ein:
82 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Schritt 4: Layout definieren
Ergebnis
Sie haben eine einfache Darstellung der Oberfläche der beiden Templates (ohne Dialoglogik)
Business
mittels HTML und HTML definiert.
Fortsetzung
Schritt 5: Flow-Logik implementieren [Seite 84]
April 2001 83
BC - ABAP Workbench: Werkzeuge SAP AG
Schritt 5: Flow-Logik implementieren
Voraussetzungen
§ Die beiden HTML-Templates wurden bereits angelegt.
§ Sie sind mit dem grundlegenden Ablaufschema der Flow-Logik vertraut.
Vorgehensweise
1. Klicken Sie das Initialtemplate (INITIAL) in der Baumanzeige der Objektliste an.
2. Wählen Sie die Funktion Flow-Logik anlegen aus der Drucktastenleiste.
3. Für das erste Template (INITIAL) definieren Sie die Flow-Logik wie folgt:
<flow>
<event name = "Flugverbindungen" next_template="results">
</event>
</flow>
Wiederholen Sie die Schritte 1-3 für das zweite Template (RESULTS) und definieren Sie die
Dialoglogik wie folgt:
84 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Schritt 5: Flow-Logik implementieren
<flow>
<state name="GetList">
<module name="BAPI_SFLIGHT_GETLIST" type="RFC">
<inputmapping source="FromCountry" target="FROMCOUNTRYKEY" />
<inputmapping source="FromCity" target="FROMCITY" />
<inputmapping source="ToCountry" target="TOCOUNTRYKEY" />
<inputmapping source="ToCity" target="TOCITY" />
</module>
</state>
<event name = "onLoad" next_state = "GetList">
</event>
</flow>
Sie können alternativ zum Typ "RFC" beim Modulaufruf auch den Typ "BOR"
verwenden. In einem solchen Fall müßten Sie "FlightConnection.GetList" als
den Namen des Moduls angeben.
Ergebnis
Sie haben die Dialoglogik zu den beiden HTML-Templates vollständig implementiert und können
nunmehr den gesamten Service an den ITS-Server publizieren.
Fortsetzung
Schritt 6: Service publizieren [Seite 86]
April 2001 85
BC - ABAP Workbench: Werkzeuge SAP AG
Schritt 6: Service publizieren
Voraussetzungen
Mindestens eine ITS-Serverinstanz wurde bereits dem betreffenden SAP-System zugeordnet
und ist zum Zeitpunkt des Publizierens aktiv.
Vorgehensweise
So publizieren Sie aus der Baumanzeige der Objektliste den gesamten Internet-Service:
26. Klicken Sie den entsprechenden Service mit der rechten Maustaste an.
27. Wählen Sie Publizieren → Gesamter Service aus dem Kontextmenü.
86 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Schritt 6: Service publizieren
Ergebnis
Falls keine Fehler auftreten, wird in der Statusleiste die Meldung Das Objekt wurde erfolgreich
publiziert ausgegeben.
Nachdem Sie den gesamten Service erfolgreich publiziert haben, können Sie die MiniApp
starten.
Fortsetzung
Schritt 7: MiniApp ausführen [Seite 88]
April 2001 87
BC - ABAP Workbench: Werkzeuge SAP AG
Schritt 7: MiniApp ausführen
Voraussetzungen
Der gesamte Internet-Service wurde erfolgreich publiziert. Der Web-Server und der ITS-Server
sind zum Zeitpunkt der Ausführung aktiv.
Vorgehensweise
So starten Sie die MiniApp aus dem Object Navigator heraus:
5. Klicken Sie den entsprechenden Service an.
6. Wählen Sie Service starten aus dem Kontextmenü (oder F8).
Der Web-Browser wird gestartet und ein Logon-Fenster angezeigt.
7. Geben Sie den Benutzer und das Password ein und melden Sie sich mit Logon am ITS-
Server an.
Ergebnis
Der Service wird über die HTTP-Adresse http://<web_server><web_path_prefix>/<service>/!
gestartet und die erste Web-Seite der MiniApp im Web-Browser angezeigt.
Mit der Drucktaste Flugverbindungen lösen Sie ein Event der Flow-Logik aus, das wiederum den
BAPI-Aufruf antriggert. Das Resultat des BAPI-Aufrufs wird in das Ausgabe-Template
eingemischt und auf nächsten Web-Seite der MiniApp zur Anzeige gebracht.
88 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Schritt 7: MiniApp ausführen
Wie sich die einzelnen Schritte beim Testaufruf der MiniApp in der ITS-Architektur
wiederspiegeln, ersehen Sie unter Komponenten der Architektur [Seite 73].
April 2001 89
BC - ABAP Workbench: Werkzeuge SAP AG
ABAP Workbench: Werkzeuge
Transaktionspflege [Extern]
Modifikationen
90 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
ABAP Workbench: Werkzeuge
Modifikationsassistent [Extern]
Siehe auch:
April 2001 91
BC - ABAP Workbench: Werkzeuge SAP AG
Überblick über die Workbench
Themen:
Integration der Werkzeuge und Arbeitsmethoden [Seite 93]
92 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Integration der Werkzeuge und Arbeitsmethoden
April 2001 93
BC - ABAP Workbench: Werkzeuge SAP AG
Entwicklungsobjekte und Entwicklungsklassen
Entwicklungsobjekte speichern
Das R/3-System speichert Entwicklungsobjekte im Repository, das ein Teil der Datenbank
darstellt.
Wenn Sie die Arbeit an einem Entwicklungsobjekt wie etwa einem Programm, Bild oder Menü
abschließen, generieren Sie ein Laufzeitobjekt, das zusammen mit dem Objekt im Repository
abgelegt wird. Eine Anwendung besteht aus mehreren Laufzeitobjekten, die von Workprozessen
des R/3-Systems verarbeitet werden.
In einer Standard-SAP-Installation ist das Entwicklungssystem und das Produktivsystem
voneinander getrennt. Neue Anwendungen werden im Entwicklungssystem entwickelt und
anschließend in das Produktivsystem transportiert. Die tägliche Arbeit findet also im
Produktivsystem statt, das im Entwicklungssystem erstellte Laufzeitobjekte verwendet.
Die Trennung von Produktiv- und Entwicklungssystem ist erforderlich, da Änderungen an einer
bestehenden ABAP-Anwendung sofort für alle Nutzer des Systems wirksam werden. Um den
täglichen Arbeitsfluß im Produktivsystem nicht zu stören, werden daher Entwicklungen in einem
eigens dafür eingerichteten Entwicklungssystem durchgeführt.
94 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Entwickeln im Team
Entwickeln im Team
Mit ABAP können Sie die Arbeit an großen Projekten unter mehreren Entwicklern aufteilen.
Nehmen wir z.B. ein Projekt, in dem eine Finanzbuchhaltungsanwendung mit einem Debitoren-
und einem Kreditorenmodul entwickelt werden soll. Die ABAP-Umgebung unterstützt Sie beim
Anlegen eines Arbeitsbereichs für das Projekt in Ihrem System. Sie können dann jedem
Entwickler bestimmte Aufgaben zuweisen und den Fortschritt der Arbeit verfolgen.
Das Werkzeug, das Sie für die Verfolgung von Entwicklungsprojekten einsetzen, ist der
Workbench Organizer. Der Organizer verfolgt Änderungen an vorhandenen SAP-
Entwicklungsobjekten und das Anlegen neuer Objekte. Wenn Sie ein neues Objekt anlegen,
fordert Sie der Organizer beim Sichern des Objekts auf, eine Entwicklungsklasse anzugeben:
April 2001 95
BC - ABAP Workbench: Werkzeuge SAP AG
Entwickeln im Team
Wenn Sie eine Änderung mit einem Auftrag verbinden, legt das System für Sie eine Aufgabe
unter diesem Änderungsauftrag an. Der Organizer legt eine Aufgabe für jeden Entwickler an, der
Änderungen unter diesem Änderungsauftrag vornimmt. Sie können sich einen Änderungsauftrag
als einen Container für Aufgaben vorstellen.
Nachdem Sie einem Objekt einen Änderungsauftrag hinzugefügt haben, betrachtet das System
dieses Objekt als ein in der Entwicklung stehendes Objekt. Das Objekt ist für andere Benutzer
gesperrt. Wenn Sie Ihre Änderungen vorgenommen oder ein neues Objekt angelegt haben,
geben Sie Ihre Aufgabe frei. Um Ihre Änderungen in das Produktivsystem zu transportieren,
geben Sie den Änderungsauftrag mit Ihrer Aufgabe frei.
Sie können die Entwicklungsklasse und den Änderungsauftrag eines Objekts ändern. Nähere
Informationen zum Ändern der Entwicklungsklasse finden Sie unter Objekte in eine andere
Entwicklungsklasse umhängen [Seite 33]. Näheres zum Workbench Organizer und zum
Transportsystem finden Sie in der Dokumentation Workbench Organizer [Extern].
96 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Weiterführende Dokumentationen
Weiterführende Dokumentationen
In den folgenden Dokumentationen erfahren Sie mehr über die ABAP Workbench und das
Programmieren mit ABAP:
• ABAP Workbench Tutorial [Extern]. Diese Dokumentation führt Sie in die wichtigsten
Werkzeuge der ABAP Workbench ein. Sie lernen, mit den Werkzeugen eine einfache
ABAP-Anwendung zu programmieren.
• ABAP-Benutzerhandbuch [Extern]. In dieser Dokumentation finden Sie ausführliche
Beschreibungen der einzelnen ABAP-Programmteile. Sie lernen mehr über die ABAP-
Grundlagen, Reportprogrammierung, Transaktionsentwicklung und andere Techniken für
fortgeschrittene Programmierer.
• ABAP Dictionary [Extern]. In dieser Dokumentation finden Sie eine Darstellung der
ABAP-Daten. Es werden grundlegende und aggregierte Objekte, die Pflege von
Dictionary-Objekten und andere Spezialgebiete behandelt.
• Workbench Organizer [Extern]. In dieser Dokumentation lesen Sie, wie Sie große
Projekte im R/3-System organisieren können. Einige der Themen sind die Einrichtung
des Organziers und des Transportsystems sowie die Versionsverwaltung und das
Modifikationskonzept.
• Erweiterte Funktionsbibliothek Anwendungen [Extern]. In dieser Dokumentation finden
Sie Informationen zu standardisierten Dialogen, zur zentralen Adreßverwaltung,
Anwendungsprotokollen und zur Archivierung.
• Basis Programmierschnittstellen [Extern]. In dieser Dokumentation werden die
Progammierschnittstellen für SAP-Komponenten beschrieben, u.a. die
Hintergrundverarbeitung und das Batch-Input-System.
April 2001 97
BC - ABAP Workbench: Werkzeuge SAP AG
ABAP Editor
ABAP Editor
Mit Hilfe des ABAP Editors können Sie Programme und ihre Teilobjekte anlegen und bearbeiten.
98 April 2001
SAP AG BC - ABAP Workbench: Werkzeuge
Überblick über den ABAP Editor
Editor-Modi
Der ABAP Editor verfügt über zwei Modi:
• Frontend Editor-Modus
• Backend Editor-Modus
Der Frontend Editor wurde mit dem TextEdit Control des SAP Control Frameworks realisiert und
erlaubt ein lokales Editieren am Frontend. Der ABAP-Quelltext wird also - anders als beim
herkömmlichen Backend Editor- ans Frontend geladen und kann dort lokal bearbeitet werden.
Beachten Sie, daß der Kommando-Modus von der neuen Version der Workbench
nicht mehr unterstützt wird und daher seit dem Release 4.6B nicht mehr verfügbar
ist.
Integration
Quelltexte, die im Backend Editor erstellt wurden, können im Frontend Editor problemlos
bearbeitet werden. Umkehrt, setzt das System alle Formatierungen des Frontend Editors ohne
Zutun des Benutzers im Backend Editor korrekt um. Insbesondere ist hier die Zeilenlänge mit
derjenigen des Backend Editors abgestimmt und führt bei deren Überschreitung automatisch
zum Zeilenumbruch.
Die beiden Editor-Modi bieten exakt das gleiche Layout des Quelltextes an. Der Editorinhalt wird
genauso ausgegeben wie er auf der Datenbank vorliegt. Eine automatische Konvertierung, z.B.
in Großbuchstaben, findet in beiden Editor-Modi nicht statt.
Unterschiede
Unterschiede zwischen den beiden Modi gibt es jedoch in der Bedienung, hinsichtlich der
Systemvoraussetzungen und geringfügig hinsichtlich des Funktionsumfangs. Auf diese
Unterschiede wird in der nachfolgenden Dokumentation eingegangen.
Siehe auch:
Frontend Editor [Seite 100]
Backend Editor [Seite 103]
Editor-Modus ändern [Seite 105]
Lokales Editieren [Seite 106]
April 2001 99
BC - ABAP Workbench: Werkzeuge SAP AG
Frontend Editor
Frontend Editor
Verwendung
Beim Frontend Editor wird der ABAP-Quelltext, im Gegensatz zum Backend Editor, ans Frontend
geladen und erlaubt dort ein lokales Editieren. Dies ist mit dem Vorteil verbunden, daß alle
Editierfunktionen, die keine Kommunikation mit dem Backend erfordern, sehr schnell ausgeführt
werden können.
Andererseits kann der Kommunikationskanal zwischen Frontend und dem Applikationsserver
aufgrund der Verwendung des Frontend Editors erheblich belastet werden. Dies kann bei
umfangreichen Beständen schon im LAN- aber insbesondere im WAN-Umfeld ein performance-
kritischer Aspekt sein.
Im Frontend Editor können folgende Entwicklungsobjekte bearbeitet werden:
§ ABAP-Programme
§ Methodenimplementierung (Class Builder)
§ Implementierung der Funktionsbausteine (Function Builder)
§ Dynpro-Ablauflogik (Screen Painter)
§ Typgruppen (ABAP Dictionary)
In allen unterstützenden Werkzeugen verfügt der Frontend Editor über den gleichen
Funktionsumfang.
Voraussetzungen
Betriebssystem
Auf Ihrem Frontend muß entweder WindowsNT 4.0 oder Windows95 als 32-bit Betriebssystem
installiert sein. Andere Betriebssysteme werden zur Zeit nicht unterstützt.
Funktionsumfang
Der ABAP Editor im Frontend Editor-Modus stellt u.a. folgende Funktionen bereit:
• Lokales Blättern (nur in diesem Modus verfügbar !)
• Cut, Copy & Paste für markierte Textbereiche (nur in diesem Modus verfügbar !)
• Drag & Drop-Unterstützung (nur in diesem Modus verfügbar !).
• Kontextmenü (rechte Maustaste) für den Zugriff auf Edit-Funktionen (nur in diesem Modus
verfügbar !).
• Lokale Such- und Ersetzungsfunktion.
• Navigation zu einer ausgewählten Zeile (über das Kontextmenü).
• Zugriff auf die Zwischenablage und Blockoperationen (auch über das Kontextmenü).
• Auskommentieren von Textblöcken.
• Navigationsfunktionen ("Vorwärtsnavigation").
• Syntaxprüfung und Ausgabe der Fehlermeldungen und Warnungen in einem separaten
Fensterbereich.
• Farbige Hervorhebung von Kommentarzeilen.
• Automatischer Zeilenumbruch nach Überschreiten der maximalen Zeilenbreite (nur in diesem
Modus verfügbar !).
• Einfügen von ABAP-Anweisungsmustern.
• mehrstufige Undo- bzw. Redo-Funktion (nur in diesem Modus verfügbar !).
• Anzeige der aktuellen Cursorposition.
• Verwenden des Pretty Printers zur Normalisierung des Layouts.
• Import und Export von lokalen Dateien.
Backend Editor
Verwendung
Mit diesem Editor-Modus steht der traditionelle Backend-Editor für das Editieren des ABAP-
Quelltextes zur Verfügung.
Mit dem Backend Editor arbeiten Sie zeilenorientiert und die Bearbeitung von mehreren Zeilen im
Coding mit den gängigen Editier-Funktionen (Ausschneiden, Kopieren, Verketten,…) erfordert
das Markieren von Zeilenblöcken. Ebenso ist Verwendung von Zwischenablagen in diesem
Modus vorteilhaft.
Der Backend Editor ist bei sehr umfangreichem Quelltext-Beständen, insbesondere im WAN-
Umfeld, dem Frontend Editor vorzuziehen, da er unter diesen Bedingungen günstigere
Performance erzielt.
Ferner können im Backend Editor sämtliche Entwicklungsobjekte bearbeitet werden, die auf dem
ABAP Editor basieren. Der Splittscreen-Editor, der BOR-Editor und der Editor zu logischen
Datenbanken sind ausschließlich nur mit diesem Modus ausgestattet.
Voraussetzungen
Anders als beim Frontend Editor liegen keine besonderen Einschränkungen bezüglich der Wahl
des Betriebssystems vor.
Funktionsumfang
Der ABAP Editor im Backend Editor-Modus stellt u.a. folgende Funktionen bereit:
• Navigationsfunktionen ("Vorwärtsnavigation", … ).
• Markieren von Blöcken und Verwendung der Zwischenablage.
• Verwendung der Komprimierungslogik (nur in diesem Modus verfügbar !).
• Einblenden der Zeilennummerierung (nur in diesem Modus verfügbar !).
• Such- und Ersetzungsfunktion.
• Farbige Hervorhebung von Kommentarzeilen.
• Einfügen von ABAP-Anweisungsmustern.
• Auflösen von Includes (nur in diesem Modus verfügbar !).
• Einstufige Undo-Funktion.
• Auskommentieren von Textblöcken.
• Verwenden des Pretty Printers zur Normalisierung des Layouts.
• Syntaxprüfung.
• Upload und Download von Dateien.
Editor-Modus ändern
Nach dem Aufruf des ABAP Editors wird der Quelltext initial im Editor-Modus angezeigt, der
unter benutzerspezifischen Einstellungen [Seite 47] zuletzt voreingestellt wurde.
Vorgehensweise
So ändern Sie den Editor-Modus von beliebiger Stelle der Workbench aus:
1. Wählen Sie Hilfsmittel → Einstellungen .
Es erscheint das Dialogfenster Benutzerspezifische Einstellungen.
2. Wählen Sie den Tabreiter ABAP Editor.
3. Wählen Sie den neuen Editor-Modus aus.
4. Falls Sie sich für den Backend Editor entscheiden, haben Sie die Möglichkeit, die
Zeilennummerierung und die Komprimierungslogik ein- oder auszuschalten.
5. Verlassen Sie dieses Fenster mit .
Ergebnis
Die geänderte Einstellung bleibt dauerhaft, d.h. über die Dauer der Sitzung am SAP-System
hinaus, gesichert.
Siehe auch:
Komprimierungslogik verwenden [Seite 115]
Lokales Editieren
In beiden Modi des ABAP Editors haben Sie die Möglichkeit, ein ABAP-Programm in eine lokale
Datei Ihres Rechners zu übertragen. Den Quelltext können Sie danach in einem Standardeditor
Ihrer Wahl bearbeiten und schließlich diese Datei in den ABAP Editor hochladen.
Im Backend Editor-Modus
Upload und Download durchführen
Um eine Datei in den ABAP Editor hochzuladen, wählen Sie Hilfsmittel → Weitere Hilfsmittel →
Upload/Download → Upload. Geben Sie in angezeigten Dialogfenster den Pfad und den Namen
der einzulesenden Datei an. Klicken Sie dann auf Übertragen.
Beachten Sie, daß nach dem Übertragen der Datei der gesamte, bereits im ABAP
Editor vorhandene Inhalt, mit dem Inhalt der eingefügten Datei überschrieben wird.
Um ein Programm auf eine lokale Datei Ihres Rechners zu übertragen, wählen Sie Hilfsmittel →
Weitere Hilfsmittel → Upload/Download → Download. Bestimmen Sie in angezeigten
Dialogfenster den Pfad und den Namen der Datei und die zugehörige Erweiterung. Klicken Sie
dann auf Übertragen.
Der Backend Editor unterstützt folgende Formate:
Erweiterung Upload/Download
ASC ASCII
BIN Binär
DAT ASCII-Datentabelle mit Spaltentabulator
DBF DBASE-Format (nur für den Download verfügbar).
IBM ASCII mit IBM-Codepage Konvertierung (DOS)
WK1 Tabellenkalkulationsformat (nur für den Download verfügbar).
Im Frontend Editor-Modus
Quelltext übertragen
Um eine lokale Datei in den ABAP Editor hochzuladen, wählen Sie die Funktion Laden lokaler
Datei über die entsprechende Ikone aus der Toolbar des Editors. Wählen Sie anschließend
die betreffende lokale ASCII-Datei aus.
Beachten Sie, daß nach dem Laden der Datei der gesamte, bereits im Editor
vorhandene Inhalt, mit der exportierten Datei überschrieben wird.
Um den gesamten Inhalt des ABAP-Editors in eine lokale Textdatei herunterzuladen, wählen Sie
die Funktion Sichern als lokale Datei über die entsprechende Ikone aus der Toolbar des
Editors. Geben Sie im angezeigten Dialogfenster den Pfadnamen für die lokale Textdatei an.
Beachten Sie, daß hierbei keine (markierten) Textteile, sondern stets der gesamte Editorinhalt
lokal in einer Textdatei im ASCII-Format gesichert wird.
Programm anlegen
Voraussetzungen
In der nachfolgenden Beschreibung wird davon ausgegangen, daß Sie ein neues ABAP-
Programm im Object Navigator anlegen. Darüber hinaus bezieht sich die Vorgehensweise auf
den allgemeinen Fall und läßt sich insbesondere auch dann anwenden, wenn noch kein
Objektknoten Programme innerhalb der Objektliste vorhanden ist.
Anderenfalls können Sie die Funktion Anlegen aus dem Kontextmenü des Objektknotens
verwenden. Siehe auch Neue Objekte anlegen [Seite 27].
Vorgehensweise
33. Wählen Sie die Funktion Anderes Objekt, indem Sie die Ikone aus der Drucktastenleiste
anklicken.
34. Wählen Sie im Fenster Objektauswahl die Tabstrip-Seite Programm aus.
35. Geben Sie den Namen des neuen Programms an.
Beachten Sie, daß im Kundennamensraum alle Programme mit Y oder mit Z beginnen.
36. Wählen Sie .
Es erscheint das Dialogfenster Programm anlegen.
37. Schalten Sie die Option Mit Top-Include aus, falls daß das anzulegende Programm vom Typ
Ausführbares Programm (Report) sein soll. Im entgegengesetzten Fall legen Sie ein
Programm mit TOP-Include, also ein Modulpool an.
Ergebnis
Das Programm wurde im R/3-Repository angelegt und liegt im ABAP Editor in inaktiver Fassung
vor. Durch die Zuordnung zu einer Entwicklungsklasse ist das Programm automatisch an das
Transport- und Korrekturwesen angeschlossen.
Alternativ können Sie ein Programm vom Einstiegsbild des ABAP Editors (SE38)
anlegen.
Quelltext editieren
Das Vorgehen bei bei Navigation und der Bearbeitung des Quelltextes unterscheidet sich, je
nachdem welchen Editor-Modus Sie einsetzen. In der vorliegenden Dokumentation wird auf
diese Unterschiede im Detail eingegangen.
Themen
Im Quelltext navigieren [Seite 111]
Quelltext bearbeiten (Frontend Editor) [Seite 116]
Quelltext bearbeiten (Backend Editor) [Seite 119]
Zwischenablage verwenden [Seite 121]
Suchen und Ersetzen (Frontend Editor) [Seite 123]
Suchen und Ersetzen (Backend Editor) [Seite 125]
Anweisungsmuster einfügen [Seite 127]
Muster mit Drag and Drop einfügen [Seite 130]
Includes auflösen [Seite 131]
Layout verbessern [Seite 134]
Im Quelltext navigieren
Um zu einer bestimmten Stelle im Quelltext innerhalb des angezeigten Bildausschnitts zu
gelangen, können Sie, wie üblich, den Cursor direkt am Ziel positionieren.
Durch Anklicken der Bildaufleisten kann die aktuelle Anzeige im Editorausschnitt variiert werden.
Daneben steht eine Vielzahl von Tastenkombinationen für spezielle Cursor-Bewegungen
innerhalb des Quelltextes zur Verfügung. Die Tastenkombination können haben jedoch,
abhängig von der Auswahl des Editor-Modus, teilweise unterschiedliche Wirkung:
Strg + Bild ↑ vor das erste Zeichen im an den Anfang des gesamten
sichtbaren Editorausschnitt Quelltextes
Strg + Bild ↓ hinter das letzte Zeichen im an das Ende des gesamten
sichtbaren Editorausschnitt Quelltextes
Strg + Pos1 an den Anfang des gesamten an den Anfang der aktuellen Zeile
Quelltextes
Strg + Ende an das Ende des gesamten an das Ende der aktuellen Zeile
Quelltextes
Frontend Editor
Um zu einer bestimmten Zeile im Quelltext zu springen, gehen Sie wie folgt vor:
1. Öffnen Sie das Kontextmenü im Editor über die rechte Maustaste.
2. Wählen Sie Gehe zu Zeile.
3. Geben Sie im angezeigten Popup die Zeilennummer ein.
Leerzeichen in der Zeile daß die aktuelle Zeile zur ersten Zeile des sichtbaren
Editorausschnitts wird.
Zeilennummer daß die aktuelle Zeile zur ersten Zeile des sichtbaren
Editorausschnitts wird (nur im Table Control-Modus bei
eingeschalteter Zeilennummerierung).
Doppelklick Doppelklick
Komprimierungslogik verwenden
Wenn Sie sich über die Strukturierung des Quelltextes innerhalb eines Programms einen
Überblick verschaffen wollen, können Sie die Komprimierungslogik verwenden. Bestimmte Teile
eines Programms (Unterprogramme, Module, geschachtelte ABAP-Anweisungen) definieren
logische Blöcke, die Sie komprimieren können. Neben vorgegebenen Blöcken haben Sie die
Möglichkeit, eigene logische Blöcke im Quelltext zu definieren.
Voraussetzungen
Die Komprimierungslogik kann nur im Backend Editor-Modus verwendet werden. Zusätzlich muß
die entsprechende Option mit Komprimierungslogik bei den Einstellungen [Seite 47] zum ABAP
Editor aktiv sein.
Funktionsumfang
§ Komprimieren der logischen Blöcke.
Klicken Sie dazu auf die Ikone .
§ Expandieren der logischen Blöcke.
Klicken Sie dazu auf die Ikone .
§ Einfügen selbstdefinierter Blöcke.
Gehen Sie dazu wie folgt vor:
1. Fügen Sie eine Kommentarzeile, die mit *{ beginnt, an den Anfang des zu
definierenden Blocks ein.
2. Fügen Sie am Ende des zu definierenden Blocks eine Kommentarzeile ein, die mit
*} beginnt.
3. Bestätigen Sie mit ENTER.
Text bearbeiten
Funktion Vorgehensweise
Text ausschneiden (Cut) Markieren Sie den entsprechenden Text.
Wählen Sie aus dem Kontextmenü (rechte Maustaste) die
Funktion Ausschneiden oder verwenden Sie die
Tastenkombination Strg + X.
Der markierte Text wird in die Zwischenablage kopiert.
Text kopieren (Copy) Markieren Sie den entsprechenden Text.
Wählen Sie aus dem Kontextmenü die Funktion Kopieren
oder verwenden Sie die Tastenkombination Strg + C.
Der markierte Text wird in die Zwischenablage kopiert.
Text einfügen (Paste) Positionieren Sie den Cursor an der Stelle, an der der
zugehörige Text aus der Zwischenalge eingefügt werden soll.
Wählen Sie aus dem Kontextmenü die Funktion Einfügen
oder verwenden Sie die Tastenkombination Strg + V.
Text mit Drag & Drop Markieren Sie den entsprechenden Text.
verschieben (im gleichen Ziehen Sie bei gedrückter linker Maustaste den markierten
Editor) Bereich an die die Zielposition.
Lassen Sie dann die Maustaste los.
Der markierte Text wird zu der neuen Position verschoben.
Text mit Drag & Drop kopieren Markieren Sie den zu kopierenden Text.
(im gleichen Editor) Ziehen Sie bei gedrückter Strg- und linker Maustaste den
markierten Bereich an die die Zielposition.
Lassen Sie dann die Maustaste los.
Der markierte Text wird an der Zielposition kopiert.
Quelltext auskommentieren Markieren Sie die entsprechenden Quelltextzeilen.
Wählen Sie aus dem Kontextmenü die Funktion
Kommentieren oder verwenden Sie die Tastenkombination
Strg + <.
Zeilenkommentare im Quelltext Markieren Sie die entsprechenden Zeilen.
aufheben Wählen Sie aus dem Kontextmenü die Funktion
Dekommentieren oder verwenden Sie die Tastenkombination
Strg + >.
Text markieren
Markieren Vorgehensweise
einer Zeile Positionieren Sie Cursor in der gewünschten Zeile und wählen Sie aus
der Editor-Toolbar die Funktion Markieren.
eines Zeilenblocks Positionieren Sie den Cursor in der ersten Zeile des Blocks.
Wählen Sie Markieren.
Positionieren Sie den Cursor in der letzten Zeile des Blocks.
Wählen Sie abermals Markieren.
Text bearbeiten
Funktion Vorgehensweise
Zeilenblock löschen Markieren Sie den entsprechenden Block.
Wählen Sie Ausschneiden.
Zeilenblock kopieren Markieren Sie den entsprechenden Block.
Wählen Sie die Kopieren.
Der markierte Zeilenblock wird in den Standardpuffer kopiert.
Zeilenblock einfügen Positionieren Sie den Cursor an der Stelle, an der der
zugehörige Text aus der Zwischenalge eingefügt werden soll.
Wählen Sie Einsetzen.
Der zuvor in den Standardpuffer kopierte Zeilenblock wird
eingefügt.
Zeilenblock doppeln Markieren Sie den entsprechenden Block.
Wählen Sie Zeile/Block doppeln.
Siehe auch:
Zwischenablage verwenden [Seite 121]
Zwischenablage verwenden
Verwendung
Beide Modi des ABAP Editors stellen einen Standardpuffer und drei weitere Zwischenablagen
bereit. Darüber hinaus können Sie mit der Zwischenablage Ihres lokalen Präsentationsrechners
Informationen zwischen Programmen in unterschiedlichen SAP-Systemen hin- und herkopieren.
Funktionsumfang
Die folgende Tabelle liefert einen Überblick über die vorhandenen Zwischenablagen:
Funktion Verwendbar zusammen mit Bedeutung
Kopieren in Puffer Einsetzen Puffer Kopieren und Einfügen innerhalb
einer einzigen Editor-Sitzung im
selben System (Standardpuffer).
Wenn Sie den Editor verlassen,
löscht das System den Inhalt des
Puffers.
Kopieren in X-Ablage Einsetzen X-Ablage Kopieren und Einfügen über SAP-
Kopieren in Y-Ablage Einsetzen Y-Ablage Modi desselben Systems hinweg.
Kopieren in Z-Ablage Einsetzen Z-Ablage Der Editor speichert den Inhalt
dieser Zwischenablagen, so daß
sie von den einzelnen SAP-Modi
desselben Systems greifbar sind.
Kopieren in Clipboard Einsetzen Clipboard Kopieren und Einfügen über SAP-
Systeme hinweg. Sie können z.B.
Informationen von einem
Produktionssystem in ein
Entwicklungssystem kopieren. Bei
diesen Optionen wird die
Zwischenablage Ihres lokalen
Präsentationsrechners benutzt.
Im Frontend Editor können Sie auf Funktionen zur Zwischenablage auch über das
Kontextmenü (Block/Ablage) zugreifen.
Vorgehensweise
Beliebige Zeichenfolge suchen
1. Wählen Sie die Funktion Suchen/Ersetzen aus dem Kontextmenü oder über die
entsprechende Ikone der Toolbar.
2. Geben Sie die gewünschte Zeichenfolge ein und wählen Sie die entsprechenden
Optionen.
3. Wählen Sie Find Next.
Falls die Zeichenfolge im Text existiert, wird der Cursor auf ihn positioniert.
Beliebige Zeichenfolge suchen und ersetzen
1. Wählen Sie die Funktion Suchen/Ersetzen aus dem Kontextmenü oder über die
entsprechende Ikone der Toolbar.
2. Geben Sie den Suchbegriff und den entsprechenden Ersetzungsbegriff ein und wählen
Sie die entsprechenden Optionen.
3. Wählen Sie Replace All oder Find Next und anschließend Replace.
Falls der Suchbegriff im Text existiert, wird dieser durch den Ersetzungsbegriff ersetzt.
Bei Auswahl von Replace All wird die Ersetzung für alle Textstellen im gesamten
Quelltext in einem Schritt vorgenommen.
Beliebige Zeichenfolge mit Hilfe des Suchbegriffs löschen
1. Wählen Sie die Funktion Suchen/Ersetzen aus dem Kontextmenü oder über die
entsprechende Ikone der Toolbar.
2. Geben Sie nur den gewünschten Suchbegriff ein und wählen Sie die entsprechenden
Optionen.
3. Wählen Sie Replace All.
Der Suchbegriff wird im gesamten Quelltext gelöscht.
Falls Sie eine globale Suche, über den ausgegebenen Quelltext hinaus, starten
möchten, dann wählen Sie die Menüfunktion Bearbeiten → Suchen/Ersetzen oder
die entsprechende Ikone aus der Symbolleiste. Die Vorgehensweise hierzu
entnehmen aus Quelltext bearbeiten im Backend Editor [Seite 119].
Vorgehensweise
Einfache, lokale Suche durchführen
1. Wählen Sie die Funktion Suchen über die entsprechende Ikone der Toolbar.
Es erscheint das Dialogfenster Suchen /Ersetzen.
2. Geben Sie den gewünschten Suchbegriff ein.
3. Verlassen Sie das Fenster mit .
Die Suche wird ab der aktuellen Cursorposition gestartet. Falls der Suchbegriff im
aktuellen Quelltext existiert, wird der Cursor vor diesen positioniert,
4. Wählen Sie die Option global im Rahmenprogramm, falls die Suche auf das komplette
Rahmenprogramm ausgedehnt werden soll.
5. Verlassen Sie das Fenster mit .
Falls die Zeichenfolge im Text existiert, wird eine Liste mit Fundstellen ausgegeben.
6. Wählen Sie den interessierenden Eintrag mit Doppelklick aus.
Der Cursor wird an den Anfang der Zeile mit der gesuchten Zeichenfolge positioniert.
Zeichenfolge ersetzen
1. Wählen Sie die Funktion Bearbeiten → Suchen/Ersetzen.
Es erscheint das Dialogfenster Suchen /Ersetzen.
2. Geben Sie den Suchbegriff ein.
3. Aktivieren Sie die Option Ersetze durch und geben Sie den entsprechenden
Ersetzungsbegriff ein.
4. Wählen Sie eventuell weitere Optionen zur Einschränkung der Suche.
5. Wählen Sie die Option global im Rahmenprogramm, falls die Suche auf das komplette
Rahmenprogramm ausgedehnt werden soll.
6. Verlassen Sie das Fenster mit .
Falls die Zeichenfolge im Text existiert, wird eine Liste mit entsprechenden Fundstellen
ausgegeben.
7. Wählen Sie den ersten Eintrag aus und dann die Funktion Ersetzen.
Wenn Sie sich sicher sind, daß die Zeichenfolge an allen Fundstellen ersetzt werden
soll, können Sie die erste Fundstelle markieren und anschließend die Funktion Ab
Cursor alles ohne Bestätigung wählen.
Anweisungsmuster einfügen
Verwendung
Mit Hilfe der Funktion Muster können Sie verschiedene Anweisungsmuster in Ihr Programm
einfügen. Insbesondere bei komplexen ABAP-Anweisungen ersparen sich unnötige Tipparbeit.
Zusätzlich wird mit einem Muster eine korrekte Syntax der einzufügenden Anweisung garantiert.
Funktionsumfang
Folgende Musterfunktionen stehen zur Verfügung:
Funktion Bedeutung
CALL FUNCTION Ein bestimmter FUNCTION-Aufruf wird eingefügt.
Muster zu ABAP Objects Es können die folgenden, grundlegenden Anweisungen zu
globalen Klassen in ABAP Objects eingefügt werden:
CALL METHOD
CREATE OBJECT
RAISE EVENT
MESSAGE Eine MESSAGE-Anweisung wird für eine bestimmte Nachricht
eingefügt. Sie müssen eine Nachrichten-ID, den Nachrichtentyp
und eine Nummer eingeben. Schließen Sie mit ENTER ab.
SELECT * FROM Eine Anweisung SELECT FROM <tabelle> wird eingefügt.
Geben Sie einen Tabellennamen in das entsprechende Feld ein
und wählen Sie ENTER. Das System fragt Sie nach den
Tabellenfeldern.
PERFORM Eine PERFORM-Anweisung wird für eine bestimmte FORM-
Routine eingefügt.
AUTHORITY-CHECK Eine AUTHORITY-CHECK-Anweisung wird für ein bestimmtes
Berechtigungsobjekt eingefügt. Schließen Sie mit ENTER ab.
WRITE Eine WRITE-Anweisung wird für eine bestimmte Struktur oder
Tabelle eingefügt.
CASE Eine CASE-Anweisung wird für einen bestimmten Status
eingefügt.
Interne Tabelle Eine interne Tabelle wird eingefügt. Sie können die Felder oder
die Struktur einer bestehenden Tabelle kopieren.
CALL DIALOG Eine CALL DIALOG-Anweisung wird für einen bestimmten
Dialogbaustein eingefügt.
Weitere Anweisung Eine vordefinierte oder kundendefinierte ABAP-Anweisung wird
eingefügt.
Vorgehensweise
Um im ABAP Editor ein Anweisungsmuster einzufügen, gehen Sie wie folgt vor:
1. Setzen Sie den Cursor im Änderungsmodus an die gewünschte Position des Quelltextes.
2. Wählen Sie die Funktion Muster.
Es erscheint das Dialogfenster Muster einfügen.
3. Wählen Sie die entsprechende Musterfunktion aus und spezifizieren Sie gegebenfalls die
Anweisung.
4. Verlassen Sie das Fenster mit .
5. Füllen Sie das Muster mit weiteren Angaben.
Beispiel: Muster zu ABAP Obejcts.
ENDIF.
Voraussetzungen
Sie verwenden den Frontend Editor-Modus des ABAP Editors.
Vorgehensweise
Um zum Beispiel das Muster für einen Methodenufruf aus der Objektliste einzufügen, gehen Sie
wie folgt vor:
1. Wählen Sie das betreffende ABAP-Programm aus, in dem Sie das Muster einfügen möchten
und öffnen Sie es im Werkzeugbereich des Object Navigators.
2. Bringen Sie die Objektliste der entsprechenden Klasse im Navigationsbereich des Object
Navigators zur Anzeige.
3. Wählen Sie den Eintrag für die gewünschte Klassenmethode aus der Baumanzeige aus.
4. Ziehen Sie diesen Eintrag in den Editor und lassen Sie ihn an der Position im Quelltext fallen,
an dem das Muster eingefügt werden soll.
Ergebnis
Das Muster für den Methodenaufruf wird an der abgesetzten Position mit allen zur Methode
definierten Parametern eingefügt. Optionale Parameter sind dabei auskommentiert.
Sie können nun das Muster vervollständigen und den Parametern Werte zuweisen.
Includes auflösen
Verwendung
Sie können ein Include im aktuell angezeigten Programm auflösen. Damit wird der gesamte
Inhalt des Includes innerhalb des Programms sichtbar und Sie können Änderungen am Include
und am Quelltext ohne Fensterwechsel vornehmen.
Vorgehensweise
So lösen Sie im Änderungsmodus des ABAP Editors ein Include auf:
1. Öffnen Sie den Teil Ihres Programms, der die betreffende Include-Anweisung enthält.
2. Positionieren Sie den Cursor auf die Zeile mit der Include-Anweisung.
3. Wählen Sie die Menüfunktion Bearbeiten → Weitere Funktionen → INCLUDE auflösen.
Der gesamte Inhalt des Includes ist im Programm sichtbar.
Der eingefügte Include-Bereich ist durch entsprechende Kommentarzeilen markiert, die
jeweils den Anfang und das Ende des Includes kennzeichnen.
4. Speichern Sie die Änderungen am Include ab.
Sie haben zwei Möglichkeiten diese Änderungen zu sichern:
§ Sie wählen und sichern damit das Rahmenprogramm. Dann wird das Include, inclusive
der dort vorgenommenen Änderungen, als Bestandteil des Rahmenprogramms gesichert.
Das aufgelöste Include wird dann aus der Objektliste des Rahmenprogramms entfernt.
§ Sie positionieren den Cursor an den Anfang des Includes und wählen die Menüfunktion
Bearbeiten → Weitere Funktionen → INCLUDE sichern. In diesem Fall werden die
Änderungen am Include separat gesichert. Wenn Sie dann wählen, dann speichern Sie
nur die Änderungen im Programm ab.
Ergebnis
Die Auflösung des Includes bleibt in Ihrem Programm solange erhalten, bis Sie sie ausdrücklich
rückgängig machen.
Sollten Sie die Auflösung rückgängig machen wollen, dann positionieren Sie den
Cursor an den Anfang des Includes und wählen die Menüfunktion Bearbeiten →
Weitere Funktionen → INCLUDE komprimieren. Falls Sie Änderungen am Include
vorgenommen haben, werden Sie dann gefragt, ob Sie diese speichern möchten.
Aufruf
Diese Hilfe können Sie anfordern über:
• F1 auf ein Schlüsselwort im ABAP Editor
• i-Knopf im ABAP-Editor
• Menüfunktion Hilfsmittel→ Schlüsselwortdoku im Einstieg (SE38) des ABAP-Editors
• Aufruf der Transaktion ABAPHELP
• Auswahl des untersten Knotens in der Transaktion ABAPDOCU
Die Hilfefunktion ist für die folgenden Bereiche verfügbar:
geöffnet werden. Diese Offline-Version unterstützt zwar nur Verweise zwischen den
heruntergeladenen Dokumenten, kann aber unabhängig vom R/3-System verwendet
werden.
Layout verbessern
Verwendung
Der ABAP-Quelltext wird genauso auf der Datenbank abgespeichert wie er im Editor eingegeben
wurde. Eine automatische Konvertierung in eine normalisierte Darstellung, z.B. in
Großbuchstaben, findet nicht statt.
Eine solche Darstellung kann jedoch bei Bedarf über den Pretty Printer erreicht werden.
Folgende Darstellungsformen werden angeboten:
§ gesamter Quelltext in Großbuchstaben
§ gesamter Quelltext in Kleinbuchstaben
§ Hervorheben der ABAP-Schlüsselwörter
Darüberhinaus stellt der Pretty Printer die gewohnte Funktionalität zur Gruppierung
zusammenhängender Schlüsselwörter und zur Einrückung von Anweisungen zur Verfügung.
Siehe auch:
Funktionsumfang des Pretty Printers [Seite 136]
Es ist zweckmäßig, den Pretty Printer erst dann zu verwenden, wenn keine
Syntaxfehler mehr im Quelltext auftreten.
Vorgehensweise
Layout normalisieren
Funktion Vorgehensweise
Darstellung in Großbuchstaben Wählen Sie den Menüpfad Hilfsmittel → Einstellungen
und anschließend unter dem Tabreiter Pretty Printer die
Option Großschreibung und bestätigen Sie die
Einstellungen.
Wählen Sie die Funktion Pretty Printer auf der
Drucktastenleiste.
Darstellung in Kleinbuchstaben Wählen Sie den Menüpfad Hilfsmittel → Einstellungen
und anschließend unter dem Tabreiter Pretty Printer die
Option Kleinschreibung und bestätigen Sie die
Einstellungen.
Wählen Sie die Funktion Pretty Printer auf der
Drucktastenleiste.
Ergebnis
Der ABAP -Quelltext wird mitsamt aller zusätzlichen, inclusive aller mit dem Pretty Printer
vorgenommenen Änderungen des Layouts, ohne jede automatische Konvertierung auf der
Datenbank abgespeichert, nachdem Sie den Quelltext gesichert haben. Bei erneutem Laden des
Quelltextes wird er, unabhängig vom Editor-Modus, genauso angezeigt wie er auf der Datenbank
abgelegt ist.
Funktionsumfang
Die Pretty Printer-Funktion übernimmt folgende Aufgaben:
• Der gesamte Quelltext wird, entsprechend der eingestellten Option, in einer normalisierten
Darstellung (Klein-/Großschreibung) angeboten.
• Jedes Ereignis-, Steuerungs- und INCLUDE-Schlüsselwort wird in eine eigene Zeile
geschrieben.
• Ereignisschlüsselwörter, FORM- und MODULE-Anweisungen werden an den Zeilenanfang
gestellt, wobei die Pretty Printer-Funktion die erste Programmzeile als Bezugszeile
verwendet.
• Vor Ereignisschlüsselwörtern ohne vorausgehende Leer- oder Kommentarzeile wird eine
Leerzeile eingefügt.
• Alle zu einem Ereignis gehörenden Anweisungszeilen und Steuerungsstrukturen werden um
zwei Stellen eingerückt.
• Anweisungen, die länger als eine Zeile sind, werden erkannt und nachfolgende Anweisungen
werden in eine neue Zeile geschrieben.
• Vor FORM- und MODULE-Anweisungen ohne Kommentar werden entsprechende
Kommentarblöcke eingefügt. Der Pretty Printer verwendet zum Ausfüllen der
Kommentarblöcke die Routinennamen und die USING-Parameter.
• Kommentare in Anweisungszeilen werden linksbündig ausgerichtet. Dies gilt jedoch nur für
Kommentare mit nicht mehr als 32 Zeichen, die mit einem doppelten Anführungszeichen (“)
beginnen. Der Pretty Printer beginnt den Kommentar in Spalte 40.
Der Pretty Printer bricht keine Schleifen oder steuernde Verarbeitungsblöcke um, die in einer
einzigen Zeile stehen. Ebensowenig trennt er zu einer WHEN-Bedingung gehörende
Anweisungen, wenn die WHEN-Anweisung in einer Zeile steht. Um den Pretty Printer aufzurufen,
wählen Sie Programm → Pretty Printer.
Um den Inhalt des Editors sichern, wählen Sie aus der Symbolleiste.
Programm aktivieren
Beim Aktivieren eines Programms wird aus der inaktiven Fassung eine aktive Fassung des
Programms erstellt. Mit der Aktivierung wird das Programm auf syntaktische Korrektheit geprüft,
dann aus der inaktiven eine aktive Fassung erzeugt, anschließend eine Laufzeitversion generiert
und schließlich der Eintrag aus der Liste der inaktiven Objekte gelöscht.
Um das Programm zu aktivieren, wählen Sie oder Programm → Aktivieren.
Wenn Sie das Programm aktivieren, dann wirkt sich die Aktivierung nicht auf die
Teilobjekte des Programms aus. Die zugehörigen Dynpros oder GUI-Status stellen
eigenständige Transportobjekte dar und müssen separat aktiviert werden.
Programm generieren
Beim Generieren eines Programms wird aus der aktiven Fassung des Programms eine neue
Laufzeitversion erstellt. Im Vergleich zum Aktivieren beschränkt sich diese Operation nur auf das
Erzeugen einer neuen Laufzeitversion.
Um das Programm zu generieren, wählen Sie Programm → Generieren.
Siehe auch:
Statusanzeige bei Entwicklungsobjekten [Seite 520]
Programm prüfen
Im ABAP Editor können Sie auf eine Reihe von Prüfungen zugreifen. Die Prüfungen
unterscheiden sich dadurch, welche Teilobjekte des Programms Sie tatsächlich in die Prüfung
einschließen. Sie können sich ein ABAP-Programm als einen Rahmen vorstellen, der sämtliche
Teilobjekte umfaßt. Ein Rahmen beinhaltet z.B. das Top-Include und weitere Includes wie z.B.
PBO- und PAI-Includes.
Wenn Sie ein Programm oder nur ein Teilobjekt prüfen, können Sie den Umfang der Prüfung
festlegen.
Funktionsumfang
Funktion Bedeutung
Wenn das System bei der Prüfung einen Fehler entdeckt und einen Korrekturvorschlag liefern
kann, dann erscheint eine entsprechende Ikone neben dem betreffenden Eintrag innerhalb der
Liste. Ferner wird der Cursor auf den ersten angezeigten Fehlereintrag im Quelltext positioniert.
Wählen Sie diese Ikone, um die Korrektur vom System durchführen zu lassen.
Anderenfalls führen Sie die Korrektur manuell im Quelltext durch.
Siehe auch:
Erweiterte Programmprüfung [Seite 140]
Erweiterte Programmprüfung
Ablauf
1. Wenn Sie Programm → Prüfen → Erweiterte Programmprüfung wählen, zeigt das System
eine Liste der möglichen Prüfoptionen an:
3. Wenn Sie einen Eintrag auswählen, gelangen Sie auf die zugehörige Detailanzeige.
4. Aus dieser Detailanzeige können Sie zur entsprechedenden Stelle in Ihrem Programm
gelangen und die Korrektur durchfüren.
Textelementpflege
Mit der Textelementpfege steht innerhalb der ABAP Workbench ein Tool zur Verfügung, das die
Pflege von mehrsprachigen Programmen unterstützt. Sie können alle Texte, die ein Programm
auf dem Bildschirm ausgibt, als Textelemente pflegen.
Themenübersicht
Textelementpflege im Überblick [Seite 143]
Einstiegsbild [Seite 144]
Textelemente anlegen und pflegen [Seite 145]
Listen- und Spaltenüberschriften anlegen [Seite 146]
Selektionstexte pflegen [Seite 148]
Textsymbole pflegen [Seite 150]
Textelemente abgleichen [Seite 153]
Selektionstexte abgleichen [Seite 154]
Textsymbole abgleichen [Seite 156]
Textelemente kopieren [Seite 161]
Textelemente übersetzen [Seite 162]
Textelementpflege im Überblick
Konzept und Verwendung
Dieses Werkzeug verwenden Sie, um Textelemente zu Ihrem Programm anzulegen, zu pflegen
und zu übersetzen.
Zu den Textelementen gehören:
• Listenüberschriften und Spaltenüberschriften für die Seitenköpfe der Ausgabelisten.
• Selektionstexte auf Selektionsbildern.
• Textsymbole, die Sie innerhalb der Anweisung WRITE verwenden können.
Siehe auch die Dokumentation zu Textsymbolen [Extern] im ABAP Handbuch.
Funktionsumfang
• Anlegen und Pflege von Listen- und Spaltenüberschriften
• Pflege von Selektionstexten und Textsymbolen
• Abgleichen von Selektionstexten und Textsymbolen
• Kopieren von Textelementen
• Übersetzen von Textelementen.
Einstiegsbild
Aufruf
Sie haben mehrere Möglichkeiten, das Eintiegsbild für die Textelementpflege zu erreichen:
• Auserhalb der ABAP Workbench wählen Sie den Menüpfad Werkzeuge → ABAP Workbench
→ Entwicklung → Programmierumfeld → Textelemente.
• Wählen Sie im Object Browser der ABAP Workbench die Programmobjekte zu einem
bestimmten Programm und dort Textelemente.
• Im ABAP Editor wählen Sie den Menüpfad Springen → Textelemente.
• Im Einstiegsbild des ABAP Editors (SE38) geben Sie im Feld Programm den Namen des
Programms ein, für das Sie Textelemente pflegen möchten.
Markieren Sie anschließend Textelemente und wählen Sie dann Anzeigen oder Ändern.
Alle Aktionen führen Sie zum Bild ABAP-Textelemente:
Vorgehensweise
So gehen Sie vor, um vom Einstiegsbild des ABAP Editors (SE38) Listen- und
Spaltenüberschriften anzulegen oder zu ändern:
1. Geben Sie den Programmnamen ein.
2. Markieren Sie Textelemente und wählen Sie Anzeigen oder Ändern.
3. Markieren Sie Listüberschriften und wählen Sie Ändern.
4. Im Feld Listenüberschrift können Sie bis zu 70 Zeichen, in den vier Zeilen des Felds
Spaltenüberschrift jeweils bis zu 255 Zeichen eingeben.
Wenn Sie keine Listenüberschrift angeben, erscheint stattdessen der Programmtitel auf dem
Ausgabebild.
Sie können in den Listen- und Spaltenüberschriften bis zu 10 Platzhalter &0 bis &9
mit bis zu maximal 18 nachfolgenden Punkten ". " angeben. Das System ersetzt
diese Platzhalter beim Ereignis TOP-OF-PAGE mit den Inhalten der Systemfelder
SY-TVAR0 bis SY-TVAR9. Die Ausgabelänge der Systemfelder ist dabei die Länge
des Platzhalters inklusive der nachfolgenden Punkte. Bei einem Platzhalter "&3...... "
wird beispielsweise der Inhalt von SY-TVAR3 in einer Länge von 8 ausgegeben.
Ergebnis
Wenn die Überschriften wie in der obigen Abbildung angelegt wurden, erhalten Sie folgende
Bildschirmausgabe:
Selektionstexte pflegen
Sie können die Standardtexte, die für Parameter und Selektionskriterien auf dem Selektionsbild
erscheinen durch Textelemente ersetzen. Die Texte können Sie entweder frei wählen oder die im
ABAP Dictionary definierten Kurztexte verwenden.
Voraussetzungen
Für das betreffende Programm sind ein oder auch mehrere Selektionsbilder definiert.
Programmbeispiel:
PROGRAM TEXTELEMENTE03.
TABLES SBOOK.
PARAMETERS: PARAM(10).
SELECT-OPTIONS: SEL1 FOR SBOOK-CARRID,
SEL2 FOR SBOOK-CONNID.
Vorgehensweise
So gehen Sie vor, um aus dem ABAP Editor Selektionstexte zu pflegen:
1. Wählen Sie im Änderungsmodus den Menüpfad Springen → Textelemente →
Selektionstexte.
Die Tabelle zum Ändern und Anlegen von Selektionstexten wird angezeigt:
In der Spalte Name sind bereits die Namen der Parameter und Selektionskriterien Ihres
Programms (siehe Beispiel oben). Für jeden Parameter und jedes Selektionskriterium
können Sie nun bis zu 30 Zeichen Selektionstext eingeben.
2. Um Texte für ein Selektionskriterium aus dem ABAP Dictionary zu übernehmen,
positionieren Sie den Cursor auf die entsprechende Zeile und wählen Sie Hilfsmittel → DD-
Text übernehmen.
Alternativ können Sie auch den Menüpfad Hilfsmittel → alle DD-Texte übernehmen
verwenden.
Das System füllt dann diese Selektionstexte automatisch mit den Kurztexten, die als Attribute
den ABAP Dictionary-Feldern zugewiesen sind. Außerdem erscheint der Hinweis DDIC in
der Spalte Typ für jede entsprechende Zeile. Die Textelemente mit DD-Texten erscheinen im
Anzeigemodus:
3. Geben Sie einen Text für die übrigen Parameter ein, für die keine Kurzetxte aus dem DDIC
übernommen werden (können).
4. Um einen der Texte aus dem DDIC zu ändern, positionieren Sie den Cursor auf der
entsrechenden Zeile und wählen Sie Hilfsmittel → Kein DD-Text wählen.
5. Ändern Sie den Selektionstext.
Ergebnis
Selektionstexte zum Programm werden in den Textpool der Anmeldesprache übernommen.
Nach dem Starten des Programms erhalten Sie für das obige Beispiel das folgende
Selektionsbild:
Textsymbole pflegen
Textsymbole sind Textkonstanten, die Sie außerhalb eines Programms eingeben und pflegen.
Sie sollten Textsymbole anstelle der Textliterale in der Endfassung Ihres Programms verwenden,
um es sprachenunabhängig und somit leichter pflegbar zu halten.
Weitere Informationen zu Literalen und Textsymbolen finden Sie im ABAP Benutzerhandbuch in
den Kapiteln Literale [Extern] und Textsymbole [Extern].
Voraussetzungen
Jedem Textsymbol haben Sie eine dreistellige Kennung zugewiesen. Diese Kennung definieren
Sie in in der WRITE-Anweisung
WRITE... TEXT-<idt>...
Bei der Ausführung des Programms sucht das System im Textpool nach einem Textsymbol mit
der Kennung <idt> und gibt den entsprechenden Text in der Ausgabeliste aus. Falls das
Textsymbol <idt> nicht vorhanden ist, überspringt das System den entsprechenden Teil der
WRITE-Anweisung.
Diese Kennung darf nicht mit den Zeichen '%_' beginnen und keine Leerzeichen enthalten.
Vorgehensweise
So gehen Sie vor, um aus dem ABAP Editor ein Textsymbol zu pflegen:
1. Geben Sie im ABAP Editor ihr WRITE-Anweisung mit den dreistelligen Kennungen und den
Standardtexten ein.
2. Wählen Sie einen Eintrag in der WRITE-Anweisungen durch Doppelklick aus.
3. Wurde das Textsymbol noch nicht angelgt, so bestätigen Sie, daß es angelegt werden soll.
Sie verzweigen dann zur Textsymbolpflege.
4. Geben Sie den Text ein.
Sie können bis zu 132 Zeichen Text zuweisen.
Ergebnis
Das gesicherte Textsymbol zum definierenden Programm wurde in den Textpool der
Anmeldesprache übernommen. Sie können nun weitere Textsymbole anlegen und bestehende
ändern.
Weitere Funktionen
Weitere Textsymbole anlegen
1. Wählen Sie dazu die Funktion Neue Zeilen einfügen aus dem Menü Bearbeiten.
2. In der Spalte Sym geben Sie eine dreistellige Kennung für das Textsymbol und in der Spalte
Text den zugehörigen Text ein.
3. Sichern Sie das Textsymbol mit der Drucktste Sichern.
Die maximale Länge mLen wird automatisch auf die definierte Länge dLen (tatsächliche
Länge des Texts) gesetzt.
Ab Release 3.1g werden Leerzeichen nicht mehr durch Unterstriche " _ ")
dargestellt. Sie können Unterstriche stattdessen auf einem Ausgabebild mit
Textsymbolen ausgeben.
Im Falle des Textsymbols " 020 " überspringt das System die Anweisung WRITE. Im Falle von "
040 " wird der im Programm definierte Ersatztext ausgegeben, der in der WRITE-Anweisung als
Literal definiert wurde.
Textsymbole löschen
Um ein Textsymbol zu löschen, markieren Sie die Zeile mit dem entsprechenden Textsymbol und
wählen Sie Löschen.
Textelemente abgleichen
Innerhalb der Textelementpflege können Sie die Textelemente eines Programms gegen den
Quelltext abgleichen. Verwenden Sie dazu die Funktion Abgleichen, auf die Sie entweder vom
Einstiegsbild oder vom Pflegebildschirm zugreifen können.
Die Funktion Abgleichen kann nur für Selektionstexte und Textsymbole eingesetzt werden.
Siehe auch:
Selektionstexte abgleichen [Seite 154]
Textsymbole abgleichen [Seite 156]
Selektionstexte abgleichen
Mit der Funktion Abgleichen für Selektionstexte werden Sie vom System beim Auffinden von
fehlenden bzw. überflüssigen Selektionstexten unterstützt.
Die Funktion Abgleichen erweitert diesbezüglich die Übersichtlichkeit der normalen
Selektionstextpflege, bietet aber nicht die Einbindung von Texten aus dem ABAP Dictionary.
Voraussetzungen
Für das betreffende Programm sind ein oder auch mehrere Selektionsbilder definiert.
Vorgehensweise
So gehen Sie vor, um aus dem ABAP Editor Selektionstexte für eine Auswahl vom Parametern
und Selektionsoptionen abzugleichen:
1. Verzweigen Sie zum Einstiegsbild [Seite 144] für die Textelementpflege.
2. Markieren Sie Selektionstexte und wählen Sie die Drucktaste Abgleichen.
Wenn Sie für das obige Programm noch keine Selektionstexte gepflegt haben, erhalten Sie
folgendes Bild:
Sie können hier ersehen, für welche Parameter und Selektionsoptionen noch Selektionstexte
nicht gepflegt wurden.
3. Geben Sie die Texte ein, falls Sie nicht die im ABAP Dictionary definierten Kurztexte
verwenden.
4. Markieren Sie die Zeilen, die für den Abgleich vorgesehen sind.
Ergebnis
In diesem Fall wurden zwar SEL1 und SEL2 geändert, darunter jedoch nur SEL1 markiert.
Deshalb wird nur SEL1 zum Abgleich vorgesehen.
Über die Auswahl der Funktion Abgleichen können zu sämtlichen Eingabefeldern des
Selektionsbildes Textelemente gepflegt werden.
Wenn Sie Kurztexte aus dem ABAP Dictionary als Selektionstexte verwenden
wollen, müssen Sie zur Pflege verzweigen, wie sie im Kap. Selektionstexte pflegen
[Seite 148] beschrieben wird.
Textsymbole abgleichen
Wenn Sie Textsymbole im Programmquelltext einfügen oder ändern, werden diese nicht
automatisch in den Textpool kopiert. Um die Liste zu aktualisieren und um Diskrepanzen zu
vermeiden, können Sie die Funktion Abgleichen für Textsymbole verwenden.
Sie können mit dieser Funktion
• überflüssige (im Programm nicht verwendete) Textsymbole aus dem Textpool löschen.
• Textsymbole in den Textpool übernehmen.
Dies ist notwendig für Textsymbole, die im Programm verwendet werden, im Textpool
aber noch nicht vorhanden sind.
• Textsymbole mit dem Programmtext abgleichen.
Voraussetzungen
Für das folgende Programm setzen wir voraus, daß noch keine Textsymbole
gepflegt wurden:
PROGRAM TEXTELEMENTE04.
WRITE: TEXT-010,
/'Default Text'(020),
/TEXT-030.
Vorgehensweise
So gehen Sie vor, um aus dem ABAP Editor Textsymbole innerhalb des Abgleichs in den
Textpool zu übernehmen:
1. Verzweigen Sie zum Einstiegsbild [Seite 144] für die Textelementpflege.
2. Markieren Sie Textsymbole und wählen Sie die Drucktaste Abgleichen.
Wenn Sie für das obige Programm noch keine Textsymbole gepflegt haben, erhalten Sie
folgendes Bild:
Da die Liste der Textsymbole zum Programm leer ist, ist die zweite Option markiert.
3. Wählen Sie Bearbeiten.
Es erscheint folgendes Bild:
4. Markieren Sie diejenigen Textsymbole, die Sie in den Textpool übernehmen wollen.
5. Wählen Sie die Funktion Hinzufügen Textsymb.
Die markierten Textsymbole werden für die Übernahme in den Textpool vorgesehen. Es
erscheint das folgende Bild:
6. Lassen Sie sich mit der Funktion Protokoll nochmals die Änderungen anzeigen. (hierfür ist
die entsprechende Zeile zu markieren)
7. Schließlich können Sie die Änderungen mit Sichern übernehmen oder über Widerrufen
rückgängig machen.
Ergebnis
Wenn Sie die Änderungen übernehmen, fügt das System die Textsymbole im obigen Beispiel "
010 ", " 020 " und " 030 " in den Textpool ein. Dabei weist es den Symbolen " 010 " und " 030 "
keinen, dem Symbol " 020 " dagegen das im Programm definierte Textliteral zu.
Weitere Funktionen
Ändern Sie das obige Programm leicht ab, um weitere Optionen innerhalb des
Abgleichs nutzen zu können:
PROGRAM TEXTELEMENTE04.
WRITE: TEXT-010,
/'Default Text'(020),
/'Test_Symbol'(030).
Durch diese Auswahl ersetzen Sie den leeren Text des Textsymbols 030 im Textpool durch
den Programmtext " Test_Symbol ".
Die dritte Spalte zeigt an, ob der Text im Textpool (T) oder Programmtext (P) definiert ist.
3. Wählen Sie die Funktion Ersetzen.
4. Sichern Sie Ihre Angaben.
3. Falls das Textsymbol " 010 " im obigen Programm nicht mehr benötigt wird, kann es gelöscht
werden.
Textelemente kopieren
Sie können Textelemente von einem ABAP-Programm in ein anderes kopieren. Mit der
Kopierfunktion können Sie Textpools mit ihren jeweiligen Standardtextelementen transportieren
und sie in verschiedenen Programmen einsetzen.
Vorgehensweise
So gehen Sie vor, um Textelemente zu kopieren:
1. Verzweigen Sie zum Einstiegsbild [Seite 144] für die Textelementpflege.
2. Wählen Sie Drucktaste Kopieren.
Es wird das folgende Dialogfenster angezeigt:
Ergebnis
Die ausgewählten Textelemente des Quellprogramms werden ins Zielprogramm kopiert.
Textelemente übersetzen
Textelemente unterstützen Sie bei der Pflege von sprachunabhängigen Programmen. Sie
werden im Textpool der jeweiligen Sprache abgelgt und unterliegen dem
Standardübersetzungsprozeß der Anwendung bzw. des Programms.
Voraussetzungen
Textelemente wurden in der Orginalsprache gepflegt.
Vorgehensweise
So gehen Sie vor, um vom Einstiegbild der ABAP Workbench Textelemente eines Programms zu
übersetzen:
1. Wählen Sie den Menüpfad Hilfsmittel → Übersetzung → Kurz- und Langtexte.
Sie gelangen auf das Einstiegsbild der Übersetzung (SE63).
2. Wählen Sie den Menüpfad Übersetzung → Kurztexte → Programmtexte.
Es erscheint das folgende Bild:
3. Geben Sie den Programmnamen, zu dem die Textelemente gehören, sowie die Ausgangs-
und Zielsprache ein.
4. Wählen Sie die Funktion Bearbeiten.
Die Textelemente werden in der Sprache angezeigt, in der Sie erfaßt wurden.
Zur dieser Anzeige des Textpools können Sie auch aus der Textelementpflege mit
dem Menüpfad Springen → Übersetzung gelagen.
5. Übersetzen Sie die angezeigten Texte.
6. Sichern Sie Ihre Übersetzung.
Ergebnis
Sie haben Textpools zu Textelementen für unterschiedliche Sprachen angelegt.
Sobald Textpools für unterschiedliche Sprachen vorhanden sind, können Sie die
Ausgabesprache des Programms beeinflussen über:
• die Anmeldesprache: Standardmäßig verwendet das System die Anmeldesprache des
Benutzers.
• die Anweisung SET LANGUAGE: Mit dieser ABAP-Anweisung können Sie die
Ausgabesprache explizit und unabhängig von der Anmeldesprache festlegen.
Syntax
SET LANGUAGE < lg >.
Die Sprache <lg> kann ein Literal oder eine Variable sein.
Wenn eine bestimmte Sprache gewählt wurde (über die Anmeldesprache oder durch explizite
Angabe), sucht das System nur im Textpool der entsprechenden Sprache. Findet es dabei keine
Textsymbole in diesem Textpool, gibt es die im Programmquelltext angegebenen Texte auf dem
Ausgabebild aus oder überspringt die entsprechende WRITE-Anweisung.
Variantenpflege
Mit der Variantenpflege haben Sie die Möglichkeit, Eingabewerte bei Programmen aller
Programmtypen, außer denen von Typ S, die häufig mit identischen Abgrenzungen gestartet
werden, in Form von Varianten zu speichern.
Themenübersicht
Varianten in Übersicht [Seite 165]
Einstiegsbild [Seite 167]
Variantenübersicht anzeigen [Seite 168]
Varianten anlegen und pflegen [Seite 169]
Varianten anlegen [Seite 170]
Attribute von Varianten [Seite 173]
Varianten ändern [Seite 176]
Varianten löschen [Seite 177]
Varianten drucken [Seite 178]
Variable Werte in Varianten [Seite 179]
Variable für Datumsberechnung anlegen [Seite 180]
Benutzerspezifische Selektionsvariablen [Seite 182]
Benutzerspezifische Variablen anlegen [Seite 183]
Werte interaktiv ändern [Seite 184]
Werte vom Programm aus ändern [Seite 185]
Festwerte aus der Tabelle TVARV [Seite 186]
Tabellenvariable aus TVARV anlegen [Seite 187]
Einträge in der Tabelle TVARV ändern [Seite 189]
Programme mit Varianten ausführen [Seite 192]
Varianten in Übersicht
Verwendung
Wenn Sie ein Programm starten, zu dem Selektionsbilder definiert sind, werden Ihnen
Eingabefelder für datenbankspezifische und reportspezifische Selektionen angeboten. Um eine
bestimmte Datenmenge auszuwählen, sind entsprechende Werte einzugeben.
Weitere Informationen zu Selektionsbildern erhalten Sie im Handbuch zur ABAP-
Programmierung unter Selektionsbilder [Extern].
Wenn Sie in regelmäßigen Abständen dasselbe Programm mit identischen Abgrenzungen
starten, beispielweise um monatliche Umsatzstatistiken zu erstellen, möchten Sie vielleicht nicht
jedesmal die gleichen Werte für die Selektionskriterien eingeben. Für alle diese
Selektionskriterien können Sie die gewünschten Werte dann in einer Selektionsmenge, einer
sogenannten Variante, zusammenfassen.
Für jedes Programm mit Selektionsbildern können Sie beliebig viele unterschiedliche
Varianten anlegen. Diese Varianten sind dem Programm dann eindeutig zugeordnet.
Zudem bieten Ihnen Varianten die Möglichkeit, auf die Gestaltung des bereits vorhandenen
Selektionsbildes Einfluß zu nehmen, indem Sie Selektionskriterien komplett ausblenden. Das ist
unter anderem dann hilfreich, wenn Sie mit großen Selektionsbildern arbeiten, auf denen Sie
aber nur für bestimmte Felder Eingaben machen müssen.
Da sowohl Reports als auch Modulpools und Funktionsgruppen ein oder mehrere
Selektionsbilder besitzen können, bietet die Variantenpflege die Möglichkeit, eine Variante für
mehrere Selektionsbilder anzulegen.
Varianten sind also eine Schnittstelle zum Selektionsbild. Sie haben unterschiedliche Funktionen
im Online- und im Hintergrundbetrieb:
Varianten im Online-Betrieb
Im Online-Betrieb erleichtert das Starten eines Programms mit Varianten dem Benutzer die
Arbeit, da er nicht gezwungen ist, auf dem Selektionsbild immer wieder identische Werte
einzugeben. Außerdem lassen sich so Eingabefehler minimieren. Wenn Sie für jede Anwendung
eines ausführbaren Programms eine Variante mit den jeweils optimalen Werten anlegen, stellen
Sie auch sicher, daß die Ergebnisliste präziser und schneller erscheint. Denn genau abgegrenzte
Eingaben reduzieren die Laufzeit des Reports.
Varianten im Hintergrundbetrieb
Im Hintergrund bildet die Variante die einzige Möglichkeit, Werte für die Selektionen zu
übergeben. Daher müssen Reports, die im Hintergrund verarbeitet werden, über Varianten
gestartet werden (Ausnahme: SUBMIT... VIA JOB). Um nicht für jede Änderung der Werte eine
neue Variante anlegen zu müssen, bietet ABAP hier die Möglichkeit, Varianten mit variablen
Werten zu versorgen. Siehe auch Variable Werte in Varianten [Seite 179].
Um ganz sicherzugehen, daß ein ausführbares Programm immer über eine Variante gestartet
wird, können Sie in den Programmattributen festlegen, daß das Starten des Programms nur mit
Variante möglich ist.
Funktionsumfang
• Anlegen von Varianten
• Anzeigen, Ändern, Kopieren, Drucken und Löschen von Varianten
• Verwenden und Definieren von Variablen in Varianten
– Variable Datumsberechnung
– Benutzerspezifischer Festwerte
– Festwerten in der Tabelle TVARV
Einstiegsbild
Aufruf
Das Einstiegsbild für die Variantenpflege erreichen Sie von Einstiegsbild des ABAP Editors
(SE38). Geben Sie dort den Namen des Programms ein, markieren Sie Varianten unter
Teilobjekte und wählen Sie schließlich Anzeigen oder Ändern.
Funktionen
Folgende Funktionen stehen Ihnen im Einstiegsbild zur Verfügung:
• Anlegen von Varianten
• Anzeigen des Variantenkatalogs
• Anzeigen und Ändern von Werten und Attributen
• Kopieren, Löschen und Umbenennen von Varianten
Variantenübersicht anzeigen
Bevor Sie zu einem Programm eine neue Variante anlegen, sollten Sie nachprüfen, ob nicht
schon eine Variante existiert, die Sie verwenden oder eventuell abwandeln können.
Es kann zwischen 2 Anzeigen für Varianten gewählt werden:
• Klicken Sie dazu auf die F4-Taste des Feldes Variante im Einstiegsbild. Das folgende
Dialogfenster listet die vorhandenen Varianten auf:
Variante anlegen
Voraussetzungen
Für das betreffende Programm ( alle Programmtypen außer vom Typ S) sind ein oder auch
mehrere Selektionsbilder definiert.
Vorgehensweise
So legen Sie eine neue Variante an:
1. Geben Sie auf dem Einstiegsbild des ABAP-Editors den Namen des Programms an, zu dem
Sie eine Variante anlegen möchten, markieren Sie Varianten und wählen Sie Ändern.
2. Geben Sie auf dem Einstiegssbild für Variantenpflege [Seite 167] den Namen der
anzulegenden Variante ein.
Berücksichtigen Sie den (weiter unten) angegebenen Hinweis zu Namenskonvention von
Varianten.
3. Wählen Sie Anlegen.
Besitzt das Programm mehrere Selektionsbilder, erscheint ein Popup für die Bildzuordnung.
Dies entfällt dagegen, wenn das betreffende Programm nur ein Selektionsbild enthält. Sie
gelangen im zweiten Fall auf das Selektionsbild des Reports
4. Markieren Sie bei mehreren Selektionsbildern diejenigen, für die die neue Variante angelegt
werden soll.
Beispiel:
Wählen Sie Variante für alle Selektionsbilder, so gilt die Variante auch für diejenigen
Selektionsbilder, die erst nach dem Erstellen der Variante neu in das Programm
aufgenommen werden.
Ansonsten wird die Variante nur die Bilder mit Werten versorgen, die in der Liste
markiert sind.
5. Wählen Sie Weiter.
Sie gelangen auf das (erste) Selektionsbild des Reports.
Besitzt ihr Programm mehrere Selektionsbilder, so können Sie mit Hilfe der Blättertasten in
der linken oberen Ecke der Drucktastenleiste zwischen den einzelnen Selektionsbildern
navigieren und die Felder mit Werten versorgen. Blättern sie nur vorwärts, erscheint auf dem
letzten Selektionsbild die Taste Weiter.
6. Geben Sie die gewünschten Selektionswerte, einschließlich der Mehrfachselektion und freien
Abgrenzungen ein.
7. Wählen Sie Weiter.
Ergebnis
Sie erhalten dann ein Übersichtsbild (ABAP: Sichern von Variante...), auf dem Sie bestimmte
Attribute zu Ihrer Variante eingeben und die Variante sichern können. Siehe auch Attribute von
Varianten [Seite 173].
Beachten Sie beim Anlegen einer neuen Variante, daß Sie immer Werte und Attribute eingeben
müssen.
Namen von Varianten: Der Name kann aus bis zu 14 alphanumerischen Zeichen
bestehen. Das Zeichen " % " ist nicht zugelassen. Sollen jedoch Ihre Varianten
automatisch mit dem zugehörigen Programm transportiert werden, so müssen Sie
eine Systemvariante anlegen, deren Name mit " CUS& " bzw. mit " SAP& " (für
SAP-interne Systemvarianten) beginnen muß. Das Zeichen " & " ist nur im
Zusammenhang mit Systemvarianten und nur in diesem Präfix erlaubt, in allen
anderen Variantennamen dagegen verboten. Systemvarianten sind an den
Workbench Organizer angeschlossen und können in allen Mandanten angelegt
werden. Sie werden jedoch ausschließlich im Mandanten " 000 " abgelegt. Von allen
Mandanten kann auf sie zugegriffen werden.
Beispiel:
Beim Anlegen einer Variante können Sie auf dem Bild ABAP: Sichern Attribute der Variante...
folgende Attribute vergeben:
• Bedeutung
Geben Sie hier eine kurze, aussagekräftige Beschreibung der Variante ein. Die
Beschreibung kann bis zu 30 Zeichen lang sein.
• nur für Hintergrundverarbeitung
Markieren Sie dieses Feld, wenn die Variante nur in der Hintergrundverarbeitung, nicht
aber im Online-Betrieb verwendet werden soll.
• Variante schützen
Markieren Sie dieses Feld, wenn Sie Ihre Variante gegen Änderungen durch andere
Benutzer schützen möchten.
• Nur im Katalog anzeigen
Markieren Sie dieses Feld, wenn der Variantenname nur im Variantenkatalog angezeigt
werden soll, nicht jedoch in der F4-Werteliste.
• Systemvariante
Dieses Feld ist nicht eingabebereit und wird automatisch gesetzt, wenn eine
Systemvariante (beginnend mit CUS& bzw. SAP&) angelegt wurde.
Zu den Selektionen, die durch einer Variante versorgt werden, können Sie folgende weitere
Attribute vergeben:
• Typ
Das System zeigt hier an, ob es sich bei dem Feld um einen Parameter (P) oder ein
Selektionskriterium (S) handelt.
• Geschützt
Markieren Sie diese Spalte für jede Selektion, die auf dem Selektionsbild vor dem
Überschreiben geschützt werden soll. So gekennzeichnete Werte sieht der Benutzer
zwar, wenn er das Programm mit dieser Variante startet, sie sind aber nicht
eingabebereit.
• Unsichtbar
Markieren Sie diese Spalte, dann zeigt das System das entsprechende Feld auf dem
Selektionsbild des Programms nicht an.Sie haben mit dieser Option die Möglichkeit,
Selektionskriterien komplett auszublenden und damit auf das Aussehen des
Selektionsbildschirms Einfluß zu nehmen.
• Selektionsvariable
Markieren Sie diese Spalte, wenn Sie den Wert zu dieser Selektion erst zur Laufzeit
setzen wollen. Dazu haben Sie drei Möglichkeiten, die unter Variable Werte in Varianten
[Seite 179] ausführlich erläutert werden.
• Ohne Werte
Markieren Sie dieses Feld, wenn Sie bewirken möchten, das der Inhalt dieses speziellen
Feldes nicht in der Variante abgespeichert werden soll.
Das ist zum Beispiel dann von Vorteil, wenn der Inhalt dieses Feldes auf dem
Selektionsbild nicht überschrieben werden soll.
Beispiel: Sie legen für den Report ‘SAPTEST’, der den Parameter TEST hat, die
Variante ‘TESTVARIANTE’ an. Auf dem Attributebild der Variante ist bei dem Parameter
TEST das Kennzeichen ‘Ohne Werte’ gesetzt. Anschließend führen Sie das Programm
aus und füllen auf dem Selektionsbild des Feld TEST mit dem Wert ‘ABCD’. Holen Sie
jetzt vom Selektionsbild aus die Variante ‘TESTVARIANTE’, hat das Feld TEST noch
den Wert ABC. Es wird also insbesondere auch nicht mit SAPCE überschrieben.
• SPA/GPA
Dieses Attribut erscheint nur, wenn im Programm das entsprechende Selektionskriterium
mit ‘MEMORY ID xxx’ angelegt ist. Über die Variante können Sie das SPA/GPA Handling
ausschalten, d.h. Selektionskriterien, die auf dem Selektionsbild über SPA/GPA versorgt
werden, stehen nach dem Import einer Variante, die für diese Felder nur Initialwert
abgespeichert hat, ebenfalls auf Initialwert.
Weitere Funktionen
Sichern
Wenn Sie alle Parameter eingegeben haben, sichern Sie Ihre Einstellung. Wenn Sie eine neue
Variante anlegen, müssen Sie Angaben sowohl auf dem Werte- als auch dem Attributebild
machen. Sie können die Variante aber nur auf dem Attributebild sichern. Wenn Sie dagegen nur
Werte oder Attribute einer bereits vorhandenen Variante ändern möchten, sichern Sie die
Variante auf dem entsprechenden Bild.
Möchten Sie nachträglich die Bildzuordnung ändern, wählen Sie die Funktion Ändern
Bildzuordnung.
Selektionsvariablen definieren
Siehe dazu Variable Werte in Varianten [Seite 179].
Varianten ändern
Vorgehensweise
So ändern eine bestehende Variante:
1. Rufen Sie die betreffende Variante auf, wie unter Variante anlegen [Seite 170] beschrieben.
2. Markieren Sie Werte oder Attribute im Einstiegsbild [Seite 167] als Teilobjekte.
3. Wählen Sie Ändern.
Sie gelangen zur Pflegebild der Attribute [Seite 173] bzw. zum Selektionbild des Programms,
je nach Auswahl unter 2.
4. Sichern Sie anschließend die geänderten Werte oder Attribute auf dem entsprechenden Bild.
Varianten löschen
Vorgehensweise
So löschen Sie eine Variante:
1. Rufen Sie die betreffende Variante zum Programm auf, wie unter Variante anlegen [Seite
170] beschrieben.
2. Wählen Sie Varianten → Löschen im Einstiegsbild [Seite 167] für Variantenpflege.
Es wird das Popup ABAP: Varianten löschen angezeigt.
3. Wählen Sie, ob die Variante In allen Mandanten oder Nur im aktuellen Mandanten gelöscht
werden soll.
4. Bestätigen Sie Ihre Angaben.
Ergebnis
Das System gibt eine entsprechende Meldung in der Statuszeile aus.
Varianten drucken
Vorgehensweise
Um eine Variante auf zu drucken, geben Sie auf dem Varianten-Einstiegsbild den Namen der
Variante ein, wählen entweder die Attribute oder die Werte zur Anzeige aus (vom Bild ABAP:
Varianten Einstiegsbild oder vom Menü Varianten) und wählen Drucken. Beachten Sie bitte, daß
Sie die Werte nicht drucken können, wenn Sie sich im Änderungsmodus befinden.
Sie erhalten dann das Bild Bildschirmliste drucken.
Tragen Sie die für Ihre Abteilung relevanten Druckparameter ein, sofern die vom System
vorgeschlagenen Angaben nicht stimmen. Die entsprechenden Werte erfahren Sie bei Ihrem
Systemverwalter. Markieren Sie das Feld Sofort ausgeben.
Um die Variante zu drucken, wählen Sie Drucken.
Vorgehensweise
So ordnen Sie eine Variable für die Datumsberechnug zu einer bereits vorhandenen Variante zu:
1. Wählen Sie im Einstiegsbild für Variantenpflege die betreffende Variante aus.
2. Markieren Sie das Feld Attribute.
3. Wählen Sie Ändern.
Es erscheint das Attribute [Seite 173]-Bildschirm zur ausgewählten Variante.
4. Markieren Sie auf dem Attribute-Bildschirm für die gewünschten Felder die Spalte
Selektionsvariable.
5. Wählen Sie die Taste Selektionsvariablen.
Sie gelangen auf das Selektionsvariablenbild und können nun der Variante eine Variable für
das Datumsfeld zuordnen.
Beispiel:
6. Positionieren Sie den Cursor in der entsprechenden Zeile, für die die Ampel in der Spalte " D
" gelb anzeigt.
7. Schalten Sie die Ampel durch einmaliges Klicken auf grün um.
8. Scrollen Sie in der Anzeige nach rechts und wählen Sie die Eingabehilfe, um Vorschläge für
die Datumberechnung zu erhalten:
Ergebnis
Sie haben eine Variable für die Datumsberechnung einer Variante zugeordnet und gesichert.
Beachten Sie dabei, daß Sie nach der Auswahl der Selektionsvariablen nochmals im Attribute-
Bildschirm sichern müssen.
Mit der Taste Selektionsoptionen im Selektionsvariablenbild können Sie weitere Optionen für
Datumsvariablen auswählen.
Benutzerspezifische Selektionsvariablen
Verwendung
Benutzerspezifische Festwerte ermöglichen es, auch benutzerspezifische Eingabewerte mit einer
Variante abzudecken. Diese Werte werden für jeden berechtigten Benutzer in bestimmten
Tabellen gespeichert und beim Ausführen mit der entsprechenden Variante individuell abgerufen.
So können Sie es den Benutzern ersparen, immer gleichbleibende Werte wie z.B. die
Personalnummer oder den Buchungskreis bei jedem Aufruf des Programms erneut eingeben zu
müssen. Auf dem Selektionsbild sind dann nur noch die Felder auszufüllen, deren Werte sich
von Programmlauf zu Programmlauf ändern. So können mehrere Benutzer mit derselben
Variante arbeiten.
Voraussetzungen
Um eine Selektion benutzerspezifisch zu füllen, muß in den Stammsätzen der in Frage
kommenden Benutzer der entsprechende Benutzerparameter mit einer Parameterkennung <pid>
gesetzt sein.
Im ausführbaren Programm (Report) müssen Sie dann einen Parameter oder ein
Selektionskriterium anlegen, das den Zusatz...MEMORY ID <pid> mit der entsprechenden
Parameterkennung enthält (siehe Vorschlagswerte aus dem SAP-Memory verwenden [Extern]).
DATA: BUCHUNGSKREIS(6).
...
SELECT-OPTIONS: BK FOR BUCHUNGSKREIS MEMORY ID BUK.
...
Funktionsumfang
Benutzerwerte anlegen
Siehe hierzu Benutzerspezifische Variablen anlegen [Seite 183].
Benutzerwerte ändern
Die Werte vorhandener Benutzervariablen lassen sich auf zwei Arten ändern:
• mit Hilfe der Funktionsbausteine VARI_USER_VARS_* (siehe auch Werte vom Programm
aus ändern [Seite 185])
• durch den Benutzer vom Selektionsbild aus (siehe auch Werte interaktiv ändern [Seite 184]).
Vorgehensweise
So legen Sie eine benutzerspezifische Variable zu einer bereits vorhandenen Variante an:
1. Wählen Sie im Einstiegsbild für Variantenpflege die betreffende Variante aus.
2. Markieren Sie das Feld Attribute.
3. Wählen Sie Ändern.
Es erscheint das Attribute [Seite 173]-Bildschirm zur ausgewählten Variante.
4. Markieren Sie auf dem Attribute-Bildschirm für die gewünschten Felder die Spalte
Selektionsvariable.
5. Wählen Sie die Taste Selektionsvariablen.
Sie gelangen auf das Selektionsvariablenbild.
6. Positionieren Sie den Cursor in der entsprechenden Zeile, für die die Ampel in der Spalte " B
" gelb anzeigt.
7. Schalten Sie die Ampel durch einmaliges Klicken auf grün um.
8. Scrollen Sie in der Anzeige nach rechts und wählen Sie die Eingabehilfe, um
Vorschlagswerte aus dem Benutzerstammsatz zu erhalten.
9. Markieren Sie einen Eintrag und wählen Sie Auswählen.
10. Sichern Sie Ihre Angaben.
Sie kehren zum Attribute-Bildschirm zurück.
11. Sichern Sie die Attribute.
Voraussetzungen
Aktuell wird das Selektionsbild des Programms angezeigt.
Vorgehensweise
1. Wählen Sie dazu Springen → Benutzervariablen. Sie erhalten ein Dialogfenster mit den
benutzerspezifischen Selektionskriterien und Parametern. Von diesem Bild aus können Sie
sich die entsprechenden Werte anzeigen lassen oder auch ändern.
2. Wenn Sie Ändern wählen, erhalten Sie ein weiteres Dialogfenster, auf dem Sie entscheiden
können, ob Sie die Vorschlagswerte aus der Variablen oder Eingaben aus dem
Selektionsbild übernehmen wollen.
3. In beiden Fällen erhalten Sie ein zusätzliches Dialogfenster, auf dem Sie die gewünschten
Werte eingeben und sichern können.
Beachten Sie, daß sich diese Änderungen auf alle Varianten auswirken, die die
entsprechenden benutzerspezifischen Variablen verwenden.
Funktionsbaustein Funktion
VARI_USER_VARS_GET Lesen vorhandener Variablenwerte
VARI_USER_VARS_SET Ändern vorhandener Variablenwerte
VARI_USER_VARS_COPY Kopieren von Variablenwerten
VARI_USER_VARS_DELETE Löschen von Variablenwerten
VARI_USER_VARS_RENAME Umbenennen von Variablenwerten
VARI_USER_VARS_DIALOG Erfassen von Variablenwerten im Dialog
Beachten Sie, daß die Änderung eines Wertes in Tabelle TVARV sich auf alle
Varianten auswirkt, die diese Variable verwenden.
Funktionsumfang
• Neue Tabellenvariable aus der Tabelle TVARV anlegen.
Siehe Tabellenvariable aus TVARV anlegen [Seite 187]
• Vorhandene Einträge in der Tabelle TVARV ändern.
Siehe Einträge ändern [Seite 189]
Vorgehensweise
Um einer Selektionvariante eine Variable aus der Tabelle TVARV zuzuordnen, gehen Sie wie
folgt vor:
1. Wählen Sie im Einstiegsbild für Variantenpflege die betreffende Variante aus.
2. Markieren Sie das Feld Attribute.
3. Wählen Sie Ändern.
Es erscheint das Attribute [Seite 173]-Bildschirm zur ausgewählten Variante.
4. Markieren Sie auf dem Attribute-Bildschirm die Spalte Selektionsvariable.
5. Wählen Sie die Taste Selektionsvariablen.
Sie gelangen auf das Selektionsvariablenbild und können nun einen Eintrag aus der Tabelle
TVARV der gewählten Selektionsvariante zuordnen.
6. Wählen Sie die F4-Hilfe rechts neben dem Feld Name der Variablen. Sie können eine
Variable aus der angezeigten Liste auswählen. In diesem Fall setzen Sie die
Vorgehensweise mit Schritt 11 fort.
Um von dieser Liste aus die Werte einer Variablen anzuzeigen, markieren Sie die
Variable und wählen Sie Werte. Das System verzweigt dann in Tabelle TVARV und
zeigt die entsprechenden Werte.
7. Wenn Sie dagegen einen neue Variable anlegen möchten, geben Sie den Namen an und
wählen Sie Anlegen.
Sie verzweigen zur Pflege der Tabelle TVARV.
8. Geben Sie den Namen der Variablen ein und wählen Sie Anlegen.
Es erscheint ein Popup, in dem Sie Werte den Variantenvariablen zuordnen können.
Ergebnis
Sie haben mit der Vorgehensweise 1 - 13 eine neue Variable in der Tabelle TVARV angelegt,
ihre Werte gepflegt und die Variable einer Selektionsvariante zugewiesen. Die neue Variable
erscheint beim nächsten Aufruf der F4-Hilfe.
Beachten Sie, daß Änderungen der Werte in Tabelle TVARV sich auf alle Varianten
auswirken, die die zugehörigen Variablen verwenden.
Funktionen
Variablenwerte anzeigen
So zeigen Sie den Wert einer Variablen an:
• Wenn Sie den Namen der Variablen kennen, können Sie die Variable direkt aufrufen. Geben
Sie dazu den Namen und den Typ ein und wählen Sie dann Anzeigen.
• Wenn Sie eine Liste der bestehenden Variablen anzeigen möchten, wählen Sie Katalog.
Sie gelangen dann auf ein Selektionsbild, auf dem Sie angeben können, welche
Variablen aus der Menge der vorhandenen Variablen in einer Übersicht aufgelistet
werden sollen. Wenn Sie nichts angeben, listet das System alle vorhandenen Variablen
auf.
Wählen Sie nun Ausführen, um die Übersicht über die Variablen zu erhalten.
Wählen Sie die gewünschte Variable mit Doppelklick zur Anzeige aus.
Haben Sie einen Parameter gewählt, so erscheint ein Fenster, in dem der aktuelle Wert des
Parameters steht.
Haben Sie ein Selektionskriterium gewählt, so erscheinen die Selektionswerte auf einem neuen
Bild.
Variablenwerte ändern
So ändern Sie den Wert einer Variablen:
1. Wenn Sie Namen und Typ der Variablen kennen, können Sie die Variable direkt aufrufen.
Geben Sie dazu den Namen und den Typ ein und wählen Sie dann Ändern.
Um eine Übersicht über vorhandene Variablen zu erhalten, wählen Sie Katalog.
Sie gelangen dann auf ein Selektionsbild, auf dem Sie angeben können, welche
Variablen aus der Menge der vorhandenen Variablen in einer Übersicht aufgelistet
werden sollen. Wenn Sie nichts angeben, listet das System alle vorhandenen Variablen
auf.
Wählen Sie die gewünschte Variable mit Doppelklick aus.
Haben Sie einen Parameter gewählt, so erscheint ein Fenster, in dem der aktuelle Wert
des Parameters steht.
Haben Sie ein Selektionskriterium gewählt, so erscheinen die Selektionswerte auf einem
neuen Bild.
2. Ändern Sie die Werte durch Überschreiben entsprechend ab.
3. Sichern Sie die neuen Werte.
Die geänderten Werte stehen nun in Tabelle TVARV und werden zur Laufzeit des
Programms in die entsprechenden Selektionen gestellt.
Variablenwerte hinzufügen
Um direkt in der Tabelle eine neue Variable mit Werten anzulegen, geben Sie Namen und Typ
der Variablen an und wählen Anlegen.
Wollen Sie ein Selektionskriterium neu anlegen, so gelangen Sie auf ein Bild mit leeren
Eingabefeldern, auf dem Sie Unter- und Obergrenzen, Operatoren und Ein-/Ausschlußkriterien
eingeben können.
Wollen Sie einen Parameter anlegen, so erscheint ein Fenster, in dem Sie den Parameterwert
eingeben können.
Sichern Sie Ihre neue Variable.
Vergessen Sie nicht, diesen neuen Variablennamen auch in der Variante einzutragen, in der Sie
diese Variable verwenden wollen.
Variablenwerte kopieren
Um eine Variable zu kopieren, geben Sie Namen und Typ der Ausgangsvariablen ein und
wählen Sie Kopieren.
Sie erhalten ein Fenster, in dem Sie den Namen der Kopie angeben können. Durch Ausführen
der Funktion Kopieren sichern Sie diese neue Variable.
Sie können die neue Variable jetzt beliebig verändern. Vergessen Sie jedoch nicht, diesen neuen
Variablennamen auch in der Variante einzutragen, in der Sie diese Variable verwenden wollen.
Das Kopieren von Variablen ist auch aus der Kataloganzeige möglich.
Variablen löschen
Um eine Variable zu löschen, geben Sie Namen und Typ der Variablen ein und wählen Löschen.
Sie erhalten ein Dialogfenster, in dem Sie Ihre Entscheidung bestätigen oder widerrufen können.
Das Löschen von Variablen ist auch aus der Kataloganzeige möglich.
Vorgehensweise
Um ein Programm mit Variante auszuführen, gehen Sie wie folgt vor:
1. Geben Sie auf dem Einstiegsbild des ABAP-Editors den Namen des auszuführenden
Programms ein.
2. Wählen Sie die Drucktaste Ausf.m.Variante.
Es erscheint ein Dialogfenster, in dem Sie die Variante eingeben können.
Nachrichtenpflege
Nachrichten werden für die Kommunikation des ABAP-Programms mit dem Benutzer eingesetzt
und finden ihre hauptsächliche Verwendung bei fehlerhaften Benutzereingaben am Bildschirm.
Um Nachrichten versenden zu können, muß das betreffende ABAP-Programm mit einer
Nachrichtenklasse verknüpft werden. Eine Nachrichtenklasse ist durch eine Nachrichten-ID
gekennzeichnet und enthält meist mehrere Nachrichten. Diese werden jeweils durch eine
Stringzeile definiert und können ferner Platzhalter enthalten.
Alle Nachrichten werden in der Tabelle T100 abgelegt und können mit der Transaktion SE91
angelegt und bearbeitet werden. Die angelegten Nachrichten können dann von der MESSAGE-
Anweisung verwendet werden.
Weitere Informationen zum Nachrichtenkonzept erhalten Sie im ABAP-Handbuch unter
Nachrichten [Extern].
Wenn Sie im ABAP Editor Springen → Nachrichten wählen, ohne daß in Ihrem
Programm eine Nachrichtenklasse angegeben wurde, geht das System davon aus,
daß Sie eine bestehende Nachrichtenklasse durchsuchen möchten und fordert Sie
auf, eine Nachrichten-ID einzugeben.
Siehe auch
Nachrichtenklasse anlegen [Seite 194]
Nachrichten hinzufügen [Seite 195]
Langtexte zu Nachrichten erfassen [Seite 196]
IMG-Aktiviät einer Nachricht zuordnen [Seite 197]
Nachrichtenklasse anlegen
Vorgehensweise
So legen Sie aus dem ABAP Editor heraus eine neue Nachrichtenklasse an:
1. Geben Sie hinter einer das Proramm einleitenden Anweisung (z.B. REPORT) oder in direkt
in der Anweisung MESSAGE ID <id> einen bis zu 20 stelligen Parameterwert als Message-
ID ein, z.B.:
REPORT <Name> MESSAGE-ID <Nachrichtenklasse>.
Nachrichten sind systemweit gültig. Die gewählte Message-ID (Name der
Nachrichtenklasse) darf daher noch nicht im System vorhanden sein.
2. Wählen Sie die Message-ID mit Doppelklick aus.
Wenn Sie eine im System bereits vorhandene ID angegeben haben, öffnet das System
lediglich das Dialogfenster Nachrichtenklasse pflegen. Ist dies der Fall, geben Sie
einfach eine andere ID an. Haben Sie eine im System neue ID angegeben, werden Sie
in einem Dialogfenster gefragt, ob Sie eine neue Klasse anlegen möchten.
3. Wählen Sie Ja.
Das System verzweigt zum Bild Nachrichtenklasse pflegen.
4. Geben Sie in Kurztext eine kurze Beschreibung der Nachrichtenklasse ein.
5. Wählen Sie Sichern.
Ergebnis
Wenn Sie die Drucktaste Nachrichten wählen, können Sie Ihrer Klasse Nachrichten hinzufügen.
Wenn Sie eine Nachrichten-ID im Coding mit Doppelklick auswählen, können Sie jederzeit zum
Bild Nachrichtenklasse pflegen zurückkehren.
Siehe auch Nachrichten hinzufügen [Seite 195].
Nachrichten hinzufügen
Voraussetzungen
Im ABAP-Programm wurde eine gültige Nachrichtenklasse angegeben.
Vorgehensweise
So fügen Sie vom ABAP Editor aus einer Nachrichtenklasse neue Nachrichten hinzu:
1. Wählen Sie den Menüpfad Springen → Nachrichten.
Die Liste aller Nachrichten der betreffenden Nachrichtenklasse wird angezeigt.
2. Markieren Sie die nächste freie Nachrichtennummer.
3. Wählen Sie Einzelpflege.
Die ensprechende Zeile ist eingebebereit.
4. Geben Sie den Nachrichtentext (Kurztext) ein.
Sie können auch mit der Vorwärtsnavigation eine neue Nachricht der gewählten
Klasse hinzufügen. Geben Sie hierzu in der MESSAGE-Anweisung eine Nummer für
die neue Nachricht ein und machen Sie einen Doppelkick auf diese. Als Nummer der
neuen Nachricht geben Sie am besten die nächste freie Nummer an. Falls Sie
jedoch die nächste freie Nummer nicht kennen, geben Sie irgendeine an, da Sie sie
im Anschluß wieder korrigieren können.
Ergebnis
Die definierte Nachricht kann im ABAP-Programm z.B. mit der MESSAGE-Anweisung gesendet
werden.
Voraussetzungen
Ein Kurztext zur betreffenden Nachricht wurde bereits angelegt. Die Nachricht ist nicht als
selbsterklärend gekennzeichnet.
Vorgehensweise
So erfassen Sie in der SE91 einen Langtext zu einer existierenden Nachricht:
1. Positionieren Sie den Cursor auf die betreffende Nachricht.
2. Wählen Sie Einzelpflege.
Der zugehörige Kurztext erscheint farbig hervorgehoben.
3. Wählen Sie Langtext.
Der SAPScript Editor wird gestartet.
4. Erfassen Sie einen Langtext.
5. Führen Sie eine Prüfung im SAPScript Editor durch.
6. Sichern Sie Ihre Einträge.
Ergebnis
Sobald eine Nachricht ausgelöst wird, zu der ein Langtext erfaßt wurde, wird dies durch ein
"gelbes Fragezeichen" signalisiert.
Abhängig von den Einstellungen des SAPGUI wird es angezeigt:
• in der Statuszeile (am Ende des Bereichs, in dem die Nachricht erscheint),
• im Nachrichten-Popup (auf der Drucktaste mit der Beschriftung "Hilfe").
Durch Anklicken der Nachrichtenzeile bzw. der Drucktaste "Hilfe" wird der Langtext angezeigt.
Voraussetzungen
§ Ein Kurztext zur betreffenden Nachricht wurde bereits angelegt.
§ Die anzugebenden IMG-Aktivitäten kommen im Einführungsleitfaden vor.
Vorgehensweise
So gehen Sie in der SE91 vor, um eine IMG-Aktivität zuzuordnen:
1. Positionieren Sie den Cursor auf die betreffende Nachricht innerhalb der Liste.
2. Wählen Sie Einzelpflege.
Der zugehörige Kurztext erscheint farbig hervorgehoben.
3. Wählen Sie den Menüpfad Springen → Zusatzinformationen.
Das Popup Zuordnung Zusatzinformationen zu… erscheint.
4. Wählen Sie über die F4-Taste die Aktivität aus.
5. Sichern Sie die Zuordnung.
In der Statusleiste wird eine bestätigende Meldung ausgegeben.
Ergebnis
Zu einer Nachrichtennummer haben Sie eine oder mehrere IMG-Aktivitäten zugeordnet. Wird die
betreffende Nachricht ausgelöst, so kann direkt in den Einführungsleitfaden verzweigt werden,
um anschließend die zugeordneten IMG-Aktivitäten auszuführen.
Klicken Sie hierfür, nach dem Auslösen der Nachricht, die Nachrichtenzeile an und wählen Sie im
angezeigten Hilfe-Fenster die Drucktaste Einträge pflegen ("Bleistift-Ikone"). Im ausgegebenen
Popup Customizing Projekt auswählen klicken Sie die Drucktaste Ohne Projektangabe weiter an,
um zur Struktur im Einführungsleitfaden zu verzweigen.
Splitscreen-Editor
Mit dem Splitscreem-Editor können Sie Quelltexte zweier Programme nebeneinander anzeigen.
Darüber hinaus können Sie Programme in zwei verschiedenen SAP-Systemen vergleichen. Der
Splitscreen-Editor enthält einen Teil der Standardfunktionalität des Editors. Darüber hinaus
verfügt er über spezielle Splitscreen-Funktionen.
Themenübesicht
Verwendung und Funktionen in Übersicht [Seite 199]
Den Splitscreen-Editor starten [Seite 200]
Einstiegsbild der SE39 [Seite 201]
Spezielle Splitscreen-Funktionen [Seite 202]
Editor-Funktionen [Seite 204]
Die alte Version des Splitscreen-Editors ist noch unter dem Transaktionscode TSE39
verfügbar.
Voraussetzungen
Wenn Sie Programme zwischen verschiedenen Systemen vergleichen möchten, dann können
Sie nur Systeme angeben, die in der Tabelle RFCDES eingetragen sind.
Funktionsumfang
• Realisierung des Vergleichs von Quelltexten innerhalb eines Systems und auch über
Systemgrenzen hinweg.
• Beim Vergleich erfolgt die Synchronisierung der Quellen nicht mehr auf Zeilenebene,
sondern auf Anweisungsebene.
• In jedem Teil-Fenster verbirgt sich ein vollwertiger ABAP-Editor mit eingeschränkten
Funktionen.
• Die Editor-Funktionen werden um Möglichkeiten des Vergleichs, der Positionierung, und der
Übernahme von speziell markierten Blöcken in die jeweilige andere Seite erweitert.
• Der Editor kann durch die Funktion Einstellungen parameterisiert werden. (Editorsicht und
Vergleichsalgorithmen)
• Die Fenstergrößen können zwischen ‘schmal’ und ‘breit’ gewählt werden.
Navigation
Eine Vorwärtsnavigation aus dem Splitscreen-Editor ist möglich und führt immer in die
Fullscreendarstellung des neuen Objektes.
Besonderheiten
Mit dem Transaktionscode SE39 aufrufen
Sie haben die Möglichkeit, beliebige Quelltexte anzeigen oder ändern zu lassen. Beide Quellen
können parallel angezeigt, geändert, verglichen und gesichert werden. Es kann auf Quellen
eines Systems oder für eine "remote" Quelle erfolgen. Für die remote gelesene Quelle können
die Funktionen Ändern und Sichern nicht eingesetzt werden. Die Navigation im Remotesystem
wird auch nicht unterstützt.
Sie können im Feld RFC-Destination nur Systeme angeben, die in der Tabelle
RFCDES eingetragen sind.
Spezielle Splitscreen-Funktionen
Der Splitscreen-Editor unterstützt die folgenden speziellen Funktionen. Einige dieser Funktionen
sind nur bei bestimmten Aufrufen (siehe auch Den Splitscreen-Editor aufrufen [Seite 200])
aktiviert.
Vergleichen
Es wird ein Vergleich beider Quellen durchgeführt. Dabei wird der Vergleich nicht wie bisher auf
Zeilenebene, sondern auf der Statementebene durchgeführt. Durch ‘Einstellungen‘ ist es möglich
Kommentarzeilen oder/und Einrückungen beim Vergleich auszublenden.
Das Ergebnis des Vergleichs wird in den Editorfenstern durch die Farbe ‚intensiv‘
gekennzeichnet. Eingefügte Zeilen werden auf der entsprechenden anderen Seite durch
eingefügte Leerzeile kenntlich gemacht. Im Vergleichermodus werden beide Editorfenster,
unabhängig von der Cursorposition, durch die Blättertasten synchron geblättert. Ein asynchrones
Blättern ist durch die Scrollbar und die ‚Bild hoch‘ und ‚Bild runter‘ Tasten möglich.
Vergleichsmodus aus
Diese Funktion entfernt die Leerzeilen, die durch den Vergleich in die Quellen eingefügt wurden
und die Kennzeichnung der Differenzen. Gleichzeitig wird der synchrone Blättermodus wieder
aufgehoben. Die Blättertasten sind wieder cursorabhängig.
Nächste Gleichheit
Die Quellen der beiden Fenster werden auf die nächste Gleichheit positioniert.
Vorige Gleichheit
Die Quellen der beiden Fenster werden auf die vorige Gleichheit positioniert.
Nächste Differenz
Die Quellen der beiden Fenster werden auf die nächste Differenz positioniert.
Vorige Differenz
Die Quellen der beiden Fenster werden auf die vorige Differenz positioniert.
Ausgangspunkt für die obigen Positionierfunktionen ist immer die aktuelle Seite. Man kann damit
durch Blättern mehrere Differenzstellen überspringen.
Sie können mit dieser Taste oder über den Menüpfad Einstellungen → Bild schmal< -
>breit zwischen einem schmalen und breiten Bildschirm umschalten. Standardmäßig ist beim
Einstieg über SE39 der breite Bildschirm eingestellt. Beim Aufruf aus der SE38 ‘Vergleich
Zwischenspeicher’ ist der schmale Schirm voreingestellt.
Beispiel:
Editor-Funktionen
Bei einigen im Funktionsumfang des ABAP Editors enthalten Funktionen ist deren besondere
Bedeutung im Splittscreen-Editor zu berücksichtigen.
Umschalten Anzeigen/Ändern
Diese Funktion reagiert auf Cursorposition (Seitenauswahl). Beim Aufruf aus dem
Modifikationaassistenten darf nur die neue SAP-Quelle auf Änderbar geschaltet werden.
Die remote gelesene Quelle kann ebenfalls nicht in den Änderungsmodus geschaltet werden.
Anderes Programm
Bei Remote-Aufrufen und bei Aufruf aus dem Modifikationsassistenten ist diese Funktion nicht
ausführbar.
Sichern
Es wird die aktuell bearbeite Quelle gesichert.
War der Vergleichsmodus aktiv, so werden vor dem Sichern die durch den Vergleich eingefügten
Leerzeilen wieder entfernt.
Die remote gelesenen Quellen können nicht gesichert werden.
Ausführen
Bei Aufruf aus dem Modifikationsassistenten nicht möglich. Eine remote gelesene Quelle ist
ebenfalls nicht ausführbar.
Version ziehen
Bei Aufruf aus Modifikationsassistenten ist diese Funktion nicht ausführbar.
Class Builder
Der Class Builder ist ein Werkzeug der ABAP Workbench, mit dem globale ABAP-Klassen und -
Interfaces angelegt, definiert und getestet werden können.
Themenübersicht:
Class Builder: Einführung [Seite 206]
Übersicht über vorhandene Objekttypen [Seite 214]
Pflege von Objekttypen [Seite 217]
Definieren von Komponenten [Seite 225]
Beziehungen zw. Objekttypen definieren [Seite 241]
Testumgebung [Seite 253]
Klassen können sowohl lokal als auch global definiert werden. Die lokale Definition
erfolgt in Programmen, Funktionsgruppen oder als Hilfsklassen von globalen
Klassen der Class-Pools. Lokale Klassen sind nur innerhalb des definierenden
Moduls sichtbar.
Integration
Der Class Builder ist als zentrales Werkzeug in die ABAP Workbench integriert. Mit Hilfe des
Class Browsers können vohandene globale Objekttypen aus der R/3-Klassenbibliothek zur
Anzeige gebracht und in die Pflege verzweigt werden. Die folgende Abbildung zeigt die
Architektur des Class Builders und das Zusammenspiel der Komponenten untereinander mit
Einbeziehung des Class Browsers.
Über den Menüpfad Entwicklungà Class Builder oder mit dem Transaktionscode SE24 wird das
Einstiegsbild [Seite 218] des Class Builders errreicht. Von hier aus ist es möglich, entweder den
Bestand der R/3-Klassenbibliothek zu sichten, oder direkt zur Pflege der Grunddaten der
Objekttypen und zum Class Editor zu verzweigen, in dem eine Definition der Objekttypen und
ihrer Komponenten vorgenommen werden kann. Der Definition der Objekttypen kann sich die
Methodenimplementierung im ABAP Editor direkt anschließen. Weiterhin ist es möglich, vom
Einstiegsbild oder vom Class Editor aus, auf die Testumgebung zuzugreifen.
Direkte Navigation
Datenfluß
Class Editor
SE24
Einstiegsbild
ABAP Editor
Klassenbibliothek
Testumgebung
Funktionsumfang
Den Class Builder rufen Sie auf um,
• sich mit Hilfe des Class Browsers Überblick über vorhandene globale Objekttypen und deren
Beziehungen untereinander zu verschaffen.
• zur Pflege der vorhandenen globalen Klassen oder Interfaces zu verzweigen.
• neue Klassen oder Interfaces anzulegen.
• Vererbung globaler Klassen zu realisieren.
• Interface-Kompositionen anzulegen.
• Attribute, Methoden und Ereignisse zu Klassen oder Interfaces anzulegen und zu
spezifizieren.
• klasseninterne Typen zu definieren.
• Methoden zu implementieren.
• Methoden zu redefinieren.
Einschränkungen
Definieren von Objekttypen auf der Grundlage einer grafischen Objektmodellierung ist derzeit
nicht möglich.
Namenskonventionen
Die im folgenden formulierten Namenskonventionen sind recht allgemein gahalten, so daß eine
Beinträchtigung der individuellen Namensgebung von Entwicklungsobjekten vermieden wird.
Allgemeine Bemerkungen
Bei Wahl der Bezeichner von Entwicklungsobjekten sind folgende Grundsätze einzuhalten:
• Grundsätzlich soll die englische Sprache zur Bezeichnung von Objekten verwendet werden.
Beispiel: DISPLAY statt ANZEIGEN, CHANGE statt ÄNDERN, MARK statt
KENNZEICHEN
§ Wenn vorhanden, sollen Glossarbegriffe verwendet werden.
Beispiel: CL_COMPANY_CODE statt BUKRS
§ Bei zusammengesetzten Bezeichnern ist der Unterstrich ( _ ) als Trennzeichen zu wählen.
Da die Groß-/Kleinschreibung nicht unterstützt wird, ist nur der Unterstrich das einzig freie
Zeichen zur Trennung.
Beispiel: CL_COMPANY_CODE, CL_GENERAL_LEDGER_ACCOUNT
§ Bezeichnungen sollen inhaltlich beschreiben, um was es sich handelt und nicht wie es
implementiert ist.
Konkrete Methodenbezeichnungen
Prüfmethoden CHECK_<objective>
CHECK_AUTHORIZATION, CHECK_PROCESS_DATE
Methodenlokale Konventionen
Für Parameter
Die Parameter werden aus der Sicht der sie implementierenden Methode betrachtet:
Die Verwendung von Präfixen ist NICHT zwingend vorgeschrieben. Sollten allerdings
Präfix ebenutzt werden, dann sind die oben beschriebenen Präfixe zu verwenden.
Für Exceptions
Im folgenden ist eine Tabelle von sinnvollen EXCEPTIONs angegeben, die auch generisch
angewendet werden können. (Beispiel: ...NOT_FOUND könnte zu DATE_NOT_FOUND werden)
EXCEPTION Bedeutung
ACTION_NOT_SUPPORTED Die angeforderte Aktion bzw. der angeforderte OK-Code wird
nicht unterstützt.
CANCELLED Sollte in einer Methode anhand eines Dialoges erst ermittelt
werden, was zu tun ist (Beispiel: Auswahlliste) und der Benutzer
wählt "Abbrechen", kann diese EXCEPTION gesetzt werden
EXISTING Ein neu anzulegendes Objekt existiert auf der Datenbank schon.
FAILED Die Methode konnte ihre Aufgabe aufgrund der aktuellen
Umfeldsituation nicht ausführen. Diese Exception ist
insbesondere für solche Fälle gedacht, in denen sich das
Umfeld temporär in einer Konstellation befindet, die das
Ausführen der Methodenaufgabe unmöglich macht.
..._FAILED Ein Teilfunktion der Methode konnte nicht aufgrund der
aktuellen Umfeldsituation ausgeführt werden. (OPEN_FAILED,
CLOSE_FAILED, SELECTION_FAILED,
AUTHORIZATION_FAILED)
FOREIGN_LOCK Daten sind durch anderen Benutzer gesperrt.
INCONSISTENT Objektdaten auf der Datenbank sind inkonsistent.
EXCEPTION Bedeutung
..._INCONSISTENT Die Teilobjektdaten ... eines Objektes auf der Datenbank sind
inkonsistent.
INVALID Die eingegebenen Objektdaten sind nicht korrekt. (z.B.
Buchungskreis nicht vorhanden) (im Gegensatz zu
NOT_QUALIFIED)
..._INVALID Die eingegebenen Teilobjekdaten eines Objektes sind nicht
korrekt. (im Gegensatz zu NOT_QUALIFIED)
INTERNAL_ERROR Der letzte Ausweg. Wenn der Fehler nicht weiter eingegrenzt
werden kann, dann erst soll diese EXCEPTION verwendet
werden.
NOT_AUTHORIZED Der Benutzer ist nicht zur Aktion berechtigt.
NOT_CUSTOMIZED Das angeforderte Objekt ist nicht korrekt customized.
..._NOT_CUSTOMIZED Das Teilobjekt ... des angeforderten Objektes ist nicht korrekt
customized.
NOT_FOUND Das verlangte Objekt ist nicht gefunden worden.
..._NOT_FOUND Das Teilobjekt ... des verlangten Objektes ist nicht gefunden
worden.
NOT_QUALIFIED Die Kombination der Eingabeparameter reicht nicht aus, um die
Funktion der Methode auszuführen. (im Gegensatz zu INVALID)
..._NOT_QUALIFIED Ein bestimmter Parameter der Methode ist nicht qualifiziert.
NUMBER_ERROR Fehler bei der Nummernvergabe
SYSTEM_ERROR Sollte aus dem Basissystem ein Fehlercode gemeldet werden,
der nicht erwartet wird, dann kann diese EXCEPTION gesetzt
werden.
Aktivitäten
Um sich einen Überblick über den Bestand vorhandener Objekttypen der Klassenbibliothek zu
verschaffen, setzen Sie am besten den Class Browser [Seite 215] ein.
Sie haben auch weiterhin die Möglichkeit, das Repository-Infosystem zu nutzen. Wählen Sie
dazu den Menüpfad Übersichtà Infosystem aus der ABAP Workbench. Mit der weiteren Auswahl
ABAP Objects können Sie zur Klassenbibliothek oder zu Teilobjekten der Klassenbibliothek
verzweigen.
Class Browser
Einsatzmöglichkeiten
Das Werkzeug Class Browser dient zur Navigation in der R/3-Klassenbibliothek, in der globale
ABAP-Klassen und -Interfaces oder Business-Objekttypen abgelegt sind.
Sie rufen den Class Browser auf,
• um sich einen Überblick über den Bestand vorhandener Klassen und Interfaces oder
Business-Objekttypen zu veschaffen.
• um die Beziehungen der Objekttypen untereinander zu analysieren.
• um aus dieser Übersicht heraus zur Pflege einzelner Objekttypen zu gelangen.
Integration
Der Class Browser ist im Class Builder [Seite 206] intergriert und wird dort über die Funktion
Class Browser oder mit der Transaktion CLABAP aufgerufen.
Funktionsumfang
Anzeige
Für die Anzeige der Klassen und Interfaces können zusätzlich zu bereits vorkonfigurierten
Sichten unterschiedliche Filter berücksichtigt werden:
• Alle Klassen
Sicht auf alle Klassen und Interfaces der R/3-Klassenbibliothek, bezogen auf die
Komponentenhierarchie.
• Business-Objekte
Anzeige von betriebswirtschaftlichen Objekttypen der R/3-Klassenbibliothek.
• Andere Einstellungen
Die Anzeige kann mit zusätzlichen Filterkriterien eingeschränkt werden. Es wird zwischen 3
Kriterien unterschieden:
1. Filter Objekttypen
Die angezeigten Objekttypen werden nach Art, Status und Transporteigenschaften selektiert.
2. Filter Beziehungen
Mit diesem Filter wird nach Beziehungen zwischen Objekttypen selektiert.
3. Sonstige Filter
Sie bestimmen mit diesem Filter, ob die Selektion der Objekttypen gemäß der
Komponentenhierarchie erfolgen soll oder nicht.
Pflege
Aus der Anzeige kann direkt zur Pflege der Objekttypen verzweigt werden. Markieren Sie hierzu
den entsprechenden Objekttyp. Mit einem Doppelklick gelangen Sie zum Class Editor des Class
Builders. Im Änderungsmodus steht Ihnen also die Arbeitsumgebung für die Pflege von
Objekttypen zur Verfügung.
Einschränkungen
Das Anlegen neuer Objekttypen ist aus dem Class Browser nicht möglich.
Objekttypen anlegen
Funktionsumfang
Beim Alegen von Klassen und Interfaces werden lediglich Grunddaten festgelegt. Daraus
resultiert ein Tabelleneintrag für den betreffenden Objekttyp im ABAP Dictionary. Der Festlegung
von Grunddaten kann sich eine detaillierte Bearbeitung von Objekttypkomponenten anschließen.
Das System verzweigt im Anschluß an die Grunddatenpflege zum Class Editor [Seite 227].
Aktivitäten
Den Class Builder rufen Sie aus der ABAP Workbench über Entwicklung → Class Builder oder
mit dem Transaktionscode SE24 auf.
• Um in die Pflege eines bestehenden Objekttyps zu verzweigen, geben Sie den Namen des
Objekttyps ein und wählen Sie Anzeigen oder Ändern.
• Um eine neue Klasse anzulegen, befolgen Sie die unter Neue Klassen anlegen [Seite 220]
beschriebene Vorgehensweise.
• Wie Sie Interfaces anlegen möchten, erfahren Sie unter Neue Interfaces anlegen [Seite 223].
Einstiegsbild
Vorgehensweise
1. Verzweigen Sie in die ABAP Workbench.
2. Starten Sie den Class Builder mit der Transaktion SE24 oder über den Menüpfad
Entwicklung→ Class Builder.
Das Einstiegsbild des Class Builders wird angezeigt:
3. Geben Sie den Namen des Objekttyps ein, den Sie anzeigen, ändern, anlegen oder testen
möchten.
Maximal können 30 Zeichen vergeben werden.
4. Wählen Sie den Objekttyp aus:
Klasse Definition und Implementierung von globalen Klassen und der zugehörigen
Komponenten: Attribute, Methoden, Ereignisse und der klasseninternen
Datentypen. Die Klassendefinition kann weiterhin durch Interfaces ergänzt
werden. In diesem Fall muß die Klasse alle Methoden implementieren, die
im Interface deklariert sind.
Interface Von Klassen unabhängige Definition von Interfaces, die eine Schnittstelle
zu einem Objekt beschreiben. Wie bei der Klassendefinition können sie die
Komponenten Attribute, Methoden und Ereignisse beinhalten, ohne sie
jedoch zu implementieren. Ein Interface kann erst verwendet werden,
nachdem es von einer Klasse implementiert wurde.
Weitere Funktionen
• Über die Funktion Class Library wird der Class Browser [Seite 215] gestartet, mit dem Sie
den Bestand der R/3-Klassenbibliothek sichten können.
• Mit der Funktion Prüfen können Sie eine Prüfung auf Syntax-Fehler veranlassen.
Voraussetzungen
Bei der Namensvergabe orientieren Sie sich an der SAP-Namenskonvention für globale ABAP-
Klassen.
Vorgehensweise
So legen Sie vom Einstiegsbild des Class Builders eine vollständig neue Klasse an:
1. Geben Sie unter Objekttypname den Namen der neuen Klasse entsprechend der
Namenskonvention ein.
2. Wählen Sie den Objekttyp Klasse.
3. Wählen Sie Anlegen.
Das Dialogfenster Anlegen Klasse … mit dem Namen der Klasse wird angezeigt
4. Für die Definition der Grunddaten stehen Ihnen folgende Angaben zur Verfügung:
- Klasse
Name der neuen Klasse.
- Beschreibung
Ein Kurztext als Beschreibung der anzulegenden Klasse.
- Instanziierung
Jede Klasse ist standardmäßig mit dem Option Public gekennzeichnet. Dies bedeutet,
daß jeder Verwender Instanzen der jeweiligen Klasse (mit CREATE OBJECT) erzeugen
kann. Mit der Option Protected legen Sie fest, daß nur geerbte Klassen oder die
betreffende Klasse selbst Instanzen dieser Klasse erzeugen können. Wählen Sie
dagegen die Option Private, dann kann nur die betreffende Klasse selbst (nur über
eigene Methode) ihre Instanzen erzegen.
Sie können mit diesen Optionen weitere Einschränkungen bezüglich der
Instanzerzeugung vornehmen. Somit können beispielsweise Voraussetzungen für die
Verwaltung persistenter Objekte geschaffen werden, bei der die Eindeutigkeit von
Objekten gewährleistet sein muß.
- Vererbung
Mit der Option Abstrakt definieren Sie eine abstrakte Klasse. Zu dieser Klasse kann
keine Instanz erzeugt werden. Eine abstrakte Klasse kann als Vorlage für ihre
Unterklassen verwendet werden. Der Zugriff auf diese Klasse kann nur über ihre
statischen Attribute oder über ihre Unterklassen erfolgen.
Mit der Option Final definieren Sie eine finale Klasse. Diese Klasse bildet den Abschluß
in der Vererbungshierarchie, da eine finale Klasse keine weiteren Unterklassen bilden
darf.
Falls eine abstakte Klasse zugleich auch als final definiert wird. Dies ist dann sinnvoll,
wenn nur auf die statischen Komponenten dieser Klasse zugegriffen werden soll.
- Persistent
- Nur Modelliert
Falls Sie dieses Ankreuzfeld markieren, wird die Unterklasse nicht im Class-Pool
aufgenommen. Auf diese Klasse kann zur Laufzeit weder zugegriffen noch kann sie
getestet werden.
Künftig soll mit dieser Kennzeichnung ein Entwurf von Klassen aus einem grafischen
Modell, ohne Implementierung, ermöglicht werden.
- Ikone Vererbung anlegen
Nach dem Anklicken dieser Ikone wird zusätzlich die Option Erbt von eingeblendet. Hier
kann der Name der Oberklasse angegeben werden.
Eine beliebige, nicht-finale Klasse aus der Klassenbibliothek wird dann als direkte
Oberklasse für die anzulegende Klasse zugegeordnet.
5. Wählen Sie Sichern.
Das Dialogfenster Objektkatalogeintrag anlegen wird angezeigt.
6. Tragen Sie die Entwicklungsklasse ein.
7. Wählen Sie Sichern.
Sie gelangen zu Methodenanzeige des Class Editors [Seite 227]. Von dort aus können
Sie die Komponenten der Klasse definieren und Interfaces in die Klassendefinition
aufnehmen.
Ergebnis
Sie haben eine neue Klasse angelegt und ihre Grunddaten festgelegt. Für die neue Klasse
wurde ein Class-Pool generiert, sofern die Option Nur Modelliert nicht aktiviert wurde.
Voraussetzungen
Bei der Namensvergabe orientieren Sie sich an der Namenskonvention für globale ABAP-
Interfaces.
Vorgehensweise
So legen Sie vom Einstiegsbild des Class Builders ein neues Interface an:
1. Geben Sie den Namen des Interfaces gemäß der Namenskonvention ein.
2. Wählen Sie den Objekttyp Interface.
3. Wählen Sie Anlegen.
Das Dialogfenster Interface anlegen wird angezeigt.
Ergebnis
Sie haben eine neues Interface angelegt und seine Grunddaten im ABAP Dictionary
festgeschrieben. Für dieses Interface wird ein Interface-Pool generiert, sofern das Interface nicht
als Nur Modelliert gekennzeichnet wurde.
Voraussetzungen
Um Objekttypen durch ihre Komponenten zu definieren, müssen Sie sie zuvor, wie unter Pflege
von Objekttypen [Seite 217] beschrieben, angelegt haben.
Funktionsumfang
Zuordnung von Komponenten durch Definieren von:
• Attributen
• Methoden
• Ereignissen
• Klasseninterner Typen
Aktivitäten
Definieren und Implementieren von Objekttypen wird im Class Editor [Seite 227] vorgenommen.
Sie gelangen zum Class Editor
• unmittelbar im Anschluß an das Anlegen des Objekttyps.
• über die Funktion Ändern im Einstiegsbild des Class Builders.
• mit Doppelklick auf einen Eintrag im Class Browser und anschließendem Wechsel in den
Änderungsmodus.
Class Editor
Einsatzmöglichkeiten
Der Class Editor stellt die eigentliche Arbeitsumgebung des Class Builders dar, in der Sie die
Komponenten von Klassen oder Interfaces wie Attribute, Methoden, Ereignisse oder
selbstdefinierte Datentypen pflegen können.
Integration
Die hier definierten Komponenten der Klassen oder Interfaces werden in der R/3-
Klassenbibliothek gespeichert. Von der Arbeitsumgebung aus, kann zum ABAP Editor verzweigt
werden, um eine Implementierung von Methoden vorzunehmen.
Der Class Editor stellt seine wesentliche Funktionalität anhand eines TabStrips zur Verfügung.
Funktionsumfang
Grundfunktionen
Zu den Grundfunktionen gehört die Pflege von Komponenten, d.h.
Weitere Funktionen
• Über die Funktion Lokale Klassen haben Sie die Möglichkeit, zur Pflege der lokalen
Hilfsklassen (bezogen auf die globale Klasse im Class-Pool) zu verzweigen.
• Definieren von Kurznamen der Komponenten mit Aliases.
• Dokumentation von Klassen oder Interfaces und ihrer Komponenten pflegen.
• Navigation zu Coding-Einträgen über das Menü Springen.
Attribute anlegen
Attribute enthalten Daten und geben den Zustand eines Objektes, also der Instanz einer Klasse,
wieder.
Voraussetzungen
Eventuell für den Typbezug benötigte klasseninterne Datentypen wurden angelegt. Siehe auch :
Klasseninterne Typen anlegen [Seite 239].
Vorgehensweise
1. Verzweigen Sie zum Class Editor.
2. Wählen Sie im Änderungsmodus den Tabreiter Attribute.
3. Zum Anlegen eines Attributs machen Sie folgende Angaben:
- Attribut
Angabe eines eindeutigen Namens, mit dem das Attribut identifiziert wird. Beachten hierbei
Sie die Namenskonvention für ABAP Objects [Seite 209].
- Art
Spezifizierung von Attributen als Konstante mit Constant, als instanzabhängiges Attribut mit
Instance Attribute oder als statisches Attribut (gemeinsam für alle Instanzen einer Klasse)
mit Static Attribute.
- Sichtbarkeit
Definieren der Sichtbarkeit von Attributen für die Verwender der Klasse. Mit der
Kennzeichnung Public wird das Attribut dem öffentlichen Bereich der Klasse zugeordnet und
kann von jedem Verwender der Klasse aufgerufen werden. Bedenken Sie jedoch, daß die
öffentlichen Attribute einen Teil der Schnittstelle der Klasse nach außen repräsentieren und
daher einer vollständige Kapselung des Zustands eines Objektes im Wege stehen.
Attribute mit der Kennzeichnung Protected sind in allen Erben sichbar und verwendbar.
Attribute mit der Kennzeichnung Private sind nur in der definierenden Klasse selbst sichbar
und verwendbar. Private Attribute sind also insbesondere in den Erben der Klasse nicht
sichtbar.
- Nur modelliert
Ein gesetztes Flag bewirkt, daß kein Eintrag im Class-Pool erfolgt. Auf die Komponente kann
zur Laufzeit nicht zugegriffen werden.
- Read-Only
Diese Option schränkt die Änderbarkeit von Attributen, zusätzlich zur Sichbarkeit, ein. Ein
gesetztes Flag bewirkt, daß ein Verwender das Attribut nicht ändern kann.
- Typisierungsart
ABAP-Schlüsselwort zur Angabe des Typbezugs. Zur Auswahl stehen die Schlüsselworte:
Type, Like und Type Ref To (für Klassenreferenzen).
- Bezugstyp
Als Bezugstypen stehen alle elementaren ABAP- Typen (einschließlich generischer Typen)
und Objekttypen (Klassen und Interfaces) zur Verfügung.
- Beschreibung
Kurzbeschreibung der Komponente.
- Initialwert
Ein Initialwert ist obligatorisch bei Konstanten einzugeben.
Beispiel:
Ergebnis
Sie haben Attribute zur einer Klasse oder einem Interface angelegt und spezifiziert. Damit wird
das ensprechende ABAP-Coding im Class- bzw. Interface-Pool generiert, sofern Sie kein Flag
unter Nur Modelliert für die jeweiligen Attribute gesetzt haben.
Methoden anlegen
Methoden beschreiben das Verhalten der Objekte und werden mit Hilfe von Funktionen realisiert,
die innerhalb von Klassen definiert werden. Sie stellen somit Operationen dar, mit denen
Attribute von Klassen oder Interfaces beeinflußt werden können. Dabei ist zwischen Instanz- und
statischen Methoden zu unterscheiden. Während sich Instanzmethoden auf eine bestimmte
Klasseninstanz beziehen, sind statische Methoden allen Klasseninstanzen gemeinsam. Statische
Methoden können lediglich auf statische Attribute zugreifen.
Zu speziellen Methoden zählen die Konstruktoren bzw. die Klassen-Konstruktoren. Die
Konstruktoren (Klassen-Konstruktoren) müssen jedoch nicht explizit angelegt werden, falls für sie
keine Implementierung vorgesehen ist.
Voraussetzungen
Die Klasse oder das Interface ist bereits angelegt. Es ist von Vorteil, wenn Sie die Attribute der
Klasse oder des Intefaces schon angelegt haben, da Sie dann nach der Methodendefinition
unmittelbar zur deren Implementierung übergehen können.
Vorgehensweise
So legen Sie Methoden zu Klassen oder zu Interfaces an:
1. Verzweigen Sie zum Class Editor [Seite 227].
2. Wählen Sie im Änderungsmodus den Tabreiter Methoden.
3. Zum Anlegen einer Methode machen Sie folgende Angaben:
- Methoden
Angabe eines eindeutigen Namens, mit dem die Methode identifiziert wird.
Beachten Sie auch die Namenskonventionen für ABAP Objects [Seite 209].
- Art
Spezifizierung der Methode als Instanzmethode mit Instance Method oder als statische
Methode (instanzunabhängige Methode) mit Static Method.
- Sichtbarkeit
Definieren der Sichtbarkeit von Methoden für die Verwender der Klasse. Mit der
Kennzeichnung Public wird die Methode dem öffentlichen Bereich der Klasse zugeordnet
und kann von jedem Verwender der Klasse aufgerufen werden. Methoden mit der
Kennzeichnung Protected sind in allen Erben sichbar und verwendbar. Methoden mit der
Kennzeichnung Private sind nur in der definierenden Klasse selbst sichbar und verwendbar.
Private Methoden stellen somit keine Schnittstelle zu den Verwendern der Klasse dar.
- Nur Modelliert.
Ein gesetztes Flag bewirkt, daß kein Eintrag im Class-Pool erfolgt. Auf die Komponente kann
zur Laufzeit nicht zugegriffen werden.
- Beschreibung
Kurzbeschreibung der Methode.
Falls Sie einen Konstruktor (Klassen-Konstruktor) anlegen, so sind die Namen mit
CONSTRUCTOR (CLASS_CONSTRUCTOR) und ebenso alle weiteren Angaben bereits
vom Class Builder vordefiniert.
Beispiel:
Ergebnis
Sie haben Methoden zu einem Objekttyp angelegt. Diese werden im Definitionsteil der Klasse
oder des Interfaces, d.h. also in dem jeweiligen Class- bzw. Interface-Pool, aufgenommen.
Bevor Sie mit der Implementierung der Methode beginnen, legen Sie zunächst noch ihre
Parameter und Ausnahmen fest. Die Vorgehensweise hierzu finden Sie unter Parameter und
Ausnahmen anlegen [Seite 233].
Voraussetzungen
§ Die Methoden und Attribute und gegebenfalls die Ereignisse einer Klasse oder eines
Interfaces sind bereits angelegt.
§ Ferner haben Sie zu der betreffenden Klasse oder zum Interface den Class Editor geöffnet
und entweder den Tabreiter Methoden oder Ereignisse im Änderungsmodus gewählt.
Vorgehensweise
Parameter anlegen
1. Setzen Sie den Cursor auf den Namen der Methode oder des Ereignisses.
2. Wählen Sie die Drucktaste Parameter.
3. Um Parameter von Methoden (oder Ereignissen) festzulegen, machen Sie folgende
Angaben:
- Parameter
Angabe eines eindeutigen Parameternamens. Berüchsichtigen Sie hierbei die
Namenskonventionen [Seite 209] für methodenlokale Parameter unter ABAP Objects.
- Art
Wie bei Funktionsbausteinen kann ein Parameter mit Importing, Exporting, Changing oder
Returning übergeben werden.
Beachten Sie jedoch die beiden Besonderheiten:
Die Wahl des Changing-Parameters schließt die Verwendung des Returning-Parameters
aus. Bei der Wahl des Returning-Parameters dagegen wird die Verwendung des Exporting-
und Changing-Parameters ausgeschlossen.
Ferner können bei Konstruktor-Methoden nur Importing-Methoden definiert werden.
- Wertübergabe
Anders als bei Funktionsbausteinen findet die Werteübergabe bei Methoden standardmäßig
per Referenz statt. Ist jedoch dieses Feld markiert, so werden Werte für den jeweiligen
Parameter übergeben. Eine freie Wahl besteht aber nur für die Importing-, Exporting- und
Changing-Parameter. Bei Returning-Parametern ist ausschließlich eine Werteübergabe
möglich. Eine entsprechende Prüfung wird vom Class Builder automatisch vorgenommen.
- Optional
Ist dieses Feld markiert, so muß dieser Parameter beim Aufruf der Methode nicht
berücksichtigt werden.
- Typisierungsart
ABAP Schlüßelwort zur Angabe des Typbezugs. Zur Auswahl stehen die Schlüsselworte:
Type und Like und Type Ref To.
- Bezugstyp
Als Bezugstypen stehen alle elementaren ABAP- Typen (einschließlich generischer Typen)
und Objekttypen (Klassen und Interfaces) zur Verfügung. Informationen hierzu erhalten Sie
im ABAP-Handbuch unter Datentypen [Extern].
Bei privaten und geschützten Methoden können Parameter auch mit klasseninternen
Datentypen typisiert werden.
- Defaultwert
Standardwert zum Parameter.
- Beschreibung
Kurzbeschreibung des Parameters.
Ausnahmen anlegen
1. Setzen Sie den Cursor auf den Namen der entsprechenden Methode.
2. Wählen Sie die Drucktaste Ausnahmen.
3. Um Ausnahmen zu Methoden definieren, machen Sie die folgenden Angaben:
- Ausnahme
Angabe eines geigneten Namens für die Ausnahme. Berüchsichtigen Sie hierbei die
Namenskonventionen [Seite 209] für Ausnahmen unter ABAP Objects.
- Beschreibung
Kurzbeschreibung der Ausnahme.
Ergebnis
Sie haben Schnittstellen-Parameter und Ausnahmen für eine Methode fesgelegt können nun
dazu übergehen, die Methode zu implementieren. Siehe auch Methoden implementieren [Seite
236].
Methoden implementieren
Voraussetzungen
Die Methoden und Attribute einer Klasse oder eines Interface sind bereits angelegt. Falls
Methoden von Interfaces implementiert werden sollen, sind die Interfaces innerhalb der
Klassendefinition aufgeführt. Zu den Methoden wurden eventuell Parameter und Ausnahmen
angelegt.
Vorgehensweise
1. Verzweigen Sie zum Class Editor [Seite 227].
2. Wählen Sie im Änderungsmodus den Tabreiter Methoden.
3. Setzen Sie den Cursor auf den Namen der betreffenden Methode.
4. Führen Sie einen Doppelklick aus oder wählen Sie die Ikone Quelltext.
Der ABAP Editor mit den vorgenerierten Anweisungen METHOD und ENDMETHOD wird
angezeigt.
5. Schreiben Sie den zugehörigen ABAP- Quelltext für die Methode.
Ereignisse anlegen
Ein Objekt hat die Möglichkeit nach außen bekanntgeben, daß sich sein Zustand geändert hat,
indem es ein Ereignis auslöst. Ereignisse können sowohl in Klassen als auch in Interfaces
definiert werden. Entsprechende Methoden können diese Ereignisse mit der Anweisung RAISE
EVENT auslösen. Jede Klasse (jedes Interface), die dieses Ereignis behandeln soll, muß eine
entsprechende Behandler-Methode implementieren und sich mit der Anweisung SET HANDLER
explizit als Behandler registrieren. Wenn ein Ereignis ausgelöst wird, werden alle registrierten
Behandler aufgerufen.
Ähnlich wie bei der Methodendefinition enthält ein Ereignis eine Parameterschnittstelle.
Allerdings sind bei Ereignissen ausschließlich EXPORTING-Parameter zugelassen.
Voraussetzungen
Die Klasse oder das Interface ist bereits angelegt.
In der folgenden Vorgehensweise gehen wir davon aus, daß Sie mit der OO ABAP-Spezifikation
vertraut sind.
Vorgehensweise
1. Verzweigen Sie zum Class Editor [Seite 227].
2. Wählen Sie im Änderungsmodus den Tabreiter Ereignisse.
3. Zum Anlegen eines Ereignisses machen Sie folgende Angaben:
- Ereignis
Angabe eines eindeutigen Namens, mit dem das Ereignis identifiziert wird.
- Art
Spezifizierung von Ereignissen mit Instance Event oder mit Static Event.
- Sichtbarkeit
Definieren der Sichtbarkeit der Ereignisse mit Public, Protected und Private.
- Nur modelliert.
Ein gesetztes Flag bewirkt, daß kein Eintrag im Class-Pool erfolgt. Auf die Komponente kann
zur Laufzeit nicht zugegriffen werden.
- Beschreibung
Kurzbeschreibung des Ereignisses.
Ergebnis
Sie haben Ereignisse zum Objekttyp angelegt. Die Ereignisse werden im Deklarationsteil der
Klasse oder des Interfaces hinter der Anweisung EVENTS aufgelistet.
Sie können eine weitere Spezifizierung der Ereignisse mit einem EXPORTING-Parameter
vornehmen. Die Vorgehensweise dazu finden Sie unter Parameter und Ausnahmen anlegen
[Seite 233] und unter Methoden implementieren [Seite 236].
Weitere Informationen zu Ereignisbehandlung mit OO ABAP erhalten Sie mit der F1-Hilfe z.B.
zur Anweisung RAISE EVENT.
Beachten Sie, daß innerhalb der globalen Klassen keine öffentlichen Datentypen
definiert werden.
Vorgehensweise
So erstellen Sie klasseninterne Datentypen:
1. Verzweigen Sie zum Class Editor [Seite 227].
2. Wählen Sie im Änderungsmodus den Tabreiter Typen.
3. Zum Anlegen eines klasseninternen Typs machen Sie folgende Angaben:
- Typ
Angabe eines eindeutigen Namens, mit dem der Datentyp identifiziert wird. Bei der
Namenskonvention wird der Präfix TY_ für die klasseninternen Typen empfohlen.
- Sichtbarkeit
Definieren der Sichtbarkeit der klasseninternen Datentypen. Mit Private kann nur innerhalb
der betreffenden Klasse selbst auf diesen Datentyp zugegriffen werden. Mit Protected wird
der Zugriff auch für Erben der Klasse gewährt.
- Nur modelliert
Ein gesetztes Flag bewirkt, daß kein Eintrag im Class-Pool erfolgt. Auf die Komponente kann
zur Laufzeit nicht zugegriffen werden.
- Typisierungsart
ABAP Schlüsselwort zur Angabe des Bezugstyps. Zur Auswahl stehen die Schlüsselworte:
Type, Like und Type Ref To (für Klassenreferenzen).
- Bezugstyp
Als Bezugstypen stehen alle elementaren ABAP- Typen (einschließlich generischer Typen)
und Objekttypen (Klassen und Interfaces) zur Verfügung.
- Beschreibung
Kurzbeschreibung des klasseninternen Datentyps.
4. Wiederholen Sie eventuell die bisherige Vorgehensweise für weitere zu definierende
Datentypen.
5. Sichern Sie Ihre Eingaben.
6. Falls ein klasseninterner Datentyp weiter modifiziert werden muß, z.B. für die Angabe der
Feldlänge beim Charakterfeld, dann wählen Sie die Option direkte Typeingabe. Beachten
Sie jedoch, daß dieser Schritt nur sinnvoll ist, wenn die Option Nur modelliert nicht aktiviert
wurde.
Der Inhalt des Class-Pools für den betreffenden Sichtbarkeitsbereich wird angezeigt.
7. Modifizieren Sie den Datentyp.
Ergebnis
Sie haben klasseninterne Datentypen angelegt und können diese, je nach angegebener
Sichtbarkeit (Schritt 3), in der betreffenden Klasse oder in deren Erben referenzieren. Damit
können private und geschützte Attribute und Schnittstellenparameter mit der TYPE-Anweisung
deklariert werden.
Charakterisierung
• Die Vererbung ist eine Beziehung zwischen Klassen. Sie erlaubt das Definieren von neuen
Klassen durch Ableiten einer Unterklasse aus einer bereits bestehenden Oberklasse und
wird eingesetzt, um der abgeleiteten Unterklasse eine Spezialsierung aufzuprägen. Jede
Unterklasse kann um neue Komponenten erweitert werden. Ebenso ist eine Redefinition
von Methoden in einer Unterklasse möglich. Durch Vererbung entsteht eine
Klassenhierarchie. Der Class Builder erlaubt auf einfache Weise eine Klassenhierarchie
aufzubauen. Zu beliebigen nich-finalen Klassen können Unterklassen erstellt und ebenso zu
einer bisher nicht abgeleiteten Klasse genau eine direkte Oberklasse definiert werden.
• Die Definition einer Klasse kann durch Implementieren von Interfaces erweitert werden.
Wenn eine Klasse ein Interface implementiert, erscheinen alle im Interface definierten
Komponenten als Klassenkomponenten. Sowohl über die Klassen- als auch über die
Interface-Referenz kann man dann auf die im Interface definierten Komponenten zugreifen.
Interfaces erlauben es, mit verschiedenen Klassen gleichartig umzugehen. Da die
Implementierung von Interfaces in die Klassen verlegt wird, ist eine Trennung zwischen der
Schnittstelle und der Implementierung gegeben.
• Ein Interface kann neben Attributen, Methoden und Ereignissen auch andere Interfaces als
weitere Komponenten enthalten. Eine Klasse, die ein solches zusammengesetztes
Interface implementiert, muß auch alle seine Komponenten implementieren. Gegenüber den
Komponenten-Interfaces stellt ein zusammengesetztes Interface eine weitere
Spezialisierung dar.
Funktionsumfang
Im einzelnen stehen folgende Funktionen zur Verfügung:
• Anlegen von Unterklassen
• Redefinieren von geerbten Methoden
• Anlegen von Oberklassen
• Zuordnen von Interfaces zu Klassen.
• Implementieren von Interface-Methoden innerhalb der Klassen.
• Anlegen von geschachtelten Interfaces
Aktivitäten
Interfaces in Klassen aufnehmen [Seite 243]
Voraussetzungen
Sowohl die zu spezifizierende Klasse als auch das Interface sind bereits in der R/3-
Klassenbibliothek angelegt.
Vorgehensweise
1. Verzweigen Sie zum Class Editor des Class Builders.
2. Wählen Sie im Änderungsmodus zu einer gegebenen Klasse den Tabreiter Interfaces.
3. Um Interfaces in eine Klasse hizuzufügen, machen Sie folgende Angaben:
- Interface
Angabe des Interface-Namens. Mit der Eingabetaste veranlassen Sie eine Eintragsprüfung in
der Klasssenbibliothek. Eine Auflistung aller bestehenden Interfaces erhalten Sie über die
Werthilfetaste.
- Nur modelliert
Ein gesetztes Flag bewirkt, daß kein Eintrag im Class-Pool erfolgt. Auf die Komponente
kann zur Laufzeit nicht zugegriffen werden.
Beispiel:
Falls ein eingefügtes Interface geschachtelt ist, werden nach der Eintragsprüfung alle
Komponenten-Interfaces der Schachtelungshierarchie angezeigt.
5. Sichern Sie Ihre Eingaben.
Ergebnis
Sie haben die Komponenten der Klasse um Interfaces erweitert. Die hinzugefügten Interfaces
werden im Definitionsteil der Klasse hinter der Anweisung INTERFACES im Class-Pool
aufgeführt.
Alle in der Interfacedefinition aufgeführten Methoden müssen nun innerhalb der Klasse
implementiert werden. Die Vorgehensweise hierzu finden Sie unter Methoden implementieren
[Seite 236].
Die im Interface definierten Komponenten (Attribute, Methoden, Ereignisse) erscheinen in der
Klasse in der Form: <Interface Name>~<Komponentenname>
Es wird damit sichergestellt, daß keine Namenskonfikte mit Klassenkomponenten auftreten.
Unterklassen erstellen
Verwendung
Mittels Vererbung besteht die Möglichkeit, Klassen von anderen Klassen abzuleiten. Damit
lassen sich aus bestehenden Klassen funktional erweiterte Klassen gewinnen. Eine Unterklasse
kann ihre Funktionalität gegenüber ihrer Oberklasse erweitern, indem sie weitere Komponeneten
hinzufügt oder geerbte Methoden neu implementiert (redefiniert).
Vorgehensweise
So legen Sie im Class-Editor zu einer bestehenden Klasse eine direkte Unterklasse an:
8. Wählen Sie im Änderungsmodus den Tabreiter für die Grunddaten der akuell angezeigten
Klasse.
9. Wählen Sie die Drucktaste Subklasse.
Das Dialogfenster Anlegen Klasse wird angezeigt.
10. Für die Definition der Grunddaten stehen Ihnen folgende Angaben zur Verfügung:
- Klasse
Name der abzuleitenden Unterklasse.
- Erbt von
Angabe einer beliebigen globalen, nicht-finalen Klasse als Oberklasse.
- Beschreibung
Ein Kurztext als Beschreibung der Unterklasse.
- Instanziierung
Jede Klasse ist standardmäßig mit dem Option Public gekennzeichnet. Dies bedeutet,
daß jeder Verwender Instanzen der jeweiligen Klasse (mit CREATE OBJECT) erzeugen
kann. Mit der Option Protected legen Sie fest, daß nur geerbte Klassen oder die
betreffende Klasse selbst Instanzen dieser Klasse erzeugen können. Wählen Sie
dagegen die Option Private, dann kann nur die betreffende Klasse selbst ihre Instanzen
erzegen.
Sie können mit diesen Optionen weitere Einschränkungen bezüglich der
Instanzerzeugung vornehmen. Somit können beispielsweise Voraussetzungen für die
Verwaltung persistenter Objekte geshaffen werden, bei der die Eindeutigkeit von
Objekten gewährleistet sein muß.
- Vererbung
Mit der Option Abstrakt definieren Sie eine abstrakte Klasse. Zu dieser Klasse kann
keine Instanz erzeugt werden. Eine abstrakte Klasse kann als Vorlage für ihre
Unterklassen verwendet werden. Der Zugriff auf diese Klasse kann nur über ihre
statischen Attribute oder über ihre Unterklassen erfolgen.
Mit der Option Final definieren Sie eine finale Klasse. Diese Klasse bildet den Abschluß
in der Vererbungshierarchie, da eine finale Klasse keine weiteren Unterklassen bilden
darf.
Falls eine abstakte Klasse zugleich auch als final definiert wird, so können nur die
statischen Komponenten dieser Klasse verwendet werden.
- Nur Modelliert
Falls Sie dieses Ankreuzfeld markieren, wird die Unterklasse nicht im Class-Pool
aufgenommen. Auf diese Klasse kann zur Laufzeit nicht zugegriffen werden.
11. Wählen Sie Sichern.
Das Dialogfenster Objektkatalogeintrag anlegen wird angezeigt.
12. Tragen Sie die Entwicklungsklasse ein.
13. Wählen Sie Sichern.
Ergebnis
Sie haben zu einer Klasse eine direkte Unterklasse angelegt. Damit erbt die Unterklasse alle
Komponenten der Oberklasse mit den Schtbarkeitsbereichen Public und Protected, bis auf die
Konstruktor-Methoden. Die in der Oberklasse implementierten Interfaces sind in der Unterklasse
ebenfalls implementiert und sichtbar. Die geerbten Komponenten der Unterklasse können Sie im
Class Editor anzeigen lassen, indem Sie dort das Ankreuzfeld auch Geerbte aktivieren.
Damit kann eine weitere Spezialisierung der Unterklasse erfolgen. Siehe hierzu Unterklassen
erweitern [Seite 247].
Unterklassen erweitern
Alle Änderungen in den Unterklassen sind additiv, d.h. es können keine von der Oberklasse
geerbten Komponenten entfernt werden. Stattdessen sind Erweiterungen der Unterklasse
gegenüber ihrer Oberklasse im folgenden Sinne möglich:
§ Hinzufügen neuer Komponenten
§ Redefinieren (oft auch als Überdefinieren bezeichnet) von geerbten Methoden
Es können nur Instanzmethoden redefiniert werden. Ein erneutes Definieren anderer
Komponenten (Attribute, Klassenmethoden, …) in der Unterklasse ist also nicht zulässig.
Ferner dürfen die betreffenden Methoden nicht in der Oberklasse als finale Methoden
definiert worden sein. Da Konstruktoren implizit finale Methoden sind, können sie
ebenfalls nicht redefiniert werden.
Die Redefinition der Methoden beschränkt sich nur auf eine neue Implementierung
dieser Methode in der Unterklasse. Die Signatur (Namen und Typen aller Parameter)
der Methoden darf jedoch nicht geändert werden. Die Schnittstelle der redefinierten
Methode unterscheidet nicht von derjenigen der Orginal-Methode in der Oberklasse.
Vorgehensweise
Neue Komponenten hinzufügen
Für alle Sichtbarkeitsbereiche (PUBLIC, PROTECTED und PRIVATE) können neue
Komponenten definiert werden. Da sowohl die geerbten wie die hinzugefügten Komponenten im
gleichen Namensraum liegen, ist darauf zu achten, daß bei der Namensvergabe die
Eindeutigkeit der Komponentennamen gewährleistet wird.
Siehe auch:
Attribute anlegen [Seite 229]
Methoden anlegen [Seite 231]
Ereignisse anlegen [Seite 237]
Methoden redefinieren
So gehen Sie vor, um im Änderungsmodus des Class Editors eine geerbte Methode in einer
Unterklassse zu redefinieren:
1. Lassen Sie sich alle Methoden der Unterklasse anzeigen. Aktivieren Sie hierzu das
Ankreuzfeld auch Geerbte.
Die geerbten Methoden aller Oberklassen werden angezeigt.
2. Führen Sie einen Doppelklick auf der betreffenden Methode aus.
Sie werden informiert, daß die Methode bereits in der Oberklasse implementiert ist.
3. Wählen Sie Weiter.
Der zur Orginal-Methode zugehörige ABAP-Quelltext wird angezeigt.
4. Wechseln Sie in den Änderungsmodus und implementieren Sie die Methode neu.
5. Führen Sie einen Syntaxcheck durch.
6. Sichern Sie den Quelltext.
7. Dokumentieren Sie die neu definierte Methode. Wählen Sie dazu die entsprechende Ikone in
der Anzeige Methoden.
Ergebnis
In der erweiterten Klasse sind neben neu hinzugefügten Komponenten auch alle public und
protected Komponenten aller Oberklassen sichtbar. Alle redefinierten Methoden sind durch eine
Farbänderung in der Anzeige des Class Editors gekennzeichnet.
Die Änderungen durch Redefinieren der Methoden in den Unterklassen haben keine
Auswirkungen auf die Orginal-Methode in der Oberklasse.
Auf alle in der Unterklasse sichtbaren Komponenten kann in gleicher Weise zugegriffen werden.
Auch die geerbten Komponenten aus der Oberklasse werden mit ihren lokalen Namen
angesprochen. Sollte es jedoch erforderlich sein, auf die Komponenten der direkten Oberklasse
(z.B. auf die gleichnamige Orginal-Methode) zuzugreifen, so kann hierzu die Pseudo-Referenz
SUPER verwendet werden.
Siehe hierzu Sichtbarkeit von Komponenten.
Interfaces schachteln
Das Konzept von ABAP Objects unterstützt die Schachtelung von Interfaces. Ein geschachteltes
(zusammengesetztes) Interface enthält ein oder mehrere Interfaces als Komponenten-
Interfaces. Diese können wiederum weitere Interfaces als Komponenten enthalten. Es sind also
mehrere Ebenen einer solchen Schachtelungshierarchie möglich.
Enthält ein Interface dagegen keine weiteren Interfaces, so spricht man vom elementaren
Interface.
Verwendung
Ein zusammengesetztes Interface stellt eine Spezialisierung gegenüber seinen Komponenten-
Interfaces dar. Die Komponenten-Interfaces können neben ihrer separaten Verwendung auch zur
Spezifizierung eines anderen Interfaces verwendet werden.
Voraussetzungen
Alle Komponenten-Interfaces wurden bereits in der Klassenbibliothek angelegt.
Vorgehensweise
1. Verzweigen Sie zum Class Editor des Class Builders.
2. Wählen Sie im Änderungsmodus zum betreffenden Interface den Tabreiter Interfaces.
3. Geben Sie den Namen des Komponenten-Interfaces unter umfaßt ein.
Falls Sie die Option Nur modelliert aktivieren, wird kein Eintrag im Class-Pool hinterlegt.
4. Bestätigen Sie mit der Eingabetaste.
Es findet eine Eintragsprüfung in der Klassenbibliothek statt. Anschließend wird die
Beschreibung hinzugefügt.
Ergebnis
Alle angelegten Komponenten-Interfaces liegen auf derselben Ebene der
Schachtelungshierarchie. Eine Klasse, die das zusammengesetzte Interface verwenden wird,
muß alle Methoden der Komponenten-Interfaces implementieren.
TADIR
METH Methodenimplementierung
REPT Textelemente
§ Die Grunddaten und öffentliche Komponenten einer Klasse sind nicht getrennt aktivierbar.
§ Nur die Teilobjekte für die Grunddaten, öffentliche, geschützte und private Komponenten
wirken sich auf die Statusanzeige im Class Editor aus. Wenn Sie also das gesamte
Beim Aktivieren einer Klasse, die um ein Interface erweitert wurde, ist darauf zu
achten, daß dieses Interface zuvor aktiviert wurde. Anderenfalls wird ein
Syntaxfehler für die Public Section ausgegeben.
Aktivieren
Ändern
Sichern
Ändern
Sichern
nur modelliert/ inaktiv nur modelliert/ inaktiv(überarbeitet) nur modelliert/ aktiv(überarbeitet nur modelliert/ aktiv
Testumgebung
Verwendung
Die Testumgebung können Sie einsetzen, um im Class Builder Klassenkomponenten und im
Business Objekt Builder Komponenten von Business-Objekten zu testen. Hierzu wird dynamisch
ein ABAP-Testprogramm generiert, in dem die Ausführung verschiedener Sprachelemente
simuliert wird.
Funktionsumfang
Die Testumgebung rufen Sie auf, um
• den Zugriff auf Attribute eines Objekttyps (einer Klasse) anzuzeigen,
• die Änderung der Attribute zu simulieren,
• den Methodenaufruf zu simulieren,
• mit einem Standardbehandler die Ereignisbehandlung zu testen,
• eine Interface-Sicht auf ein Objekt zu testen.
Themenübersicht
Testumgebung aufrufen [Seite 254]
Instanz erzeugen [Seite 256]
Attribute testen [Seite 258]
Methoden testen [Seite 260]
Ereignisbehandlung testen [Seite 262]
Interface-Sicht auf Objekte testen [Seite 263]
Testumgebung aufrufen
Voraussetzungen
Bevor Sie die Testumgebung für eine Klasse (einen Objekttyp) aufrufen, sollten Sie die Klasse
(Objekttyp) auf syntaktische Richtigkeit prüfen. Falls Syntaxfehler vorliegen, kann die
Testumgebung nicht gestartet werden.
Vorgehensweise
Die Testumgebung kann sowohl für Klassen im Class Builder der ABAP Workbench als auch für
Objekttypen im Business Objekt Builder aufgerufen werden.
Ergebnis
Das Systen verzweigt zur Testumgebung und gibt die Klasse (den Objektyp) in einer
Baumanzeige wieder.
Beispiel:
Instanz erzeugen
Instanzen von Klassen werden mit der ABAP-Anweisung CREATE OBJECT erzeugt. Nach der
vollständigen Instanzbildung wird der Konstruktor für diese Instanz aufgerufen. Der Konstruktor
kann Parameter enthalten, die mit geeigneten Werten versorgt werden müssen.
Eine Instanzbildung für eine Klasse wird innerhalb der Testumgebung automatisch
durchgeführt, falls in der zu testenden Klasse noch keine statischen Attribute und
statischen Methoden definiert sind.
Voraussetzungen
Sie haben die Testumgebung gestartet. Siehe auch Testumgebung aufrufen [Seite 254].
Vorgehensweise
So legen Sie in der Testumgebung eine Instanz zu einer Klasse an:
1. Wählen Sie in der Objektanzeige die Drucktaste Instanz.
Falls der aufgerufene Konstruktor Parameter enthält, erscheint ein Dialogfenster, in dem Sie
die Parameter versorgen müssen.
2. Geben gültige Werte für die Konstruktorparameter ein.
Beispiel:
Ergebnis
Sie haben eine Instanz (ein Testobjekt) für die zu testende Klasse erzeugt. In der ersten Zeile
der Objektanzeige erscheint die Bezeichnung TestObjekt ->. Neben dem Klassennamen wird die
Objekt-ID angezeigt.
Beispiel:
Attribute testen
Mit dem angelegten Testobjekt haben Sie die Möglichkeit, auf einen Container für Attribute
zuzugreifen. Dieser Zugriff kann nunmehr für Klassen simuliert werden. Dabei können die
Attribute angezeigt und auch geändert werden.
In der Anzeige der Attribute wird zwischen verschieden Arten von Werteingaben unterschieden:
• Felder für direkte Eingabe
• Verlängerte Felder
• Read-Only-Felder
• Komplexe Datenfelder (Tabellen)
• Attribute, die selbst Objektreferenzen sind.
Voraussetzungen
Eine Instanz der zu testenden Klasse wurde erzeugt. Siehe auch Instanz erzeugen [Seite 256].
Vorgehensweise
1. Wählen Sie aus der Objektanzeige unter Attribute das zu testende Attribut aus.
Beispiel:
2. Klicken Sie auf die jeweilige Ikone, die den entsprechenden Datentyp des Attributs
referenziert.
Bei Eingabefeldern können Sie nun Attributwerte ändern. Bei Objektreferenzen verzweigen
Sie erneut zur jeweiligen Objektanzeige.
3. Wiederholen Sie den Schritt 2. bei Objektreferenzen.
Beispiel:
Ergebnis
Sie haben den Zugriff auf Attribute einer Klasse getestet. Der jeweilige Zugriff wird in der ersten
Zeile der Objektanzeige angezeigt.
Methoden testen
Mit Hilfe eines Testobjektes können Sie den Zugriff auf Methoden der zu testenden Klasse
simulieren. Sind in der Methode keine Export-Parameter definiert, so wird kein Ergebnisbild
angezeigt.
Voraussetzungen
Sie haben bereits eine Instanz der zu testenden Klasse erzeugt. Siehe auch Instanz erzeugen
[Seite 256].
Vorgehensweise
1. Wählen Sie in der Objektanzeige unter Methoden die zu testende Methode aus.
b).
Bei allen anderen Parametern wird der Methodenaufruf direkt ausgeführt und ein
Ergebnisbild mit der Angabe der Laufzeit angezeigt.
Das Debugging von Methoden ohne Import-Parameter kann über den Menüpfad
Hilfsmittel → Debugging → Debugging einschalten gestartet werden.
Ergebnis
Sie haben mit Hilfe eines Testobjektes den CALL METHOD-Aufruf einer Klassenmethode
ausgeführt.
Falls die getestete Methode eine Exception auslöst, wird ein Dialogfenster mit
Angabe der Exception und des Nachrichtentextes angezeigt.
Ereignisbehandlung testen
Die Ereignisbehandlung innerhalb der Testumgebung wird mit Hilfe eines Standardbehandlers,
der die ausgelösten Ereignisse abfängt, vorgenommen. Die Testumgebung simuliert eine
Zuordnung von Behandlern und Auslösern, die mit der ABAP-Anweisung SET HANDLER
realisiert wird.
Voraussetzungen
Sie haben bereits eine Instanz der zu testenden Klasse erzeugt. Siehe auch Instanz erzeugen
[Seite 256].
Vorgehensweise
1. Wählen Sie in der Objektanzeige unter Ereignisse ein Ereignis aus.
2. Wählen Sie die Drucktaste Behandler, um den Behandler einzuschalten.
Mit einer neuen Ikone wird angezeigt, daß der Behandler aktiviert wurde.
Ergebnis
Mit erfolgreichem Methodenaufruf wird das gewählte Ereignis ausgelöst und das Ergebnis
angezeigt.
Falls Sie den Behandler zum gewählten Ereignis ausschalten möchten, wählen Sie
den Menüpfad Hilfsmittel → Ereignisbehandlung → Behandler ausschalten.
Voraussetzungen
Sie haben bereits eine Instanz der zu testenden Klasse erzeugt. Siehe auch Instanz erzeugen
[Seite 256].
Vorgehensweise
1. Wählen Sie in der Objektanzeige ein Interface aus.
Beispiel:
2. Klicken Sie auf die "Lupen-Ikone", um eine Interface-Sicht auf das Objekt zu erzeugen.
Die Interface-Sicht auf das Testobjekt wird angezeigt.
Beispiel:
3. Ändern Sie gegebenfalls die Attributwerte. Siehe auch Attribute testen [Seite 258].
4. Führen Sie gegebenfalls die Methoden aus. Siehe auch Methoden testen [Seite 260].
Ergebnis
Sie haben den Zugriff auf Attribute und Methoden eines Objektes über Interfacereferenzen
simuliert.
Screen Painter
Die nachfolgende Dokumentation behandelt den Screen Painter im grafischen und im
alphanumerischen Modus. Mit diesem Werkzeug der ABAP Workbench können Dynpros zu einer
Transaktion angelegt und mit Hilfe von Bildelementen definiert und gestaltet werden.
Zwei Screen-Painter-Modi
Der Screen Painter verfügt über einen Layout Editor. Mit diesem Editor entwerfen Sie das
Aussehen eines Dynpros. Dabei gibt es zwei Modi:
• den grafischen Modus [Seite 276] und
• den alphanumerischen Modus [Seite 315].
Beide Modi bieten dieselben Funktionen, jedoch unterschiedliche Oberflächen. Im grafischen
Modus steht Ihnen eine komfortable Oberfläche wie in einem Zeichenprogramm zur Verfügung.
Im alphanumerischen Modus arbeiten Sie mit Tasten und Menüs.
Der grafische Modus ist nur unter MS Windows 95, MS Windows NT und Unix/Motif verfügbar,
der alphanumerische Modus auf allen Plattformen.
Um den grafischen Modus zu setzen, aktivieren Sie die Einstellung Grafischer Layout Editor.
Wählen Sie dazu den Menüpfad Hilfsmittel → Einstellungen im Screen Painter.
Grundlegendes Vorgehen
1. Dynpros zum bereits bestehenden ABAP-Programm anlegen und dessen Attribute
definieren.
2. Bildlayout gestalten und Attribute der Elemente definieren.
3. Ablauflogik festlegen.
Grundlegende Prinzipien
• Verwenden von vordefinierten Elementen mit ABAP Dictionary- oder Programmreferenz.
• "Vorwärtsnavigation" mit Mausdoppelklick
• Verwenden von komplexen Bedienelementen: Table Control, Tabstrip Control, Custom
Container
• Cut/ Copy/ Paste (Graf.Fullscreen)
• Undo/ Redo (Graf.Fullscreen)
Unter Teilobjekte finden Sie die verschiedenen Sichten der Bildkomponenten. Mit jeder Sicht
können Sie einen anderen Aspekt des Bildes bearbeiten:
Bei Auswahl von... können Sie...
Layout Editor das Layout eines Bildschirmbildes pflegen
Elementliste die Dictionary-oder Programmfelder eines Bildes pflegen und eine
Zuordnung zum OK_CODE pflegen
Dynproattribute die Attribute eines Bildes pflegen
Ablauflogik die Ablauflogik eines Bildes bearbeiten
Innerhalb einer bestimmten Sicht können Sie über das Menü Springen in die
anderen Sichten wechseln.
Dynpros anlegen
Sie können ein Dynpro aus dem Einstiegsbild des Screen Painters heraus oder aus der
Objektliste des Object Navigators anlegen.
Vorgehensweise
So legen Sie ein Dynpro aus dem Einstiegsbild [Seite 268] des Screen Painters an:
1. Öffnen Sie das Einstiegsbild des Screen Painters.
2. Geben Sie einen Programmnamen an.
Das Programm muß ein ausführbares Programm vom Typ 1, ein Modulpool vom Typ M
oder eine Funktionsgruppe vom Typ F sein und muß bereits existieren.
3. Geben Sie eine Dynpro-Nummer ein.
Die Nummer darf im zugehörigen Programm noch nicht vergeben sein und kann aus bis
zu 4 Ziffern bestehen. Alle Dynpro-Nummern über 9000 sind für SAP-Kunden reserviert.
Die Nummer 1000 ist für Tabellenbilder und Reportselektionsbilder reserviert.
Einstiegsbilder für Transaktionen erhalten oft Nummern, deren letzte drei Stellen 100
sind (z.B. 3100).
Mit der Werthilfetaste können Sie sich eine Liste der Dynpros anzeigen, die zu einem
Programm gehören.
4. Wählen Sie Anlegen.
Das Bild Ändern Dynproattribute erscheint.
5. Definieren Sie die Dynproattribute.
Dynproattribute
Dynproattribute ermöglichen dem System, ein Dynpro zuzuordnen und zu verarbeiten. Sie
können folgende Attribute vergeben:
Halten Daten Nur wenn diese Option aktiviert ist, werden zur Laufzeit die
Funktionen System → Benutzervorgaben → Halten Daten
(Setzen Daten und Löschen Daten) auf dem
entsprechenden Dynpro unterstützt. Eingaben, die zur
Laufzeit auf dem Dynpro gemacht wurden, können so vom
System gehalten werden. Das System zeigt diese Daten
automatisch an, wenn der Benutzer das betreffende Dynpro
erneut aufruft.
Ausschalten Gibt an, daß ein Dynpro zur Laufzeit nicht komprimiert wird.
Laufzeitkomprimierung
Ergonomie: Dieses Flag sollte gemäß der ergonomischen
Richtlinien nicht gesetzt werden, da sonst bei dynamischem
Wegblenden von Feldern Lücken entstehen, die die
Bearbeitungszeit des Bildes erhöhen.
Halten Scrollposition Diese Einstellung legt fest, daß die beiden Scrollpositionen
(bezüglich der Breite und der Länge) für ein Dynpro erhalten
bleibt. Wird das Flag für ein Dynpro gesetzt, dann bleibt die
Scrollpositionen des ersten Aufrufs nach erfolgten
Absprüngen in andere Dynpros, unabhängig von deren
Dimensionierung, nach der Rückkehr, erhalten.
Dies gilt also auch dann, wenn sich die Länge oder Breite der
Dynpros ändert oder andere Subscreens genutzt werden,
oder auch der Cursor außerhalb des sichtbaren Bereichs
plaziert wurde.
Diese Einstellung ist vor allem für große Dynpros vorgesehen,
bei denen bisher die Scrollposition durch manche Aktionen
verloren gehen konnte.
Weitere Attribute
Der Ablauflogik-Editor
Die Ablauflogik eines Bildes können Sie durch Doppelklick auf ein Dynpro-Objekt aus dem
Repository Browser anzeigen. Das System startet den Screen Painter und verzweigt zum
Ablauflogik-Editor:
In dieser Sicht arbeiten Sie mit dem Ablauflogik-Editor. Er bietet einen Teil des
Funktionsumfangs, der Ihnen im ABAP Editor [Seite 98] zur Verfügung steht.
Hilfe zu Dynpro-Schlüsselwörtern
Bei der Bearbeitung der Ablauflogik können Sie Hilfeinformationen zu den einzelnen
Schlüsselwörtern aufrufen:
Positionieren Sie dazu den Cursor auf das entsprechende Schlüsselwort und wählen Sie F1-
TASTE.
eine Dynpro-Nummer in der Ablauflogik in die Ablauflogik für das Dynpro mit dieser
Nummer
einen Modulnamen in der Ablauflogik zu der Stelle im Modulpool, an der das Modul
definiert ist
Zusätzlich stehen Ihnen die globalen Such- und Ersetzfunktionen der Workbench zur Verfügung.
Das System sucht oder ersetzt Elementnamen (auch generisch) in Ablauflogiken und
Elementlisten. Jede Suche erzeugt eine Hitliste, aus der Sie zu den jeweiligen Objekten
gelangen können.
Ablauflogik: Beispiel
Das folgende Beispiel zeigt die Ablauflogik eines Dynpros:
*---------------------------------------------------
* Beispiel-Code
*---------------------------------------------------
* Verarbeitung vor der Bildanzeige (PBO)
PROCESS BEFORE OUTPUT.
MODULE INIT_FIELDS.
* Selbstprogrammierte F1-Hilfe
PROCESS ON HELP-REQUEST.
FIELD GSSG-BUKRG MODULE V-BUKRG.
* Verarbeitung nach der Benutzereingabe (PAI)
PROCESS AFTER INPUT.
* Kundenstammsatz sperren
CHAIN.
Bespiel:
Bildlayout: Überblick
Nachdem Sie ein Dynpro angelegt haben, können Sie einen visuellen Entwurf des
Bildschirmbildes estellen.
Dazu sind folgende Arbeitsschritte auszuführen:
• Auswahl von Dictionary- oder Programmfeldern, die auf dem Bildschirmbild integriert werden
sollen. Lesen Sie dazu das Kap. Felder übernehmen [Seite 284].
• Positionieren weiterer Bildelemente [Seite 280] der Elementpalette auf der Arbeitsfläche des
Fullscreen Editors.
• Nachdem ein Bildelement auf dem Bildschirmbild angelegt wurde, sind seine Attribute zu
spezifizieren. Grundsätzliches dazu erfahren in Arbeiten mit Elementattributen [Seite 337].
• Prüfen der Dynpros auf Übereinstimmung des Layouts mit ergonomischen Standards.
Die Größe eines Bildes wird in Zeilen und Spalten gemessen (ausgehend von der
oberen linken Ecke). Die Standardbildgröße ist 21 Zeilen/83 Spalten. Die
Maximalgröße ist 200 Zeilen/240 Spalten. Das System pflegt den Titel des
Bildschirmbildes, die Menüleiste, Statuszeile und OK_Code-Zeile separat; diese
Elemente werden bei der Bildgröße nicht berücksichtigt.
Bildelemente
Nachdem Sie ein Element auf dem Bild angelegt haben, können Sie es ggf. über das Menü
Bearbeiten in ein anderes Element umwandeln. Sie können auch mit der Elementpalette zum
Anlegen von Elementen, Bildelemente auswählen und positionieren, ohne vorher Felder zu
definieren.
Reset
Textfeld
Ein / Ausgabefeld
Ankreuzfeld
Auswahlknopf
Drucktaste
TabStrip
Table Control
Custom Control
Status-Icon
Bildelemente im Überblick
Im Screen Painter stehen in beiden Modi (grafisch und alphanummerisch) folgende Bildelemente
zur Verfügung:
Textfelder
Textfelder enthalten Bezeichnungen für andere Elemente. Diese Bezeichnungen (manchmal als
“Schlüsselwörter” bezeichnet) sind reine Anzeigeelemente; weder der Benutzer noch das ABAP-
Programm kann sie zur Laufzeit ändern. Textfelder erscheinen an einer festen Position auf dem
Bildschirm.
Textfelder können auch Literale, Linien, Ikonen und andere statische Elemente enthalten.
Textfelder können alle alphanumerischen Zeichen enthalten. Sie können einen Text jedoch nicht
mit einem _ (Unterstrich) oder ? (Fragezeichen) beginnen. Wenn Sie einen Text als Bezeichnung
für einen Auswahlknopf oder ein Ankreuzelement verwenden, muß der Text denselben
Elementnamen haben wie das bezeichnete Element.
Wenn der Text aus mehreren Wörtern besteht, verbinden Sie die Wörter mit Unterstrichen. Die
Unterstriche ermöglichen es dem System, die Wörter als Einheit zu erkennen. Die Unterstriche
werden zur Laufzeit durch Leerzeichen ersetzt.
Ein-/Ausgabefelder
Ein-/Ausgabefelder werden auch als Schablonen bezeichnet. Sie dienen zur Eingabe und
Anzeige von Daten. Um die Größe eines Eingabeelementes zu definieren, geben Sie
Unterstriche im Feld Text ein:
Sie können auch andere Zeichen verwenden, um das Ein-/Ausgabefeld zu formatieren. Für
numerische Werte können Sie einen Punkt (.) als Trennzeichen und ein Komma (,) als
Dezimalzeichen angeben. Als letztes Zeichen des Ein-/Ausgabefeldes können Sie ein V als
Platzhalter für Vorzeichen angeben.
Dropdown Listbox
Eine spezielle Variante von Ein-/Ausgabefeldern sind die Dropdown Listboxen (Listenfelder).
Eine Dropdown Listbox enthält eine Auflistung von Einträgen, aus denen der Benutzer einen
auswählen kann. Eine Eingabe von Einträgen ist bei Listboxen jedoch nicht möglich.
Weitere Informationen zur Definition von Dropdown Listboxen auf dem Attributebild des Screen
Painters erhalten Sie unter Allgemeine Attribute [Seite 338].
Informationen zur Programmierung von Dropdown-Listboxen erhalten Sie im ABAP
Benutzerhandbuch unter Dropdown-Boxen [Extern].
Ankreuzfelder
Mit Ankreuzfeldern kann der Benutzer einzelne Elemente in einer Mehrfachselektion markieren.
Die Kontrolle wird dabei nicht an einen Workprozeß des Applikationsservers zurückgegeben.
Weitere Selektionen sind möglich, bis der Benutzer eine Drucktaste betätigt oder eine
Menüfunktion auswählt.
Auswahlknöpfe
Auswahlknöpfe dienen zur ausschließlichen Selektion innerhalb einer Gruppe. Wenn der
Benutzer einen Auswahlknopf markiert, sind die anderen Auswahlknöpfe in der Gruppe
automatisch nicht selektiert. Damit sich Auswahlknöpfe bei der Selektion gegenseitig
ausschließen, müssen Sie sie nach dem Anlegen als Gruppe definieren.
Bei Selektion eines Auswahlknopfes wird die Kontrolle nicht sofort an einen Workprozeß des
Applikationsservers zurückgegeben. Wie bei Ankreuzfeldern (jedoch anders als bei Drucktasten)
sind weitere Selektionen möglich, bis der Benutzer entweder eine Drucktaste betätigt oder eine
Menüoption wählt.
Drucktasten
Mit einer Drucktaste aktivieren Sie eine bestimmte Funktion. Wenn der Benutzer eine Drucktaste
auswählt, macht das System den entsprechenden Funktionscode für das zugrundeliegende
Programm verfügbar. Zu diesem Zeitpunkt wird die Kontrolle automatisch an einen Workprozeß
des Applikationsservers zurückgeben, der die PAI-Verarbeitung (Process After Input) durchführt.
Es gibt noch keine Verbindung zu der mit dem Menu Painter definierten Oberfläche.
Das System prüft zu diesem Zeitpunkt nicht, ob die gewählten Funktionscodes
einem gültigen Status entsprechen.
Eine Drucktastenbezeichnung kann ein statischer oder dynamischer Text sein, der sich zur
Laufzeit ändert. Dynamischen Text müssen Sie als Feld in Ihrem Program definieren.
Informationen zur Dialogprogrammierung finden Sie in der Dokumentation ABAP
Benutzerhandbuch [Extern].
Rahmen
Ein Rahmen gruppiert zusammenhängende Elemente wie z.B. eine Gruppe von
Auswahlknöpfen. Rahmen sind reine Anzeigeelemente. Sie dienen zur optischen Hervorhebung
und haben keine Laufzeitfunktion.
Der obere Rand eines Rahmens enthält gewöhnlich eine links ausgerichtete Kopfzeile. Dabei
kann es sich um ein Textfeld oder ein Ausgabefeld handeln. Wenn die Kopfzeile ein Ausgabefeld
und zur Laufzeit leer ist, werden die Linien des Rahmens geschlossen; d.h. um einen
geschlossenen Rahmen zu erhalten, muß die Kopfzeile völlig leer sein.
TabStrips
TabStrips gehören zu den komplexen Bedienelementen. Sie erfahren mehr
• zur Verwendung und zum Aufbau unter TabStrips [Seite 292].
• zur Vorgehensweise beim Anlegen von TabStrips unter grafischen Modus [Seite 295] bzw.
im alphanumerischen Modus [Seite 325].
Subscreen-Bereiche
Subscreen-Bereiche sind rechteckige Bereiche in einem Bild, die für die Anzeige anderer Bilder
zur Laufzeit reserviert sind. Der Subscreen-Bereich kann keine anderen Bildelemente enthalten.
Sie können mit Subscreens andere Dynpro-Programme innerhalb Ihres Rahmenprogramms
ausführen.
Um einen Subscreen zu verwenden, definieren Sie ein zweites Bild, das in einem Subscreen-
Bereich des ersten Bildes erscheint.
Table Controls
Table Controls gehören ebenfalls zu den komplexen Bedienelementen. Weitere Informationen
erhalten Sie
• unter Table Controls [Seite 301].
• zur Vorgehensweise beim Anlegen von Table Controls im grafischen Modus [Seite 303]
bzw. im alphanumerischen Modus [Seite 321].
• unter Table Controls bearbeiten [Seite 307], wenn Sie bestehende Spalten und Zeilen
bearbeiten möchten.
Custom Container
Der Custom Container sorgt für die Einbettung eines oder mehrerer Controls innerhalb eines
Dynpro-Bereichs. Der Custom Container unterstützt das Dynpro Framework beim Resize und der
Komprimierung der eingebundenen Controls. Im Screen Painter wird hierzu ein rechteckiger
Bereich als Platzhalter für einen oder auch mehrere Controls reserviert. Zur Laufzeit dient es
dann zur Visualisierung von Controls auf dem Dynpro.
Die Resize-Fähigkeit wird über entsprechende Attribute definiert.
Sie erfahren mehr
• zu Resizing-Attributen unter Custom Container-Attribute [Seite 351].
• zur Vorgehensweise beim Anlegen von Containern unter grafischen Modus [Seite 308] bzw.
im alphanumerischen Modus [Seite 328].
• zur Control-Technologie unter Die Control Enabling Technologie [Extern].
Statusikonen
Statusikonen sind Ausgabefelder, die eine Ikone enthalten. Die Ikone wird zur Laufzeit
angegeben. Mit Ikonen zeigen Sie den Status Ihrer Anwendung an. Ikonen sind im System
vordefiniert und belegen zwei bis vier Zeichen.
Felder übernehmen
Sie können ein Element zu Ihrem Dynpro-Layout hinzufügen, indem Sie ein vorhandenes
Dictionary- oder Programmfeld auswählen.
Mit Ausnahme von Textelementen muß jedes Element auf Ihrem Dynpro ein entsprechendes
Dictionary- oder Programmfeld enthalten. Wenn Sie Felder auswählen, die im ABAP Dictionary
definiert sind, übernehmen Sie diese Elemente mit allen Informationen aus dem Dictionary, z.B.
Bezeichnungen und Formate. Wenn Sie Dictionary-Felder verwenden, werden diese Felder
immer automatisch aktualisiert, wenn Änderungen im ABAP Dictionary vorgenommen werden.
Dialogfenster Dict/Programmfelder
Im Dialogfenster Dict/Programmfelder können Sie die Dictionary- oder Programmfelder auflisten.
Sie können dieses Fenster aus dem Fullscreeen Editor des Screen Painters aufrufen oder über
das Menü Springen, das in jeder Sicht des Screen Painters zur Verfügung steht:
Dict./Programmfelder übernehmen
So übernehmen Sie Dictionary- oder Programmfelder und fügen Sie zum Dypro-Layout hinzu:
1. Öffnen Sie das Dialogfenster Dict./Programmfelder.
2. Geben Sie einen Tabellen- oder Feldnamen an.
Sie müssen zunächst den Namen der Tabelle oder des Feldes angeben. Feldnamen
können Sie generisch angeben, Tabellennamen müssen jedoch vollständig angegeben
werden.
3. Holen Sie die Felder aus dem Programm oder der Tabelle.
Um im ABAP Dictionary nach einer Tabelle oder einem Feld zu suchen, wählen Sie
Holen aus Dict. Um im ABAP-Programm zu suchen, wählen Sie Holen aus Programm.
Das System zeigt die Felder an.
4. Markieren Sie ein oder mehrere Felder.
5. Wählen Sie die Weiter-Ikone.
Das System zeigt den Cursor und einen Felderumriß im Arbeitsbereich an.
6. Klicken Sie einmal, um die Felder zu positionieren.
7. Klicken Sie einmal außerhalb des Felderumrißes, um die Markierung aufzuheben.
Wenn Sie mehrere Felder gewählt haben, werden sie als Gruppe kopiert. Nach dem Kopieren
können Sie jedes Feld einzeln verschieben. Wenn Ihre Selektion leere oder ungültige Felder
enthält, erscheint eine entsprechende Nachricht. Diese Felder werden dann nicht kopiert.
Kopiervorgang abbrechen
Wenn Sie vor der Positionierung eines Feldes im Bild feststellen, daß Ihre Selektion falsch ist,
können Sie den Kopiervorgang abbrechen, indem Sie Reset-Ikone in der Elementpalette oder die
entsprechende Funktion der rechten Maustaste wählen.
Feldnamen angeben
Wenn Sie Elemente ohne zugrundeliegende Felder anlegen, müssen Sie Feldnamen explizit
angeben (Feld Feldname im Fullscreen Editor). Geben Sie einen Feldnamen ein (maximal 40
Zeichen). Der Name darf nur Buchstaben und die Sonderzeichen # (Pfundzeichen), /
(Schrägstrich), - (Gedankenstrich), _ (Unterstrich), $ (Dollarzeichen) enthalten.
Spezialfall
Wenn Sie ein Feld mit einem Gedankenstrich (-) angeben, prüft das System, ob das Feld im
Dictionary enthalten ist. Wenn ja, erscheint ein Popup, in dem Sie bestätigen können, daß das
Element auf das ABAP Dictionary Bezug nehmen soll.
Bildelemente bearbeiten
Es gibt einige Operationen, die für alle Bildelemente gleichermaßen genutzt werden: Markieren,
Verschieben und Löschen. Darüber hinaus kann bei manchen Elementen die Größe verändert
werden. Diese Operationen unterscheiden sich, wenn Sie den Layout Editor im
alphanumerischen Modus [Seite 332] nutzen.
Markieren
Sie können ein Element markieren, indem Sie es einfach anklicken. Wenn Sie mehrere Elemente
markieren wollen, ziehen Sie ein rechteckiges “Gummiband” um die entsprechenden Elemente.
So markieren Sie mehrere Elemente:
1. Positionieren Sie den Cursor außerhalb der Gruppe.
2. Drücken und halten Sie die Maustaste.
3. Ziehen Sie den Cursor von seiner Ausgangsposition weg.
Ein “Gummiband” erscheint, das die Größe der Markierung anzeigt.
4. Vergewissern Sie sich, daß das “Gummiband” die gesamte Gruppe umfaßt.
5. Lassen Sie die Maustaste los.
Mehrere Elemente können Sie auch markieren, indem Sie die Taste STRG drücken und dabei
jedes einzelne Element anklicken.
Um die einzelnen Elemente der Reihe nach zu markieren, verwenden Sie die Pfeiltasten
.
Löschen
Um ein Bildelement zu löschen, markieren Sie es und wählen Sie Bearbeiten → Löschen.
Alternativ können Sie hierfür die rechte Maustaste verwenden.
Besonderheiten
Wenn Sie ein Table Control oder ein TabStrip löschen, löschen Sie alle Elemente des Table
Controls bzw. des TabStrips
Das Löschen eines Gruppenrahmens löscht nur den Rahmen selbst, nicht seinen Inhalt.
Verschieben
Um ein Objekt zu verschieben, markieren Sie es und ziehen Sie es mit der Maus an die neue
Position. Sie können Elemente nicht an Positionen verschieben, wenn es dadurch zu einer
Überlappung mit anderen Elementen kommt.
Sie können mehrere Elemente auswählen und sie als Gruppe verschieben. Manche Elemente
haben “Griffe” am oberen Rand des Elements, die Sie zur Positionierung der Gruppe verwenden
müssen. Um ein Gruppenelement zu verschieben, markieren Sie es und ziehen es dann mit
seinem “Griff” an die neue Position.
Elemente in einem Gruppenrahmen verhalten sich wie andere gruppierte Elemente. Wenn Sie
den Rahmen verschieben, werden die Elemente ebenfalls verschoben.
Größe verändern
So können Sie die Größe von Bildelementen verändern:
1. Markieren Sie das Element.
2. Klicken Sie den rechten oder unteren Rand des Elements an.
Der Cursor verändert seine Form, wenn die Größe des Objekts änderbar ist.
3. Ziehen Sie den Rand mit dem Cursor, um die Größe des Elements zu verändern.
Sie können auch die Größe des Bildes verändern, indem Sie seinen Rand markieren und ziehen.
Alternativ ist es auch möglich, die Zeilen- und Spaltenanzahl in den Element-Attributen zu
ändern.
Undo/Redo
Grundsätzlich können Sie immer den letzen Schritt rückgängig machen bzw. wiederholen. Dies
trifft auch zu, wenn ein Element gelöscht wurde. Verwenden Sie dazu die entsprechenden
Tasten.
3. In das Feld Icon-Name können Sie direkt eine Bezeichnung für eine Ikone eintragen. Meist
kennen Sie die Bezeichnung der Ikone nicht, weshalb Sie eine Eingabehilfe über den Icon
Button erhalten können:
Um die richtige Ikone zu finden, haben Sie auf diesem Bildschirm die Möglichkeit, eine
Spalte alphabetisch zu sortieren, einen bestimmten Begriff zu suchen oder sich eine
Übersicht über die Ikonen zu verschaffen.
Wenn Sie eine Ikone für ein Ausgabefeld verwenden wollen, müssen Sie das Feld Mit
Icon markieren. Siehe dazu Allgemeine Attribute [Seite 338].
4. Schließen Sie das Dialogfenster Attribute.
Gruppe definieren
So definieren Sie einzelne Elemente als eine Gruppe von Auswahlknöpfen:
1. Markieren Sie die einzelnen Auswahlknöpfe.
2. Wählen Sie Bearbeiten → Gruppierung → Auswahlknopfgruppe → Definieren.
3. Das System definiert eine Auswahlknopfgruppe.
Tabstrips
Definition
Ein Tabstrip ist eine Art Karteikasten, welcher auf einem Dynpro verschiedene Komponenten
einer Anwendung abbildet. Im Gegensatz zum klassischen Bildwechel sieht der Benutzer stets
alle Ansprungziele. Tabstrips bieten damit einen einfachen und leicht verständlichen Weg, um
unterschiedliche Komponenten einer Anwendung auf einem Dynpro zu definieren und zwischen
ihnen zu navigieren. Die Struktur einer Anwendung erscheint somit für den Benutzer transparent
und homogen.
Verwendung
Das Tabstrip wird verwendet:
• um komplexere Anwendungen in ihrer Struktur zu vereinheitlichen und
Navigationsmöglichkeiten zwischen den Komponenten der Anwendung zu optimieren.
• um Transparenz der Anwendungsstruktur zu erhöhen und damit den Lernaufwand und
Bedienbarkeit für den Benutzer zu erleichtern.
Struktur
Das nachfolgende Beispiel gibt die wesentlichen Komponenten und das Umfeld eines Tabstrips
wieder:
Tab-Reiter
Tab-Reiter geben die Ansprungziele einer Anwendung an und werden mit Drucktasten realisiert.
Das Einfügen der Ikonen auf dem Tab-Reiter ist ebenso wie bei Drucktasten möglich. Die
Bezeichnungen der Tab-Reiter sollten kurz und prägnant sein.
Tab-Reiterzeile
Die erste Zeile der Tabstrips ist für die Tab-Reiter reserviert. Sind mehr Tab-Reiter als anzeigbar
definiert, dann muß geblättert werden. Zu diesem Zweck erscheinen am rechten oberen Rand
automatisch zusätzliche Blättertasten.
Tabstrip-Seite
Verschiedene Felder werden auf einer Seite zu einer Einheit zusammengefaßt. Dies entspricht
der bisherigen Umrahmung von Feldern eines Dynpros mit einem Gruppenrahmen. Eine
Tabstrip-Seite wird durch ein Subscreen realisiert.
Tabstrip-Umfeld
Das Umfeld des Tabstrips muß konstant gehalten werden. Beim Wechsel von einer Tabstrip-
Seite in die andere dürfen sich Menü-, Drucktastenleiste oder weitere Felder auf dem Dynpro
nicht ändern.
Zu den Einsatz- und Gestaltungsregeln von Tabstrips sei auf die Transaktion BIBS
verwiesen. Unter Elemente finden Sie in dieser Transaktion ein Beispiel-Programm
für Tabstrips und unter der Drucktaste Regeln Ratschläge zur Gestaltung von
Tabstrips.
Tabstrips definieren
Folgende Schritte sind notwendig, um ein Tabstrip-Control im Screen Painter zu definieren:
1. Tabstrip-Bereich festlegen.
2. Tab-Reiter spezifizieren.
3. Subscreen-Bereiche definieren und zuweisen.
4. Ablauflogik programmieren.
Vorgehensweise
Tabstrip-Bereich anlegen
So legen Sie im grafischen Screen Painter einen Tabstrip-Bereich für ein Dynpro an:
1. Wählen Sie die Tabstrip-Ikone aus der Elementpalette des Screen Painters im
Änderungsmodus an.
Der Cursor verändert seine Form.
2. Markieren Sie den oberen linken Rand, an dem das Tabstrip beginnen soll, durch einen
Mausklick. Halten Sie die Maustaste weiterhin gedrückt.
3. Positionieren Sie die Maus am unteren linken Rand des Tabstrips und lassen Sie die
Maustaste los.
4. Verändern Sie eventuell nachträglich die Position und Größe des Tabstrips.
5. Vergeben Sie einen Elementnamen <tab_strip_name> für das anzulegende Tabstrip.
6. Öffnen Sie mit einem Doppelklick das Attribute-Fenster.
7. Vergeben Sie weitere Attribute [Seite 349] zum Tabstrip.
Der Elementname des Tabstrips wird bei der Behandlung im ABAP-Programm mit
der Controls-Anweisung wie folgt verwendet:
CONTROLS <tab_strip_name> TYPE TABSTRIP.
Tab-Reiter spezifizieren
Das neu definierte Tabstrip ist standardmäßig mit zwei Reitern vorbelegt. Eine davon
abweichende Anzahl der Tab-Reiter haben Sie über das Tabstrip-Attribut Tab-Reiter festgelegt.
Um die Tab-Reiter weiter zu spezifizieren, gehen Sie wie folgt vor:
1. Mit einem Doppelklick auf einen Tab-Reiter wird das zugehörige Attributfenster (für die
Drucktaste) geöffnet.
2. Vergeben Sie die Attribute zum Tab-Reiter:
Attribut Bedeutung
Name Name der den Tab-Reiter definierenden Drucktaste.
Text Die Beschriftung des Tab-Reiters.
Icon-Name Ikone, die eventuell zum Textfeld hinzugefügt wird.
Bedenken Sie jedoch, daß die Verwendung von Ikonen auf Tab-Reitern in
der SAP Style Guide nicht empfohlen wird.
Ausnahme: Ikonen zur Statusanzeige oder als ausreichender Ersatz für eine
Beschriftung der Tab-Reiter (Phone, Fax, Alarm,…).
FktCode Funktionscode, der das PAI-Ereignis auslöst. Beim Anklicken des Tab-
Reiters wird der Funktionscode in das Systemfeld SY-UCOMM gestellt.
Beim Blättern am Backend wird auch das OK_Code-Feld mit dem
Funktionscode versorgt.
FktTyp Für die Tab-Reiter kommen die beiden Funktionstypen <P> oder <SPACE>
in Frage. Für das lokale Blättern am GUI-Frontend ist der Funktionstyp <P>
zu wählen. Bei der Auswahl eines Reiters wird dann kein PAI-Ereignis
ausgelöst und es findet auch kein Datentrafer zum Applikationsserver statt.
Zum Blättern am Backend ist der Fuktionstyp <SPACE> (keine Typisierung)
zu wählen. Bei der Auswahl eines Reiters wird PAI ausgelöst und der
entsprechende Funktionscode ins OK_CODE-Feld gestellt.
Tab-Reiter können auch, ähnlich wie einfache Drucktasten, dynamisch mit Text
versorgt werden.
Subscreen-Bereich zuweisen
Jeder Tabstrip-Seite wird ein Subscreen-Bereich zugewiesen. Beim lokalen Blättern am GUI-
Frontend (Funktionstyp <P>) muß jedem Tab-Reiter ein separater Subscreen-Bereich
zugeordnet werden.
Im Gegensatz dazu ist beim Blättern am Backend (Funkionstyp <SPACE>) ein Subsreen-Bereich
allen Tabstrip-Seiten gemeinsam.
Gehen Sie wie folgt vor, um einen Subscreen-Bereich einer Tabstrip-Seite zuzuweisen:
1. Selektieren Sie einen Tab-Reiter.
2. Wählen Sie die Ikone Subscreen-Bereich in der Werkzeugpalette.
3. Durch Ziehen mit der Maus legen Sie die Position des Subscreen-Bereichs innerhalb der
Tabstrip-Seite fest.
4. Geben Sie den Namen <subscreen_area> für den jeweiligen Subscreen-Bereich an.
Dieser Name erscheint auch als Referenzfeld im Attibutebild des Tab-Reiters.
Alternativ kann die Zuweisung auch manuell über das sogenannte Referenzfeld im
Attributefenster des Tab-Reiters oder über die Elementliste erfolgen, indem dort der
Ablauflogik programmieren
Die Behandlung der Abaluflogik beschränkt sich auf die Einbindung der beteilgten Subscreen-
Dynpros in die (den) zugehörigen Subscreen-Bereich(e) im Tabstrip. Ensprechend der beiden
Blättermöglichkeiten ergeben sich Unterschiede in der Programmierung der Dynpro-Ablauflogik.
Blättern am GUI
Beim lokalen Blättern am GUI ist zu berücksichtigen, daß Subscreen-Dynpros in alle Subscreen-
Bereiche des Tabstrips einzubinden sind.
Um die Ablauflogik zu definieren, führen Sie die folgenden Schritte aus:
1. Fügen Sie in die Ablauflogik des Dynpros zum Verarbeitungsblock PBO folgende
Anweisungen ein:
Blättern am Backend
Beim Blättern auf dem Applikationsserver ist nur in einen Subscreen-Bereich ein Subscreen-
Dynpro einzubinden.
Um die Ablauflogik zu definieren, führen Sie die folgenden Schritte aus:
1. Fügen Sie in die Ablauflogik des Dynpros zum Verarbeitungsblock PBO folgende Anweisung
ein:
Ergebnis
Sie haben ein Tabstrip-Control im Screen Painter angelegt. Ferner haben Sie festgelegt, ob am
GUI-Frontend oder am Backend beim Wechsel der einzelnen Tabstrip-Seiten geblättert wird und
entsprechend die Dynpro-Abaluflogik definiert.
Nun können Sie sich der Behandlung des Tabstrips im ABAP-Programm widmen, nachdem Sie
einen Eintrag für das OK-Code-Feld (beim Blättern am Backend) in der Feldliste gesetzt haben.
Weitere Informationen zur Behandlung im ABAP-Programm, erhalten Sie im ABAP-Handbuch
unter Tabstrips [Extern].
Funktionsumfang
§ Anlegen einer Instanz des Tabstrip Controls.
§ Definieren der Tab-Reiter, einschließlich der zugehörigen Funktionscodes.
§ Zuordnen eines gemeinsamen Subcreen-Bereichs für alle Tabstrip-Seiten.
§ Anlegen neuer Dynpros vom Typ Subscreen, sofern nicht auf bereits existierende
zurückgegriffen werden soll.
§ Generieren der für das "Blättern am Backend" erforderlichen Ablauflogik.
§ Anlegen der PBO- und PAI-Module und aller notwendigen Datendefinitionen.
§ Anlegen entsprechender Includes für die Module und für die Datendefinitionen, falls
erforderlich.
Vorgehen
So starten Sie den Wizard für das Tabstrip Control:
5. Setzen Sie den Cursor auf die Position, an der die rechte untere Ecke des Tabstrip-Bereichs
erscheinen soll.
6. Wählen Sie die Drucktaste Ctrl Ende mark.
Der Wizard wird im separaten Dialogfenster gestartet.
7. Siehe Schritt 5 für den grafischen Screen Painter.
Tritt bei der Generierung des Tabstrips ein Fehler auf oder wird der Wizard
abgebrochen, dann werden alle zwischenzeitlich vom Wizard erstellten Objekte und
generierten Quelltextzeilen gelöscht und der ursprüngliche Zustand hergestellt.
Table Controls
Definition
Ein Table Control ist ein Bereich auf dem Dynpro zur effizienten Erfassung und Anzeige von
einzeiligen, tabellenförmigen Daten, die in einer Schleife verarbeitet werden. Table Controls sind
mit Step Loop-Tabellen vergleichbar. Während ein Table Control aus einer Definitionszeile (s.
Abb.) besteht, können sich Step Loop-Blöcke über mehrere Zeilen erstrecken. Table Controls
bieten einen größeren Funktionsumfang und sollen die herkömmlichen Step Loop-Tabellen
ablösen.
Zu den Einsatz- und Gestaltungsregeln von Table Controls sei auf die Transaktion
BIBS verwiesen. Unter dem Menüpfad Elementeà Table Controls finden Sie
Realisierungen von Table Controls für verschiedene Einsatzbereiche. Mit der
Drucktaste Regeln erhalten Ratschläge zur Gestaltung von Table Controls.
Feststehende Führungsspalte
Markierspalte Scrollbars
Besonderheiten
• Innerhalb von Definitionszeilen können Schlüsselwörter, Ein- und Ausgabefelder,
Auswahlknöpfe, Ankreuzfelder, Gruppen von Auswahlknöpfen und Drucktasten verwendet
werden.
• Eine Zeile kann bis zu 255 Spalten beinhalten.
Vorgehensweise
Die hier beschriebene Vorgehensweise unterscheidet sich, wenn Sie den Fullscreen
Editor im alphanumerischen Modus einsetzen. Informationen dazu finden Sie in
Table Controls anlegen und bearbeiten [Seite 321].
Elemente definieren
Um Elemente des Table Controls zu definieren, haben Sie die Möglichkeit, sie aus dem ABAP
Dictionary bzw. aus dem Programm zu übernehmen oder neu anzulegen. Im ersten Fall wenden
Sie die Vorgehnsweise aus Felder übernehmen [Seite 284] an. Im zweiten Fall werden Elemente
aus der Elementpalette verwendet. Die Vorgehensweise hierzu ist im folgenden beschrieben:
1. Wählen Sie ein Element aus der Elementpalette aus und stellen Sie es in die Definitionszeile
des Table Controls.
Das System legt eine Spalte an.
2. Vergeben Sie für das angelegte Element einen Elementnamen und gegebenenfalls noch
zusätzliche Attribute.
3. Legen Sie eine Spaltenüberschrift an, indem Sie einen Text oder ein Ein/Ausgabefeld in die
Spaltenüberschrift ziehen.
4. Wiederholen Sie die bisherigen Schritte für jede weitere Spalte.
5. Vergeben Sie Table Control-Attribute [Seite 350], um weitere Spezifizierungen vorzunehmen.
Titel hinzufügen
1. Markieren Sie im Attribut-Fenster des Table Controls das Ankreuzfeld mit Titel.
Sie erhalten die Aufforderung, ein Titelelement anzulegen.
2. Fügen Sie ein Textfeldelement bzw. ein Ein/Ausgabefeld in die Titelzeile ein.
3. Geben Sie den Elementnamen und unter Text den Überschrifttext ein.
Funktionsumfang
§ Anlegen einer Instanz des Table Controls.
§ Festlegen der Tabellenzuordnung zur Dictionary- bzw. zur Programmtabelle.
§ Auswählen der Tabellenfelder für die Spaltendefinition.
§ Vergabe wichtiger Attribute zum Table Control.
§ Generieren der zugehörigen Anweisungen in der Dynpro-Ablauflogik.
§ Anlegen der PBO- und PAI-Module, Unterprogramme (für die Standardfunktionen zur
Tabellenpflege) und aller notwendigen Datendefinitionen.
§ Generieren von Standardfunktionen für die Tabellenpflege (Blättern, Zeile einfügen/löschen,
Alles markieren/entmarkieren).
§ Anlegen entsprechender Includes für die Module, für die Datendefinitionen und für
Unterprogramme, falls erforderlich.
Vorgehen
So starten Sie den Wizard für das Table Control:
11. Setzen Sie den Cursor auf die Position, an der die rechte untere Ecke des Table Control-
Bereichs erscheinen soll.
12. Wählen Sie die Drucktaste Ctrl Ende mark.
Der Wizard wird im separaten Dialogfenster gestartet.
Siehe Schritt 5 für den grafischen Screen Painter.
Tritt bei der Generierung des Table Controls ein Fehler auf oder wird der Wizard
abgebrochen, dann werden alle zwischenzeitlich vom Wizard erstellten Objekte und
generierten Quelltextzeilen gelöscht und der ursprüngliche Zustand hergestellt.
Spalten bearbeiten
• Um Anordnung der Spalten in einem Table Control zu ändern, wählen Sie eine Spalte und
ziehen Sie sie an die neue Position. Das System paßt die Spaltenüberschriften automatisch
an.
• So verschieben Sie eine Spalte an eine zu diesem Zeitpunkt unsichtbare (aus dem Bild
verschobene) Position:
– Selektieren Sie die Spalte und ggf. die zugehörige Spaltenüberschrift und ziehen Sie
beide aus dem Table Control heraus.
– Blättern Sie im Table Control, bis die gewünschte Position erscheint.
– Schieben Sie die Spalte mit ihrer Überschrift in die neue Position des Table Controls
zurück.
Alternativ können Sie die Spalten bearbeiten, indem Sie gemäß Cut & Paste aus
dem Table Control ausschneiden und wieder einsetzten oder die Spaltennummer im
Attribut-Fenster direkt eingeben.
• Um eine Spaltenüberschrift zu löschen, markieren Sie sie und wählen Sie Bearbeiten →
Löschen. Sie können den Inhalt einer Spalte auf dieselbe Art und Weise löschen. Wenn Sie
eine Spalte löschen, löscht das System auch die Überschrift.
• Wenn Sie Spaltenmarkierung auf dem Table Control zulassen wollen, müssen Sie das
Attribut Spaltenmark. setzen. Dabei können Sie sich entscheiden, ob sie keine Selektion,
Einfach- oder Mehrfachselektion zulassen wollen. Die Standardeinstellung ist
Einfachselektion.
Zeilen bearbeiten
Sie können bei Ihrem Table Control auch Zeilenauswahl zulassen. Dazu müssen Sie das Attribut
Zeilenmark. setzen. Auch hier sind Einfach- und Mehrfachselektionen möglich. Zusätzlich
müssen Sie auch das Feld Mark.Sp. ankreuzen und einen Feldnamen in das dahinterliegende
Feld einpflegen. Über diesen Namen können Sie in Ihrem ABAP-Programm abfragen, welche
Zeile ausgewählt wurde.
Siehe auch
Table Control-Attribute [Seite 350].
Weitere Informationen zur Control Framework erhalten Sie unter SAP Control
Framework [Extern].
Voraussetzungen
Sie haben den Layout Editor des grafischen Screen Painters geöffnet. Der Änderungsmodus ist
eingeschaltet.
Vorgehensweise
So legen Sie einen Bereich für den Custom Container an:
1. Wählen Sie die Ikone Custom Control aus der Elementpalette aus.
Der Cursor verändert seine Form.
2. Positionieren Sie den Cursor im Arbeitsbereich, ziehen ihn und lassen schließlich die
Maustaste los.
3. Verändern Sie eventuell die Größe oder die Position des Containers.
4. Geben Sie den Namen für den Container ein.
5. Vergeben Sie die Attribute [Seite 351] für das Resizing.
Ergebnis
Ein Custom Container wurde angelegt. Der zugehörige physische Bereich im Screen Painter
dient zur Visualisierung des (der) einzubettenden Controls. Der Custom Container wird im
folgenden als "Parent" dieses (dieser) Controls angesprochen.
Siehe auch:
Anlegen eines Controls am Beispiel des SAP Picture [Extern].
Step Loops bieten einen weitaus geringeren Funktionsumfang als Table Controls
[Seite 301]. Diese sollen die herkömmlichen Step Loop-Tabellen ablösen.
Step Loops
Sie können Bildelemente in sog. Step Loops zusammenfassen. Ein Step Loop besteht aus einer
Reihe wiederholter Loop-Blöcke. Ein Loop-Block dagegen setzt sich einer oder mehreren Loop-
Zeilen von grafischen Bildelementen zusammen. Sie können einen Loop-Block als fix oder
variabel definieren.
In einem fixen Loop bleibt die untere Grenze des Loop-Bereichs immer unverändert wie
ursprünglich definiert. Bei einem variablen Loop wird die Anzahl der Wiederholungen dynamisch
im Dynpro an die Größe des aktuellen Fensters angepaßt. Damit das System auf die variable
Loop-Größe reagieren kann, stellt es immer die aktuelle Anzahl der Loop-Blöcke in das
Systemfeld SY-LOOPC. Wenn das Dynpro mehrere Loops enthält, können Sie nur einen davon
als variabel definieren.
Wenn Sie ein Dynpro mit mehreren Step Loop ausführen, geht der Dialogprozessor Zeile für
Zeile durch diese “Dynpro-Tabelle”.
Verwenden Sie das Step Loop-Verfahren nicht, um Listen aufzubereiten. Legen Sie
dazu einen eigenen Report an.
Die Step Loop-Verfahren in der alphanumerischen Anzeige sind anders.
Informationen dazu finden Sie in Step Loops im alphanumerischen Modus anlegen
und bearbeiten [Seite 330].
Besonderheiten
In der Elementliste sind Attribute in 4 Kategorien unterteilt und zusammenhängend gruppiert in:
• Allgemeine Attr.
• Dictionary-Attr.
• Programm-Attr.
• Anzeige-Attr.
Die Gruppierungen sind farblich hervorgehoben. Durch Mausklick auf die farblich markierten
Attribut-Tasten wird die zugehörige Attributegruppe in Blickfeld gestellt.
Sie können die Anzeige einer Gruppierung aufreißen oder verbergen, indem Sie das Pluszeichen
+ oder das Minuszeichen - unterhalb der Attribute-Überschriften wählen.
Die zweite Spalte zeigt den hierarchischen Baum der Bildelemente. Für komplexe Elemente wie
TabStrips und Table Controls enthält diese Spalte Teilbäume. Durch Klick auf die + bzw. - -
Bilder können die Teilbäume aufgerissen oder verborgen werden.
Beispiel:
Bildelemente anlegen
Anders als im grafischen Layout Editor, wählen Sie die einzelnen Bildelemente nicht aus einer
Elementpalette aus, sondern über Menüs.
Eine Kurzbeschreibung sämtlicher Bildelemente erhalten Sie unter Bildelementtypen [Seite 280].
Um Bildelemente anzulegen, können 2 verschiedene Vorgehensweisen angewendet werden:
• Referenzieren von Dictionary- bzw. Programmfeldern und Umsetzen im Dynprolayout. Die
Vorgehensweise dazu finden Sie unter Dict./Programmfelder übernehmen [Seite 319].
• Neue Bildelemente über den Menüpfad Bearbeiten → Anlegen Element definieren, ohne
zuvor einen Bezug zu Dictionary- bzw. zu Programmfeldern herzustellen. Die
Vorgehensweise wird im folgenden beschrieben.
Vorgehensweise
Die Vorgehensweise weist Unterschiede auf, je nachdem welches Bildelement anzulegen ist.
Gruppenrahmen anlegen
1. Positionieren Sie den Cursor an der Stelle, wo die linke obere Ecke des Elements erscheinen
soll.
2. Wählen Sie Bearbeiten → Anlegen Element → Rahmen.
Das System zeigt das Dialogfenster Attribute eines Dynproelements an.
3. Geben Sie die Attribute des Gruppenrahmens ein.
4. Wählen Sie Übernehmen.
Das System zeigt das Änderungsbild für den Gruppenrahmen an.
5. Mit einem Mausklick geben Sie das Rahmenende, also seine rechte untere Ecke, vor.
6. Markieren Sie das Rahmenende mit der Taste Ende Rahmen.
Der Rahmen wird im Eingabefenster entsprechend der angegeben Dimensionen angezeigt.
Subscreen anlegen
1. Positionieren Sie den Cursor an der Stelle, wo die linke obere Ecke des Subscreens
erscheinen soll.
2. Wählen Sie Bearbeiten → Anlegen Element → Subscreen.
Das System zeigt im Änderungsbild die Grenzen an, in denen der Subscreen liegen
kann.
3. Mit einem Mausklick geben Sie das Subscreenende, also seine rechte untere Ecke, vor.
4. Markieren Sie es mit der Taste Bereichsende.
Das System zeigt das Dialogfenster Attribute eines Dynproelements an.
5. Geben Sie die Attribute des Subsreens ein.
6. Wählen Sie Übernehmen.
Der Subscreen wird im Eingabefenster entsprechend der angegeben Bereichsdimensionen
angezeigt.
TabStrip anlegen
Siehe dazu TabStrip anlegen [Seite 325].
Dict./Programmfelder übernehmen
Sie können ein Element zu Ihrem Dynprolayout hinzufügen, indem Sie bereits vorhandene
Dictionary- bzw. Programmfelder auswählen.
Vorgehensweise
So übernehmen Sie mehrere Dictionary-Felder und fügen Sie zum Dyprolayout hinzu.
1. Setzen Sie den Cursor an die Position, an der Felder (bzw. die linke obere Ecke des
Blocks) eingefügt werden sollen.
2. Wählen Sie Springen àDict./Programmfelder.
3. Geben Sie einen Tabellennamen ein.
Tabellennamen müssen vollständig angegeben werden.
4. Holen Sie die Felder der Tabelle.
Um im ABAP Dictionary nach einer Tabelle oder einem Feld zu suchen, wählen Sie
Holen aus Dict. Um im ABAP-Modulpool zu suchen, wählen Sie Holen aus Programm.
Das System zeigt die Felder an.
5. Markieren Sie ein oder mehrere Felder.
Ergebnis
An der Einfügeposition erhalten Sie die alphanumerische Darstellung der ausgewählten Felder in
einem Block.
Sie können nun sowohl die einzelnen Elemente oder auch einen Block von Elementen
bearbeiten.
Siehe auch
Bildelemente bearbeiten [Seite 332].
Sie können alternativ der unter angegebenen Vorgehensweise den Wizard für Table
Controls verwenden, der Sie Schritt für Schritt bei der Erstellung eines
funktionsfähigen Table Controls unterstützt.
Weitere Informationen erhalten Sie unter Wizard für Table Controls einsetzen [Seite
305].
Tabellentitel hinzufügen
1. Öffnen Sie das Attribute-Fenster des Table Controls.
2. Markieren Sie dort mit Titel.
3. Geben Sie den Elementnamen für den Titel ein und wählen Sie Übernehmen.
4. Geben Sie im angezeigten PopUp den Elementtyp an und wählen Sie Weiter.
5. Geben Sie Attribute zum Elementtyp an und wählen Sie Übernehmen.
Funktion Bedeutung
Ctrl Attribute Attribute des Table Control ändern.
Ctrl Elemente Tabellenspalten manipulieren. Sie können damit Spalten
hinzufügen, bearbeiten und verschieben.
Ctrl Ende markieren. Den Endpunkt des Table Control ändern.
Ctrl entmarkieren Markierung aufheben
Ctrl umwandeln Umwandeln in fixen oder variablen Step Loop [Seite 330].
Ctrl verschieben Table Control an eine neue Position verschieben.
Ctrl auflösen Table Control in Einzelelemente auflösen. Dem System steht dann
aber nur der ursprüngliche Tabellenbereich für die einzelnen
Elemente zu Verfügung. Sollte das Auflösen eines Table Control ein
unbefriedigendes Ergebnis liefern, fragt Sie das System vorher, ob
Sie mit dem Auflösen fortfahren wollen.
Ctrl löschen Table Control wird gelöscht.
Tabstrips anlegen
Weitere Informationen zur Definition, Verwendung und Funktionsumfang von Tabstrips finden Sie
unter Tabstrips [Seite 292].
Sie können alternativ der unter angegebenen Vorgehensweise den Wizard für
Tabstrips verwenden, der Sie Schritt für Schritt bei der Erstellung eines
funktionsfähigen Tabstrips unterstützt.
Weitere Informationen erhalten Sie unter Wizard für Tabstrips einsetzen [Seite 299].
Vorgehensweise
Sie legen Tabstrips im alphanumerischen Modus in 2 Schritten an:
• Anlegen eines Tabstrip-Bereichs.
• Definieren von Tabstrip-Elementen (Drucktasten und Subscreen-Bereiche).
Tabstrip-Bereich anlegen
1. Setzen Sie den Cursor an die Stelle, an der die linke obere Ecke des Tabstrips erscheinen
soll.
2. Wählen Sie Bearbeiten → Anlegen Element → Tabstrip Control.
Das System zeigt das Änderungsbild für das Tabstrip in seiner maximalen
Dimensionierung ab der in 1 gewählten Cursorposition an.
3. Mit einem Mausklick geben Sie das Control-Ende, also die rechte untere Ecke des Tabstrips
vor.
4. Wählen Sie Ctrl Ende mark., um das Control-Ende zu markieren.
Das System zeigt das Attribute-Fenster für das Tabstrip Control an.
5. Geben Sie Tabstrip-Attribute [Seite 349] ein.
6. Wählen Sie Übernehmen.
Die Darstellung des Tabstrips erscheint entsprechend der vorgegebenen
Dimensionierung im Eingabefenster. Das angelegte Tabstrip ist standardmäßig mit 2
Reitern vorbelegt.
Tabstrip-Elemente definieren
Tab-Reiter werden mit Drucktasten realisiert. Jeder Tabstrip-Seite ist der entsprechende
Subscreen-Bereich zuzuweisen.
1. Markieren das Tabstrip Control.
Das Eingabefenster wechselt in den Änderungsmodus.
2. Wählen Sie Bearbeitenà Ctrl Elemente.
Sie erhalten ein Eingabefenster für die Definition der Tabstrip-Elemente.
3. Geben Sie unter Reiter den Elementnamen für die neu anzulegende Drucktaste, die als Tab-
Reiter fungieren soll.
4. Wählen Sie Attrribute oder drücken Sie auf ENTER.
5. Geben Sie die Attribute an und bestätigen Sie mit Übernehmen.
6. Geben Sie eventuell den zur Drucktaste gehörenden Funktionscode und Funktionstyp an.
7. Wiederholen Sie die Schritte 3-6 für jede weitere Drucktaste.
8. Geben Sie unter Subscreens die Feldnamen für die jeweilgen Subscreen-Bereiche an und
bestätigen Sie deren Attribute.
9. Weisen Sie den jeweiligen Drucktasten unter Referenz-Subscreen die entsprechenden
Subscreen-Bereiche zu.
10. Wählen Sie Übernehmen.
Ergebnis
Sie haben ein Tabstrip angelegt und ihm zusätzliche Tab-Reiter und Subcscreen-Bereiche
zugeordnet. Um sich einen Eindruck vom Layout zu verschaffen, können Sie das Dynpro in einer
Laufzeitsimulation testen.
Weitere Informationen zur Control Framework erhalten Sie unter SAP Control
Framework [Extern].
Voraussetzungen
Sie haben den Layout Editor des alphanumerischen Screen Painters geöffnet. Der
Änderungsmodus wurde eingeschaltet.
Vorgehensweise
So legen Sie den Custom Container an:
7. Setzen Sie den Cursor an die Stelle, an der die linke obere Ecke des Containers erscheinen
soll.
8. Wählen Sie Bearbeiten → Anlegen Element → Custom Control.
Das System zeigt das Änderungsbild für den Container in seiner maximalen
Dimensionierung an.
9. Mit einem Mausklick geben Sie den Endpunkt, also die rechte untere Ecke des Containers
vor.
10. Wählen Sie Ctrl Ende mark., um die Ecke zu markieren.
Das System zeigt das Attribute-Fenster für das Custom Control an.
11. Geben Sie die Custom Control-Attribute [Seite 351] ein.
12. Wählen Sie Übernehmen.
Die Darstellung des Containers erscheint entsprechend der vorgegebenen Dimensionierung
im Eingabefenster.
Funktion Bedeutung
Ctrl Attribute Attribute des Custom Controls ändern.
Ctrl Ende markieren. Den Endpunkt des Containers (rechte untere Ecke) ändern.
Ctrl entmarkieren Markierung aufheben
Ctrl löschen Container löschen.
Ctrl verschieben Container an eine neue Position verschieben.
Siehe auch:
Anlegen eines Controls am Beispiel des SAP Picture [Extern].
Bearbeitungsfunktionen
Um einen Step Loop zu bearbeiten, müssen Sie sich auf dem Bild Screen Painter: Ändern Loop-
Definition befinden. Um einen vorhandenen Loop-Block zu bearbeiten, stellen Sie den Cursor auf
den Block und wählen Loop. Mit den folgenden Funktionen können Sie einen Steploop
bearbeiten:
Funktion Bedeutung
Loop Endzeile Legt die Länge des Loop-Bereiches fest. Das System wiederholt den
Block automatisch innerhalb des angegebenen Bereichs.
Variabler Loop Legt einen variablen Loop fest. Das System gleicht die Zahl der
Wiederholungen im Bildprogramm automatisch an die Größe des
aktuellen Fensters an. Enthält das Bild mehrere Loop-Blöcke, können
Sie nur einen von ihnen als variabel angeben.
Die zulässige Zeilenzahl ist maximal 200. Um auf die variable Loop-
Größe reagieren zu können, stellt das System die aktuelle Zahl der
Loop-Blöcke immer im Systemfeld SY-LOOPC dar.
Bei fixen Loops entspricht die Untergrenze des Loop-Bereiches dem
ursprünglich angegebenen Wert.
Loop auflösen Löst den Steploop in Einzelelemente auf.
Loop verschieben Verschiebt den Loop an eine neue Position.
Bildelemente bearbeiten
Um ein grafisches Element im alphanumerischen Modus zu bearbeiten, müssen Sie zuerst das
Änderungsbild für das Element anzeigen. Stellen Sie dazu den Cursor auf ein Element und
wählen Bearbeiten → Grafisches Element. Vom Änderungsbild aus können Sie
• mehrere logisch zusammenhängende Auswahlknöpfe in einer Auswahlknopfgruppe
zusammenfassen.
• eine Auswahlknopfgruppe in einzelne Auswahlknöpfe auflösen.
• Auswahlknöpfe in Ankreuzfelder umwandeln und umgekehrt.
• Elemente umwandeln.
Siehe dazu Elemente umwandeln [Seite 334].
• ein Element oder eine Auswahlknopfgruppe verschieben.
• die Größe von Subscreens oder Gruppenrahmen ändern.
Mit Zurück verlassen Sie den Bearbeitungsmodus für das grafische Element und kehren zur
normalen alphanumerischen Anzeige zurück.
Markieren
Sie markieren ein Element, indem Sie es mit einem Doppelklick auswählen (oder stellen Sie den
Cursor auf das gewünschte Element und wählen Markieren). Das System verzweigt
anschließend auf das Bild Ändern Markierung. Mit Zurück kehren Sie zum normalen Anzeige des
Layout Editors zurück.
Wenn Sie in einem Block zusammengefaßte Elemente markieren, wird der gesamte Block
markiert. So markieren Sie einen Block verschiedener Elemente:
1. Markieren Sie das erste Element des Blocks.
Das System zeigt das Bild Ändern Markierung an.
2. Stellen Sie den Cursor auf das letzte Element des Blocks.
3. Wählen Sie Blockende markieren.
Das System markiert den gesamten Block.
Verschieben
So verschieben Sie ein Element oder einen Block:
1. Markieren Sie das Element.
Das System zeigt das Bild Ändern Markierung an.
2. Stellen Sie den Cursor auf dem Bild an die Stelle, an die Sie das Element verschieben
möchten.
Wenn Sie einen Block verschieben, kann die neue Position innerhalb des alten Blocks
liegen. Das System verschiebt den gesamten Block an die neue Position.
3. Wählen Sie Verschieben.
Loop-Informationen werden nicht gehalten. Wenn Sie die Loop-Blöcke nach dem
Einfügen benötigen, müssen Sie sie neu erstellen.
Elemente umwandeln
Ähnlich wie im grafischen Modus können Sie auch im alphanumerischen Modus Elemente
umwandeln, wobei sich die Vorgehensweisen jedoch leicht unterscheiden.
So wandeln Sie im alphanumerischen Modus Elemente um:
1. Stellen Sie den Cursor auf das gewünschte Element.
2. Wählen Sie Graf. Element.
Das System zeigt das Änderungsbild für das Element an.
3. Wählen Sie Bearbeiten → Wandeln in und den neuen Elementtyp.
Beispiel:
Die erste Spalte in jeder Elementlistensicht zeigt die Hierarchie des Elements. Bei komplexen
Elementen (Step Loop, Table Control, Subscreen, TabStrip) enthält diese Spalte ein Plus (+). Bei
Elementen, die in den unmittelbar vorangehenden komplexen Elementen enthalten sind, enthält
diese Spalte ein Minus (-).
Dialogfenster Attribute
Um das Dialogfenster Attribute aus dem Fullscreen Editor anzuzeigen, wählen Sie die Funktion
Attribute oder machen Sie einen Doppelklick auf ein Element. Das Dialogfenster Attribute listet
die Attribute für ein bestimmtes Element auf.
Zu diesen Attributen gehören:
• Allgemeine Attribute [Seite 338]
• Dictionary- Attribute [Seite 342]
• Programmattribute [Seite 344]
• Anzeigeattribute [Seite 347]
Weitere Attribute sind bei Verwendung von Table Controls, TabStrips und weiteren Controls zu
berücksichtigen:
• Table Control-Attribute [Seite 350]
• TabStrip-Attribute [Seite 349]
• Custom Control-Attribute [Seite 351]
Allgemeine Attribute
Zu weiteren Attributen, siehe auch Arbeiten mit Elementattributen [Seite 337].
Die folgenden allgemeinen Attribute stehen zur Verfügung:
Attribut Beschreibung und ergonomische Richtlinien
Elementtyp Typ des Bildelementes (z.B. Textfeld oder Gruppenrahmen)
Name Name eines Elements. Mit diesem Namen wird das Element aus dem
Modulpool angesprochen. Alle Eingabe-/Ausgabefelder benötigen
immer einen Namen. Textfelder benötigen nur dann Elementnamen,
wenn sie in eine andere Sprache übersetzt werden sollen.
Ein Ein-/Ausgabefeld und das zugehörige Textfeld können denselben
Elementnamen haben. Ansonsten müssen Elementnamen eindeutig
sein. Diese dürfen nicht mehr als 40 Zeichen haben und müssen mit
einem Buchstaben oder * (Stern) beginnen. Erlaubte Sonderzeichen
sind # (Pfundzeichen), / (Schrägstrich), - (Gedankenstrich), _
(Unterstrich) und $ (Dollarzeichen).
Wenn Sie einen neuen Elementnamen angeben oder einen
bestehenden so ändern, daß er einen Gedankenstrich (-) enthält,
prüft das System, ob das ABAP Dictionary Informationen zu diesem
Element enthält. Das System kopiert nach Bestätigung alle
Informationen in die Elementattribute.
Zusatz:
Mit dem Release 46C kann sich der Elementname beim
Ein/Ausgabefeld auch auf den ABAP-Datentyp STRING beziehen.
Beachten Sie jedoch, daß die maximale Länge eines
Ein/Ausgabefeldes durch die maximale Dynpro-Breite (132 Zeichen)
begrenzt ist. Damit können derzeit nur einzeilige Ein/Ausgabefelder
im Screen Painter definiert werden. Die über diese maximale Länge
definierten Zeichen eines Strings werden abgeschnitten.
Das definierende Element im ABAP-Programm oder im Dictionary
(bei Dictionary-Bezug) kann dabei beliebig lang sein.
In diesem Zusammenhang werden zwei neue Feldformate des ABAP
Dictionary (STRG und RSTR) eingeführt. Siehe auch: Feldformate
[Seite 352].
Text Text zu einem Element. Wenn Sie anstelle des Textes eine Ikone
verwenden wollen, lassen Sie das Feld leer.
Zeile Zeile, in der das Bildelement erscheint. Das System setzt dieses
Attribut automatisch.
Spalte Spalte, in der das Element beginnt. Das System setzt dieses Attribut
automatisch.
Höhe Höhe eines Elementes in Zeilen. Texte und Eingabeelemente haben
immer die Höhe 1.
defLänge Definierte Länge, d.h. die tatsächliche Länge des Feldes im
Dictionary (Ausgabelänge) oder in Ihrem Programm.
visLänge Sichtbare Länge, d.h. die zur Laufzeit des Dynpros angezeigte Länge
eines Elementes. Setzen Sie dieses Attribut, wenn die angezeigte
Länge sich von der definierten Länge unterscheiden soll.
Wenn die sichtbare Länge die definierte Länge unterschreiten soll,
müssen Sie das Attribut Rollbar setzen. Sie können die sichtbare
Länge nur für Ein-/Ausgabefelder oder für Elemente in
Tabellenspalten ändern. Im letzteren Fall kann visuelle Länge die
definierte Länge überschreiten. Für alle anderen Elemente (mit
Ausnahme von Elementen, die Ikonen enthalten und für Ein-
/Ausgabefelder, die Attribut Dropdown haben) sind sichtbare und
definierte Länge identisch und können nicht geändert werden.
Bei Ein-/Ausgabefeldern mit dem Attribut Dropdown und dem Eintrag
Listbox ist es die Länge des Elements einschließlich des Dropdown-
Buttons. Die visuelle Länge ist dann mit der Breite der Dropdown-
Liste identisch.
Gruppen Modifikationsgruppen. Mit diesem Attribut können Sie mehrere
Elemente auf einmal aktualisieren. Sie können jedes Element zu bis
vier Modifikationsgruppen zuordnen (die Namen müssen aus drei
Zeichen bestehen). Um ein Element einer Modifikationsgruppe
zuzuordnen, geben Sie den dreistelligen Gruppennamen in der
entsprechenden Spalte ein.
FktCode Funktionscode. Dieses Attribut gilt nur für Drucktasten und für Ein-
/Ausgabefelder mit dem Attribut Dropdown und dem Eintrag Listbox.
Ist bei dieser Variante von Ein-/Ausgabefeldern ein Funktionscode
zugeordnet, so wird dieser wie eine OK-Code-Eingabe in dem
Augenblick zur Verfügung gestellt, in dem auf der Liste eine Auswahl
vorgenommen wird. Der angegebene Funktionscode wird als Event
an den Server gesendet.
Bei einer Drucktaste, die ein Benutzer betätigt, setzt das System das
Befehlsfeld auf den 20-stelligen Code, den Sie hier angeben.
Dieser Wert wird nicht gegen die Werte geprüft, die Sie im Menu
Painter angeben.
FktTyp Ereignis, bei dem das Element verarbeitet wird (z.B. AT EXIT-
COMMAND).
Dictionary-Attribute
Zu weiteren Attributen der Dynproelemente, siehe auch Allgemeine Attribute [Seite 338].
Die folgenden Dictionary-Attribute stehen zur Verfügung:
Attribut Beschreibung & ergonomische Richtlinien
Referenzfeld Für TabStrips: Stellt die Verknüpfung der Reiter des TabStrips mit
dem Subscreen-Bereich her. In diesem Feld wird der Name des
zugeordneten Subscreens angegeben.
Für Währungen und Mengen: Gibt einen Währungsschlüssel oder
eine Mengeneinheit an. Dieses Attribut gilt nur für Felder des Typs
CURR (Währung) oder QUAN (Menge). Wenn das Bildelement eine
Währung enthält und der Feldtyp CURR ist, müssen Sie den
Währungsschlüssel angeben, der zu dieser Währung gehört (CUKY).
Wenn das Bildelement eine Menge enthält und der Feldtyp QUAN ist,
müssen Sie hier den Schlüssel der Mengeneinheit angeben, die zu der
Menge gehört (UNIT). Wenn das Bildelement aus dem Dictionary
kommt, übernimmt das System das Referenzfeld, ohne Änderungen
zuzulassen.
Parameter-ID Bis zu 20-stellige ID für einen SET/GET-Parameter. Dieses Attribut
wird nur zusammen mit dem Attribut SET Parameter oder GET
Parameter verwendet.
SET Parameter Setzt den Vorgabewert für den Anzeigewert in einem Element. Wenn
Sie Set Parameter wählen, speichert das System den vom Benutzer
GET Parameter
eingegebenen Wert unter der entsprechenden Parameter-ID. Wenn
Sie Get Parameter wählen, zeigt das System anstelle des Initialwertes
den Wert aus der Parameter-ID im Element an.
Fremdschlüssel- Legt fest, ob das System eine Fremdschlüsselprüfung für das
prüfung betreffende Feld durchführt. Die Fremdschlüsselprüfung wird durch die
Definition des Feldes im ABAP Dictionary bestimmt.
Groß und Klein- Setzen Sie dieses Attribut, wenn Ihr Programm die Eingabe des
Schreibung Benutzers als Literal behandelt. Falls nicht, wird die Eingabe in
Großbuchstaben umgesetzt.
Ergonomie: Nach Möglichkeit sollte dieses Attribut gesetzt werden. Die
Eingaben sind dann besser lesbar als in Großbuchstaben.
Programmattribute
Zu weiteren Attributen der Dynproelemente, siehe auch Allgemeine Attribute [Seite 338].
Die folgenden Programmattribute stehen zur Verfügung:
Attribut Beschreibung & ergonomische Richtlinien
Eingabefeld Definiert ein Element als Eingabefeld. Ausgabedaten in diesem
Element werden im Verlauf einer Transaktion verarbeitet, aber nicht
angezeigt, falls das Attribut Ausgabefeld nicht explizit gesetzt ist. Sie
können auch beide Attribute setzen; beim Anlegen eines neuen
Bildelements Ein/Ausgabe ist das die Standardeinstellung.
Ausgabefeld Definiert ein Element als Ausgabefeld. Wählen Sie dieses Attribut für
Felder, in denen das Programm Ausgabedaten anzeigen kann. In
diesen Feldern ist keine Eingabe erlaubt, falls das Attribut Eingabefeld
nicht explizit gesetzt wurde.
Nur Ausgabefeld Verhindert, daß Anzeigeelemente zur Laufzeit in Eingabeelemente
umgesetzt werden. Dieses Attribut ist sinnvoll, wenn ein Programm
versucht, alle Eingabeelemente global auf “eingabebereit” zu setzen. In
diesem Fall werden die Eingabefelder und die Ein-/Ausgabefelder auf
Eingabebereitschaft gesetzt; die Elemente, die mit dem Attribut Nur
Ausgabefeld versehen sind, bleiben davon jedoch unberührt. (Dieses
Attribut wird z.B. in der ABAP Workbench für die Funktion Anzeigen<-
>Ändern genutzt).
Ergonomie: Verwenden Sie dieses Attribut immer für dynamisch
gesetze Feldbezeichner. Durch dieses Attribut werden die
ausgegebenen Informationen flach auf der Maske und in
Proportionalschrift dargestellt und entsprechen so in ihrem Aussehen
den statischen Bezeichnern.
Mußeingabe Die Aktivierung dieses Attributs macht die Eingabe in einem Feld
obligatorisch. Als erstes Zeichen in einem Mußeingabefeld erscheint
ein Fragezeichen (?).
Eingabehilfe / Dieses Attribut kann nur bei Ein-/Ausgabefeldern mit dem Attribut
Dropdown und dem Eintrag Listbox belegt werden und wird nur dann
Werteliste
angezeigt. Sie bestimmen mit diesem Attribut, wie und zu welchem
Zeitpunkt die Werteliste für die Anzeige in einer Dropdown Listbox
erzeugt wird. Es stehen 2 Optionen zur Auswahl:
• Space
Es wird eine Standardhilfe angeboten. Der Help-Prozessor wird
zum PBO-Zeitpunkt angesteuert und füllt die Wertetabelle
automatisch, um sie dann an den Value Request Manager zu
übergeben. Die Quellen sind Domänenfestwerte, Wertetabellen und
Suchhilfen.
Falls in der Ablauflogik zum Zeitpunkt PROCESS ON VALUE-
REQUEST eine Anweisung innerhalb eines Moduls das Ein-
/Ausgabefeld bindet, so hat diese Form der Wertebeschaffung
Vorrang gegenüber der automatischen Wertebeschaffung duch den
Help-Prozessor.
• A aus Programm
Die Werte werden innerhalb eines PBO-Moduls von der
Anwendung selbst ermittelt. Die Wertetabelle wird zusammen mit
der ValueID (Attribut Name) mit dem Funktionsbaustein
VRM_SET_VALUES an den Value Request Manager übergeben.
Eingabehilfe / Gibt an, ob eine Eingabehilfetaste neben einem Element erscheinen
soll und wird für Ein- /Ausgabefelder nicht angezeigt, wenn das Attribut
Eingabehilfetaste
Dropdown mit dem Eintrag Listbox belegt wurde. Wenn für das
Element mögliche Eingabewerte definiert sind, können Sie die Anzeige
der Eingabehilfetaste mit diesem Feld aktivieren oder unterdrücken.
Das Feld wird vom System automatisch für solche Felder gesetzt, für
die eine Fremdschlüsselprüfung oder eine Werteliste im Dictionary
definiert ist. Das Feld wird auch für Felder des Typs TIMS oder DATS
automatisch gesetzt.
Ergonomie: Verändern Sie dieses Feld nur, wenn die vom System
automatisch gewählte Darstellung aufgrund technischer
Rahmenbedingungen falsch ist.
Rechtsbündig Rechtsbündige Ausgabe numerischer Felder in einem Element. Sie
können auch Schlüsselwörter so anzeigen (z.B. bei der Definition von
Kopfzeilen).
Führende Nullen Linksbündige Ausgabe von Werten in numerischen Feldern mit
führenden Nullen.
*-Eingabe Ermöglicht die Eingabe eines Sterns (*) an der ersten Stelle eines
Elements. Das System ignoriert den Stern und transportiert die
Eingabe ab der zweiten Stelle. Der Transport wird durch die
Konvertierungsvorschriften für das jeweilige Feldformat bestimmt. Der
Stern an erster Position veranlaßt jedoch die Verarbeitung eines
Ablauflogikmoduls, das Sie so deklarieren:
FIELD... MODULE... ON *-INPUT.
Ohne Rücknahme Verhindert die Verwendung des Rücknahmezeichens (!) für das
Löschen eines Eingabewertes in einem SAP-Feld.
Ohne Schablone Verhindert, daß Sonderzeichen besonders behandelt werden. Wenn
die Eingabe des Benutzers Sonderzeichen enthält, werden sie als
normaler Text an das Bildschirmbild übergeben. Im Zusammenhang
mit diesem Attribut können Sie das Attribut Muß-Eingabe nicht setzen.
Anzeigeattribute
Zu weiteren Attributen der Dynproelemente, siehe auch Allgemeine Attribute [Seite 338].
Die folgenden Anzeigeattribute stehen zur Verfügung:
TabStrip-Attribute
Zu weiteren Attributen der Dynproelemente, siehe auch Allgemeine Attribute [Seite 338].
Gibt die minimale Anzahl der Spalten bei horizontalem Resizing an.
Der angegebene Wert gibt an, wie weit der TabStrip in seiner Breite
Spalten min.
(gemessen in Spalten) verkleinert werden kann und entspricht der
Breite des größten Subscreen-Bereichs im TabStrip.
Ergonomie: Durch geschickte Wahl des Wertes kann verhindert
werden, daß sich der untere Rand des TabStrips bei der Wahl der
Reiter verschiebt.
Falls sich innerhalb des Bildschirmbildes ein variabler Step Loop befindet, ist die
vertikale Resize-Fähigkeit nicht mehr vorhanden.
Table Control-Attribute
Zu weiteren Attributen der Dynproelemente, siehe auch Allgemeine Attribute [Seite 338].
Die folgenden Attribute stehen für Table-Controls zur Verfügung:
Custom Container-Attribute
Zu weiteren Attributen der Dynproelemente, siehe auch Allgemeine Attribute [Seite 338].
Zeilen min. Gibt die Minimalanzahl der Zeilen bei vertikalem Resizing an. Der
angegebene Wert gibt an, wie weit der Container in seiner Höhe
(gemessen in Zeilen) verkleinert werden kann.
Gibt die minimale Anzahl der Spalten bei horizontalem Resizing an.
Spalten min. Der angegebene Wert gibt an, wie weit das Container in seiner Breite
(gemessen in Spalten) verkleinert werden kann.
Feldformate auswählen
Das Feldformat bestimmt die Bearbeitung der Elementattribute.
Dynproelemente können folgende Formate haben:
Format Beschreibung
ACCP Buchungsperiode
Format: YYYYMM.
Internes Format: C(6)
CHAR Character
Zeichenkette (in ASCII- oder EBCDIC-Format).
Internes Format: C(n)
CUKY Currency key
Internes Format: C(5)
CURR Währungsfeld
Entspricht einem Betragsfeld DEC, zeigt auf ein Feld des Typs CUKY.
Internes Format: P
DATS Datum
Ausgabe wird laufzeitabhängig ermittelt.
Internes Format: D(8)
DEC Rechenfeld
Rechen- oder Betragsfeld mit Dezimalstelle und - falls zutreffend - Komma und
Vorzeichen.
Internes Format: P
INT1 1-Byte-Ganzzahl
Internes Format: X(1)
INT2 2-Byte-Ganzzahl
Internes Format: X(2)
INT4 4-Byte-Ganzzahl
Internes Format: X(4)
LANG Sprachenschlüssel
Internes Format: C(1)
NUMC Numerisches Feld
Beliebig langes Feld, das nur aus Ziffern besteht (für Schlüssel, nicht zum
Rechnen).
Internes Format: N(n)
PREC Genauigkeit
Genauigkeit eines QUAN-Feldes.
Internes Format: X(2)
QUAN Menge
Zeigt auf ein Feld mit dem Format UNIT und auf ein Feld mit dem Format PREC,
das die Genauigkeit angibt.
Internes Format: P
RAW Hexadezimale Darstellung des internen Wertes (Byte-Folge) eines beliebigen
Feldes.
STRG Zeichenfolge (String) variabler Länge.
RSTR Bytefolge variabler Länge in Hexadezimaldarstellung.
TIMS Zeit im Format HHMMSS.
Internes Format: T(6)
Wenn der Benutzer Leerzeichen oder das Rücknahmezeichen eingibt (!), liefert
das System Leerzeichen zurück. Der Wert muß numerisch sein. Die Zahlen links
dürfen 240000 nicht überschreiten. Die Minuten und Sekunden dürfen 59 nicht
überschreiten.
Wenn Sie die Verwendung von Leerzeichen unterbinden wollen, müssen Sie die
Rücknahme verbieten. Wählen Sie in diesem Fall das Attribut Ohne Rücknahme.
UNIT Einheitenschlüssel
Feld mit Einheitenschlüssel.
Internes Format: C(n)
Dynpros testen
Beim Testen überprüfen Sie das Dynpro in einer Laufzeitsimulation. Falls Sie bereits die
Ablauflogik festgelegt haben, können Sie beim Umfang der Simulation angeben, ob das Dynpro
mit vollständiger Ablauflogik oder ohne Ablauflogik getestet werden soll.
Vorgehensweise
So testen Sie Ihr Dynpro innerhalb des Screen Painters:
1. Wählen Sie Dynproà Testen…
Das System zeigt ein Dialogfenster für die Laufzeitsimulation an:
2. Modifizieren Sie gegebenfalls die Fensterkoordinaten, die die Größe des simulierten Dynpros
angeben.
3. Bestimmen Sie den Umfang der Simulation.
Wählen Sie vollständige Ablauflogik, falls die Ablauflogik in die Simulation einbezogen
werden soll. Andernfalls wird die Ablauflogik nicht einbezogen und Sie können lediglich das
Dynpro-Layout testen.
4. Wählen Sie Weiter.
Das System simuliert das entsprechende Dynpro.
Dynpros prüfen
Mit der Funktion Prüfen können Sie die Syntax, Konsistenz oder das Bildlayout eines Dynpros
prüfen.
Syntaxprüfungen
Wählen Sie Dynpro → Prüfen → Syntax, um eine Syntaxprüfung innerhalb des Screen
Painters (Attribute, Ablauflogik) zu starten. Wenn ein Fehler auftritt, zeigt das System die
Fehlerart in der Statuszeile an und stellt den Cursor an die betreffende Stelle. Wenn die
Syntaxprüfung keine Fehler liefert, gibt das System eine Erfolgsmeldung aus. Sie können Ihr
Dynpro dann Sichern oder Generieren.
Dynpro-Konsistenz
Wählen Sie Dynpro → Prüfen → Konsistenz, um die Datenkonsistenz zwischen einem
Modulpool, dem ABAP Dictionary und einem Dynpro zu prüfen. Das System überprüft, ob die
Ablauflogik ein Objekt (Feld oder Modul) oder ob die Feldliste ein Feld enthält, das nicht im
ABAP Dictionary oder im Modulpool definiert ist.
Die Funktion Konsistenz prüft ebenfalls die Konsistenz von Dynpro-Attributen, die in den Feldern
Folgebild und Cursorposition angegeben sind. Insbesondere prüft das System, ob das
angegebene Folgebild existiert und ob das Feld, das als Cursorposition angegeben wurde,
existiert.
Es werden auch Attribute wie das Suchhilfe, Referenzfeld und andere geprüft. Sie können so
Fehler frühzeitig feststellen und beheben. Fehler werden in einer Hitliste angezeigt.
Normverstöße
Wenn Sie Dynpro → Prüfen → Layout wählen, prüft das System, ob das Layout Ihres Dynpros
im Fullscreen Editor den ergonomischen Standards der SAP entspricht. Unter anderem werden
folgende Prüfungen durchgeführt:
• Sind die Felder auf dem Bildschirmbild korrekt ausgerichtet/angeordnet?
• Sind Rahmen richtig positioniert?
• Wie häufig werden Anzeigeattribute verwendet?
Nach der Prüfung zeigt das System die Fehler in einer Hitliste an, die nach Priorität sortiert ist.
Für jeden Fehler wird eine Lösung angeboten. Diese Fehler beeinflussen jedoch die
Verarbeitung des Dynpros nicht. Sie können das ohne Rücksicht auf die Normverstöße
generieren.
Aktivieren
Wenn Sie ein Dynpro in einem ABAP-Programm aufrufen wollen, muß es bereits in der
Laufzeitversion existieren. Um eine Laufzeitversion eines Dynpros zu erstellen, muß es vorher
aktiviert werden. Wählen Sie zu diesem Zweck den Menüpfad Dynpro → Aktivieren oder die
entsprechende Ikone. Nach der Aktivierung wird in der Statuszeile die folgende Nachricht
angezeigt:
Dynpro gesichert und aktiviert.
Führen Sie jedesmal, bevor Sie ein Dynpro aktivieren, eine Konsistenzprüfung
durch. Manchmal empfiehlt es sich, ein Dynpro lediglich für Testzwecke zu
aktivieren, obwohl es Inkonsistenzen enthält. Wenn es sich um schwerwiegende
Inkonsistenzen oder syntaktische Fehler handelt, erstellt das System keine aktivierte
Fassung zum Dynpro.
Löschen
Bevor Sie ein Dynpro löschen, sollten Sie die Funktion Verwendungsnachweis
aktivieren.
Um ein Dynpro zu löschen, markieren Sie das entsprechende Dynpro und wählen Sie Dynpro
→ Löschen. Das System löscht alle Dynpro-Komponenten einschließlich Ablauflogik.
Menu Painter
Der Menu Painter ist ein Werkzeug zur Erstellung und Gestaltung der Benutzungsoberfläche für
ABAP-Programme.
In der folgenden Dokumentation erfahren Sie, wie Sie Oberflächen für Ihre ABAP-Programme
anlegen und verwenden können und wie die zur Oberfläche zugehörigen Funktionen zu
definieren sind.
Titelleiste GUI-Titel
Menüleiste
Symbolleiste
GUI-Status
Drucktastenleiste
Funktionstastenbelegung
Nicht jeder Status verwendet alle diese Objekte. So werden für einen Status eines
modalen Dialogfensters beispielsweise nur Funktionstasten und eine
Drucktastenleiste benötigt.
Zugrundeliegende Konzepte
• Der GUI-Status ist das Hauptobjekt einer Benutzungsoberfläche und kann jedem
Bildschirmbild (Dynpro, Selektionsbildschirm oder Liste) zugeordnet werden. Er stellt in
technischer Sicht eine Referenz auf eine Menüleiste, eine Symbolleiste, Drucktastenleiste
• Verschiedene GUI-Status können gemeinsam auf gleiche Teilobjekte verweisen, etwa auf
gleiche Menüleiste.
• Ein Programm kann viele GUI-Status und GUI-Titel haben. Hierdurch können die diversen
Modi einer Anwendung wiedergegeben werden.
Eine Transaktion hat beispielsweise die beiden Status "Ändern" und "Anzeigen". Im
Änderungsstatus ist z.B. die Löschfunktion aktiv, im Anzeigestatus dagegen nicht.
• Mehrere Bildschirmbilder können denselben Status verwenden.
• Der GUI-Titel eines Bildschirmbildes wird unabhängig vom Status gesetzt.
Auf diesem Bild können Sie eine Menüleiste anlegen, Menüfunktionen definieren,
Funktionstasten belegen, die Symbolleiste erstellen und die Drucktastenleiste anlegen.
Für die Pflege der Bereiche Menüleiste, Drucktastenleiste oder Tastenzuordnung reißen Sie den
entsprechenden Bereich mit der "Expandieren-Ikone" auf. Damit wird der entsprechende Bereich
angezeigt.
Verwendung
Vom Einstiegsbild können Sie sich rasch einen Überblick zu allen Teilobjekten der Oberfläche
eines ABAP-Programms verschaffen und umfassende Navigationsmöglichkeiten nutzen.
Insbesondere haben Sie den Zugriff auf bestimmte Teilobjekte der Oberfläche und können sich
bei der weiteren Bearbeitung nur auf Teilaspekte der Oberfläche beschränken.
Sie können vom Einstiegsbild
§ neue Status anlegen.
§ existierende Oberfläche testen.
§ Teilobjekte der Oberfläche anzeigen oder ändern.
Teilobjekte
Innerhalb einer bestimmten Liste können Sie über das Menü Springen in eine jeweils
andere Liste wecheln.
GUI-Titel anlegen
Zu jedem Bildschirmbild eines Programms sollte ein GUI-Titel angelegt werden. Die Titel bieten
dem Benutzer eine Hilfe zur Orientierung im System, besonders dann, wenn eine Anwendung
aus mehreren Bildschirmbildern besteht.
Vorgehensweise
So legen Sie im Repository Browser einen GUI-Titel an:
1. Wählen Sie aus der Liste der Teilobjekte Programm aus.
Das System zeigt eine Liste der Programmobjekte an.
2. Markieren Sie GUI-Titel.
3. Tragen Sie einen bis zu zwanzigstelligen Titelcode ein.
4. Wählen Sie Anlegen.
Das System zeigt ein Dialogfenster an, in dem Sie die Titelleiste pflegen können.
5. Geben Sie den gewünschten Titeltext ein.
6. Wählen Sie Sichern.
Ergebnis
Ein GUI-Titel wurde im Manu Painter angelegt. Er kann nun mit der folgenden ABAP-Anweisung
gesetzt werden:
SET TITLEBAR <Titelcode>.
Wird kein GUI-Titel explizit gepflegt, so verwendet das System einen Standardtitel.
GUI-Titel sind so lange wirksam, bis Sie sie explizit ändern. Zur Laufzeit wird der
aktuelle Titel stets im Systemfeld SY-TITLE abgelegt.
Navigation
Die Statuspflege kann aus unterschiedlichen Positionen der ABAP-Workbench heraus
vorgenommen werden:
• Mit Vorwärtsnavigation aus dem ABAP Editor.
• Aus dem Repository Browser unter Programmobjekte.
• Aus dem Einstiegsbild des Menu Painters.
GUI-Status anlegen
Vorgehensweise
So legen Sie aus dem Einstiegsbild des Menu Painters einen neuen GUI-Status an:
1. Geben Sie den Namen des ABAP-Programms ein.
2. Wählen Sie Status aus der Liste der Teilobjekte aus.
3. Geben Sie einen Statusnamen ein.
Ein Statusname kann aus bis zu zwanzig alphanumerischen Zeichen bestehen.
4. Wählen Sie Anlegen.
Das Dialogfenster zur Pflege der Statusattribute wird angezeigt:
5. Geben Sie einen Kurztext ein.
6. Markieren Sie einen Statustyp.
Der ausgewählte Statustyp fungiert als Eingabehilfe für den Menu Painter. Die
vorgegebenen Eingaben halten sich an die Normen der SAP Style Guide.
Ergebnis
Das neue Statusobjekt erscheint in der Objektliste Ihres Programms.
Solange der Status nicht aktiviert wurde, ist er im Programm nicht aufrufbar (Siehe
auch: Status testen und aktivieren [Seite 386])
Kontextmenü anlegen
Verwendung
Die Einträge eines im Menu Painter vordefinierten Kontextmenüs können als Vorlagen für den
Aufbau von Kontextmenüs auf Dynpros und Listen verwendet werden. Sie können dann über die
Methode LOAD_GUI_STATUS der globalen Klasse CL_CTMENU vom Menu Painter ins
Programm geladen werden.
Vorgehensweise
So legen Sie, ausgehend vom Repository Browser, ein Kontextmenü an:
1. Wählen Sie Programmobjekte und anschließend Bearbeiten.
2. Geben Sie den Namen des ABAP-Programms ein.
3. Wählen Sie GUI-Status und geben Sie den Codenamen für das Kontextmenü ein.
Dieser Name wird später mit dem Importing-Parameter STATUS der Methode
LOAD_GUI_STATUS an das Programm übergeben werden.
4. Wählen Sie Anlegen.
Das Dialogfenster Status anlegen für die Pflege des Statusattribute wird angezeigt.
5. Geben Sie einen Kurztext ein.
6. Wählen Sie den Statustyp Kontextmenü.
7. Wählen Sie Weiter.
Das Arbeitsblatt für das Kontextmenü wird angezeigt.
8. Geben Sie in der Spalte Code den Funktionscode und unter Text den entsprechenden
Kurztext ein.
Dieser Text wird im Kontexmenü angezeigt.
9. Wiederholen Sie den letzen Schritt für jede weitere in das Kontextmenü aufzunehmende
Funktion.
10. Falls Sie eine Trennlinie in eine Ziele einfügen möchten, dann wählen Sie den Menüpfad
Bearbeiten → Einfügen → Trennlinie.
11. Falls Sie ein Untermenü anlegen möchten, lassen Sie die Spalte Code leer und tragen Sie
nur den Text für das Untermenü ein. Öffnen Sie dann das Untermenü mit Doppelklick und
pflegen Sie dort die entsprechenden Einträge.
Beispiel:
Ergebnis
Sie haben eine Sammlung von Funktionen in einem Kontextmenü zusammengefaßt und können
diese als vordefinierte Vorlage für den Aufbau eines Kontextmenüs verwenden.
Normvorschläge verwenden
Bei der Pflege einer Menüleiste können Sie den Ergonomievorschlag der SAP als Vorlage
verwenden. Wählen Sie dazu Normen einmischen mit Einfachklick aus, um den Vorschlag
anzuzeigen. Sie können ebenfalls die angebotenen Menüs nach Ihren Wünschen ändern.
Um wieder eine leere Menüleiste zu erhalten, wählen Sie Normen ausblenden mit Einfachklick
aus.
Beim Status für Listen können auch einzelne Funktionen als Vorschlag übernommen
werden. Wählen Sie dazu Listfunktionen einmischen mit Einfachklick aus, um den
Vorschlag anzuzeigen Auch hier können Sie die angebotenen Funktionen
übernehmen oder diese für Ihre Zwecke ändern.
Menüleisten anlegen
Vorgehensweise
So legen Sie bei geöffnetem Arbeitsblatt des Menu Painters eine neue Menüleiste an:
1. Öffnen Sie im Änderungsmodus eine leere Menüleiste mit der Auffreißen-Ikone rechts
neben dem Textfeld Menüleiste.
2. Sofern Sie die Normvorschläge verwenden wollen, wählen Sie Normen einmischen.
3. Sofern Sie die Normvorschläge verwendet haben, ändern Sie das erste in Klammern
stehende Menüfeld <Objekt> ab und spezifizieren es.
4. Geben Sie anderenfalls Menüpunkte explizit ein.
Beispiel:
Normen einhalten
Der Menu Painter unterstützt die im BC - SAP Style Guide festgelegten Normen für die R/3-
Oberflächengestaltung, indem er Namen für die GUI-Objekte vorschlägt. Diese Vorschläge
können Sie sich entweder vom Einstiegsbild oder vom Arbeitsblatt des Menu Painters anzeigen
lassen.
Wählen Sie hierzu Hilfsmittel → Erläuterungen → Normen/Vorschläge.
Wenn Sie sich an diese Vorschläge halten, erstellen Sie Anwendungen, die mit dem Aussehen
der R/3-Standardanwendungen übereinstimmen.
Menüeinträge hinzufügen
Nachdem Sie eine Menüleiste angelegt haben, fügen Sie zu den einzelnen Menüs der Leiste die
entsprechenden Menüeinträge hinzu. Jedes Menü kann bis zu 15 Einträge enthalten.
Ein Menü kann folgende 3 Arten von Einträgen enthalten:
• Funktionsnamen (mit Angabe von Code und Text)
• Untermenüs (Kaskadenmenüs)
• Trennlinien
Die maximal mögliche Schachtelungstiefe bei Untermenüs beträgt drei Ebenen.
Zusammengehörende Menüfunktionen werden zwecks besserer Übersicht durch Trennlinien
gruppiert. Bei sehr langen Menüs dienen die Trennlinien auch zur Unterteilung in kleinere
Bereiche. So wird das Menü übersichtlicher und leichter lesbar.
Beispiel:
Menüfunktionen definieren
So fügen Sie bei geöffnetem Arbeitsblatt Funktionen zu einem Menü hinzu:
1. Wählen Sie ein Menü in der Menüleiste und öffnen Sie die Liste der Einträge mit Maus-
Doppelklick.
Das System öffnet das Menü. Die Liste der Einträge enthält die beiden Spalten Code
und Text.
2. Tragen Sie in der Spalte Code einen bis zu zwanzigstelligen Funktionscode ein.
Falls Sie einen Funktionscode eintragen wollen, der länger als das Eingabefeld für
Funktionscodes ist, müssen Sie die angezeigte Länge in Ihren benutzerbezogenen
Einstellungen ändern. Wählen Sie dazu Hilfsmittel → Einstellungen →
Benutzerbezogen.
3. Tragen Sie in der Spalte Text den Funktionstext ein.
Der hier eingegebene Name erscheint zur Laufzeit im Menü. Sie können auch den Inhalt
der Funktionstexte zur Laufzeit festlegen (siehe Dynamische Funktionstexte definieren
[Seite 401]).
4. Wiederholen Sie Schritt 2 und 3 für jeden einzelnen Menüeintrag.
Untermenüs anlegen
So fügen Sie ein Untermenü (Kaskadenmenü) Ihrem Menü hinzu:
1. Lassen Sie die Spalte Code leer.
2. Tragen Sie in der Spalte Text einen Namen (für das Untermenü) ein.
3. Öffnen Sie das Untermenü durch Maus-Doppelklick.
Das System öffnet die zugehörige Liste für Menüeinträge.
4. Vervollständigen Sie das Menü wie oben beschrieben.
Trennlinie einfügen
1. Positionieren Sie den Cursor auf die entsprechnede Zeile.
2. Wählen Bearbeiten → Einfügen → Trennlinie.
Menüeinträge bearbeiten
Einzelne Menüeinträge können ausgeschnitten, kopiert, eingefügt oder gelöscht werden.
1. Positionieren Sie den Cursor auf die entsprechnede Zeile.
2. Wählen Sie Bearbeitenà Eintragà Auschneiden (Kopieren, Einsetzen, Löschen).
Normvorschläge übernehmen
Einige SAP-Menüfunktionen sind standarisiert. Wenn Sie mit den SAP-Standardmenüs arbeiten,
werden diese Funktionen in Ihren Menüs angezeigt:
Um eine Standardfunktion zu übernehmen, aktivieren Sie diese durch die Eingabe eines bis zu
zwanzigstelligen Funktionscodes. Geben Sie keinen Funktionscode an, wird die Funktion zur
Laufzeit in Ihrem Menü nicht angezeigt.
Tastenzuordnung definieren
Um auf häufig benutzte Funktionen der Oberfläche schnell zuzugreifen, werden Funktionstasten
verwendet. Die Funktionstasten sind besondere Tasten auf Ihrer Tastatur (F-Tasten), die
bestimmte Funktionen ohne Auswahl von Menüs aufrufen können.
Um Funktionstasten Ihrer Oberfläche hinzuzufügen, müssen Sie der entsprechenden
Funktionstaste einen bestimmten Funktionscode zuordnen.
Bei der Pflege der Funktionstastenzuordnung wird unterschieden zwischen:
• Reservierten Funktionstasten
• Empfohlener Funktionstastenbelegung
• Frei belegbaren Funktionstasten.
Die folgenden Funktionstasten sind von SAP reserviert und können nicht anders belegt werden.
Einige Beispiele:
F1 Hilfe
F3 Zurück
F4 Eingabemöglichkeiten
F12 Abbrechen
Welche Funktionstasten reserviert sind oder vom System empohlen werden, hängt
vom gewählten Statustyp ab. Näheres erfahren Sie in der SAP Style Guide. Wählen
Sie hierzu Hilfsmittelà Erläuterungenà Normen/Vorschläge.
Vorgehensweise
So legen Sie die Funktionstastenzuordnung fest.
1. Verzweigen Sie zum Arbeitsblatt des Menu Painters.
2. Öffnen Sie den Teil des Arbeitsblatts Tastenzuordnung mit der "Aufreißen-Ikone".
3. Definieren Sie für die entsprechende Funktionstaste im ersten Eingabefeld einen
Funktionscode.
Sofern Sie eine bereits definierte Funktionstastenbelegung referenzieren wollen, lesen
Sie Objekte in einen GUI-Status übernehmen [Seite 391]
4. Geben Sie im zweiten Eingabefeld einen Text für die Funktion an. Dieser wird dann als
Dokumentation sichtbar, wenn der Benutzer auf der Oberfläche die rechte Maustaste
drückt.
Drucktastenleisten definieren
Häufig verwendete Funktionen können auch als Drucktasten auf einer Leiste unterhalb der
Symbolleiste angeordnet, zugänglich gemacht werden.
Beispiel einer Drucktstenleiste:
Besonderheiten:
• Um eine Funktion als Drucktaste in die Drucktastenleiste aufzunehmen, ist es erforderlich,
zunächst diese Funktion einer Funktionstaste zuordnen.
• Die Drucktastenleiste kann bis zu 35 Drucktasten enthalten.
• Die Funktionen in der Drucktastenleiste können als Text oder Ikone oder als Kombination
von Text und Ikone angezeigt werden.
• Inaktive Funktionen innerhalb der Drucktastenleiste können angezeigt werden, falls für die
Drucktastenleiste eine Ortskonstanz definiert wurde. Siehe auch Ortskonstanz definieren
[Seite 383].
• Sie können zur Laufzeit auch dynamische Texte einer Drucktaste zuordnen. Näheres hierzu
finden Sie unter Dynamische Funktionstexte definieren [Seite 401].
• Funktionen der Drucktastenleiste können mit Trennstrichen inhaltlich gruppiert werden. Siehe
auch Trennstriche einfügen [Seite 384].
• Der SAP Style Guide empfiehlt, daß Sie nur Funktionen als Drucktasten implementieren, die
auch über die Menüs ausgewählt werden können. Wählen Sie zur weiteren Information den
Menüpfad Hilfsmittelà Erläuterungenà Normen/Vorschläge.
Vorgehensweise
1. Ornden Sie eine Funktion einer Funktionstaste zu. Die Vorgehensweise dazu erhalten Sie
unter Tastenzuordnung definieren [Seite 377].
2. Öffnen Sie die Detailsicht für die Drucktastenleiste und geben Sie für die anzulegende
Drucktastenleiste einen Namen ein.
3. Geben Sie den im 1-ten Arbeitsschritt definierten Funktionscode in das Eingabefeld einer
bestimmten Position auf der Drucktastenleiste ein und bestätigen mit ENTER.
Das System fügt die in der Funktionstastenzuordnunhg verwendete
Funktionsbezeichnung und evntuell eine Ikone (falls dem Funktionscode zugeordnet)
ein.
Die im Menu Painter verfügbaren Ikonen entsprechen nicht ganz denen in anderen
Editoren (z.B. im Screen Painter). Im einem Pool sind alle Ikonen je nach
Verwendungszweck bestimmten Gruppen zugeordnet.
Um einer Funktion eine Ikone zuzuordnen, haben Sie folgende Möglichkeiten:
• Ausgehend von der Funktionsliste machen Sie einen Eintrag unter Ikonenname.
• Führen Sie auf der Funktionstastenzuordnung einen Doppelklick aus.
Es erscheint das Dialogfenster Funktionsattribute, wo Sie unter Ikonenname einen
Eintrag machen.
Eine Liste der möglichen Ikonen können Sie mit der Werthilfetaste anzeigen lassen:
Weitere Optionen
• Soll die Ikone mit einem erklärenden Text angezeigt werden, geben Sie den gewünschten
Text in das Feld Ikonentext ein.
• Geben Sie eventuell einen Infotext ein. Das System zeigt den Infotext an, wenn der
Benutzer den Cursor auf die Ikone positioniert und dabei die rechte Maustaste gedrückt
hält.
Ortskonstanz definieren
Mit dem Attribut Ortskonstanz können Sie erreichen, daß sich Funktionen in der
Drucktastenleiste, insbesondere beim dynamischen Inaktivieren nicht verschieben, also
ortskonstant bleiben.
Vorgehensweise
1. Verzweigen Sie zum Arbeitsblatt [Seite 361] des Menu Painters.
2. Schalten Sie den Änderungsmodus ein.
3. Wählen Sie den Menüpafad Springen → Attribute → D-Tastenleiste.
Alternativ können Sie die "Sperren-Ikone" rechts neben der Kurzbeschreibung für die
Drucktstenleiste wählen.
4. Aktivieren Sie den Flag Ortskonstant und wählen Sie Weiter.
Ergebnis
Die "Sperren-Ikone" rechts neben der Kurzbeschreibung für die Drucktstenleiste schaltet um und
zeigt jetzt an.
Sie erreichen damit, daß inaktive Funktionen innerhalb der Drucktstenleiste zur Laufzeit grau
angezeigt werden. Dabei ist es unerheblich, ob die Funktion im Menu Painter oder dynamisch im
Programm inaktiviert wurde.
Trennstriche einfügen
Verwendung
Ähnlich, wie bei Menüs, können Funktionen in der Drucktastenleiste in logische Gruppen
eingeteilt werden. Solche Gruppierungen auf der Drucktastenleiste werden durch Trennstriche
hervorgehoben und können verwendet werden, um ähnliche Arbeitsabläufe zusammenzufassen.
Vorgehensweise
So gehen Sie vor, um einen Trennstrich für die Drucktastenleiste einzufügen.
1. Verzweigen Sie zum Arbeitsblatt des Menu Painters.
2. Schalten Sie den Änderungsmodus ein.
3. Setzen Sie den Cursor an die Position, an der ein Trennstrich eingefügt werden soll.
4. Wählen Sie den Menüpfad Bearbeiten→ Einfügen→ Trennlinie.
Ein entsprechendes Zeichen für den Trennstrich wird zu der Position eingefügt.
Beispiel:
Ergebnis
Die Drucktastenleiste hat für das obige Beispiel folgende Form:
Symbolleiste anlegen
• Die Symbolleiste hat für alle Oberflächen des R/3-Systems mit dem Statustyp Dynpro
oder Liste die gleiche Gestalt:
Voraussetzungen
Für alle aktiven Funktionen der Symbolleiste muß zuvor die Funktionstastenzuordnung definiert
werden. Siehe auch Tastenzuordnung definieren [Seite 377].
Der SAP Style Guide empfiehlt, daß in der Symbolleiste zumindest die Funktionen
Zurück, Beenden und Abbrechen aktiviert werden sollen.
Vorgehensweise
So legen Sie eine Symbolleiste im Menu Painter an:
1. Verzweigen Sie zum Arbeitsbaltt des Menu Painters.
2. Schalten Sie den Änderungsmodus ein.
3. Geben Sie den definierten Funktionscode im Bereich Symbolleiste über der
entsprechenden Ikone ein.
Status testen
So testen Sie Ihren Status vom Arbeitsblatt des Menu Painters aus:
1. Wählen Sie Oberfläche → Status testen.
Das System zeigt ein Dialogfenster zur Statussimulation an.
2. Geben Sie die Dynpronummer und den Titel ein, falls die Simulation für das
eingegebene Dynpro angezeigt werden soll. Machen Sie keine Angaben hierzu, so wird
die Simulation für ein leeres Testdynpro durchgeführt.
3. Wählen Sie Ausführen.
Es wird Dialogfenster mit Fensterkoordinaten angezeigt.
4. Wählen Sie Weiter.
Das System simuliert Ihren Status.
Status aktivieren
Um den Status zu aktivieren, wählen Sie Oberfläche → Aktivieren oder die entsprechende
Ikone. Beim Aktivieren führt das System automatisch eine Syntaxprüfung durch.
Prüfung starten
Um die erweiterte Prüfung zu starten, wählen Sie vom Einstiegsbild oder vom Arbeitsblatt des
Menu Painters Hilfsmittel → Erweiterte Prüfung.
Das System zeigt das Prüfergebnis in einer Baumstruktur an. Dabei wird zwischen zwei
Kategorien von Fehlern unterschieden:
• Warnungen
• Normverstöße
Warnungen beziehen sich auf Versäumnisse wie nicht definierte Funktionsbelegung oder
fehlende Direktanwahl. Bei Normverstößen handelt es sich um Verstöße gegen die SAP-
Richtlinien wie etwa falsche Funktionsbelegungen oder nicht adäquate Anordnung von
Funktionen in einem Menü.
Weitere Informationen
Mit dieser Info-Drucktaste können Sie nähere Informationen zu einem Fehler anzeigen lassen.
Markieren Sie dazu einen Knoten im Baumstruktur und wählen Sie die Info-Drucktaste. Sie
erhalten hier auch Informationen zu Vorgehensweise bei der Fehlerkorrektur. Wenn Sie lediglich
Warnungen oder Normverstöße markiert haben, zeigt das System die allgemeine Information zur
Prüfliste an.
Fehlerkorrektur
So können Sie Fehlerkorrekturen in der erweiterten Prüfung durchführen:
1. Öffnen Sie den jeweiligen Knoten in der Baumanzeige.
2. Wählen Sie ein Objekt aus der Prüfliste mit Doppelklick aus. Das System verzweigt zum
jeweilgen Arbeitsbereich des Menu Painters, in dem Fehler korrigiert werden können.
3. Führen Sie die Korrekturen im Änderungsmodus durch.
4. Kehren Sie mit F3 zurück zur Baumanzeige.
Status kopieren
Sie können einen neuen GUI-Status innerhalb eines Programms anlegen, indem Sie einen
bereits vorhandenen Status kopieren.
Dabei ist zwischen den folgenden Fällen zu unterscheiden:
• Status wird innerhalb eines Programms in einen anderen Zielstatus kopiert. Hier kann
wiederum zwischen 2 Fällen zu unterschieden werden:
a). Der Zielstatus übernimmt dieselben Teilobjekte. Die Statusreferenzen bleiben hierbei
vollständig erhalten, sodaß Änderungen an Teilobjekten in beiden Status sichtbar sind.
b). Der Zielsatus übernimmt nur teilweise dieselben Teilobjekte. Die einzelnen
Teilobjekte können explizit ausgewählt werden und werden dann ebenfalls kopiert. Im
neuen Status werden dann alle Referenzen auf die gewählten Teilobjekte durch
Referenzen auf deren Kopien ersetzt, sodaß Änderungen an diesen Teilobjekten nur im
Zielstatus sichtbar sind. Die Referenzen der übrigen (nicht ausgewählten) Teilobjekte
bleiben erhalten. Die untere Abbildung veranschaulicht dieses Prinzip.
T Tastenzuordnung
D Drucktastenleiste
Kopieren
M1 D1 T1 D1* T1*
Ausgewählte Teilobjekte
• Status wird in einen Zielstatus eines anderen Programms kopiert. Hierbei werden alle
vorhandenen Teilobjekte übernommen.
Wenn Sie die Status Ihres Programms standardisieren möchten, sollten Sie
dieselben Teilobjekte referenzieren wie im Original.
Vorgehensweise
So erstellen Sie vom Einstiegsbild des Menu Painters einen neuen Status innerhalb desselben
Programms durch Kopieren eines bereits vorhandenen Status:
1. Wählen Sie die Drucktaste Status.
Das System zeigt das Dialogfenster Status kopieren an. Standardmäßig stehen der
aktuelle Programm- und Statusname in den Feldern von und nach.
Beim Kopieren des Status in den Zielstatus eines anderen Programms entfällt das Dialogfenster
und die Auswahl (der Schritt 4), da hier alle Teilobjekte mitkopiert werden.
Menüleiste übernehmen
1. Legen Sie einen neuen Status an, dessen Referenz auf eine Menüleiste definiert werden
soll.
2. Wählen Sie im Arbeitsbaltt des Menu Painters die Funktion Bearbeiten → Übernehmen →
Tastenzuordnung übernehmen
1. Legen Sie einen neuen Status an, der die Tastenzuordnung referenzieren soll.
2. Wählen Sie im Arbeitsbaltt des Menu Painters die Funktion Bearbeiten → Übernehmen →
Tastenzuordnung oder die entsprechende Ikone .
Sie erhalten eine Liste aller Tastenzuordnungen, die für das aktuelle Programm angelegt
wurden.
3. Wählen Sie eine Tastenzuordnung mit Doppelklick aus.
Der Verweis auf die ausgewählte Tastenzuordnung wurde erstellt. Die Funktionen sind
allerdings noch alle deaktiviert.
4. Aktivieren Sie die Funktionen.
Drucktastenleiste übernehmen
1. Legen Sie einen neuen Status an, dessen Referenz auf eine Drucktastenleiste definiert
werden soll.
2. Wählen Sie die Funktion Bearbeiten → Übernehmen → DrTastenbelegung oder die
Zuordnung auflösen
Es gibt mehrere Möglichkeiten, eine Referenz aufzulösen. Am einfachsten ist es, den
bestehenden Verweis mit der neuen Information zu überschreiben.
Sie können auch die Funktion Bearbeiten → Initialisieren verwenden, um eine Funktionstasten-,
Menü- oder Drucktastenbelegung zu initialisieren.
Die nicht verwendeten Objekte sind also keinem Status zugeordnet. Wenn Sie
beispielsweise ein Menü im Arbeitsblatt löschen, löscht das System dieses Menü
nicht aus der Menüliste, obwohl es nicht mehr auf der Oberfläche erscheint. Das
Menü verbleibt also in der Menüliste und Sie haben die Möglichkeit, das Menü zu
einem späteren Zeitpunkt in einer anderen Statusreferenz wiederzuverwenden.
Oberflächenobjekte löschen
Um ein Teilobjekt zu löschen, müssen Sie das Teilobjekt explizit von der Liste löschen. Über
Oberfläche → Löschen → Teilobjekt können Sie jedes Teilobjekt in einer Anzeigeliste
löschen. Wird das entsprechende Objekt noch irgendwo im Programm verwendet, gibt das
System eine Warnmeldung aus. Sie können dann den Löschvorgang bestätigen oder über
Verwendungsnachweis eine Liste mit allen Fundstellen des Objekts anzeigen.
Wenn Sie ein Objekt aus einer Liste löschen, löscht das System das Objekt und alle
Zuordnungen zur Oberfläche Ihres Programms.
Funktionen
Die Ausführung einer Funktion erfolgt, wenn Sie in einem Menü eine Funktion, eine
Funktionstaste oder eine Drucktaste auswählen. Um die Verknüpfung zwischen dem
Oberflächenelement (Menüeintrag, Funktionstaste oder Drucktaste) und dem eigentlichen ABAP-
Programm zu realisieren, wird beim Anlegen der Oberflächenelemente im Menu Painter jeder
Funktion ein eindeutiger Funktionscode zugeordnet. Dieser wird beim Auslösen der
entsprechenden Funktion zur Laufzeit dem Systemfeld SY-UCOMM (Typ 1-Programme) bzw.
dem OK_CODE-Feld (Dialogprogrammierung) übergeben und kann dann vom ABAP-Programm
interpretiert werden.
Weitere Spezifizierung
• Bei der Definition eines Status können Funktionen aktiviert und deaktiviert werden
(Siehe auch: Funktionen aktivieren und deaktivieren [Seite 398]). Dies erlaubt die
Benutzung der gleichen vordefinierten Menüleisten, Drucktastenleisten und
Tastenzuordnungen auf allen Status einer Anwendung, da Funktionen, die in einem
Status nicht unterstützt werden, deaktiviert werden.
• Weiterhin können Funktionen dynamisch deaktiviert werden. Dadurch brauchen Sie
keinen weiteren Status anzulegen, wenn Sie nur einzelne Funktionen deaktivieren wollen
(Siehe auch: Funktion zur Laufzeit deaktivieren [Seite 400])
• Um zusätzlich noch die Dynamik eines Status zu erhöhen, können Sie auch die
Funktionstexte und die Menütexte dynamisch verändern (Siehe auch: Dynamische
Funktionstexte definieren [Seite 401] und Dynamischen Menütext definieren [Seite 403]).
Funktionstypen verwenden
Wenn Sie Funktionen anlegen, definieren Sie einen Funktionscode und einen Funktionstext.
Wenn der Benutzer eine Funktion auswählt, stellt das System den Funktionscode in das
Systemfeld SY-UCOMM. Der Code macht dem System die Funktionen bekannt, die der Benutzer
ausgewählt hat.
Sie können Ihre Funktionen auch einem Typ zuordnen. Funktionstypen teilen dem System z.B.
mit, wann oder wie eine Funktion ausgeführt werden soll. Es gibt folgende Funktionstypen:
Typ Bedeutung
Normale Funktionscodebehandlung durch das ABAP-Programm (z.B. in einem PAI-
Modul)
E Löst ein “at exit-command”-Modul im PAI-Bereich (Process After Input) des Dynpros
aus (MODULE <xxx> AT EXIT-COMMAND). Wählt der Benutzer eine Funktion des
Typs E, führt das System vor der Durchführung von Eingabeprüfungen das “at exit-
command”-Modul aus.
T Ruft eine Transaktion auf. Aktivierung einer Funktion vom Typ T hat die gleiche
Wirkung wie die Anweisung LEAVE TO TRANSACTION. Der Benutzer kann nicht zur
ursprünglichen Transaktion zurückkehren.
S Löst Systemfunktionen aus, die intern in SAP-Standardanwendungen verwendet
werden. Sie sollten den Typ S nicht für Ihre eigenen Funktionen verwenden.
P Das Ergebnis eines solchen Funktionsaufrufs ist das Auslösen einer lokal auf dem GUI
definierten Funktion. Die Funktion wird nicht an das ABAP-Programm weitergereicht
(kein SY-UCOMM bzw OK_CODE), sondern wird auf dem GUI interpretiert. Dies ist
zur Zeit nur bei TabStrips (Screen Painter) möglich, wenn diese entsprechend
definiert wurden.
Funktionstypen zuordnen
So ordnen Sie bei geöffnetem Status Funktionstypen zu:
1. Wählen Sie eine Funktion mit dem Cursor aus und führen Sie einen Doppelklick aus.
Auf dem Dialogfenster Funktionsattribute erhalten Sie einen Überblick über alle
Funktionsattribute.
2. Wählen Sie im Feld Funktionstyp einen Funktionstyp aus.
3. Verlassen Sie das Dialogfenster mit ENTER.
Direktanwahl definieren
Bei der Direktanwahl können Sie über einen einzelnen Buchstaben oder über eine Kombination
von Buchstaben einen Menüpfad angeben und damit auf Funktionen eines Menüs zugreifen,
ohne dabei die Maus zu verwenden.
Beispiel
Sie können die Funktion Löschen im aktiven Menü Bearbeiten mit dem Buchstaben L angeben.
Sie können auch den gesamten Menüpfad mit der entsprechenden Buchstabenkombination und
einem vorangestellten Punkt erreichen. In unserem Fall geben Sie Kombination.BL im
Eingabefeld ein.
Regeln
• Der Buchstabe für die Direktanwahl einer Funktion muß innerhalb einer Menüleiste für
die Menüs und innerhalb eines Menüs für die jeweiligen Menüfunktionen eindeutig sein.
• Der Buchstabe muß im vollständigen Namen der Funktion enthalten sein. Für die
Funktion Anlegen können Sie beispielsweise nicht den Buchstaben Z für die
Direktanwahl definieren.
Direktanwahl pflegen
Eine Direktanwahl muß nicht explizit gepflegt werden. Sobald Sie die Oberfläche
generieren, legt das System automatisch eine Direktanwahl mit Vorschlagswerten
fest. Falls erforderlich, können Sie die Direktanwahl ändern.
Vorgehnsweise
So gehen Sie vor, um den Funktionscode im Statusarbeitsblatt zu aktivieren bzw. zu
deaktivieren:
Einzelne Funktionen
1. Positionieren Sie den Cursor auf der entsprechenden Funktion in der Auflistung.
2. Wählen Sie dann den Menüpfad Zusätze → Funktion Aktiv <-> Inaktiv.
Damit ändert sich die Schriftfarbe der Funktionscodes - und der Funktionsbezeichnung. Das
System aktiviert nun inaktive Funktionen bzw. deaktiviert aktive Funktionen.
Mehrere Funktionen
1. Um mehrere Funktionen im aktuellen Status zu aktivieren bzw. zu deaktivieren, wählen Sie
Zusätze → Aktive Funktionen im aktuellen Status. Das System zeigt eine Liste mit allen
aktiven Funktionen an, die im Status verwendet werden.
2. Sie können nun den Funktionscode für eine Auswahl von Funktionen deaktivieren, indem Sie
die Markierung für das entsprechende Ankreuzfeld aufheben.
3. Wählen Sie Übernehmen.
Vorgehensweise
So definieren Sie einen dynamischen Text für einen Funktionsnamen vom Arbeitsblatt aus:
1. Positionieren Sie den Cursor auf eine leere Funktionszeile.
2. Wählen Sie Bearbeiten → Einfügen → Funktion mit dyn. Text.
Das System zeigt das Dialogfenster Funktion mit dynamischem Funktionstext einfügen
an.
3. Tragen Sie einen Funktionscode ein.
4. Wählen Sie Weiter.
Das System zeigt das Dialogfenster Funktionstext eingeben an.
5. Tragen Sie den Namen eines Programm- oder Dictionary-Feldes ein.
6. Wählen Sie Weiter.
Das System zeigt das Feld in <> (spitzen Klammern) an:
Wie Sie einen dynamischen Text für ein Menü anlegen, erfahren Sie unter
Dynamischen Menütext definieren [Seite 403] .
Funktionstexte ändern
Sie können einen statischen Namentext in einen dynamischen umwandeln, und umgekehrt. So
wandeln Sie einen statischen Text in einen dynamischen Text um:
1. Wählen Sie die entsprechende Funktion aus und führen Sie einen Doppelklick auf der
entsprechenden Zeile aus.
Das Dialogfenster Funktionsattribute erscheint.
Da der Feldname zur Aufnahme des Funktionsnamens bis zu 132 Bytes lang sein
darf, kann das System das Feld nicht immer in voller Länge anzeigen. Sie können
den Feldnamen ändern, indem Sie den Funktions- oder Menünamen durch
Doppelklick auswählen.
Beispiel
Angenommen, Ihr Programm enthält das Dynpro 100. Soll das Dynpro mit den Menüs,
Symbolleiste und Drucktastenleiste des Status CREATE angezeigt werden, müssen Sie im PBO-
Modul des Dynpros 100 folgende Anweisung eingeben:
SET PF-STATUS 'CREATE'.
Um das Dynpro 100 mit der Titelleiste ‘100’ aufzurufen, fügen Sie die folgende Anweisung im
gleichen PBO-Modul ein:
SET TITLEBAR '100'.
Ein gesetzter GUI-Status oder GUI-Titel bleibt solange gültig, bis Sie einen neuen
GUI-Status oder -Titel explizit gesetzt haben. Wenn Sie in obigem Beispiel Dynpro
200 aufrufen, ohne einen neuen Status angelegt zu haben, wird das Dynpro 200 also
mit dem GUI-Status CREATE und Titelleiste 100 angezeigt.
Funktionscodeabfrage im Programm
Wenn Sie neue Funktionen für Menüs oder die Symbol- und Drucktastenleisten anlegen, müssen
Sie jeder Funktion einen eindeutigen Funktionscode zuweisen. Dieser Code steht im Systemfeld
SY-UCOMM und im Dynprofeld OK_CODE, wenn die Funktion von der Oberfläche (etwa mit
einer Menüauswahl) ausgelöst wurde.
Das Systemfeld SY-UCOMM enthält immer den aktuellen Funktionscode. Für dieses Feld
müssen Sie in Ihrem Modulpool keine Datenzuweisung vornehmen.
OK_CODE
Das Feld OK_CODE enthält den Funktionscode in Ihrem Programm. OK_CODE ist immer das
letzte Feld in der Feldliste eines Dynpros. Diesem Feld müssen Sie im Screen Painter einen
Namen zuordnen. Traditionell lautet der Name für dieses Feld auch "OK_CODE". Sie können
allerdings einen anderen Namen wählen. Nach der Zuordnung des Namens ist für das Feld
OK_CODE in Ihrem Modulpool eine Datenzuweisung vorzunehmen.
Beispiel
Enthält Ihr GUI-Status beispielsweise die Funktionscodes ‘BACK’, ‘EXIT’ und ‘SAVE’, müssen
Sie in Ihrem PAI-Modul folgendes eingeben:
MODULE USER_COMMAND_0100.
CASE OK_CODE.
WHEN 'BACK'.
...
WHEN 'EXIT'.
...
WHEN 'SAVE'.
...
ENDCASE.
ENDMODULE.
Function Builder
Mit Hilfe des Function Builders der ABAP Workbench können Sie in der Bibliothek bereits
vorliegende Bausteine verwalten, neue Funktionsbausteine entwickeln und Bausteine in der
integrierten Testumgebung testen.
Verwaltung Enthält Informationen über die Entwicklungsklasse, die Person, die für
den Baustein verantwortlich ist, eine Kurzbeschreibung des Bausteins.
Import Enthält eine Liste aller Formalparameter, die für die Datenübergabe
an einen Funktionsbaustein verwendet werden. Weitere Informationen
hierzu finden Sie in Informationen über Schnittstellenparameter
anzeigen [Seite 415].
Export Enthält eine Liste aller Formalparameter, die für die Datenübergabe
aus einem Funktionsbaustein an Ihr Programm verwendet werden.
Weitere Informationen hierzu finden Sie in Informationen über
Schnittstellenparameter anzeigen [Seite 415].
Changing Enthält eine Liste aller Formalparameter, die für die Datenübergabe
an einen Funktionsbaustein und zurück verwendet werden. Weitere
Informationen hierzu finden Sie in Informationen über
Schnittstellenparameter anzeigen [Seite 415].
Eine wesentliche Rolle spielen Funktionsbausteine bei der Modularisierung von Anwendungen.
Eine Funktionalität kann in einer Modularisierungseinheit zusammengefaßt werden.
Mit der Modularisierungstechnik können zum einen Redundanzen vermieden werden, zum
anderen wird die Struktur von Programmen und deren Lesbarkeit verbessert.
Modularisierte Programme sind auch leichter zu pflegen und zu aktualisieren.
Das Prinzip der Modularisierung:
Funktionsgruppen
Im Function Builder werden logisch zusammengehörende Funktionsbausteine in
Funktionsgruppen verwaltet. Sie dienen ausschließlich als Container für Funktions-bausteine.
Funktionsbausteine - Organisation
INCLUDE L<fgrp>TOP. FUNCTION-POOL < fgrp >.
TABLES: ....
TYPES: ....
DATA: ....
FUNCTION <name>.
INCLUDE L<fgrp>UXX. INCLUDE L< fgrp >U01 .....
INCLUDE L< fgrp >U02 ENDFUNCTION.
INCLUDE L< fgrp >U03
.......
Rahmenprogramm SAPL<fgrp>
Mit jeder Funktionsgruppe <fgrp> wird gleichsam ein Rahmenprogramm vom System erstellt, der
die Bezeichnung SAPL<fgrp> erhält.
Das Rahmenprogramm enthält lediglich INCLUDE-Anweisungen für die folgenden INCLUDE-
Programme:
• Im INCLUDE-Programm L<fgrp>TOP werden globale Daten für die Funktionsgruppe
deklariert.
• Im INCLUDE-Programm L<fgrp>UXX werden die einzelnen Funktionsbausteine
aufgenommen. Die Nummerierung XX richtet sich nach der zeitlichen Reihenfolge der
Aufnahme der Funktionsbausteine. So enthalten die INCLUDES L<fgrp>U01, L<fgrp>U02
das Coding der beiden ersten Funktionsbausteine der Funktionsgruppe.
• Die INCLUDE-Programme L<fgrp>F01, L<fgrp>F02,... können zur Codierung von
Unterprogrammen (Forms) verwendet werden, auf die alle Funktionsbausteine der Gruppe
durch interne Aufrufe zugreifen können.
Funktionsgruppen anzeigen
Um eine Funktionsgruppe anzuzeigen, wählen Sie auf dem Einstiegsbild des Function Builders
Springen → FGruppenverwaltung → Gruppe anzeigen. Das System fordert Sie in einem
Dialogfenster auf, den Namen der Funktionsgruppe einzugeben.
3. Geben Sie den Namen eines Funktionsbausteins ein, den sie neu anlegen, testen oder
dessen Teilobjekte Sie anzeigen bzw. ändern wollen.
Für die Auswahl von Teilobjekten stehen folgende Verzweigungen zur Verfügung:
4. Wählen Sie eine Verzweigung aus der Liste der Teilobjekte aus.
5. Wählen Sie entweder die Funktion Anzeigen oder Ändern.
Funktionsbausteine suchen
Bevor Sie eine neue Anwendung anlegen, können Sie im Function Builder nach bereits
bestehenden Funktionen suchen, die Ihre Anforderungen erfüllen. Hierzu verwenden Sie das
Repository-Informationssystem oder die Anwendungshierarchie.
Geben Sie für eine Schnellsuche eine Funktionsgruppe oder eine Entwicklungsklasse ein. Sie
können Ihre Suche auch auf bestimmte Funktionsbausteine beschränken. Sie können z.B. nach
Bausteinen für Remote Function Calls suchen oder nach Bausteinen, die in Verbuchungstasks
verwendet werden.
Sie können auch eine Liste erstellen, in der nur die Funktionsbausteine enthalten sind, die für
den Kunden freigegeben sind. Weitere Informationen über die Suche mit Hilfe des Repository
finden Sie in Das Repository-Infosystem [Seite 498].
Um herauszufinden, welche Parameter für den Aufruf eines Funktionsbausteins erforderlich sind,
geben Sie im Einstiegsbild des Function Builders den Namen des Funktionsbausteins ein und
wählen die Teilkomponente Schnittstelle aus.
Die folgende Anzeige bringt verschiedene Teilsichten hervor, die weiterführende Informationen
zur Schnittstelle (Verwaltung, Formalparameter, Ausnahmen und Dokumentation) enthalten. In
unserem Beispiel bekommen wir eine Liste aller Import-Parameter und deren weitere
Charakterisierung angezeigt:
Von besonderer Bedeutung ist hier die Information darüber, welche der Parameter der Liste beim
Funktionsaufruf auf jeden Fall versorgt werden müssen. Dazu dient das Ankreuzfeld Optional.
Ist dieses Feld nicht markiert, so muß der entsprechende Parameter beim Funtionsaufruf
berücksichtigt werden.
Durch Auswählen der Teilsichten Changing und Tabellen erhalten Sie auch Informationen,
welche Changingparameter und Tabellen übergeben werden müssen und welche optional sind.
Da Exportparameter des Funktionsbausteins immer optional sind, entfällt hier das entsprechende
Ankreuzfeld.
Weiterhin kann der Datentyp der Formalparameter duch einen Verweis auf Datentypen aus dem
Typ-Pool, vorgegeben werden. Ein Typ-Pool wird innerhalb des ABAP Dictionary gepflegt und
erlaubt es, benutzerspezifische Datentypen global zu definieren. Ein Typ-Pool muß allerdings im
TOP-Include der Funktionsgruppe aufgenommen werden, um eine Verwendung dieser
vordefinierten Datentypen für Formalparameter zu gewährleisten. Diese vorgegebenen
Datentypen der Formalparameter können im Feld Bezugstyp aufgeführt werden.
Unter Bezugsfeld/-struktur sind ABAP Dictionary-Referenzstrukturen angegeben, damit das
System zur Laufzeit den aktuellen Parameter mit der entsprechenden Struktur bzw. mit dem Feld
aus dem Dictionary vergleichen kann.
Das Feld Vorschlag definiert einen Standardwert zum Parameter. Unter Referenz wird
angegeben, ob der Parameter als Referenz oder als Wert aufgerufen wird.
Weitere Informationen zur Charakterisierung der Parameter erhalten Sie unter Parameter und
Ausnahmen festlegen [Seite 427].
Die Teilsicht Dokumentation enthält kurze Informationen über die Bedeutung der Parameter und
Ausnahmen. Mit einem Doppelklick auf einen bestimmten Parameter oder eine Ausnahme
erhalten Sie hierzu weiterführende Informationen.
Eine ausführliche Beschreibung der Aufgabe des Funktionsbausteins erhalten Sie, indem Sie
das Feld Kurztext mit Doppelklick auswählen oder die Funktion Fbausteindoku. wählen. Es
erscheint ein Dokumentationstext für den gesamten Funktionsbaustein.
• Mit der Option EXPORTING geben Sie die Aktualparameter ai an die Formal-
eingabeparameter fi weiter. Die Formalparameter müssen im Funktionsbaustein als
Import-Parameter deklariert werden. Diese Parameter können einen beliebigen
Datentyp aufweisen. Bei angegebenem Bezugsfeld findet eine eine Überprüfung statt.
• Mit der Option IMPORTING geben Sie dagegen die Formalausgabeparameter fi des
Funktionsbausteins an die Aktualparameter ai weiter. Die Formalparameter müssen im
Funktionsbaustein als Export-Parameter deklariert werden. Es sind beliebige
Datentypen der Parameter möglich.
• Mit der Option CHANGING geben Sie die Aktualparameter ai an die Formalparameter fi
weiter. Nach der Verarbeitung des Funktionsbausteins gibt das System die (geänderten)
Werte der Formalparameter fi an die Aktualparameter ai zurück. Die Formalparameter
müssen im Funktionsbaustein als CHANGING-Parameter deklariert werden. Auch diese
Parameter können einen beliebigen Datentyp aufweisen.
• Mit der Option TABLES übertragen Sie interne Tabellen zwischen den Aktual- und den
Formalparametern. Dabei erfolgt die Übertragung der internen Tabellen stets über
Referenz. Die Parmeter dieser Option müssen auf interne Tabellen verweisen.
• Mit der Option EXCEPTIONS wird die Behandlung von Ausnahmen ermöglicht.
Ausnahmen sind als spezielle Parameter dafür vorgesehen, um auf mögliche
Fehlerereignisse während der Abarbeitung des Funktionsbausteins zu reagieren. Die
Ausführung des Funktionsbausteins wird in solchen Fällen unterbrochen. Wird also
konkret eine Ausnahme ei ausgelöst, unterbricht das System die Abarbeitung des
Funktionsbausteins und gibt keine Werte vom Funktionsbaustein an das Programm
weiter. Das aufrufende Programm nimmt die Ausnahme ei entgegen durch Zuweisung
des Wertes ri an das Systemfeld SY-SUBRC, der als Rückgabecode fungiert. Dabei
muß ri als Zahlenliteral angegeben werden. Im aufrufenden Programm kann dann eine
weitere Auswertung des Systemfeldes vorgenommen werden.
Durch die Angabe von ERROR_MESSAGE in der EXCEPTION-Liste können Sie die
Ausnahmenbehandlung in Funktionsbausteinen beinflussen. Normalerweise sollten
Nachrichten in Funktionsbausteinen nur über die Ausnahmebehandlung (mit Hilfe der
Anweisungen MESSAGE....RAISING oder mit RAISE innerhalb des Funktionsbausteins)
aufgerufen werden. Mehr dazu erfahren Sie unter Überblick über das Coding von
Funktionsbausteinen [Seite 429]
Mit ERROR_MESSAGE bewirken Sie, daß das System Nachrichten, die im
Funktionsbaustein ausnahmsweise ohne diese explizite Behandlung aufgerufen werden,
wie folgt behandelt:
− Nachrichten der Klassen S, I, und W werden ignoriert (bei Hintergrund-verarbeitung
im Protokoll vermerkt).
− Nachrichten der Klassen E und A beenden die Ausführung des Funktions-bausteins
als ob die Ausnahme ERROR_MESSAGE ausgelöst wurde (SY-SUBRC wird auf rE
gesetzt).
Wenn Sie OTHERS in der EXCEPTION-Liste angeben, können Sie auch alle
Ausnahmen berücksichtigen, die nicht ausdrücklich in der Liste aufgeführt werden. Diese
fungiert dann als Standardausnahme.
Für unterschiedliche Ausnahmen kann die gleiche Zahl ri verwendet werden, sofern
eine weitere Spezifizierung der Ausnahme nicht verlangt wird.
Um einen Funktionsbaustein in Ihrem Coding aufzurufen, können Sie die Funktion Muster im
ABAP-Editor verwenden. Führen Sie dazu folgende Arbeitsschritte durch:
1. Stellen Sie den Cursor an die Stelle in Ihrem Coding, wo die Funktion aufgerufen werden
soll.
2. Wählen Sie die Funktion Muster.
3. Auf dem erscheinenden Dialogfenster markieren Sie das Auswahlfeld vor CALL
FUNCTION.
7. Sofern Sie Information zu dem Funktionsbaustein benötigen, können Sie diese über die
Informationsikone abrufen. Es erscheint das Dialogfenster Hilfe, auf dem Sie den
Auswahlknopf Funktionsbaustein markieren und den Namen des Funktionsbausteins
eintragen. Wählen Sie dann Weiter.
Sie verzweigen in die Schnittstellendefinition des Funktionsbausteins und können von
dort aus zu den anderen Elementen des Funktionsbausteins navigieren.
Die nicht als Kommentar gekennzeichneten Parameter müssen auf jeden Fall von
Ihrem Programm mit Werten versorgt werden. Sie können dazu Festwerte oder
Parameter benutzen.
Die Anweisung CALL FUNCTION kann auch mit anderen Parametern verwendet werden, wenn
die Funktion in einer Verbuchungstask oder auf Remote-Maschinen ablaufen soll.
Wenn ein Funktionsbaustein in einer Verbuchungstask läuft, verarbeitet das System den
Baustein asynchron. Der Aufruf wird dann nicht sofort durchgeführt. Stattdessen wartet das
System bis die nächste Aktualisierung der Datenbank mit dem Befehl COMMIT WORK
angestoßen wird. Einen Funktionsbaustein auf einer Remote-Maschine ablaufen zu lassen,
bedeutet, daß eine Funktion eines anderen SAP-Systems oder Fremdsystems aufgerufen wird.
Weitere Informationen darüber, wie Sie Funktionsbausteine aus Ihren Programmen aufrufen,
finden Sie unter Funktionsbausteine im ABAP/4-Benutzerhandbuch [Extern].
1. Überprüfen Sie ob ein ähnlicher Funktionsbaustein bereits existiert. Sofern dies nicht
zutrifft, fahren Sie weiter fort.
2. Legen Sie eine Funktiongsgruppe an, falls noch keine geeignete Gruppe existiert.
3. Legen Sie den Funktionsbaustein an.
4. Definieren Sie die Schnittstelle des Funktionsbausteins, indem Sie dessen Parameter
und Ausnahmen festlegen.
5. Programmieren Sie den Funktionsbaustein und erweitern Sie eventuell das
Rahmenprogramm und die globalen Daten.
6. Aktivieren Sie den Baustein.
7. Testen Sie den Baustein.
8. Dokumentieren Sie den Baustein und seine Parameter für andere Benutzer.
9. Geben Sie den Baustein zur allgemeinen Benutzung frei.
Der Name der Funktionsgruppe kann bis zu einer maximalen Länge von 26
alphanumerischen Zeichen frei gewählt werden. Dabei sollte das erste Zeichen die
übliche Konvention berücksichtigen (A-X für SAP-interne Entwicklung, Y und Z für
Kundenentwicklungen).
Mit einer neuen Funktionsgruppe wird automatsch ein Rahmenprogramm erstellt, der von Anfang
an zwei Include-Dateien enthält. Diese können wie üblich im Repository Browser angezeigt
werden:
Der Name des zugehörigen Rahmenprogramms wird vom System aus vergeben. Ihm ist der
Präfix SAPL vorangestellt, gefolgt vom Namen der Funktionsgruppe. Das Rahmenprogramm
der Funktionsgruppe Y101 heißt SAPLY101.
Die Bezeichnung der Include-Dateien beginnt mit L, gefolgt vom Namen der Funktionsgruppe
und endet mit UXX oder mit TOP für das TOP-Include. Das TOP-Include enthält Deklarationen
globaler Daten, die von allen Funktionsbausteinen der Funktionsgruppe gemeinsam verwendet
werden. Die andere Include-Datei dient innerhalb des Rahmenprogramms zur Aufnahme der
Funktionsbausteine innerhalb der Funktionsgruppe.
3. Geben Sie auf dem Dialogfenster Funktionsgruppe angeben eine Funktionsgruppe an, in
der der Funktionsbaustein zugeordenet werden soll.
Das System verzweigt zum Bild Fbaustein anlegen in das Teilbild Verwaltung, in dem
weitere Angaben zum Funktionsbaustein gefordert werden.
1. Geben Sie im Einstiegsbild des Function Builders den Namen des Funktionsbausteins ein.
2. Wählen Sie den Auswahlknopf Schnittstelle und anschließend die Taste Ändern.
3. Zu den jeweiligen Parametern (Import, Changing, Export oder Tabelle) geben Sie,soweit
erforderlich, weiterführende Informationen ein:
Feld Bedeutung
Parameter Die Bezeichnung des Formalparameters dient zur Identifikation
Bezugsfeld/ Angabe einer Spalte der Datenbanktabelle, einer Komponente der
Dictionary-Struktur oder der gesamten Dictionary-Struktur. Diese
-struktur
Angabe entspricht dem Dictionary-Feldnamen in der Spalte
Referenzfeld/Referenzstruktur.
Verwenden Sie dieses Feld, wenn Sie den Parameter wie ein Dictionary-
Feld anlegen möchten. Sie sollten eine Referenzstruktur immer dann
verwenden, wenn die Daten, die dieser Parameter enthält, in exakt
derselben Struktur vorliegen müssen wie im Referenzfeld (z.B. wenn
neue Datensätze in eine Datenbank geschrieben werden).
Bezugstyp Unter Bezugstyp können alle systemweit bekannten generischen und
vollständigen Datentypen angegeben werden.
Weitere Informationen erhalten Sie im ABAP-Handbuch unter
Datentypen [Extern].
Vorschlag Der Standardwert des Parameters. Gilt nur für Import- und Changing-
Parameter. Das System übergibt diesen Wert an den Funktionsbaustein,
wenn der Aufrufer einen eigenen Wert für diesen Parameter festlegt.
Referenz Die Parameterreferenz. Markieren Sie dieses Feld, wenn Sie möchten,
daß der Parameter als Referenz und nicht als Wert aufgerufen wird.
Wird ein Parameter als Referenz aufgerufen, verweist das System auf
den ursprünglichen Parameter, ohne ihn zu kopieren. Statt mit einer
Kopie arbeitet der Funktionsbaustein dann mit dem ursprünglichen
Parameter und ändert diesen, falls erforderlich, ab. Tabellen werden
immer per Referenz übergeben.
Hauptfunktionsprogramm
Das Hauptfunktionsprogramm einer Funktionsgruppe wird vom Function Builder in einem Include
L<funktgrp>UXX generiert, der nur vom Function Builder selbst bearbeitet werden darf. Für die
Funktionsgruppe FGRP beispielsweise würde das Hauptfunktionsprogramm LFGRPUXX heißen.
Funktionsbausteine programmieren
Ist die Schnittstelle des Funktionsbausteins festgelegt, so kann mit der Programmierung des
Funktionsbausteins begonnen werden.
Auf dem Einstiegsbild des Function Builders markieren Sie Auswahlknopf Quelltext. Damit
verzweigen Sie in den ABAP-Editor, in dem Sie Ihre Anweisungen zwischen FUNCTION und
ENDFUNCTION einfügen.
Die definierten Parameter und Ausnahmen erscheinen als Kommentare am Anfang des
Quelltextes:
Datenbehandlung in Funktionsbausteinen
• Export- und Importparameter werden nicht im Quelltext des Funktionsbausteins
deklariert. Das System übernimmt diese Aufgabe und verwendet dazu ein INCLUDE-
Programm, das eine Liste der definierten Parameter als Kommentarzeilen in den
Quelltext einfügt.
• Lokale Datentypen und Objekte können Sie in Funktionsbausteinen genauso wie in
Unterprogrammen deklarieren.
• Sie können Datendeklarationen mit den Anweisungen TYPES und DATA in L<fgrp>TOP
schreiben. Diese Daten sind dann global für alle Funktionsbausteine einer Gruppe. Das
System erstellt die Daten, sobald der erste Funktionsbaustein aufgerufen wird, und
speichert immer die Werte des zuletzt aufgerufenen Funktionsbausteins.
Ausnahmen auslösen
Innerhalb eines Funktionsbausteins sind alle Ausnahmen durch ihre definierten Bezeichner
verfügbar. Die Ausnahmen können vom System oder vom aufrufenden Programm behandelt
wird. Darüber entscheiden Sie erst beim Funktionsaufruf, etwa durch Zuweisung eines
numerischen Wertes an die entsprechenden Ausnahmen. Näheres finden Sie dazu unter
Funktionsbausteine aus Ihrem Coding aufrufen [Seite 418]
Syntax
RAISE <Ausnahme>.
MESSAGE..... RAISING <Ausnahme>.
Die Wirkung dieser Anweisungen hängt davon ab, ob die Ausnahme vom aufrufenden Programm
oder vom System verarbeitet wird.
• falls die RAISE-Anweisung die Ausnahme auslöst und das aufrufende Programm die
Verarbeitung der Ausnahme aufnimmt, so wird die Ausführung des Funktionsbausteins
beedet und der numerische Wert, der dieser Ausnahme beim Aufruf zugewiesen wurde,
ins Systemfeld SY-SUBRC gestellt. Eine weitere Auswertung erflogt dann im
aufrufenden Programm.
Wird aber die Ausnahme nicht vom aufrufenden Programm behandelt, erzeugt das
System einen Laufzeitfehler.
• Mit der Anweisung MESSAGE..... RAISING verläuft die Verarbeitung analog, falls eine
Behandlung im aufrufenden Programm vorgesehen ist. Im entgegengesetzten
Fall reagiert das System nicht mit einem Laufzeitfehler, sondern setzt die
Verarbeitung fort und sendet eine duch Nachrichtentyp definierte Nachricht. Dazu
müssen Sie die MESSAGE-ID in der ersten Anweisung des INCLUDE-
Programms L<fgrp>TOP angeben. Die Anweisung MESSAGE..... RAISING trägt
zudem noch Werte in die folgenden Systemfelder ein.
SY-MSGID (Meldungskennung)
SY-MSGTY (Meldungstyp)
SY-MSGNO (Meldungsnummer)
SY-MSGV1 bis SY-MSGV4 (Inhalt der Felder <f1> bis <f4>, die in die Meldung
eingeschlossen sind).
Für weitere Information lesen Sie auch die Schlüsselwortdokumentation zu MESSAGE).
Um das Vorgehen zu veranschaulichen, geben wir das folgende Beipiel an:
Wenn N1 nicht gleich Null ist, wird Z1 durch N1 dividiert. Andernfalls wird die
Ausnahme DIV_ZERO ausgelöst.
Nach dem Start des Programms MDTEST sieht die Ausgabe so aus:
Result = 1,500000
Wenn Sie in der EXPORTING-Liste N1 = 4 durch N1 = 0 ersetzen, verarbeitet das
Programm MDTEST die Ausnahme DIV_ZERO, indem es SY-SUBRC den Wert 1
zuweist. Dadurch entsteht folgende Ausgabe:
Division by zero
Funktionsbausteine testen
Bevor Sie neue Funktionsbausteine zur allgemeinen Verwendung freigeben, sollten Sie sie mit
Hilfe der Testumgebung des Function Builders testen. Sie können mit dieser Testumgebung
auch Funktionen anderer Entwickler prüfen, bevor Sie diese Bausteine von Ihrem Programm aus
aufrufen. In der Testumgebung der Bibliothek können Sie ermitteln, ob eine Funktion korrekt
abläuft, und anzeigen, ob der Baustein die erwarteten Ergebnisse liefert. So führen Sie einen
Testlauf durch:
1. Wählen Sie auf dem Einstiegsbild des Function Builders Einzeltest.
Das System verzweigt zum Bild Funktionsbaustein testen. Auf diesem Bild werden alle
Import- und Changingparameter des Funktionsbausteins angezeigt:
2. Geben Sie an, welche Daten Sie von Ihrem Programm an den Funktionsbaustein
übergeben möchten.
Geben Sie für die entsprechenden Import-, Changing- und Tabellen-Parameter Werte
ein. Für Parameter mit Bezugsfeld geben Sie den Wert in das angezeigte Feld ein. Um
Tabellen-/Struktur-Parameter einzugeben, wählen Sie den Parameternamen mit
Doppelklick aus.
3. Wählen Sie Ausführen.
Das System führt den Funktionsbaustein mit Ihren Eingabewerten aus und zeigt die
Werte der sich daraus ergebenden Export-Parameter an:
Beim Test eines Funktionsbausteins zeigt das System alle Ausnahmen an. Das System gibt
zudem die Zeit, die zur Ausführung des Bausteins benötigt wird, in Mikrosekunden an. Es
handelt sich hierbei um die Messung der Gesamtverarbeitungszeit. In ihr sind neben der reinen
Bearbeitungszeit auch Unterbrechungen enthalten. Betrachten Sie die angegebene
Gesamtverarbeitungszeit deshalb nur als Anhaltspunkt.
Weitere Testoptionen
Die Testumgebung bietet noch weitere Möglichkeiten außer der einfachen Durchführung eines
Funktionsbausteins. Sie können darüber hinaus einen Testlauf im Debugger durchführen oder
mit Hilfe einer Laufzeitanalyse eine Meßdatendatei der Funktion anlegen. So testen Sie einen
Funktionsbaustein im Testmodus:
1. Wählen Sie auf dem Einstiegsbild des Function Builders Einzeltest.
2. Geben Sie an, welche Daten Sie von Ihrem Programm an den Funktionsbaustein
übergeben möchten.
3. Wählen Sie Debugging.
Das System führt den Funktionsbaustein im Testmodus aus. Sie können Schritt für
Schritt durch das Coding der Funktion gehen und alle im Debugger [Seite 443] zur
Verfügung stehenden Möglichkeiten nutzen.
Um die Performance eines Funktionsbausteins zu testen, wählen Sie auf dem Bild
Funktionsbaustein testen die Funktion Laufzeitanalyse (Transaktion SE30). Das System führt
den Funktionsbaustein aus und zeichnet die Ausführungszeiten für z.B. Tabellenzugriffe oder
modulare Einheiten auf. Wählen Sie Ausw. d. Laufzeita., um die Ergebnisse der Analyse
anzuzeigen.
Schnittstellendokumentation
Die Parameterdokumentation sollte Informationen zu den einzelnen Parametern und Ausnahmen
enthalten.
1. Verzweigen Sie in den Function Builder und geben Sie den Namen des zu
dokumentierenden Funktionsbausteins an.
2. Wählen Sie Auswahlknopf Schnittstelle.
3. Führen Sie die Funktion Ändern aus.
4. Lassen Sie sich die Teilsicht Dokumentation anzeigen.
Sie erhalten eine Liste aller verwendeten Parameter und Ausnahmen.
5. Geben Sie einen Kurztext für jeden Eintrag an.
6. Sichern Sie Ihre Angaben.
Funktionsbausteindokumentation
Die Funktionsbausteindokumentation enthält weitere Informationen zur Funktionalität, die der
Funktionsbaustein zur Verfügung stellt.
Dieser Dokumentation kommt eine wesentliche Bedeutung zu. Da Funktionsbausteine für einen
anwendungsübergreifenden Einsatz zur Verfügung gestellt werden, sollte die die in der
Dokumentation enthaltene Information zur Funktionalität ausreichend sein, um so der Analyse
des Quelltextes völlig zu entgehen.
Funktionalität erläutert wird, zum anderen aber auch Beispielaufrufe, Hinweise zur
Verwendung und zu weiteren Informationsquellen eingegeben werden:
Die Bedienung des SAP-Script-Editors unterscheidet sich beträchtlich von der des
Programmeditors. Zum einen fällt die Belegung der Tasten und Menüs unterschiedlich
aus, zum anderen kann das SAP-Script-Dokument mit einer speziellen Formatierung
versehen werden. Weitere Informationen zur Bedienung des SAP-Script-Editors
erhalten Sie unter Textverarbeitung mit dem SAPScript-Editor [Extern]
5. Speichern Sie das Dokument ab.
Freigabeverfahren
Die Freigabe eines Funktionsbausteins ist eine rein verwaltungstechnische Angelegenheit, die
sich in keiner Weise auf den Baustein oder seine Verwendbarkeit auswirkt. Wenn Sie davon
überzeugt sind, daß ein Funktionsbaustein zur allgemeinen Benutzung geeignet ist, können Sie
ihn im System freigeben. Die Freigabe einer Funktion bedeutet, daß der Entwickler den Baustein
getestet hat.
Bedenken Sie ferner, daß nach der Freigabe die Dokumentation des
Funktionsbausteins im Arbeitsvorrat der Übersetzung erscheint. Die Freigabe sollte
daher sorgfältig überlegt werden. Es empiehlt sich, den zuständigen Übersetzer
rechtzeitig zu informieren.
In der Regel ist eine einzige Person für eine Funktionsgruppe verantwortlich und nur dieser
Benutzer kann den Funktionsbaustein freigeben. Wer für eine Funktionsgruppe verantwortlich ist,
erfahren Sie, indem Sie die Attribute einer Funktionsgruppe anzeigen. Teilen Sie daraufhin
dieser Person mit, daß Ihr Funktionsbaustein freigegeben werden kann. Wenn Sie der
Verantwortliche für die Funktionsgruppe sind, wählen Sie Funktionbaustein → Freigabe →
Freigeben, um einen Funktionsbaustein freizugeben.
Die Freigabe von Funktionsbausteinen war ursprünglich nur für die SAP-Entwickler gedacht.
Indem ein SAP-Entwickler eine Funktion freigibt, teilt er den anderen SAP-Entwicklern mit, daß
sie diese Funktion ohne Bedenken verwenden können. SAP-Entwickler können Ihre Funktionen
auch für Kunden freigeben. Wenn Sie eine freigegebene SAP-Funktion aufrufen, können Sie
davon ausgehen, daß SAP die Funktionsschnittstelle in zukünftigen Software-Releases nur
rückwärts-kompatibel ändern wird.
Debugger
In diesem Abschnitt der ABAP Workbench-Dokumentation erfahren Sie, wie Sie den Debugger
als Testwerkzeug bei bei Fehlersuche im Quelltext eines ABAP-Programms einsetzen.
Themenübersicht:
Funktionsüberblick [Extern]
Breakpoints [Extern]
Watchpoints [Extern]
Aufrufverknüpfungen [Extern]
Laufzeitanalyse
Die folgende Dokumentation macht Sie mit der Anwendung der Laufzeitanalyse innerhalb der
ABAP Workbench vertraut. Die Laufzeitanalyse gibt Ihnen einen Überblick über die zeitliche
Dauer Ihres Codings, von einzelnen Anweisungen bis hin zu kompletten Transaktionen.
Über SAP Menü → Test → Laufzeitanalyse oder Transaktion SE30 kann die die
Laufzeitanalyse gestartet werden. Im Einstiegsbild finden Sie vier funktionale Schwerpunkte
dieses Werzeuges, die über Drucktaste aktiviert werden können, nämlich:
• Messen im Dialogstatus
• Messen eines externen Modus
• Auswahl der Meßeinschränkungen
• Auswertung der Meßergebnisse.
Mit den folgenden Informationen können Sie die Analyse durchführen, die Ergebnisse anzeigen
und interpretieren und auf dieser Grundlage Ihre Programme optimieren.
Themenübersicht:
Funktionsüberblick [Extern]
Zeiterfassung [Extern]
Meßdatenerhebung [Extern]
Meßergebnisse [Extern]
Meßübersicht [Extern]
Aufrufhierarchie [Extern]
Kenngrößen [Extern]
Meßeinschränkungen [Extern]
Anweisungen [Extern]
Aggregation [Extern]
Anzeigefilter [Extern]
Performance-Trace
Im Testwerkzeug Performance-Trace sind verschiedene Trace-Funktionen des R/3-Systems
zusammengefaßt, mit deren Unterstützung Sie das Systemverhalten bei Datenbankaufrufen,
Aufrufen der Sperrverwaltung und Remote-Aufrufen von Reports und Transaktionen verfolgen
und eingehend analysieren können.
Themenübersicht
Performance-Trace im Überblick [Seite 451]
Performance-Trace im Überblick
Verwendung
Der Performance-Trace ermöglicht es Ihnen, die Datenbankaufrufe, die Aufrufe der
Sperrverwaltung und die Remote-Aufrufe von Reports, Transaktionen und aus dem R/3-System
selbst in einem Tracefile aufzuzeichnen und die protokollierten Meßergebnisse in Form von
Listen anzeigen zu lassen. Der Performance-Trace bietet weiterhin eine umfangreiche
Unterstützung bei detailierter Analyse einzelner Tracesätze.
Integration
Der Performance-Trace ist als Testwerkzeug in die ABAP Workbench integriert und damit dort
aufrufbar.
Voraussetzungen
Damit Sie mit dem Trace arbeiten können, benötigen Sie die Berechtigung zum Aufruf der
Transaktion ST05 und die Systemberechtigungen „Ändern von Traceschaltern“ ( Berechtigung
STOM für das Berechtigungsobjekt S_ADMI_FCD) und „Auswerten von Traces“ (Berechtigung
STOR für dasselbe Berechtigungsobjekt).
Funktionsumfang
Ab der Version 40B sind folgende Traces verfügbar:
1. der SQL-Trace, mit dem Sie Datenbankaufrufe von Reports und Transaktionen verfolgen
können.
Siehe auch SQL-Traceanalyse [Seite 472].
2. der Enqueue-Trace, mit dem Sie sich einen Überblick über das Sperrverhalten des Systems
verschaffen können.
Siehe auch Enqueue-Traceanalyse [Seite 483].
3. der RFC-Trace, der Ihnen Informationen zur instanzübergreifenden RFC-Aufrufen von
Funktionsbausteinen liefert.
Siehe auch RFC-Traceanalyse [Seite 486].
Aktivitäten
So gelangen Sie zum Einstiegsbild des Performance-Traces:
• mit dem Transaktionscode ST05
• aus der ABAP Workbench mit dem Menüpfad Test → Performance Trace.
ST05
Einstiegsbild
Performance-Trace
Anzeigefilter
Navigation
Im Einstiegsbild wird die Trace-Aufzeichnung gestartet bzw. gestoppt. Die Ergebnisse der
Messung werden nach der Ausführung des zu untersuchenden Programms in einem Tracefile
gesichert.
Mit einem Anzeigefilter können Sie den Wertebereich für die Anzeige der Meßdaten durch
Definieren von Selektionsbedingungen eingeschränken.
Die Meßdaten können dann entweder in Form einer Grundliste ("basic list") oder einer
Erweiterten Liste ("extended list") ausgegeben werden.
Die Anzeige der Daten können Sie nun weiter spezifizieren:
Eine Beschreibung von Dictionary-Objekten erhalten Sie über die Anzeige DDIC-Info. Eine
Verzweigung zur Definition im DDIC kann von hieraus ebenfalls vorgenommen werden. Mit
Detail-Info erhalten Sie eine Detailanzeige für die zu analysierende Anweisung. Identische
Select-Anweisungen können Sie auf einfache Weise über die Anzeige Ident. Selects ermitteln
oder mit Summary die Traceliste verdichten. Desweiteren kann mit Explain SQL ein
Ausführungsplan für eine gewählte SQL-Anweisung angezeigt werden.
Von der Anzeige der Meßdaten zu einer Anweisung können Sie direkt zum zugehörigen
Quelltext im ABAP Editor verzweigen.
Einstiegsbild
Aufruf
Das Einstiegsbild des Testwerkzeugs wird mit dem Transaktionscode ST05 oder über den
Menüpfad Test → Performance Trace aus der ABAP Workbench erreicht.
Funktionen
Folgende Funktionen stehen Ihnen im Einstiegsbild zur Verfügung:
• Starten der Trace-Aufzeichnung.
• Stoppen der Trace-Aufzeichnung.
• Auswahl der Trace-Funktionen SQL Trace, Enqueue Trace und RFC Trace.
• Verzweigen zur Grundliste bzw. zur Erweiterten Liste.
• Verzweigen zu Explain SQL zwecks Analyse einer SQL-Anweisung ohne ein explizites
Tracefile.
Einschränkung
Die Trace-Funktion Memory Trace ist derzeit noch nicht aktiv.
Meßdaten erheben
Vorbereitungen
Standardmäßig ist der Performance-Trace bei den R/3-Systemen aus Performancegründen
ausgeschaltet. Wenn Sie das Verhalten eines Reports oder einer Transaktion mit dem
Performance-Trace analysieren möchten, sollten Sie sich zuerst entscheiden, ob Sie das
Zusammenspiel, den gegenseitigen Einfluß von Reports und Transaktionen, das Verhalten von
einzelnen Reports und Transaktionen oder nur Teile davon analysieren möchten.
Siehe auch
Performance-Trace einschalten [Seite 456]
Performance-Trace ausschalten [Seite 458]
Vorgehensweise
So starten Sie eine Trace-Aufzeichnung:
1. Wählen Sie den Menüpfad Test → Performance Trace aus der ABAP Workbench aus.
Sie gelangen auf das Einstiegsbild des Testwerkzeugs. Im unteren Bildteil wird der Status
des Performance-Traces angezeigt. Sie erhalten dort Informationen, ob Traces des
Performance-Traces eingeschaltet sind und für welche Nutzer dies gilt. Weiterhin erfahren
Sie dort, welcher Nutzer diese Traces eingeschaltet hat.
2. Legen Sie über die angebotenen Auswahlknöpfe fest, welche Trace-Funktionen (SQL-Trace,
Enqueue-Trace, RFC-Trace) eingeschaltet werden sollen.
3. Wählen Sie dann Trace on, falls Sie mit Ihrem angemeldeten Nutzernamen den Trace
einschalten wollen.
Wählen Sie Trace on for user, wenn Sie einen anderen Nutzer oder eine Nutzergruppe
auswählen wollen.
Einen Nutzer bestimmen Sie durch die Angabe des Nutzernamens und eine Nutzergruppe
beschreiben Sie durch ein Suchmuster, für das die üblichen Metazeichen zu verwenden sind.
Wollen Sie weiterhin den Nutzer bzw. die Nutzergruppe ändern, so schalten Sie den
Performance-Trace aus und geben dann beim erneuten Einschalten den tatsächlich
gewünschten Nutzer bzw. die Nutzergruppe an.
4. Führen Sie nun das auszuwertende Programm wie üblich aus.
Ergebnis
Die Ergebnisse der Trace-Aufzeichnung werden in einen Tracefile geschrieben. Falls Tracesätze
während des Traceintervalls überschrieben wurden, erhalten Sie erst beim Auswerten des
Performance-Traces entsprechende Nachricht.
Trace läuft. Sie sollten deshalb den Trace ausschalten [Seite 458], sobald Sie die
Aufzeichnung abgeschlossen haben.
Schon aus Performancegründen sollten Sie die Traces ausschalten, sobald Sie die
Aufzeichnung abgeschlossen haben.
Vorgehensweise
So beenden Sie die Trace-Aufzeichnung:
1. Wählen Sie den Menüpfad Test → Performance Trace aus der ABAP Workbench aus.
Sie gelangen auf das Einstiegsbild des Testwerkzeugs. Hier bekommen Sie in einer
Statuszeile angezeigt, welche Traces für welche Nutzer und durch wen eingeschaltet
wurden.
2. Legen Sie über die angebotenen Auswahlknöpfe fest, welche Tracefunktionen auszuschalten
sind.
3. Wählen Sie die Funktion Trace off.
Haben Sie die Trace-Aufzeichnung selbst eingeschaltet, so können Sie sie sofort
ausschalten. Wurde der Performance-Trace durch einen anderen Nutzer eingeschaltet, so
erfolgt vor dem Ausschalten der Trace-Aufzeichnung eine Sicherheitsabfrage.
Ergebnis
Das Ergebnis der Trace-Aufzeichnung wurde in einem Tracefile abgelegt. Die im Tracefile
gespeicherten Meßdaten können nunmehr ausgewertet werden. Siehe auch: Meßdaten
auswerten [Seite 459].
Meßdaten auswerten
Voraussetzungen
Nachdem Sie den Performance-Trace ausgeschaltet haben, können Sie mit dem Auswerten
beginnen. Das Auswerten kann solange erfolgen, auch wiederholt, bis die Tracesätze in dem
Tracefile überschrieben wurden. Falls Sie den Namen des Tracefiles (siehe Tracing konfigurieren
[Seite 490]) ändern oder sich das Performance-Tracefile mit Mitteln des Betriebssystems sichern
(siehe Listen lokal sichern [Seite 492]), so kann das Tracefile nicht überschrieben werden und
steht weiterhin für die Auswertung bereit.
Anzeigefilter
Voraussetzungen
Sie haben den Performance-Trace ausgeschaltet und sind zum Anzeigefilter verzweigt. Sie
gelangen zum Anzeigefilter, wenn Sie im Einstiegsbild des Performance-Traces den Druckknopf
List Trace oder den entsprechenden Menüpunkt wählen.
Verwendung
Mit dem Anzeigefilter ("Filter trace list") können Sie den Wertebereich für die Anzeige der
protokollierten Tracesätze aus demTracefile einschränken, um anschließend entweder die
Basisliste ("Basic list") oder die Erweiterte Liste ("Extended list") auszugeben.
Funktionsumfang
Trace-Intervall festlegen
Das System initialisiert den Trace-Intervall mit 00:00:00 bis zur aktuellen Systemzeit für den
laufenden Tag. Rufen Sie jedoch diese Anzeige unmittelbar nach der Aufzeichnung des Trace-
Protokolls auf, so wird das Trace-Intervall aus dem Ein- und Ausschaltzeitpunkt der Trace-
Aufzeichnung bestimmt.
Options
Mit der Drucktaste Options können Sie die vorgeschlagene Option ändern und auf eine
Operatorauswahl zurückgreifen. Setzen Sie dazu den Cursor auf den entsprechenden
Parameter.
Del. Selection
Wählen Sie die Drucktaste Del. Selection, um Einschränkungen einzelner Parameter ( Siehe
auch Weitere Selektionsoptionen [Seite 463]) aufzuheben.
Refresh
Mit der Drucktaste Refresh werden Ihre Eingaben im Anzeigefilter aufgefrischt. Sie können
hierzu alternativ auch die ENTER-Taste verwenden.
Listenart festlegen
Mit der Auswahl Basic list und nach Betätigen der Drucktaste Show verzweigen Sie zur
Grundliste. Mit der Auswahl Extended list gelangen Sie entsprechend zur Erweiterten Liste.
Siehe auch Liste der Trace-Sätze anzeigen [Seite 465]
Weitere Abgrenzungen
Sie können noch weitere Abgrenzungen für der Anzeige der Tracesätze zu den folgenden
Parametern vornehmen:
• Nutzerkreis ("Username")
• Objekte ("Objectname")
– SQL-Trace: Tabellenname, auf den sich die SQL-Anweisung bezieht
– Enqueue-Trace: Sperrobjekte, auf den sich die Anweisung bezieht
– RFC-Trace: Instanz, auf der eine Funktion ausgeführt wird
• Ausführungsdauer ("Duration")
• Operationen ("Operation")
– SQL-Trace: Datenbankoperation
– Enqueue-Trace: Operation für das Sperrobjekt
– RFC-Trace: Charakteristik der Ausführung (Client/Server)
Als Standardeinschränkungen stehen zur Verfügung:
- für Username: der aktuelle Nutzer
- für Objectname: die Anzeige der Systemtabellen (D010*, D020*, DDLOG) wird unterdrückt.
Die Parameter Duaration und Operation werden nicht initialisiert.
Für die Duaration haben Sie die Möglichkeit, einen numerischen Wert für die Zeit einzugeben.
Die Zeiteinheit ist Mikrosekunde. Für die übrigen Parameter können Sie jeweils ein Muster oder
eine Bezeichnung angeben. Bei einem Muster können sie neben alphanumerischen Zeichen
auch Maskenzeichen ' * ' und ' + ' verwenden.
Zwecks weiterer Einschränkung können Sie auf eine Operatorauswahl zurückgreifen. Setzen Sie
den Cursor auf den entsprechenden Parameter und wählen Sie den Drucktaste Options. Aus
dem eingeblendeten PopUp wählen Sie die Operation aus und legen fest, ob die Tracesätze
selektiert werden sollen, die die Bedingung erfüllen (die Ampel steht dann auf grün) oder ob
diese von der Selektion auszuschließen sind ( Ampel auf rot).
Falls Sie mehrere Werte, Bezeichnungen oder Muster für die Selektion eines Parameters
angeben oder ein Intervall festlegen wollen, so verwenden Sie die "Mehrfachselektion", zu der
Sie über die Ikone „=>“ am rechten Rand gelangen. Hier können Sie zusätzliche Abgrenzungen
für zu selektierenden oder auszuschließenden Tracesätze festlegen.
Beispiel: Für die Duration könnte etwa die Einschränkung auf ein bestimmtes Intervall von
Interessse sein.
Listen
Die aufgezeichneten Tarcesätze können Sie entweder in Form einer Grundliste (Basic list) oder
der Erweiterten Liste (Extended list) anzeigen lassen. Die Grundliste ist in der Erweiterten Liste
vollständig enthalten. In der Erweiterten Liste sind lediglich 3 weitere Spalten für die Anzeige
hinzugefügt. Zum Analysieren der Tracesätze stehen weitere Funktionen bereit, die Sie aus der
Grundliste und der erweiterten Liste aufrufen können. Beide Listen verfügen über gleichen
Funktionsumfang und Sie können zwischen den Listen mit Auswahl einer Drucktaste problemlos
wechseln.
Grundliste
In der ersten Zeile der Liste wird eine Zwischenüberschrift, die für sämtliche Tracesätze eines zu
analysierenden Programms unverändert bleibt, ausgegeben. Sie enthält folgende Parameter:
- Name der Transaktion, Prozeß-Identifikationsnummer, Prozeßtyp, Mandant und Nutzername.
Es folgt dann eine Zeile mit folgenden Spaltenüberschriften:
• Duration Ausführungszeit der Anweisung. Die Angabe erfolgt in der Form Millisekunden.
Mikrosekunden
• Object
Die Ausführungszeit (Duration) wird in der Liste mit einer Signalfarbe unterlegt,
wenn ein definierter Schwellenwert überschritten wird. Dieser Schwellenwert beträgt
100000 Mikrosekunden. Er ist in der Typgruppe "SQLT" als Konstante
"SQLT_DURATION_NEG" vereinbart. Wenn Sie einen anderen Schwellenwert
festlegen möchten, so können Sie die Konstante entsprechend ändern.
Beachten Sie, daß die Zeitangbe für die Duration nur so genau sein kann, wie es
die Hardware zuläßt. Der von der Hardware vorgesehene Zeitschritt kann nicht
unterschritten werden. Ist die Ausführungszeit für die Anweisung kleiner als dieser
Zeitschritt, so wird Null für die Ausführungszeit angezeigt.
Erweiterte Liste
Sie gelagen von der Grundliste in die Erweiterte Liste durch Wahl der Drucktaste Extended list
oder über den entsprechende Menüpunkt. Hier stehen zusätzliche 3 Spalten für die Anzeige der
Tracesätze zur Verfügung:
• hh:mm:ss.ms Angabe des Ausführungszeitpunkts in der Form Stunden : Minuten :
Sekunden. Millisekunden
• Program Name des Programms, das die protokollierte Anweisung ausgeführt
• Curs
– SQL-Tracesatz: Nummer des Cursors (Verweis auf den Cursor-Cash), der zum
Wiederfinden von Datenbanksätzen verwendet wird.
– Enqueue- und RFC-Tracesatz: nicht belegt.
Weitere Funktionen
Analysieren der Tracesätze
• Sortieren der Liste
• Anzeige der protokollierten Anweisung in aufbereiteter Form
• Angaben zur Definition des zugehörigen Dictionary-Objektes im Falle des SQL- und
Enqueue-Traces
• Anzeige der protokollierten Anweisung im Quellcode
• Angabe des Zugriffsplanes für eine protokollierte SQL-Anweisung
• Aufbereitung der identischen Select-Anweisungen der Traceliste
• Verdichten der Traceliste
• Wecheln zwischen beiden Listen
Weitere Informationen finden Sie unter Tracesätze analysieren [Seite 468]
Standardfunktionen
Zum Positionieren und Suchen in der Liste, zum Ausdrucken der Liste und zum Sichern der Liste
in einen File des Betriebssystems stehen Ihnen die R/3-Standardfunktionen zur Verfügung, die
Sie über die entsprechende Menüpunkte, Drucktasten oder Funktionstasten aufrufen.
Siehe auch Listen lokal sichern [Seite 492].
Tracesätze analysieren
Voraussetzungen
Sie haben die zu analysierenden Tracesätze in Form der Grundliste oder der Erweiterten Liste
zur Anzeige gebracht.
Funktionen
Sortieren der Liste
Das Sortieren kann nach jedem Parameter der Zwischenüberschrift erfolgen, also nach dem
Namen der Transaktion, der Prozeß-Identifikationsnummmer, dem Prozeßtyp, den Mandanten
und nach dem Namen des Nutzers. Positionieren Sie dazu den Cursor auf den Parameter, nach
dem sortiert werden soll und wählen Sie die Drucktaste Sort oder den entsprechenden
Menüpunkt.
Falls Sie die Platzhalter durch die aktuellen Variablen ersetzen möchten, dann wählen Sie die
Drucktaste Var. replace oder den entsprechenden Menüpunkt.
Im Falle eines RFC-Protokollsatzes wird in dieser Spalte ein verkürzter Name der Instanz
eingetragen, auf der der Funktionsbaustein ausgeführt wird. In diesem Fall entfällt eine
Dictionary-Beschreibung.
Sie können von hieraus noch weitere DDIC-Information abrufen, indem Sie zur Definition des
Objektes im DDIC verzweigen. Siehe auch Dictionary-Informationen abrufen [Seite 495].
Beachten Sie, daß nicht in jedem Falle der Quelltext anzeigbar ist. Wenn z.B. der
Aufruf aus dem R/3-Kernel erfolgt ist, können Sie nicht auf die entsprechende
Codestelle verzweigen.
Identische Selects
Bei der Analyse eines Traceprotokolls kann es von besonderer Bedeutung sein, identische
Select-Anweisungen zu ermitteln. Zu diesem Zweck steht Ihnen der Menüpunkt Identical selects
zur Verfügung. Sie bekommen eine Liste von denjenigen SQL-Anweisungen angezeigt, die
mehrfach ausgeführt werden. Sie können anschließend dazu übergehen, wiederholte oder
überflüßige Datenbank-Aufrufe aus dem untersuchten Programm zu eliminieren.
SQL-Traceanalyse
Mit dem SQL-Trace als Teil des Performance-Traces können Sie verfolgen, wie die in Reports
und Transaktionen verwendeten OPEN-SQL-Befehle in Standard-SQL-Befehle (siehe auch
Embedded SQL [Seite 473]) übersetzt und mit welchen Parametern die Embedded-SQL-Befehle
an das verwendete Datenbanksystem übergeben werden.
Überblick
Zwischen dem Ein- und Ausschalten der Trace-Funktion werden hierzu alle Datenbankaktivitäten
aufgezeichnet, die für einen bestimmten Nutzer oder eine Nutzergruppe stattfinden. Das R/3-
System übersetzt zunächst OPEN-SQL-Befehle in Embedded-SQL-Befehle, übergibt diese an
die verwendete Datenbank und stellt die Ergebnisse bereit. Der an die Datenbank übergebene
Embedded-SQL-Befehl wird zusammen mit den zugehörigen Parametern protokolliert. Ebenso
werden die Ergebnisse des SQL-Befehls wie Rückkehrcode, Anzahl der von der Datenbank
wiedergefundenen, eingefügten oder gelöschten Sätze in den SQL-Tracefile geschrieben. Die
Protokollierung der Ausführungszeit der Anweisung und der Aufrufstelle im
Anwendungsprogramm bzw. der Anwendungstransaktion, ermöglicht Ihnen weitergehende
Auswertungen, die durch die SQL-Trace-Funktion unterstützt werden.
Embedded SQL
Eine der Schwierigkeiten bei der Verbindung einer Programmiersprache mit einer SQL-
Schnittstelle ist die Übergabe der selektierten Datensätze. Wenn das System eine SQL-
Anweisung verarbeitet, steht erst nach der Selektion fest, wie groß der zurückgelieferte
Datenbestand sein wird. Ein solcher Datenbestand besteht aus Sätzen, die alle dieselbe Struktur
haben. Das System muß diese Sätze in Form einer dem aufrufenden Programm bekannten
Datenstruktur an dieses Programm zurückgeben, z.B. als Array.
Der Nachteil eines Arrays ist dessen statische Definition. Sie müssen die Größe eines Arrays vor
der Laufzeit angeben. Da Sie die Größe des vom System zurückgelieferten Datenbestandes
jedoch nicht kennen, müßten Sie einen sehr großen Array definieren, damit es nicht zu einem
Überlauf kommt.
Um dieses Problem zu umgehen, übersetzt das R/3-Basissystem ABAP-Open SQL-
Anweisungen in Embedded SQL-Operationen. Hierfür definiert das System einen Cursor. Dieser
stellt eine logische Verbindung zu den selektierten Datensätzen in der Datenbank dar und sorgt
für die Datenübergabe zwischen ABAP-Programmen und der Datenbank. Siehe auch
Datenbankoperationen [Seite 474].
Bei jeder FETCH-Operation übergibt dann die Datenbank einen oder mehrere Datensätze an die
R/3 DB-Schnittstelle.
Gemessene DB-Operationen
Jede SQL-Anweisung wird vom R/3-System in DB-Operationen zerlegt. Mit Hilfe des SQL-Traces
haben Sie Möglichkeit, die Ausführungszeit dieser Operationen zu vermessen:
DECLARE Definiert einen neuen Cursor innerhalb eines SAP-Work-Prozesses und weist
diesem die SQL-Anweisung zu. Die Kurzform dieser Anweisung wird in der
Liste der Tracesätze unter Statement angezeigt. Der Cursor wird mit einer
eindeutigen Nummer, der Cursor-ID versehen. Die Cursor-ID wird für die
Kommunikation zwischen SAP-System und Datenbanksystem verwendet.
FETCH Übergibt einen oder mehrere Sätze aus dem Datenbestand, der in der
Datenbank durch die SELECT-Anweisung selektiert wurde, an die DB-
Schnittstelle des R/3-Systems. Der Datenbestand wird durch den Cursor
identifiziert.
REOPEN Öffnet erneut einen Cursor, den das System für eine SELECT- Anweisung
vorbereitet hat und übergibt die neuen Parameter an die Datenbank.
EXEC Übergabe der Parameter für die Anweisung von der Datenbank und
Ausführen der Anweisungen, die Daten in der Datenbank ändern (z.B. über
UPDATE, DELETE, oder INSERT).
REEXEC Öffnet einen Cursor erneut, den das System für eine vorangegangene EXEC-
Anweisung bereits vorbereitet hat.
Zur Reihenfolge der Verarbeitung dieser Operationen siehe Logische Reihenfolge der DB-
Operationen [Seite 475]
Pufferung
Das R/3-System sorgt dafür, daß der Datenaustausch zwischen dem R/3-System und dem
Datenbanksystem möglichst performant erfolgt. Dies wird erreicht durch:
• Die Pufferung von Tabellen. Das Programm greift auf Daten aus dem Puffer des
Anwendungsservers des Systems zu.
• Die Pufferung von Datenbankanforderungen. Erst wenn eine OPEN-SQL-Anweisung es
erfordert, werden einzelne Sätze in der Datenbank gelesen bzw. der Datenbank übergeben.
Bei der Analyse der Tracesätze ist der Pufferungsmechanismus entsprechend zu
berücksichtigen.
Lesezugriff
Das erste Bild der SQL-Trace-Datei zeigt jede gemessene Datenbankanweisung aus der
Anwendung an. In der Trace-Datei wird Zeitpunkt und Dauer der Anweisung aufgezeichnet. Die
an der Anweisung beteiligte ABAP Dictionary-Tabelle wird ebenfalls aufgelistet.
Eine Trace-Datei für einen Lesezugriff auf die Tabelle SFLIGHT könnte so aussehen:
Das System hat verschiedene Datenbankoperationen gemessen, die am Lesezugriff auf die
Tabelle SFLIGHT beteiligt waren.
Operation Funktion
PREPARE Bereitet die OPEN-Anweisung vor und bestimmt die Zugriffsmethode. Da ein
aktiver Cursor mit der Nummer 18 im Cursor-Cache des Work-Prozesses zur
Verfügung steht, führt das System keine DECLARE-Operation durch. Das
System muß jedoch die SELECT-Anweisung vorbereiten, mit der die Tabelle
SFLIGHT gelesen wird.
Das System versieht das Feld ‘MANDT’ und ‘CARRID’ in der SELECT-
Anweisung zu diesem Zeitpunkt nicht mit einem Wert, sondern weist ihm eine
datenbankspezifische Markierung zu.
OPEN Öffnet den Cursor und spezifiziert das Selektionsergebnis, indem die
Selektionsfelder mit Werten versehen werden. In diesem Beispiel erhält das
Feld ‘MANDT’ den Wert ‘000’ und das Feld ‘CARRID’ den Wert ‘LH’. Die
OPEN-Operation erzeugt dann einen Bestand eingelesener Datensätze.
FETCH Bewegt den Cursor über den von der Operation OPEN angelegten
Datenbestand. Die Array-Größe, die neben den FETCH-Daten angezeigt wird,
bedeutet, daß das System Pakete von maximal 392 Sätzen gleichzeitig in den
gepufferten Bereich übertragen kann. Dieser Platz wird auf dem
Anwendungsserver für die Tabelle SFLIGHT angelegt.
Im obigen Beispiel holen die FETCH-Operationen die maximale Anzahl von
Sätzen aus dem Datenbestand. Dann werden diese Sätze an die
Programmschnittstelle übergeben.
Schreibzugriff
Eine Muster-SQL-Datei, die eine Datenbankanweisung analysiert, die Daten in der Tabelle
D010SINF verändert, könnte so aussehen:
Das Beispiel zeigt, wie das System neue Sätze in die Tabelle einfügt (INSERT). Wie im ersten
Beispiel, in dem das System nur einen Lesezugriff ausführte, muß das System die
Datenbankoperationen, die Sätze auf der Datenbank verändern, vorbereiten (PREPARE). Die
PREPARE-Operation geht den anderen Operationen voran.
QUERY PLAN
SELECT STATEMENT
TABLE ACCESS BY ROWID FLLOG
INDEX UNIQUE SCAN FLLOG___0(UNIQUE)
Die Felder in der Anzeige haben folgende Bedeutung:
OPERATION Name der Operation.
OPTIONS Eigenschaften der Operation.
OBJEKT NAME Objekt, das an der Operation beteiligt ist.
ID ID-Nummer der Operation.
PAID ID-Nummer, an die die aktuelle Operation ihre Ergebnisse übergibt. Das
ist wichtig, wenn geschachtelte Zugriffe auf verschiedenen
Hierarchieebenen beteiligt sind.
POS Identifiziert die nächste Nummer für Operationen, die auf derselben
Hierarchieebene stattfinden.
In obigen Beispiel ist der Schlüssel voll qualifiziert. Die Datenbank kann mit dem
Primärschlüsselindex FLLOG__0 auf die Tabellensätze zugreifen. Jede transparente Tabelle im
ABAP-Dictionary hat einen Primärschlüssel. Das System legt automatisch einen Index für diesen
Schlüssel an. Der Primärschlüssel ist eindeutig, d.h., es gibt nur einen Indexeintrag für jede Zeile
der Tabelle. Das System benutzt deshalb die Operation UNIQUE SCAN.
Die Operation UNIQUE SCAN erhält die ID 2 und die Parent ID 1. Das bedeutet, daß diese
Operation ihre Ergebnisse an die Operation mit der ID 1 übergibt. Die ID 1 gehört zur Operation
TABLE ACCESS. TABLE ACCESS kann wegen der Eindeutigkeit des Index BY ROWID direkt
auf einen Satz zugreifen. Sobald das System eine Zugriffsstrategie gewählt hat, sendet es die
SELECT-Anweisung mit ID 0 an die Datenbank.
Wenn die SELECT-Anweisung keinen voll qualifizierten Schlüssel angibt, muß die Datenbank
möglicherweise die Sätze mit einem FULL TABLE SCAN lesen. In diesem Fall gibt es keinen
Index, und die Datenbank liest die gesamte Tabelle in Paketen.
Wenn der Index nicht eindeutig ist, verwendet die Datenbank einen RANGE SCAN. RANGE
SCAN ist ein generischer Zugriff bei dem ein Indexbereich durchsucht wird, der relevante Daten
enthalten könnte.
Die Operation NESTED LOOP ist für geschachtelte Lesezugriffe bestimmt, wobei mehrere
Indizes für einen Datenbankzugriff zusammengefaßt werden.
Reihenfolge an, in der das System die Tabellen verarbeitet. Im vorliegenden Beispiel ist nur ein
einziger Schritt erfolderlich.
Der Ausführungsplan gibt die Art des Tabellenzugriffs an. Im obigen Beispiel erfolgte der Zugriff
über INDEX PATH. Auf die erforderlichen Daten wird nun über den Index der Tabelle
systables zugegriffen. Normalerweise verwendet der Ausführungsplan den Primärschlüssel
als Index. Jede transparente Tabelle im ABAP-Dictionary hat einen Primärschlüssel, für den das
System automatisch einen Index erstellt.
Wenn das System einen großen Teil einer Tabelle lesen muß, verwendet es nicht
den Primärschlüssel als Index.
In diesem Beispiel mußte das System die Zeile, die dem Indexschlüssel entspricht, nicht lesen.
Die benötigte Information war bereits in Schlüssel selbst vorhanden. In der Analyse wird dies
durch Key-Only deutlich:
(1) Index Keys: tabname owner (Key-Only)
Falls eine SELECT-Anweisung ohne vollqualifizierten Schlüssel angegeben wird, kann es sein,
daß die Datenbank die relevanten Zeilen mit einem FULL TABLE SCAN lesen muß. In diesem
Fall enthält die SQL-Explain-Ausgabe keinen Index, sondern eine Anzeige ähnlich der folgenden:
1) informix.systables: SEQUENTIAL SCAN
Dies gibt an, daß die gesamte Tabelle gelesen werden muß (FULL TABLE SCAN).
Bei komplexeren Operationen, die die Kombination der Ergebnisse mehrerer SELECT-
Anweisungen auf unterschiedliche Tabellen erfordern, werden weitere Strategien angezeigt (z.B.
MERGE JOIN, DYNAMIC HASH JOIN). Diese Anzeigen beziehen sich auf die vom Optimizer
gewählten Join-Strategien.
Aktualität sicherstellen
Der Optimizer kann nur dann exakte Werte für jedes Analysefeld liefern, wenn die statistischen
Informationen zu jeder Tabelle aktuell sind. Um exakte Analysewerte zu erhalten, müssen Sie
daher sicherstellen, daß die aktuellsten statistischen Informationen zum Inhalt jeder
angesprochenen Tabelle verfügbar sind.
Um diese Informationen zu aktualisieren, verwenden Sie die Funktion Update Statistics. Da der
vom Optimizer gewählte Ausführungsplan stark von diesen Informationen abhängt (z.B. die
Verwendung des FULL TABLE SCAN anstelle eines Index), sollten Sie die Aktualität durch
regelmäßiges Ausführen der Funktion Update Statistics sicherstellen.
Enqueue-Traceanalyse
Verwendung
Mit dem Enqueue-Trace können Sie verfolgen, welche Sperranweisungen Ihre Anwendung oder
das R/3-System auf welchen Sperrobjekten ausführt und welche Parameter das System für diese
Sperren verwendet. Die im Tracefile protokollierten Tracesätze können Sie anzeigen lassen und
weitergehend analysieren.
Funktionsumfang
Zwischen dem Ein- und Ausschalten des Enqueue-Traces werden alle Sperraktionen
aufgezeichnet, die für einen bestimmten Nutzer oder eine Nutzergruppe stattfinden.
Aus der Traceaufzeichnung können Sie folgende Angaben entnehmen:
• welche Sperranweisungen ausgeführt werden.
• den Tabellennamen des Sperrobjektes.
• den Namen des Programms, der die Sperre ausgelöst hat.
• die Art der Sperre.
• den Eigentümer der Sperre.
• die Gesamtzeit, die für das Sperren benötigt wird.
• die Zeitdauer, die der Enqueue-Server benötigt, um die Sperre aufzulösen.
Weitere Informationen finden Sie unter
Enqueue-Tracesätze [Seite 484] und
Detailanzeige der Enqueue-Tracesätze [Seite 485]
Enqueue-Tracesätze
Für einen Enqueue-Tracesatz haben die folgenden Spalten eine besondere Bedeutung:
In der Grundliste
• Duration Ausführungszeit der Sperroperation. Die Angabe erfolgt in der Form
Millisekunden. Mikrosekunden
• Object Identifiziert den Namen des Sperrobjectes.
• Oper Als Operation wird die ausgeführte Sperroperation angegeben. Weitere
Informationen finden Sie unter Sperrobjekte [Extern].
• RC Rückkehrcode.
Steht in dieser Spalte eine Null, so wurde die Enqueue-Operation erfolgreich ausgeführt. Bei
„1“ konnte die Sperre nicht ausgeführt werden, da das Sperrobjekt oder Teile davon bereits
gesperrt waren.
• Rec Die Anzahl der Granulate des Sperrobjektes.
• Statement Hier werden die Granulate für die Sperranforderung angegeben. Falls mehrere
Granulate vorhanden sind, werden diese durch das Zeichen „ | „ getrennt. Für jedes Granulat
werden der Sperrmodus, die Sperrtabelle und das Sperrargument angegeben.
Siehe auch: Sperrobjekte [Extern].
RFC-Traceanalyse
Verwendung
Mit dem RFC-Trace können Sie verfolgen, welche Remote-Aufrufe Ihre Anwendung oder das
R/3-System und auf welcher Instanz diese Aufrufe ausführt werden. Die im Tracefile
protokollierten Tracesätze können Sie anzeigen lassen und weitergehend analysieren.
Funktionsumfang
Zwischen dem Ein- und Ausschalten des RFC-Traces werden alle RFC-Aufrufe aufgezeichnet,
die für einen bestimmten Nutzer oder eine Nutzergruppe stattfinden.
Aus der Traceaufzeichnung können Sie entnehmen,
• welche Funktionsbausteine "remote" vom zu anlysierenden Programm aufgerufen wurden.
• ob der RFC erfolgreich ausgeführt werden konnte.
• die Gesamtzeit, die für die Ausführung des Remote-Aufrufs benötigt wurde.
• wie die RFC-Kommunikation gekennzeichnet ist (RFC-Client oder als RFC-Server).
• auf welcher Instanz der Remote-Aufruf ausgeführt wurde.
• durch welche technischen Parameter diese Instanz charakterisiert wird.
• Die Anzahl beim RFC gesendeter und empfangener Bytes.
Weitere Informationen finden Sie unter:
RFC-Tracesätze [Seite 487] und
Detailanzeige der RFC-Tracesätze [Seite 488]
RFC-Tracesätze
Fuer einen RFC-Tracesatz haben die folgenden Spalten eine besondere Bedeutung:
In der Grundliste
• Duration Ausführungszeit des RFC-Aufrufs. Die Angabe erfolgt in der Form Millisekunden.
Mikrosekunden
• Object Verkürzter Name der Instanz (des Systems), auf der der Remote-Aufruf des
Funktionsbausteins ausgeführt wurde.
• Oper Kennzeichnung der instanzübergreifenden RFC-Kommunikation. Hierbei wird
zwischen dem RFC-Client und dem RFC-Server unterschieden. Demzufolge wird mit
"Client" diejenige Instanz gekennzeichnet, die eine Funktion "remote" aufruft. Die als
"Server" angegebene Instanz stellt die angeforderte Funktion bereit und führt diese auch
aus.
• Rec nicht belegt.
• RC Rückkehrcode des protokollierten Remote-Aufrufs. Ein Rueckkehrcode „0“ in der
Spalte „RC“ zeigt die erfolgreiche Ausführung des Remote-Aufrufs an. Bei Werten <> 0 trat
ein Fehler auf.
• Statement In dieser Spalte werden der Name der lokalen Instanz, der Name der "remote"
verwendeten Instanz, der Name des aufgerufenen Funktionsbausteins sowie die Anzahl der
gesendeten und empfangenen Bytes ausgegeben.
Weitere Funktionen
Tracefile konfigurieren
Profilparameter
Um den Performance-Trace durchführen zu können, benötigt das System die folgenden
Profilparameter:
• rstr/file: Dieser Parameter legt ein Muster für den Pfadnamen des Tracefiles fest.
• rstr/max_diskspace: Mit diesem Parameter wird die maximale Größe in Bytes festgelegt,
die einem Tracefile zugeordnet werden kann.
Als Standardgröße wird 16 384 000 (16 000 KByte) empfohlen. Mit der Transaktion
ST01 besteht jedoch die Möglichkeit, den Namen des Tracefiles zu ändern. Damit ist
es möglich, mit mehreren Tracefiles zu arbeiten und so das Überschreiben der
Trace-Aufzeichnung zu verhindern.
• rstr/fileset/allowed: Dieser Parameter definiert, ob ein Ändern des Namens des Tracefiles
überhaupt zugelassen wird oder nicht. Standardmäßig hat der Parameter den Wert „1“,
wodurch ein Ändern des Tracefile-Namens möglich ist. Ist er mit dem Wert „0“ belegt, kann
der Name des Tracefiles nicht geändert werden.
Diese Parameter werden bei der Installation des Systems gesetzt. Sie können diese Parameter
über die Profileparameter-Pflege (Transaktion RZ11) auch ändern.
Vorgehensweise
So ändern Sie den Namen des Tracefiles.
1. Zum Einstiegsbild der Transaktion ST01 gelangen Sie entweder mit Eingabe des
Transaktioncodes oder aus der ABAP-Workbanch über den Menüpfad Administration ->
Systemverwaltung -> Monitor -> Trace -> SAP-System-Trace.
2. Wählen Sie dann den Menüpfad Bearbeiten → Neue Datei.
Es erscheint ein Popup, in dem Sie das drittletzte Zeichen frei wählen können, falls der
Profileparameter "rstr/fileset/allowed" in der Transaktion RZ11 ensprechend eingestellt
wurde.
Vorgehensweise
So gehen Sie vor, um eine Liste lokal zu sichern:
1. Rufen Sie das Einstiegsbild [Seite 454] des Performance-Traces auf.
2. Wählen Sie die Drucktaste List Trace.
Sie gelangen zum Anzeigefilter [Seite 460].
3. Legen Sie im Anzeigefilter den Wertebereich für die Anzeige der Tracesätze fest.
4. Wählen Sie Show.
Je nach Auswahl in 3. erscheint die Grundliste oder die Erweiterte Liste.
5. Wählen Sie den Menüpfad Trace → Save to PC file…
Es erscheint das Popup Liste sichern in Datei.
6. Wählen Sie das Format zum Sichern der Liste in der lokalen Datei und bestätigen Sie mit
Weiter.
7. Geben Sie im darauffolgenden Popup den lokalen Pfadnamen an.
8. Wählen Sie Übertragen.
Ergebnis
Die Tracesätze der Liste wurden lokal auf dem Frontend in einer Datei gesichert. Diese Datei
kann nun im gewählten Format angezeigt werden.
Alternativ kann bei Auswahl unkonvertiert bei Pkt. 6 ein Download in die
Zwischenablage erfolgen.
Beachten Sie, daß das Ergebnis der Funktion Explain SQL datenbankspezifisch
ist! Dies betrifft sowohl die SQL-Anweisung als auch die Operation. Bei einigen DB-
Systemen kann Explain SQL lediglich für die SELECT-Anweisung ausgeführt
werden. Um das Ergebnis genau verstehen zu können, müssen Sie über gute
Kenntnisse des betreffenden DB-Systems verfügen. Informationen finden Sie in der
Dokumentation des jeweiligen Herstellers.
Dictionary-Informationen abrufen
Sie können aus der Liste der Tracesätze auf weitere Informationen über Dictionary-Objekte
zugreifen und zur Definition im ABAP Dictionary verzweigen.
Voraussetzungen
Die interessierenden Tracesätze des Tracefiles wurden nicht überschrieben.
Vorgehensweise
1. Rufen Sie das Einstiegsbild [Seite 454] des Performance-Traces auf.
2. Wählen Sie List Trace.
Sie gelangen zum Anzeigefilter [Seite 460].
3. Legen Sie den Wertebereich für die Anzeige der Tracesätze fest.
4. Wählen Sie Show.
Sie gelangen zur Anzeige der Tracesätze des Tracefiles in Form der Grundliste oder der
Erweiterten Liste.
5. Positionieren Sie den Cursor auf die Zeile, die die zu analysierende Dictionary-Tabelle
enthält.
6. Wählen Sie DDIC-Info.
Der erste Teil des Dictionary-Informationsbildes zeigt administrative Daten für die
ausgewählte Tabelle wie Tabellenklasse, Größenordnung des benötigten Speicherplatzes
usw.
Der zweite Teil des Bildes enthält Informationen über die Indizes, die für diese Tabelle
angelegt wurden. Dictionary-Tabellen haben immer mindestens einen Index, der durch den
Primärschlüssel der Tabelle gebildet wird. Wenn andere Indizes innerhalb des ABAP-
Dictionary angelegt wurden, so werden diese ebenfalls aufgelistet.
7. Wählen Sie Table/View fields.
So verzweigen Sie von der Traceliste zur Tabellendefinition im ABAP-Dictionary.
Information zu Entwicklungsobjekten
In der ABAP Workbench steht Ihnen ein umfassendes Informationssystem zur Verfügung.
Einzelheiten hierzu finden Sie unter den folgenden Themen:
Das Repository-Infosystem
Sie verwenden das Repository-Infosystem, um Objekte im R/3-System zu suchen. Dabei können
Sie bestimmte Suchkriterien festlegen. Von der Workbench aus wählen Sie Übersicht →
Infosystem, um auf das ABAP-Repository-Infosystem zuzugreifen.
Das Einstiegsbild des Infosystems zeigt eine hierarchische Liste aller Objekttypen in Ihrem R/3-
System.
4. Der Inhalt des Selektionsbildschirms hängt von der gewählten Objektkategorie ab.
Standardmäßig werden die Standardselektionsfelder des Objekts angezeigt.
5. Geben Sie Werte für die Suche ein, und wählen Sie Ausführen.
Das System zeigt eine Trefferliste an. Standardmäßig wird die Grundsicht angezeigt; Sie
können jedoch auch eine Gesamtsicht der Objektattribute aufrufen, indem Sie
Gesamtsicht wählen.
Im Gruppenrahmen Einstellungen im unteren Teil des Suchbildes können Sie im Feld Max.
Trefferzahl angeben, wie viele Treffer höchstens angezeigt werden sollen. Standardmäßig
werden bei der Suche sowohl SAP- als auch Kundenobjekte berücksichtigt.
Suchergebnisse lesen
Wenn der Suchvorgang abgeschlossen wurde, zeigt das System eine Ergebnisliste an. Hier
stehen Ihnen verschiedene Funktionen zur Verfügung, die sich jedoch im einzelnen nach dem
gesuchten Objekt richten.
Kundenspezifische Selektionswerte
Sie können kundenspezifische Selektionswerte für die Einstiegsvariante und die maximale
Trefferzahl angeben. Wählen Sie dazu im Einstiegsbild des Repository-Infosystems die
Drucktaste Benutzerparameter. Die Maximale Trefferzahl gibt die Anzahl der gefundenen
Entspechungen an, die angezeigt werden soll. Für die Einstiegsvariante sind folgende
Einstellungen möglich:
Standard- Bezeichnet die Variante SAP_STANDARD. Dies ist die
Selektionskriterien Standardvariante von SAP.
Alle Selektionskriterien Gibt an, daß alle verfügbaren Selektionskriterien zur Verfügung
stehen.
Benutzerspezifische Bezeichnet eine vom Benutzer erstellte Variante. Im
Variante darunterstehenden Feld müssen Sie den Namen der
gewünschten Variante eingeben.
Verwendungsnachweis
Die Funktion Verwendungsnachweis ist die Suchfunktion des Repository-Infosystems. Diese
Funktione können Sie von fast allen Bildern in der ABAP Workbench aufrufen. Auf dem
Einstiegsbild des Infosystems markieren Sie einen Objekttyp (z.B. Modellierung), und wählen
dann Verwendungsnachweis. Weitere Informationen zu dieser Funktion finden Sie unter Die
Funktion Verwendungsnachweis [Seite 503].
Umfeldermittlung
Mit der Funktion Umfeldermittlung können Sie die Außenreferenzen (d.h. die nicht zu dem Objekt
gehörenden referenzierten Objekte) ermitteln. Weiter Informationen zu dieser Funktion finden Sie
unter Umfeldermittlung [Seite 501]
Umfeldermittlung
Verwendung
Diese Funktion wird benötigt, wenn Sie Außenreferenzen zu einem Objekt bestimmen wollen.
Außenreferenzen stellen dabei Objekte dar, auf die Sie in Ihrem Objekt referenzieren, die aber
nicht innerhalb Ihres Objekts definiert sind.
Daher bietet sich die Umfeldermittlung an, wenn Sie überprüfen wollen, wie gut ein Objekt
gekappselt ist. Ein vollständig gekappseltes Objekt hat keine Außenreferenzen.
Vor allem vor dem Transport von Objekten in andere Systeme sollten Sie eine Umfeldermittlung
durchführen. Stellen Sie sicher das das erforderliche Umfeld in dem Zielsystem nach Ihrem
Transport vorhanden ist (keine Referenzen auf lokale Objekte).
Voraussetzungen
Bevor Sie diese Funktion einsetzen können, müssen Sie den Objekttyp bestimmen, für den Sie
eine Umfeldermittlung durchführen wollen. Dazu verzweigen Sie in das Repository-Infosystem,
wählen einen Objekttyp mit dem Cursor aus und verzweigen zur Umfeldermittlung mit der
Funktion Umfeld.
Funktionsumfang
Das System listet alle Außenreferenzen zu dem angegebenen Objekt in einer Liste auf. Dabei
werden die Außenreferenzen nach Objekttypen sortiert dargestellt.
Umfeld ermitteln
1. Verzweigen Sie in das Repository-Infosystem.
2. Wählen Sie den Objekttyp mit dem Cursor aus, für den Sie eine Umfeldermittlung
durchführen wollen.
3. Führen Sie die Funktion Umfeld aus.
4. Auf dem Dialogfenster Umfeldermittlung <objekt> geben Sie den Objektnamen ein, für
den Sie eine Umfeldermittlung durchführen wollen.
5. Sofern eine Liste mit Objekttypen für die Umfeldermittlung zur Verfügung steht, können
Sie durch Markieren der Ankreuzfelder die Umfeldermittlung einschränken.
6. Wenn Sie nur über bestimmte Entwicklungsklassen selektieren wollen, können Sie mit
der Funktion Suchbereich die entsprechende Auswahl vornehmen.
Nach der Eingabe verlassen Sie das Dialogfenster wieder mit der Funktion Übernehmen.
7. Starten Sie die Umfeldermittlung. Dabei haben Sie folgende Alternativen:
• Direkt Starten: Die Umfeldermittlung wird sofort gestartet und es wird danach eine
Liste mit den Ergebnissen angezeigt.
• Starten im Hintergrund: Sie starten die Umfeldermittlung als Hintergrundprozeß.
Nachdem der Prozeß abgearbeitet ist, werden Sie über eine Dialogmeldung
informiert, daß die Liste erstellt wurde. Sie können die Liste einsehen, indem Sie auf
dem Einstiegsbild des Repository-Infosystem die Funktion Listenvorrat ausführen.
Mit der Funktion Verwendungsnachweis erstellen Sie eine Ergebnisliste, die Auskunft darüber
gibt, wo das Objekt überall verwendet wird.
Von dieser Ergebnisliste aus können Sie eine Fundstelle auswählen, und dann über Anzeigen
oder Ändern zur Fundstelle verzweigen. Wenn Sie Fundstellen wählen, gibt das System die
Zeilennummer der Fundstelle aus.
Wenn Sie eine Objektdefinition anklicken, bringt Sie das System zur Fundstelle. Wird das Objekt
an mehr als einer Stelle im System verwendet, fordert Sie das System auf, eine Liste mit
Verwendungsnachweisen zu erstellen.
Die Anwendungshierarchie
In der SAP-Anwendungshierarchie wird die Struktur aller Anwendungen im R/3-System
angezeigt. Sie können entweder eine Hierarchie der mit dem System gelieferten SAP-
Anwendungen oder eine Hierarchie Ihrer unternehmensspezifischen Anwendungen anzeigen.
Jeder Kunde, der die entsprechende Berechtigung hat, kann sich eine eigene
unternehmenspezifische Anwendungshierarchie erstellen.
Sie öffnen die Anwendungshierarchie, indem Sie im Einstiegsbild der ABAP Workbench
Übersicht → Anwendungshierarchie → SAP oder Kunde wählen.
Die Anwendungshierarchie enthält Titelknoten und Entwicklungsknoten. Zu Entwicklungsknoten
gehört eine Entwicklungsklasse, die anzeigt, daß tatsächlich vorhandene Objekte mit diesem
Knoten verbunden sind. Titelknoten sollen die Übersichtlichkeit der Hierarchie verbessern; ihnen
ist keine Entwicklungsklasse zugeordnet.
Wenn Sie einem Titelknoten eine Entwicklungsklasse zuordnen, entsteht dadurch ein neuer
Entwicklungsknoten:
Wenn Ihnen nur die Anwendung, nicht jedoch ihre Klasse bekannt ist, können Sie mit der
Hierarchie die Entwicklungsklasse ermitteln. Dies ist beispielsweise bei der
Anwendungsentwicklung im Team sinnvoll. Muß ein Entwickler eine alte Anwendung
aktualisieren, mit der er bisher noch nicht gearbeitet hat, kann er die Anwendungshierarchie
verwenden, um die Entwicklungsklasse der Anwendung zu ermitteln.
Wählen Sie eine Entwicklungsklasse durch Anklicken aus, um eine Liste der enthaltenen Objekte
anzuzeigen.
Hierarchien anlegen
Mit der Anwendungshierarchie können Sie eine bereits vorhandene Anwendungsstruktur
anzeigen oder eine neue Anwendungsstruktur entwerfen. So fügen Sie beispielsweise einen
neuen Knoten hinzu:
1. Markieren Sie einen Knoten.
Der markierte Knoten bildet die oberste Ebene Ihrer neuen Hierarchie.
2. Wählen Sie Anwendungsknoten → Anlegen.
Das Dialogfenster Knoten anlegen wird angezeigt.
3. Geben Sie einen Knotennamen oder einen Namen für eine Entwicklungsklasse ein.
Der neue Knoten wird hinzugefügt. Wenn Sie einen Entwicklungsklassennamen
angegeben haben, wird die Kurzbeschreibung der Entwicklungsklasse als Knotentitel
verwendet, und der Name wird rechts vom Knoten angezeigt.
Wenn Sie einem Knoten eine Entwicklungsklasse zuordnen möchten, wählen Sie
Anwendungsknoten → Zuordn.Entw.klasse. Mit dieser Funktion können Sie einem Knoten eine
bereits vorhandene Entwicklungsklasse zuordnen oder eine neue Entwicklungsklasse für den
Knoten erstellen.
Beim Markieren eines Knotens werden auch alle untergeordneten Knoten markiert.
Ein erneutes Markieren eines markierten Knotens führt dazu, daß der Knoten nicht
mehr markiert ist.
2. Wählen Sie Infosystem.
Sie verzweigen in das Repository-Infosystem.
3. Verwenden Sie das Repository [Seite 498] für die gewohnte Suche.
Tabellen anzeigen
Sie öffnen den Data Browser, indem Sie im Einstiegsbild der Development Workbench Übersicht
→ Data Browser wählen. Sie können den Data Browser jedoch auch im Menü Umfeld des
Repository Browser oder im Menü Hilfsmittel des ABAP Editors aufrufen. Geben Sie dann im
Data Browser einen Tabellennamen ein, und wählen Sie ENTER.
Es erscheint ein Selektionsbild, das die die Schlüsselfelder sowie weitere Felder der Tabelle und
Angaben zur Tabellengröße enthält. Schränken Sie die Menge der zu selektierenden Einträge
durch Eingabe von Selektionskriterien ein. Möchten Sie das Ergebnis Ihrer Auswahl anzeigen,
wählen Sie Ausführen. Daraufhin zeigt das System die Ergebnisse an.
Die Anzahl der ausgewählten Einträge wird in der Titelleiste angezeigt:
Kundenspezifische Data-Browser-Anzeige
Im Data Browser können Sie sowohl das Selektionsbild als auch das Ergebnisbild mit
verschiedenen Optionen an Ihre spezifischen Bedürfnisse anpassen.
Das Selektionsbild
Wenn Sie das Selektionsbild sowie das Ergebnisbild des Data Browser an Ihre Bedürfnisse
anpassen möchten, wählen Sie Einstellungen → Benutzerparameter. Das Dialogfenster Data
Browser: Einstellungen wird angezeigt.
Einstellung Funktion
Breite der Ausgabeliste Mit diesem Feld können Sie die Breite des Data
Browser-Ergebnisbildes ändern.
Maximale Trefferzahl In diesem Feld können Sie die Anzahl der
ausgegebenen Einträge ändern. Wenn Sie
beispielsweise den Wert 100 eingeben, zeigt der Data
Browser nur die ersten 100 Einträge an, die die
Suchkritierien erfüllen.
Konvertierungsexit Wenn Sie dieses Ankreuzfeld markieren, wird die
berücksichtigen Konvertierungsroutine der Tabelle bei der Data Browser-
Ausgabe berücksichtigt.
Max. mögl. Trefferzahl anzeigen Wenn Sie dieses Ankreuzfeld markieren, werden alle
Einträge angezeigt, die die Suchkriterien erfüllen.
Gruppenrahmen Schlüsselwort Mit diesen Auswahlknöpfen legen Sie fest, wie die
Felder im Selektionsbild und in der Ausgabe beschriftet
werden. Wenn Sie Feldname markieren, wird als
Beschriftung der Dictionary-Feldname verwendet.
Markieren Sie dagegen Feldbezeichner, wird die
Dictionary-Beschreibung als Feldbezeichner verwendet.
Ihre Einstellungen gehen nicht verloren, wenn Sie Ihre SAP-Arbeitssitzung beenden.
auswählen wird angezeigt. Markieren Sie die Tabellenfelder, die im Selektionsbild angezeigt
werden sollen. Standardmäßig sind alle Felder markiert.
Sie können auch die Feldanzahl für das Data Browser-Ergebnisbild einschränken. Dazu wählen
Sie im Ergebnisbild Einstellungen → Listaufbereitung → Spaltenauswahl... .
Fremdschlüsselbeziehungen
Manche Felder haben Fremdschlüsselbeziehungen zu anderen Tabellen. Sie können für das
aktuelle Tabellenfeld das entsprechende Element der anderen Tabelle anzeigen. Dazu müssen
Sie zunächst eine Fremdschlüsseltabelle anzeigen. Gehen Sie dann folgendermaßen vor:
1. Positionieren Sie den Cursor auf das Feld, für das ein Fremdschlüssel definiert wurde.
2. Wählen Sie Umfeld → Prüftabelle.
Das System zeigt daraufhin das Prüftabellenelement an, das dem markierten
Fremdschlüsselfeld entspricht.
Weitere Konzepte
Mit inaktiven Sourcen ist ein weiteres Konzept für die meisten Entwicklungsobjekte der ABAP
Workbench wirksam.
Mit Business Add-Ins steht innerhalb der ABAP Workbench eine zusätzliche Technik zur
Erweiterung des SAP-Standards zur Verfügung.
Siehe dazu:
Inaktive Sourcen
In dieser Dokumentation finden Informationen zu folgenden Themen:
Konzept
Terminologie
Zum Verständnis inaktiver Sourcen werden die folgenden Grundbegriffe eingeführt:
Terminus Bedeutung
aktive Fassung Ist diejenige Datenbankversion eines Entwicklungsobjektes, die zur
Generierung des Laufzeitobjektes herangezogen wird.
inaktive Fassung Ist die gespeicherte Datenbankversion eines Entwicklungsobjektes,
die das Laufzeitobjekt (auch nach erneuter Generierung) nicht
beeinflußt.
Vorrat inaktiver Objekte Dieser benutzerspezifische Vorrat umfaßt die Menge aller inaktiven
Fassungen der Entwicklungsobjekte eines Benutzers. Bearbeitet der
Benutzer ein neues Objekt, dann wird sein Vorrat um dieses Objekt
erweitert. Nach dem Aktivieren eines Objektes wird dieses aus dem
Vorrat inaktiver Objekte gelöscht.
Von allen privaten Entwicklungsobjekten ($TMP) abgesehen, stellt
dieser Vorrat des Benutzers eine echte Teilmenge aller vom
Benutzer bearbeiteten Objekte dar, die in seinen offenen Aufgaben
vom Workbench Organizer verwaltet werden.
Motivation
Die Einführung inaktiver Sourcen gewährt dem Entwickler eine lokale, separate Sicht auf das R/3
Repository und schafft eine Grundlage für ein "lokales Laufzeitsystem".
Änderungen an Entwicklungsobjekten können innerhalb eines solchen lokalen Systems
ausreichend getestet werden, ohne irgendwelche Störungen des Umfelds zu verursachen.
Der wesentliche Vorteil dieses Konzeptes besteht in der Unterstützung eines reibungslosen
Entwicklungsablaufs. Sie können z.B. die Schnittstelle eines Funktionsbausteins ändern, ohne
daß dies sofortige Auswirkungen bei den Verwendern (in aufrufenden Programmen) zur Folge
hat. Die Auswirkungen auf die Umgebung machen sich erst dann bemerkbar, wenn das
geänderte Objekt aktiviert wird.
Ein weiterer bedeutender Vorteil liegt in der Vermeidung entbehrlicher Generierung von
ABAP-Programmen. Bisher folgte nach dem Sichern des Quelltextes im ABAP Editor
automatisch die Erzeugung einer neuen Load. Die Einführung der inaktiven Sourcen hat
demgegenüber einen Performance-Vorteil, da eine Generierung mit dem Aktivieren zum
geeignet gewählten Zeitpunkt und nicht automatisch erfolgt.
Die Einführung inaktiver Sourcen ist von einer weiteren Vereinheitlichung der Werkzeuge
bezüglich ihrer Operationen begleitet. Außerdem wird eine zusätzliche Sicherheit durch Prüfen
des Rahmenprogramms beim Aktivieren erzielt.
Konzept
§ Objekte werden stets inaktiv gesichert.
Ein in einem Werkzeug angelegtes oder bearbeitetes Entwicklungsobjekt hinterläßt nach
dem Sichern eine inaktive Fassung dieses Objektes auf der Datenbank.
Im Dictionary ist das bisherige Konzept der Aktivierung nach wie vor wirksam.
Demzufolge werden Dictionary-Objekte zwar inaktiv gesichert, jedoch nicht mit einer
inaktiven Fassung im Vorrat inaktiver Objekte des Benutzers verzeichnet. Siehe
auch Aktivierung [Extern] im Dictionary.
Weitere Informationen finden Sie unter
Objekte aktivieren [Seite 518]
Übersicht zu inaktiven Objekten [Seite 519]
Statusanzeige [Seite 520]
Aktivieren von Klassen und Interfaces [Seite 522]
Besonderheiten beim Modifikationsassistenten [Seite 528]
Inkompatible Änderungen
Werkzeug Änderungen
ABAP Editor Mit der Funktion 'Sichern' wird stets die inaktive Fassung gespeichert.
(Bisher war es nur die aktive Fassung).
Die Funktion 'Prüfen' berücksichtigt den Vorrat inaktiver Objekte des
Benutzers.
Neue Funktion 'Aktivieren'.
Neu: Statusanzeige.
Dictionary Geänderte Bezeichnung in der Statusanzeige
Function Builder Das bisherige 'Aktivieren' wird abgelöst. Mit dem neuen 'Aktivieren' können
neben dem Funktionsbaustein auch die zugehörigen Form- und Daten-
Includes mitaktiviert werden.
Die Funktion 'Deaktivieren' wird nicht mehr unterstützt.
Neu: Statusanzeige.
Screen Painter Das bisherige 'Generieren' wird vom 'Aktivieren übernommen.
Neu: Statusanzeige.
Objekte aktivieren
Verwendung
Sie können die Gesamtheit aller Ihrer inaktiven Objekte, ausgewählte Objekte oder auch nur
Teilkomponenten eines Entwicklunsobjektes (Klassen in ABAP Objects) aktivieren.
Voraussetzungen
Um die Aktivierung von Entwicklungsobjekten erfolgreich durchzuführen, wird eine Prüfung des
Gesamtobjektes (Rahmenprogramm, Funktionsgruppe, Klasse,…) durchgeführt. Bei nicht
korrekter Syntax wird die Ausgabe einer Fehlerliste angeboten. Es ist aber auch möglich,
Objekte mit nicht korrekter Syntax zu aktivieren. Dies kann z.B. bei Templates, wie sie bei Code-
Generatoren verwendet werden, von Bedeutung sein.
Vorgehensweise
4. Wählen Sie das entsprechende Objekt aus der Objektliste aus.
5. Wählen Sie die Funktion Aktivieren aus dem Kontextmenü des Object Navigators oder über
die entsprechende Ikone in der Drucktastenleiste des zugehörigen Werkzeugs.
Die Liste des Ihrer inaktiven Objekte wird angezeigt. Das ausgewählte Objekt wird
markiert hervorgehoben.
6. Bestätigen Sie die Auswahl mit .
Bei Includes, die nicht eindeutig einem Rahmenprogramm zugeordnet sind, erscheint
eine Abfrage nach dem Rahmenprogramm. Wählen Sie dann aus der Liste aller
Verwender ein Rahmenprogramm aus.
Bei erfolgreicher Aktivierung erscheint die Meldung Objekt(e) wurde(n) aktiviert in der
unteren Statuszeile.
Ergebnis
Mit dem Aktivieren wird zunächst das Gesamtobjekt in der ausgewählten Konfiguration auf
syntaktische Korrektheit geprüft. Hierbei werden die ausgewählten Teilobjekte in inaktiver, die
übrigen Teilobjekte der Konfiguration dagegen in aktiver Fassung berücksichtigt.
Aus der inaktiven Fassung wird zu jedem Teilobjekt eine aktive erstellt. Danach wird eine neue
Laufzeitversion generiert und schließlich die inaktive Fassung gelöscht und aus der Liste der
inaktiven Objekte entfernt.
Besonderheiten
Beim Aktivieren eines Gesamtobjektes von der Objektliste aus werden zunächst nur die inaktiven
Objekte des Gesamtobjektes in der Auswahlliste angeboten. Über die Drucktaste Alle inaktiven
Objekte wird auch das Umfeld angezeigt und kann eventuell in die Auswahl einbezogen werden.
Verwendung
Sie können zwischen unterschiedlichen Projektionen auf die Gesamtheit aller inaktiven
Entwicklungsobjekte (Teilobjekte) eines R/3-System wählen:
Nach Auswahl eines Objektes können Sie auch zum definierenden Werkzeug
navigieren und dort das Objekt anzeigen lassen oder ändern.
Ferner können Sie auch Objekte eines anderen Benutzers in Ihren Vorrat
aufnehmen ("Vernetzung von Arbeitsvorräten") und aktivieren.
Statusanzeige
Der aktuelle Status eines Entwicklungsobjektes ist im jeweiligen Werkzeug jederzeit ersichtlich.
In der Statusanzeige wird wiedergegeben:
§ ob für ein neu angelegtes Objekt bereits eine Datenbankversion vorliegt (neu ↔ aktiv/inaktiv)
§ ob die Anzeige des Objektes noch dem Datenbankzustand entspricht (überarbeitet ↔
gesichert).
Der Status gesichert wird nicht explizit angezeigt. Ein Objekt wird stets inaktiv gesichert.
§ ob es sich eine inaktive oder aktive Fassung der Datenbankversion handelt (inaktiv↔aktiv).
Folgende Versionen von Entwicklungsobjekten werden in der Statusanzeige wiedergegeben:
Sichern Aktivieren
Anlegen
Ändern
Sichern Ändern
Sichern
Anlegen
Aktivieren
neu inaktiv(
inaktiv(überarbeitet)
überarbeitet) inaktiv aktiv(
aktiv(überarbeitet)
überarbeitet) aktiv
Eine weitere Quelltext-Version erhalten Sie unmittelbar nach dem Laden aus dem
Zwischenspeicher. In diesem Fall erscheint die Anzeige
zwischengespeichert(überarbeitet).
TADIR
METH Methodenimplementierung
REPT Textelemente
§ Die Grunddaten und öffentliche Komponenten einer Klasse sind nicht getrennt aktivierbar.
§ Nur die Teilobjekte für die Grunddaten, öffentliche, geschützte und private Komponenten
wirken sich auf die Statusanzeige im Class Editor aus. Wenn Sie also das gesamte
Beim Aktivieren einer Klasse, die um ein Interface erweitert wurde, ist darauf zu
achten, daß dieses Interface zuvor aktiviert wurde. Anderenfalls wird ein
Syntaxfehler für die Public Section ausgegeben.
Aktivieren
Ändern
Sichern
Ändern
Sichern
nur modelliert/ inaktiv nur modelliert/ inaktiv(überarbeitet) nur modelliert/ aktiv(überarbeitet nur modelliert/ aktiv
Aktivieren Aus der inaktiven Fassung wird eine aktive erstellt. Bei
Entwicklungsobjekten, die weitere Teilobjekte enthalten
(z.B. Klassen in ABAP Objects), können auch nur
einzelne Teilobjekte aktiviert werden.
Vor der Aktivierung wird das Gesamtobjekt auf
syntaktische Korrektheit geprüft, dann aus der inaktiven
eine aktive Fassung erzeugt, eine Laufzeitversion
generiert und schließlich der Eintrag aus dem Vorrat
inaktiver Objekte des Benutzers gelöscht.
Aktive/ Inaktive Sourcen anzeigen Falls beide Fassungen eines Objektes vorhanden sind,
kann die Anzeige in den Werkzeugen zwischen beiden
Fassungen umgeschaltet werden.
Löschen Sowohl die aktive als auch die inaktive Fassung werden
gelöscht.
Beachten Sie, daß nach dem Löschen von
Teilkomponenten globaler Klassen im Class Builder diese
noch einmal im Vorrat inaktiver Objekte des Benutzers
vorkommen und dort mit der "Löschen"-Ikone
gekennzeichnet sind. Erst durch Aktivieren der
betreffenden Komponenten werden diese auch aus dem
Vorrat des Benutzers entfernt und danach endgültig
gelöscht.
Umbenennen Das Umbenennen wirkt sich auf die aktive und die
inaktive Fassung gleichermaßen aus.
Weitere Auswirkungen
Für die unten aufgeführten Funktionen wirken sich die inaktiven Sourcen in folgender Weise aus:
Objektliste (SE80) Anzeige der Gesamtheit aller aktiven und inaktiven Objekte. Bei
Vorhandensein einer inaktiven Fassung wird das betreffende Objekt
benutzerabhängig farbig hervorgehoben.
Debugging Der Debugger zeigt stets die aktive Fassung des Objektes an.
Modifikationen
Bei Modifikationen an Orginal-Teilobjekten des ausgelieferten SAP-Standards ohne Einsatz des
Modifikationsassistenten, sind die inaktiven Sourcen in allen unterstützenden Werkzeugen
wirksam. Daraus resultiert ein inaktives Sichern der modifizierten Teilobjekte.
Bei Modifikationen an Orginal-Teilobjekten des SAP-Standards, jedoch mit Einsatz des
Modifikationsassistenten, werden inaktive Sourcen derzeit noch nicht unterstützt. Modifizierte
Teilobjekte werden mit Ausnahme der Dictionary- und Oberflächen-Objekte (GUI-Status, Dynpro)
aktiv gesichert. Im Dictionary kommt das herkömmliche 'Aktivieren' und im Screen und Menu
Painter die 'Generierung' des Dynpros bzw. der GUI-Oberfläche zum Tragen.
Business Add-Ins
Mit Business Add-Ins stellt SAP eine neue Erweiterungstechnik zur Verfügung. Die neue Technik
basiert auf ABAP Objects. Business Add-Ins beziehen sich auf mögliche Anforderungen von
Nutzern des SAP-Systems, die zu speziell sind, um in den Standard aufgenommen zu werden,
die aber dennoch häufig benötigt werden und deswegen im R/3 vorgedacht sind.
Wie bei Customer-Exits (SMOD/CMOD [Extern]) sind zwei Sichten unterscheidbar:
• In der Definitionssicht legt ein Anwendungsprogrammierer Stellen in einer Source fest, an
denen belieferte Softwareschichten (Branchen, Partner, Kunden etc.) Coding einfügen
können, ohne das Originalobjekt zu modifizieren.
• Die Nutzer von Business Add-Ins können in der Implementierungssicht die von ihnen
benötigte Logik ausgestalten oder eine zur Verfügung gestellte Standardlösung übernehmen,
sofern eine zur Verfügung gestellt wird.
Im Gegensatz zu Customer-Exits wird bei Business Add-Ins nicht von einer zweistufigen (SAP,
Kunde), sondern von einer mehrstufigen (SAP, Länderversionen, IS-Lösungen, Partner, Kunde
etc.) Systemlandschaft ausgegangen. Definitionen und Implementierungen von Business Add-Ins
können in jeder Stufe der Systemlandschaft angelegt werden.
Die Aufwärtskompatibilität der Schnittstellen eines Business Add-Ins ist gewährleistet, d.h. der
Aufruf einer Erweiterung aus der Standardsoftware und die Gültigkeit der Aufrufschnittstelle
bleiben von Releasewechseln unberührt. Eine Registrierung im SSCR ist nicht erforderlich.
Die Erweiterungstechnik mit Business Add-Ins unterscheidet zwischen Erweiterungen, die
höchstens eine Implementierung haben können, und solchen, die von beliebig vielen Kunden
gleichzeitig aktiv genutzt werden können.
Außerdem können Business Add-Ins abhängig von einem Filterwert definiert werden, d.h.
Implementierungen eines Add-Ins können zum Beispiel nach dem Filterwert Land oder nach
anderen Kriterien unterschieden werden.
Die Erweiterungstechnik ist derzeit so konzipiert, daß für ABAP-Sourcen, Screens, GUI-
Oberflächen und Tabellen Schnittstellen definiert werden können, über die der Kunde eigene
Erweiterungen in den Standard einbinden kann.
Die Schnittstellen, die zur Erledigung einer Aufgabe notwendig sind, werden in einem Business
Add-In zusammengefaßt. Zum Release 4.6A können im Rahmen von Business Add-Ins
Programm- und Menüerweiterungen vorgenommen werden.
Erweiterungen des Programmcodings werden mit ABAP Objects realisiert. Für ein besseres
Verständnis der Erweiterungstechnik mit Business Add-Ins wird die Lektüre des Abschnitts ABAP
Objects [Extern] empfohlen.
Weitere Informationen finden Sie in den folgenden Abschnitten:
Architektur der Erweiterungstechnik [Extern]
Vergleich mit bestehenden Techniken [Extern]
Definition eines Business Add-Ins [Extern]
Aufruf eines Add-Ins im Anwendungsprogramm [Extern]
Implementierung eines Business Add-Ins [Extern]
Filterabhängige Business Add-Ins [Extern]
Mehrfach genutzte Business Add-Ins [Extern]
Menüerweiterungen [Extern]
Vorgehen beim Import von Business Add-Ins [Extern]