Sie sind auf Seite 1von 313

BC - ABAP Dictionary

HELP.BCDWBDIC

Release 4.6C
BC - ABAP Dictionary SAP AG

Copyright

© Copyright 2001 SAP AG. Alle Rechte vorbehalten.

Weitergabe und Vervielfältigung dieser Publikation oder von Teilen daraus sind, zu welchem
Zweck und in welcher 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 Dictionary

Symbole

Symbol Bedeutung
Achtung

Beispiel

Empfehlung

Hinweis

Syntax

Tip

April 2001 3
BC - ABAP Dictionary SAP AG

Inhalt

BC - ABAP Dictionary.................................................................................................... 9
ABAP Dictionary.........................................................................................................................................10
Tabellen .......................................................................................................................................................13
Tabellenfelder ............................................................................................................................ 15
Referenzfeld und Referenztabelle ..........................................................................................................16
Includes ...................................................................................................................................................17
Benannte Includes ..................................................................................................................................19
Fremdschlüssel ......................................................................................................................... 20
Generische und konstante Fremdschlüssel............................................................................................23
Semantische Eigenschaften eines Fremdschlüssels..............................................................................25
Kardinalität .........................................................................................................................................26
Art der Fremdschlüsselfelder .............................................................................................................27
Texttabelle...............................................................................................................................................28
Strukturübergreifende Fremdschlüssel ...................................................................................................30
Technische Einstellungen ........................................................................................................ 31
Datenart...................................................................................................................................................32
Größenkategorie .....................................................................................................................................33
Pufferungserlaubnis ................................................................................................................................34
Pufferungsart...........................................................................................................................................35
Vollständige Pufferung.......................................................................................................................36
Generische Pufferung ........................................................................................................................38
Pufferung von Einzelsätzen ...............................................................................................................40
Protokollierung ........................................................................................................................................42
Pooltabelle in transparente Tabelle umwandeln .....................................................................................44
Datenbanktabellen puffern ....................................................................................................... 45
Synchronisation der lokalen Puffer .........................................................................................................48
Beispiel zur Puffersynchronisation.....................................................................................................50
Welche Tabellen sollten gepuffert werden?............................................................................................55
Welche Zugriffe gehen direkt auf die Datenbank....................................................................................56
Wie sind die Tabellenpuffer technisch realisiert?....................................................................................57
Partieller Tabellenpuffer.....................................................................................................................58
Generischer und vollständiger Tabellenpuffer...................................................................................60
Wie kann man die Pufferqualität analysieren?........................................................................................62
Indizes ........................................................................................................................................ 63
Was sollten Sie bei Sekundärindizes beachten? ....................................................................................65
Wie prüft man, ob ein Index verwendet wird?.........................................................................................67
Unique-Index ...........................................................................................................................................68
Index-Kennung........................................................................................................................................69
Customizing-Includes ............................................................................................................... 70
Append-Strukturen.................................................................................................................... 71
Tabelle anlegen.......................................................................................................................... 74
Fremdschlüssel anlegen .........................................................................................................................77
Technische Einstellungen pflegen ..........................................................................................................79
Sekundärindizes anlegen........................................................................................................................80
Auslieferungsklasse ................................................................................................................................82

4 April 2001
SAP AG BC - ABAP Dictionary

Aktivierungsart.........................................................................................................................................84
Fehlernachricht in der Fremdschlüsselprüfung.......................................................................................85
Änderungen an Tabellen durchführen .................................................................................... 86
Append-Struktur anhängen .....................................................................................................................87
Include einfügen......................................................................................................................................89
Neue Felder einfügen..............................................................................................................................91
Initialwerte ..........................................................................................................................................92
Vorhandene Felder löschen ....................................................................................................................94
Datentyp und Länge vorhandener Felder verändern..............................................................................95
Tabellenart ändern ..................................................................................................................................96
Felder verschieben..................................................................................................................................97
Felder aus einer anderen Tabelle übernehmen......................................................................................98
Felder aus einem Entitätstyp übernehmen .............................................................................................99
Tabelle löschen .....................................................................................................................................100
Views .........................................................................................................................................................101
Join, Projektion und Selektion............................................................................................... 103
Inner Join und Outer Join......................................................................................................................106
Fremdschlüsselbeziehung und Join-Bedingung ...................................................................................107
Pflegestatus ............................................................................................................................. 108
Zeitabhängige Schlüsselteile ................................................................................................................109
Inserts über Datenbank-Views ..............................................................................................................110
Datenbank-Views..................................................................................................................... 111
Includes in Datenbank-Views................................................................................................................113
Technische Einstellungen eines Datenbank-Views ..............................................................................114
Append-Views .......................................................................................................................................115
Projektions-Views ................................................................................................................... 117
Help-Views ............................................................................................................................... 118
Pflege-Views ............................................................................................................................ 120
Einschränkungen für Pflege- und Help-Views ......................................................................................122
Views anlegen.......................................................................................................................... 123
Datenbank-View anlegen ......................................................................................................................124
Help-View anlegen ................................................................................................................................127
Projektions-View anlegen......................................................................................................................129
Pflege-View anlegen .............................................................................................................................131
Pflegemerkmal eines Viewfeldes.....................................................................................................133
Auslieferungsklasse eines Pflege-Views .........................................................................................134
Selektionsbedingung des Views pflegen ..............................................................................................135
Append-View anlegen ...........................................................................................................................136
Views löschen.......................................................................................................................... 137
Beispiel zu Views .................................................................................................................... 138
Typen .........................................................................................................................................................141
Datenelemente ......................................................................................................................... 143
Datenelement anlegen ..........................................................................................................................145
Dokumentation und Doku-Status ..........................................................................................................147
Feldbezeichner......................................................................................................................................148
Strukturen ................................................................................................................................ 149
Struktur anlegen....................................................................................................................................151
Benannte Includes ................................................................................................................................153
Tabellentypen .......................................................................................................................... 154

April 2001 5
BC - ABAP Dictionary SAP AG

Tabellentyp anlegen..............................................................................................................................156
Schlüsseldefinition eines Tabellentyps .................................................................................................158
Zugriffsart ..............................................................................................................................................159
Schlüsselart...........................................................................................................................................160
Generische Tabellentypen ....................................................................................................................161
Ranges-Tabellentypen ..........................................................................................................................162
Ranges-Tabellentyp anlegen ................................................................................................................163
Typ löschen.............................................................................................................................. 165
Domänen ...................................................................................................................................................166
Festwerte.................................................................................................................................. 168
Wertetabelle ............................................................................................................................. 169
Eingabe- und Ausgabekonvertierungen ............................................................................... 170
Domäne anlegen...................................................................................................................... 173
Domäne verändern .................................................................................................................. 175
Domäne löschen...................................................................................................................... 176
Suchhilfen ................................................................................................................................................. 177
Struktur einer elementaren Suchhilfe ................................................................................... 179
Struktur einer Sammelsuchhilfe ............................................................................................ 183
Append-Suchhilfen ................................................................................................................. 185
Suchhilfen mit einem Bildschirmfeld verbinden.................................................................. 187
Anbindung an ein Datenelement...........................................................................................................188
Anbindung an die Prüftabelle ................................................................................................................190
Anbindung an ein Tabellen- oder Strukturfeld ......................................................................................192
Anbindung an ein Dynprofeld................................................................................................................194
Hierarchie des Suchhilfeaufrufs ............................................................................................................195
Wertetransport bei der Eingabehilfe .....................................................................................................196
Anlegen einer elementaren Suchhilfe ................................................................................... 198
Dialogtyp ...............................................................................................................................................201
Kurzanwahl............................................................................................................................................202
Default-Werte für Suchhilfeparameter ..................................................................................................203
Anlegen einer Sammelsuchhilfe ............................................................................................ 204
Append-Suchhilfe anlegen ..................................................................................................... 206
Suchhilfe-Exit........................................................................................................................... 207
Beispiel zu Suchhilfen ............................................................................................................ 209
Migration von Help-Views und Matchcodes zu Suchhilfen ................................................ 213
Sperrobjekte..............................................................................................................................................214
Sperrmodus ............................................................................................................................. 217
Funktionsbausteine für Sperranforderungen....................................................................... 218
Bedingungen an die Fremdschlüssel ................................................................................... 221
Sperrmechanismus ................................................................................................................. 222
Lokaler Sperrcontainer..........................................................................................................................224
Sperrobjekt anlegen ................................................................................................................ 225
Sperrobjekte löschen.............................................................................................................. 227
Beispiel zu Sperrobjekten ...................................................................................................... 228
Datenbank-Strukturen anpassen ............................................................................................................231
Ablauf einer Umsetzung ......................................................................................................... 233
Probleme bei Umsetzungen ................................................................................................... 238

6 April 2001
SAP AG BC - ABAP Dictionary

Abgebrochene Umsetzungen fortsetzen .............................................................................. 240


Auffinden abgebrochener Umsetzungen.............................................................................. 242
Aktivierung................................................................................................................................................243
Laufzeitobjekte ........................................................................................................................ 245
Massenaktivierung .................................................................................................................. 246
Aktivieren im Hintergrund ...................................................................................................... 247
Datentyp im ABAP Dictionary.................................................................................................................248
Abbildung auf den ABAP-Datentyp ....................................................................................... 251
Das Datenbank-Utility ..............................................................................................................................253
Tabellen und Indizes auf der Datenbank bearbeiten ........................................................... 255
Views auf der Datenbank bearbeiten .................................................................................... 257
Matchcodes auf der Datenbank bearbeiten.......................................................................... 258
Pools und Cluster auf der Datenbank bearbeiten................................................................ 260
Verarbeitungsart...................................................................................................................... 261
Speicherparameter.................................................................................................................. 262
Aufträge zur Massenverarbeitung anzeigen......................................................................... 264
Jobs für die Massenverarbeitung einplanen ........................................................................ 266
Protokolle der Massenverarbeitung anzeigen...................................................................... 267
Temporäre Tabellen ohne Aufsetzprotokolle anzeigen ...................................................... 268
Pool- und Clustertabellen........................................................................................................................269
Tabellenpool/Tabellencluster anlegen .................................................................................. 273
Tabellenpool/Tabellencluster löschen .................................................................................. 275
Pooltabellen/Clustertabellen anlegen ................................................................................... 276
Pool/Clustertabellen ändern................................................................................................... 277
Matchcodes...............................................................................................................................................278
Aktualisierungsart ................................................................................................................... 280
Besonderheiten bei programmgesteuerten Matchcodes.................................................... 282
Matchcodes anlegen ............................................................................................................... 283
Eigenschaften des Matchcode-Objekts angeben .................................................................................284
Sekundärtabellen des Matchcode-Objekts auswählen.........................................................................285
Felder des Matchcode-Objekts auswählen...........................................................................................286
Matchcode-Objekt aktivieren.................................................................................................................287
Eigenschaften der Matchcode-Id angeben ...........................................................................................288
Sekundärtabellen einer Matchcode-Id auswählen................................................................................290
Felder einer Matchcode-Id auswählen..................................................................................................291
Selektionsbedingungen einer Matchcode-Id angeben..........................................................................294
Matchcode-Id aktivieren ........................................................................................................................296
Matchcode-Daten aufbauen..................................................................................................................297
Anzeigen der aufgebauten Matchcode-Daten ......................................................................................298
Matchcode-Index anlegen.....................................................................................................................299
Funktionsbaustein für Matchcode-Id.....................................................................................................301
Matchcodes ändern................................................................................................................. 302
Matchcode-Objekt ändern.....................................................................................................................303
Matchcode-Id ändern ............................................................................................................................305
Umstellung auf transparente Matchcodes ............................................................................................307
Auswirkungen der Umstellung auf transparente Ids .............................................................................308
Matchcode-Id deaktivieren ....................................................................................................................309
Matchcode-Id löschen ...........................................................................................................................310

April 2001 7
BC - ABAP Dictionary SAP AG

Matchcode-Objekt löschen....................................................................................................................311
Flugmodell ................................................................................................................................................312

8 April 2001
SAP AG BC - ABAP Dictionary
BC - ABAP Dictionary

BC - ABAP Dictionary
Das ABAP Dictionary ermöglicht eine zentrale Beschreibung und Verwaltung aller im System
verwendeten Datendefinitionen. Das ABAP Dictionary ist vollständig in die ABAP Development
Workbench integriert. Alle anderen Komponenten der Workbench können aktiv auf die im ABAP
Dictionary abgelegten Definitionen zugreifen.
Das ABAP Dictionary unterstützt die Definition benutzerdefinierter Typen (Datenelemente,
Strukturen und Tabellentypen). Im ABAP Dictionary kann auch die Struktur von Objekten der
Datenbank (Tabellen, Indizes und Views) definiert werden. Diese Objekte können dann mit
dieser Definition automatisch auf der Datenbank erzeugt werden. Weiterhin stellt das ABAP
Dictionary noch Werkzeuge zur Aufbereitung von Dynprofeldern zur Verfügung, beispielsweise
die Möglichkeit ein Feld mit einer Eingabehilfe (F4-Hilfe) auszustatten.

Typdefinitionen Datenbank-Objekte

Struktur
Tabelle

DB-Tabelle
Tabellentyp
Datenelement

Tools
Mögl. Werte

Dynpro

F4

Die wichtigsten Objekttypen im ABAP Dictionary sind Tabellen, Views, Typen (Datenelemente,
Strukturen, Tabellentypen), Domänen, Suchhilfen und Sperrobjekte.

April 2001 9
BC - ABAP Dictionary SAP AG
ABAP Dictionary

ABAP Dictionary
Einsatzmöglichkeiten
Im ABAP Dictionary werden Datendefinitionen (Metadaten) erfaßt und verwaltet. Es ermöglicht
eine zentrale, redundanzfreie Beschreibung aller im System vorhandenen Datenstrukturen. Neu
erfaßte oder geänderte Informationen werden allen Systemkomponenten automatisch zur
Verfügung gestellt. Dies sorgt für Datenintegrität, Datenkonsistenz und Datensicherheit.
Aus den im ABAP Dictionary erfaßten Datendefinitionen können entsprechende Objekte
(Tabellen bzw. Views) in der unterliegenden relationalen Datenbank erzeugt werden. Das ABAP
Dictionary beschreibt also die Struktur der Objekte der Anwendungsentwicklung und deren
Abbildung in Tabellen bzw. Views auf der unterliegenden relationalen Datenbank.
Weiterhin stellt das ABAP Dictionary noch Standardfunktionen zur Aufbereitung von Feldern auf
Dynpros zur Verfügung, z.B. die Möglichkeit ein Dynprofeld mit einer Eingabehilfe zu versehen.

Welche Informationen sind im ABAP Dictionary abgelegt?


Die wichtigsten Objekttypen im ABAP Dictionary sind Tabellen, Views, Typen, Domänen,
Suchhilfen und Sperrobjekte.
Tabellen [Seite 13] werden im ABAP Dictionary datenbankunabhängig definiert. Aus dieser
Tabellendefinition wird dann eine Tabelle mit gleicher Struktur in der unterliegenden Datenbank
angelegt.
Views [Seite 101] sind logische Sichten auf mehrere Tabellen. Die Struktur des Views wird im
ABAP Dictionary definiert. Aus dieser Struktur kann dann ein View auf der Datenbank erzeugt
werden.
Typen [Seite 141] werden in ABAP Programmen verwendet. Die Struktur eines Typs kann global
im ABAP Dictionary definiert werden. Änderungen an einem Typ sind automatisch in allen
Programmen wirksam, die den Typ verwenden.
Sperrobjekte [Seite 214] dienen zur Synchronisation des Zugriffs mehrerer Benutzer auf den
selben Datenbestand. Aus der Definition eines Sperrobjekts im ABAP Dictionary werden
Funktionsbausteine generiert, die in Anwendungsprogrammen verwendet werden können.
Über Domänen [Seite 166] können verschiedene technisch gleichartige Felder zusammengefaßt
werden. Eine Domäne beschreibt den Wertebereich aller Tabellenfelder und
Strukturkomponenten, die sich auf diese Domäne beziehen.
Auch die Dokumentation (F1-Hilfe) und die Eingabehilfe (F4-Hilfe) zu einem Feld auf einer
Eingabemaske stammen aus dem ABAP Dictionary. Der Dokumentation zum Feld wird dabei zu
einem Datenelement [Seite 143] angelegt, das die inhaltliche Bedeutung eines Tabellenfeldes
beschreibt. Die bei der Eingabehilfe erscheinende Liste der möglichen Eingabewerte wird durch
einen Fremdschlüssel [Seite 20] oder eine Suchhilfe [Seite 177] erzeugt.

Integration in die ABAP Development Workbench


Das ABAP Dictionary ist vollständig in die ABAP Development Workbench integriert. Grundlage
für die aktive Integration des ABAP Dictionary in die Entwicklungsumgebung ist die interpretative
Arbeitsweise des R/3-Systems. Die Interpreter sehen nicht die Originalobjekte, sondern nur
interne Repräsentationen dieser Objekte.

10 April 2001
SAP AG BC - ABAP Dictionary
ABAP Dictionary

Diese internen Repräsentationen werden automatisch angepaßt, sobald das System


Veränderungen im ABAP Dictionary feststellt. Damit ist sichergestellt, daß Dynpro- und ABAP-
Interpreter, Eingabehilfe, Datenbankschnittstelle und Entwicklungswerkzeuge stets auf aktuelle
Informationen zugreifen.

Das folgende ABAP Programm listet die in der Tabelle SCARR enthaltenen
Fluggesellschaften (siehe Flugmodell [Seite 312]) und deren Kürzel (Carrier-Ids) auf.
DATA: SCARR_TAB TYPE SCARR.
SELECT * INTO SCARR_TAB FROM SCARR.
WRITE: / SCARR_TAB-CARRID, SCARR_TAB-CARRNAME.
ENDSELECT.
Im Programm wird nur die Struktur SCARR_TAB deklariert. Alle Informationen zu
dieser Struktur, z.B. Feldnamen, Datentypen und Feldlängen, werden aus der im
ABAP Dictionary definierten Tabelle SCARR übernommen. Diese Informationen zur
Tabelle SCARR werden beim Generieren des Programms aus dem ABAP Dictionary
abgerufen.
Damit muß bei einer Änderung der Tabelle SCARR, zum Beispiel bei der
Veränderung der Länge eines Tabellenfeldes, der Quelltext des Programms nicht
angepaßt werden. Beim nächsten Aufruf des Programms wird in diesem Fall
automatisch festgestellt, daß sich die Struktur der Tabelle SCARR verändert hat.
Das Programm wird dann einfach neu generiert und ruft damit die aktuellen
Informationen zur Tabelle SCARR aus dem ABAP Dictionary ab.

Entwicklungsumgebung
Entwicklungsumgebung
ABAP Data Screen
Werkzeuge Modeler Painter

ABAP
Dictionary

ABAP Dialog Schnitt- Dynpro-


Interpreter Steuerung stellen Interpreter

Laufzeitumgebung
Laufzeitumgebungder
derAnwendung
Anwendung

April 2001 11
BC - ABAP Dictionary SAP AG
ABAP Dictionary

Während der Arbeit an Entwicklungsprojekten können Objekte des ABAP Dictionary mehrfach
verändert werden, bevor sie aktiviert [Seite 243] und damit den operativen Komponenten des
Systems zur Verfügung gestellt werden. Objekte können also zum gleichen Zeitpunkt in einer
aktiven und in einer inaktiven Version im ABAP Dictionary vorhanden sein.
Die inaktiven ABAP Dictionary Objekte beeinflussen das Laufzeitsystem (ABAP Prozessor,
Datenbankschnittstelle) nicht. Damit können größere Änderungen an mehreren Objekten
durchgeführt werden, ohne die Lauffähigkeit des Systems zu beeinflussen. Erst wenn alle
Objekte geändert sind, können diese gemeinsam aktiviert werden.

12 April 2001
SAP AG BC - ABAP Dictionary
Tabellen

Tabellen
Im ABAP Dictionary können Tabellen datenbankunabhängig definiert werden. Hierzu werden die
Felder der Tabelle mit ihren (datenbankunabhängigen) Datentypen und Längen definiert.
Zu der im ABAP Dictionary abgelegten Tabellendefinition wird beim Aktivieren der Tabelle eine
physische Tabellendefinition auf der Datenbank angelegt. Dabei wird die Tabellendefinition aus
dem ABAP Dictionary in eine Definition der jeweiligen Datenbank übersetzt.

Datenbank unabhängige Definition der


Tabellen im ABAP Dictionary

T1 T2 T3 ... Tn

Aktivierer
und
DB-UTILITY

DB

Definition der Tabellen T1


T2
in der Datenbank
T3
Tn

Eine Tabellendefinition im ABAP Dictionary besteht aus folgenden Bestandteilen:


· Tabellenfelder [Seite 15]: Hier werden die Feldnamen und die Datentypen der in der Tabelle
enthaltenen Felder angegeben.
· Fremdschlüssel [Seite 20]: Über Fremdschlüssel werden die Beziehungen der Tabelle zu
anderen Tabellen definiert.
· Technische Einstellungen [Seite 31]: Die technischen Einstellungen steuern, wie die Tabelle
auf der Datenbank angelegt wird.
· Indizes [Seite 63]: Zur Beschleunigung der Datenselektion können Sekundärindizes für die
Tabelle angelegt werden.
SAP-Tabellen können über Append-Strukturen [Seite 71] und Customizing-Includes [Seite 70]
vom Kunden modifiziert werden. Beim Releasewechsel ist bei dieser Art der Modifikation
sichergestellt, daß die Kundenerweiterungen automatisch mit den neuen Versionen der SAP-
Tabellen abgemischt werden.

Siehe auch:
Tabelle anlegen [Seite 74]

April 2001 13
BC - ABAP Dictionary SAP AG
Tabellen

Änderungen an Tabellen durchführen [Seite 86]

14 April 2001
SAP AG BC - ABAP Dictionary
Tabellenfelder

Tabellenfelder
Für ein Tabellenfeld müssen im ABAP Dictionary folgende Angaben gemacht werden:
· Feldname: Der Feldname kann maximal 16-stellig sein und darf aus Buchstaben, Zahlen
und Unterstrichen bestehen. Der Feldname muß mit einem Buchstaben beginnen.
· Schlüsselkennzeichen: Hier muß entschieden werden, ob das Feld zum Schlüssel der
Tabelle gehören soll.
· Feldtyp: Datentyp des Feldes im ABAP Dictionary.
· Feldlänge: Anzahl der gültigen Stellen des Feldes.
· Dezimalstellen: Für numerische Datentypen muß noch die Zahl der Nachkommastellen
angegeben werden.
· Kurztext: Ein kurzer Text, der die Bedeutung des Feldes beschreibt.
Es besteht auch die Möglichkeit, die Felder einer Struktur in die Tabelle zu inkludieren [Seite 17].

Zuordnung von Datentyp, Feldlänge und Kurztext


Die Zuordnung von Datentyp [Seite 248], Länge und Kurztext kann auf verschiedene Arten
erfolgen:
· Dem Feld kann in der Tabellendefinition direkt Datentyp, Feldlänge (und falls notwendig
Dezimalstellen) und Kurztext zugeordnet werden.
· Dem Feld kann ein Datenelement [Seite 143] zugeordnet werden. Datentyp, Feldlänge (und
Dezimalstellen) werden dann aus der Domäne des Datenelements ermittelt. Als Kurztext
wird dem Feld die Kurzbeschreibung des Datenelements zugeordnet.

Weitere Zuordnungsmöglichkeiten
· Prüftabelle: Durch einen Fremdschlüssel [Seite 20] kann eine Eingabeprüfung für ein Feld
definiert werden. Diese Eingabeprüfung steht auf allen Dynpros zur Verfügung, auf denen
das Feld verwendet wird.
· Suchhilfe-Zuordnung: Einem Feld kann eine Suchhilfe [Seite 177] zugeordnet werden.
Diese Suchhilfe definiert den Ablauf der Eingabehilfe auf allen Dynpros, auf denen das Feld
verwendet wird.
· Referenzfeld und Referenztabelle [Seite 16]: Für Felder, die Währungsbeträge (Datentyp
CURR) bzw. Mengenangaben (Datentyp QUAN) enthalten, muß das Tabellenfeld
angegeben werden, in dem die zugehörige Währung oder Mengeneinheit zu finden ist.

Siehe auch:
Tabelle anlegen [Seite 74]

April 2001 15
BC - ABAP Dictionary SAP AG
Referenzfeld und Referenztabelle

Referenzfeld und Referenztabelle


Für Felder, die Währungsbeträge (Datentyp CURR) bzw. Mengenangaben (Datentyp QUAN)
enthalten, muß eine Referenztabelle angegeben werden.
Diese Referenztabelle muß ein Feld mit dem Währungsschlüsselformat (Datentyp CUKY) bzw.
dem Format für Mengeneinheiten (Datentyp UNIT) enthalten. Dieses Feld wird als Referenzfeld
des Ausgangsfeldes bezeichnet. Das Referenzfeld kann auch in der Tabelle selbst liegen.
Die Zuordnung eines Feldes zum Referenzfeld wird erst zur Laufzeit eines Programms
hergestellt. Ist z.B. ein Feld mit Währungsbeträgen gefüllt, wird die zugehörige Währung aus
dem zugeordneten Referenzfeld ermittelt, d.h. der zu diesem Zeitpunkt in diesem Feld
eingetragene Wert bestimmt die Währung.

Tabelle T1

Feld 1 Feld 2 (CURR) Feld 3

Referenztabelle T2

Feld 4 Feld 5 (CUKY) Feld 6 Feld 7

Referenzfeld

Laufzeit
T1-Feld 2 1.500.00

T2-Feld 5 DEM

Die Tabelle SBOOK im Flugmodell [Seite 312] enthält alle Buchungen von Flügen
durch Kunden. Im Feld FORCURAM steht der Preis der Buchung in der Währung
des Kunden. Der entsprechende Währungsschlüssel zu diesem Preis steht im Feld
FORCURKEY der Tabelle SBOOK. Also ist SBOOK die Referenztabelle zum Feld
FORCURAM und FORCURKEY das Referenzfeld zum Feld FORCURAM.

16 April 2001
SAP AG BC - ABAP Dictionary
Includes

Includes
Bei Tabellen [Seite 13] und Strukturen [Seite 149] besteht neben dem Aufzählen der einzelnen
Felder auch die Möglichkeit, die Felder aus einer anderen Struktur zu inkludieren. Einzelfelder
und Includes können beliebig gemischt werden.

Struktur
F3 F4
inkludiert
Tabelle
F1 F2 F3 F4 F5

F1 F2 F3 F4 F5

Datenbank

Wird ein Include geändert, so werden alle Tabellen und Strukturen automatisch angepaßt, die
dieses inkludieren.

Eine Struktur A ist in einer Tabelle B inkludiert worden. In die Struktur A wird ein
neues Feld eingefügt. Beim Aktivieren der Struktur A wird dann die Tabelle B an
diese Änderung angepaßt, d.h. das neue Feld wird auch dort eingefügt.
Einem Include kann ein Gruppenname [Seite 153] zugeordnet werden, über den die Gruppe der
Felder im Include dann in ABAP Programmen als Ganzes angesprochen werden kann.
Includes können auch geschachtelt sein, d.h. eine Struktur A inkludiert eine Struktur B, die
ihrerseits eine andere Struktur C inkludiert, usw. Die maximale Schachtelungstiefe ist auf neun
begrenzt. Ein Pfad von geschachtelten Includes in einer Tabelle bzw. Struktur kann also
höchstens die Länge neun haben (die Tabelle/Struktur selbst ist dabei ausgenommen).

April 2001 17
BC - ABAP Dictionary SAP AG
Includes

Tabelle/Struktur U1

Include U1 U2

Include U2 U3

Maximale
Tiefe = 9

Include U8 U9

Include U9

Es können nur flache Strukturen [Seite 149] inkludiert werden. In einer flachen Struktur verweist
jedes Feld entweder auf ein Datenelement oder ist direkt mit Datentyp, Länge und
gegebenenfalls Dezimalstellen versehen worden.
In eine Tabelle können nur Strukturen inkludiert werden. In eine Struktur können Tabellen,
Strukturen und Views inkludiert werden.

Für die Länge der Feldnamen gilt in Tabellen eine stärkere Einschränkung als in
Strukturen. In einer Tabelle darf ein Feldname nur maximal 16 Stellen lang sein,
während in einer Struktur 30 Stellen für den Feldnamen erlaubt sind. Deshalb kann
eine Struktur nur dann in eine Tabelle inkludiert werden, wenn alle Feldnamen der
Struktur nur maximal 16 Stellen lang sind.
Es darf stets nur eine Tabelle auf einem Pfad von geschachtelten Includes liegen.

Eine Tabelle TAB1 inkludiert eine Struktur STRUKT1, die ihrerseits wieder eine
Struktur STRUKT2 inkludiert. Hier liegt nur die Tabelle TAB1 auf dem Pfad der
geschachtelten Includes. Es wäre auch möglich TAB1 in eine weitere Struktur
STRUKT0 zu inkludieren.
Dagegen kann in TAB1 keine andere Tabelle TAB2 inkludiert werden, da in diesem
Fall zwei Tabellen (TAB1 und TAB2) auf einem Pfad von geschachtelten Includes
liegen würden.

Siehe auch:
Include einfügen [Seite 89]

18 April 2001
SAP AG BC - ABAP Dictionary
Benannte Includes

Benannte Includes
Wird zur Definition einer Datenbanktabelle oder Struktur ein Include [Seite 17] verwendet, kann
der inkludierten Teilstruktur ein Name zugeordnet werden. Über diesen Namen kann die Gruppe
der Felder im Include in ABAP Programmen als Ganzes angesprochen werden.
In ABAP-Programmen können die Felder dann entweder direkt über <Tabellen-/Strukturname>-
<Feldname> oder analog über <Tabellen-/Strukturname>-<Gruppenname>-<Feldname>
angesprochen werden. Auf die Felder der Gruppe als Ganzes kann über <Tabellen-
/Strukturname>-<Gruppenname> zugegriffen werden.

Eine Struktur PERSON inkludiert eine Struktur ADDRESS mit dem Namen ADR.
ADDRESS hat ein Feld CITY. Sie können über PERSON-ADR alle Felder in der
Struktur ADDRESS ansprechen. Das inkludierte Feld CITY kann dann alternativ über
PERSON-CITY oder PERSON-ADR-CITY angesprochen werden.
Es ist möglich, eine Struktur mehrfach zu inkludieren (z.B. in Periodengruppen). Da hierbei der
direkte Zugriff über Feldnamen zulässig bleiben soll, müssen die inkludierten Feldnamen aus
Eindeutigkeitsgründen umbenannt werden.
Hierfür läßt sich jeder Gruppe ein Suffix zuordnen, um den die Namen der Gruppenfelder
erweitert werden. Die Felder können dann in ABAP-Programmen über <Tabellen-
/Strukturname>-<Feldname (mit Suffix)> oder <Tabellen-/Strukturname>-<Gruppenname>-
<Feldname (mit Suffix)> angesprochen werden.

Eine Struktur PERSON inkludiert eine Struktur ADDRESS zweifach. Eine Adresse ist
die Privatadresse mit Suffix H und Namen ADRH. Die andere Adresse ist die
Geschäftsadresse mit Suffix W und Namen ADRW. Auf das Feld CITY in der
Privatadresse kann dann über PERSON-CITYH oder PERSON-ADRH-CITY
zugegriffen werden.
Die Funktionalität der benannten Includes im ABAP Dictionary entspricht dem ABAP-Konstrukt
INCLUDE TYPE ... AS ... RENAMING ... .

April 2001 19
BC - ABAP Dictionary SAP AG
Fremdschlüssel

Fremdschlüssel
Beziehungen zwischen Tabellen können im ABAP Dictionary durch das Anlegen von
Fremdschlüsseln abgebildet werden.
Über Fremdschlüssel können auf einfache Art Werteprüfungen auf Eingabefeldern angelegt
werden. Weiterhin können Fremdschlüssel verwendet werden, um mehrere Tabellen in einem
View [Seite 101] oder einem Sperrobjekt [Seite 214] zu verknüpfen.

Feldzuordnung im Fremdschlüssel
Ein Fremdschlüssel stellt die Verbindung zweier Tabellen T1 und T2 her, indem er Felder der
Tabelle T1 den Primärschlüsselfeldern der Tabelle T2 zuordnet.

Fremdschlüsselfelder

Fremdschlüsseltabelle T1

Feld 1 Feld 2 Feld 3 Feld 4

Primärschlüssel

Prüftabelle T2

Feld 5 Feld 6 Feld 7

Primärschlüssel

Die Tabelle T1 heißt in diesem Fall Fremdschlüsseltabelle (abhängige Tabelle) und die Tabelle
T2 Prüftabelle (referierte Tabelle). Die einander zugeordneten Feldpaare müssen den gleichen
Datentyp und die gleiche Länge besitzen. Jedem Schlüsselfeld der Prüftabelle entspricht also ein
Feld der Fremdschlüsseltabelle. Ein solches Feld heißt Fremdschlüsselfeld.
Ein Fremdschlüssel erlaubt eine Zuordnung von Datensätzen in Fremdschlüsseltabelle und
Prüftabelle. Durch die Einträge in den Fremdschlüsselfeldern spezifiziert ein Satz der
Fremdschlüsseltabelle eindeutig einen Satz der Prüftabelle.

Prüffeld und Werteprüfung


Eines der Fremdschlüsselfelder ist als Prüffeld ausgezeichnet, d.h. für dieses Feld wird die
Fremdschlüsselbeziehung gepflegt.
Bei einer Eingabe in das Prüffeld wird geprüft, ob in der Prüftabelle ein Satz mit dem durch die
Werte in den Fremdschlüsselfeldern vorgegebenen Schlüssel existiert. Ist dies der Fall, ist die
Eingabe zulässig, andernfalls wird die Eingabe vom System zurückgewiesen.

20 April 2001
SAP AG BC - ABAP Dictionary
Fremdschlüssel

Eingabemaske für die


Fremdschlüsseltabelle T1

Feld 1
Prüftabelle T2
Feld 2 3
Feld 5 Feld 6 Feld 7
Feld 3
Feld 4 1 1 1 Text 1
1 3 Text 2
2 1 Text 3
3 1 Text 4
Eingabe ist zulässig, da ein 3 2 Text 5
entsprechender Satz in der 3 3 Text 6
Prüftabelle vorhanden ist 4 1 Text 7
4 2 Text 8

In diesem Beispiel würde eine Eingabe Feld2 = 2 und Feld4 = 2 zurückgewiesen, da in T2 kein
Satz mit dem Schlüssel Feld5 = 2 und Feld6 = 2 vorhanden ist.
Falls nicht gegen alle Schlüsselfelder der Prüftabelle geprüft werden soll, kann man über
generische und konstante Fremdschlüssel [Seite 23] Felder der Fremdschlüsseltabelle aus der
Zuordnung zu den Feldern der Prüftabelle herausnehmen.

Funktionsweise der Werteprüfung


Aus der Definition des Fremdschlüssels wird ein SELECT-Statement generiert. Wird eine
Eingabe in das Prüffeld gemacht, so wird dieses SELECT-Statement abgeschickt. Wird dabei ein
passender Satz der Prüftabelle gefunden, so ist die Eingabe zulässig. Andernfalls wird die
Eingabe zurückgewiesen.
Für die in der obenstehenden Grafik dargestellte Fremdschlüsseltabelle würde das
entsprechende SELECT-Statement folgende Form besitzen:
SELECT * FROM T2 WHERE T2-FELD5 = T1-FELD2 AND T2-FELD6 = T1-FELD4.
Eine Eingabe in einem Dynpro für das Prüffeld Feld2 ist also nur zulässig, wenn in der
Prüftabelle ein Satz mit den auf dem Dynpro für Feld2 und Feld4 gemachten Eingaben als
Schlüssel existiert.

In der Tabelle SBOOK im Flugmodell [Seite 312] sind die Buchungen von Flügen
durch die Kunden einer Fluggesellschaft verzeichnet. Die Flugbuchungen können
von Reisebüros oder direkt am Verkaufsschalter der Fluggesellschaft vorgenommen
werden. Falls die Buchung an einem Verkaufsschalter vorgenommen wurde, wird in
der Tabelle SBOOK dessen Nummer im Feld COUNTER zusammen mit der
Buchung abgespeichert.

April 2001 21
BC - ABAP Dictionary SAP AG
Fremdschlüssel

Hierbei muß sichergestellt werden, daß nur korrekte Nummern von Schaltern
eingetragen werden können. Alle vorhandenen Verkaufsschalter sind in der Tabelle
SCOUNTER eingetragen. Damit kann durch Anlegen eines Fremdschlüssels zum
Prüffeld COUNTNUM die notwendige Werteprüfung etabliert werden.

Fremdschlüsselfelder

Fremdschlüsseltabelle SBOOK

MANDT CARRID CONNID FLDATE CUSTOMID ... COUNTER ... CANCELLED

Prüffeld
Prüftabelle SCOUNTER

MANDT CARRID COUNTNUM AIRPORT

Schlüsselfelder

Siehe auch:
Strukturübergreifende Fremdschlüssel [Seite 30]
Semantische Eigenschaften eines Fremdschlüssels [Seite 25]
Fremdschlüssel anlegen [Seite 77]

22 April 2001
SAP AG BC - ABAP Dictionary
Generische und konstante Fremdschlüssel

Generische und konstante Fremdschlüssel


Eine Fremdschlüsselprüfung gegen alle Schlüsselfelder der Prüftabelle ist nicht immer sinnvoll.
Beispiele sind zeitabhängige Prüftabellen oder Prüftabellen mit einer Versionsnummer als
Schlüsselbestandteil.
In diesen Fällen können generische Fremdschlüssel verwendet werden. Hierbei werden Felder
aus der Zuordnung zu den Schlüsselfeldern der Prüftabelle herausgenommen. Die Prüfung
erfolgt damit nur gegen die verbliebenen Schlüsselfelder.
Es ist auch möglich einem Schlüsselfeld der Prüftabelle einen konstanten Wert zuzuweisen. Die
Prüfung erfolgt für dieses Feld dann nur gegen die angegebene Konstante. Diese Möglichkeit
können Sie verwenden, wenn nur Sätze der Prüftabelle zulässig sind, die in diesem
Schlüsselfeld einen konstanten Wert enthalten.

Fremdschlüsseltabelle FTAB

Feld 6 Feld 7 Feld 8 Feld 9

Generisch Konstant
* K

Prüftabelle PTAB

Feld 1 Feld 2 Feld 3 Feld 4 Feld 5

Primärschlüssel

Für die Fremdschlüsseldefinition in der Abbildung hätte das zugehörige SELECT-Statement für
die Dynproprüfung die folgende Form:
SELECT * FROM PTAB WHERE PTAB-FELD1 = FTAB-FELD6 AND PTAB-FELD3 = FTAB-
FELD8 AND PTAB-FELD4 = ‘K’.
Eine Eingabe in das Prüffeld Feld6 ist also nur dann zulässig, wenn ein Satz der Prüftabelle
PTAB existiert, der den Eingabewert für Feld6 in PTAB-Feld1, den Eingabewert für Feld8 in
PTAB-Feld3 und in PTAB-Feld4 die Konstante K enthält.

April 2001 23
BC - ABAP Dictionary SAP AG
Generische und konstante Fremdschlüssel

Eingabemaske für die


Fremdschlüsseltabelle FTAB

Feld 6 3
Feld 7 30 Prüftabelle PTAB

Feld 8 1 Feld 1 Feld 2 Feld 3 Feld 4 Feld 5

Feld 9 B 1 1 1 A Text 1
1 1 3 B Text 2
2 1 1 A Text 3
3 2 1 K Text 4
Eingabe ist zulässig, da Feld 7 3 1 2 A Text 5
und Feld 9 aus der Zuordnung 3 2 3 A Text 6
herausgenommen wurden 4 1 3 C Text 7
4 2 4 C Text 8

Die für Feld7 und Feld9 auf dem Dynpro eingegebenen Werte sind also für die Prüfung gegen
die Prüftabelle bedeutungslos. Ein Eintrag mit Feld6 = 1, Feld8 = 3 und Feld9 = B wäre in diesem
Beispiel unzulässig, da in der Prüftabelle kein Satz mit PTAB-Feld1 = 1, PTAB-Feld3 = 3 und
PTAB-Feld4 = K existiert!

24 April 2001
SAP AG BC - ABAP Dictionary
Semantische Eigenschaften eines Fremdschlüssels

Semantische Eigenschaften eines Fremdschlüssels


Ein Fremdschlüssel beschreibt eine Beziehung zwischen zwei Tabellen. Durch die Angabe von
Kardinalität [Seite 26] und der Art der Fremdschlüsselfelder [Seite 27] kann die inhaltliche
Bedeutung dieser Beziehung näher spezifiziert werden.
Diese Angaben sind optional und haben überwiegend dokumentarischen Charakter!
Insbesondere werden die Angaben zu Kardinalität und Art der Fremdschlüsselfelder bei der
Werteprüfung über den Fremdschlüssel nicht berücksichtigt!
Die Angaben zu den semantischen Eigenschaften wirken sich nur in den folgenden Fällen aus:
· Wird Schlüsselfelder einer Texttabelle als Art der Fremdschlüsselfelder gewählt, so wird die
Fremdschlüsseltabelle als Texttabelle [Seite 28] zur Prüftabelle aufgefaßt. Wird ein
Dynprofeld gegen eine Tabelle geprüft, so werden bei der Eingabehilfe (F4-Hilfe) zu diesem
Feld standardmäßig die Schlüsseleinträge der Prüftabelle angezeigt. Ist eine Texttabelle zur
Prüftabelle vorhanden, wird jeder angezeigte Schlüsseleintrag noch mit einem erläuternden
Text (Inhalt des ersten characterartigen Feldes der Texttabelle) in der Anmeldesprache des
Benutzers ergänzt.
· Tabellen können nur dann in einem Help-View [Seite 118] bzw. Pflege-View [Seite 120]
aufgenommen werden, wenn Sie über Fremdschlüssel verbunden sind. Das Anlegen eines
solchen Help- oder Pflege-Views ist nur dann sinnvoll, wenn zu jedem Satz in der
Primärtabelle des Views höchstens ein zugehöriger Satz in jeder der Sekundärtabellen des
Views enthalten ist. Beim Anlegen eines Pflege- bzw. Help-Views wird daher überprüft, ob
die Fremdschlüssel, über die die Tabellen im View verknüpft wurden, geeignete
Kardinalitäten haben. Siehe hierzu Einschränkungen für Pflege- und Help-Views [Seite 122].

Der Fremdschlüssel zwischen den Tabellen SBOOK und SCOUNTER stellt sicher,
daß in das Feld COUNTER (Schalter über den der Flug gebucht wurde) nur
vorhandene Schalter eingetragen werden können (siehe hierzu das Beispiel in
Fremdschlüssel [Seite 20]).
Eine Buchung kann entweder über ein Reisebüro oder einen Schalter der
Fluggesellschaft erfolgen. Falls über ein Reisebüro gebucht wurde, bleibt das Feld
COUNTER der Tabelle SBOOK leer. Die Fremdschlüsselfelder müssen also nicht
immer gefüllt sein, d.h. die linke Seite der Kardinalität ist C. Für jeden Schalter
können natürlich beliebig viele Buchungen vorliegen. Damit können für jeden Satz
der Prüftabelle SCOUNTER (Schalter) beliebig viele Einträge (Buchungen) in der
Fremdschlüsseltabelle SBOOK vorliegen. Die rechte Seite der Kardinalität ist also
CN.
Über einen Schalter können natürlich mehrere Buchungen für die gleiche
Fluggesellschaft vorgenommen werden. Diese Buchungen unterscheiden sich damit
nicht bzgl. der Fremdschlüsselfelder (MANDT, CARRID, COUNTER). Die Einträge in
den Fremdschlüsselfeldern identifizieren einen Eintrag in der Fremdschlüsseltabelle
SBOOK (eine Buchung) damit nicht eindeutig. Die Art der Fremdschlüsselfelder ist
damit keine Schlüsselfelder/-kandidaten.

April 2001 25
BC - ABAP Dictionary SAP AG
Kardinalität

Kardinalität
Die Kardinalität (n:m) beschreibt die Fremdschlüsselbeziehung im Hinblick auf die Anzahl der
möglichen abhängigen Sätze (Sätze der Fremdschlüsseltabelle) bzw. referierten Sätze (Sätze
der Prüftabelle).
Die linke Seite (n) der Kardinalität hat folgende Bedeutung:
· n=1: Zu jedem Satz der Fremdschlüsseltabelle gibt es genau einen zugeordneten Satz der
Prüftabelle.
· n=C: Es kann Sätze in der Fremdschlüsseltabelle geben, die über die Fremdschlüsselfelder
keinem Satz der Prüftabelle entsprechen. Dieser Fall kann z.B. vorliegen, wenn das Feld der
Fremdschlüsseltabelle optional ist, d.h. nicht immer gefüllt sein muß.
Die rechte Seite (m) der Kardinalität hat folgende Bedeutung:
· m=1: Zu jedem Satz der Prüftabelle gibt es genau einen abhängigen Satz.
· m=C: Zu jedem Satz der Prüftabelle gibt es höchstens einen abhängigen Satz.
· m=N: Zu jedem Satz der Prüftabelle gibt es mindestens einen abhängigen Satz.
· m=CN: Zu jedem Satz der Prüftabelle gibt es beliebig viele abhängige Sätze.

26 April 2001
SAP AG BC - ABAP Dictionary
Art der Fremdschlüsselfelder

Art der Fremdschlüsselfelder


Die Art der Fremdschlüsselfelder beschreibt die Bedeutung der Fremdschlüsselfelder in der
Fremdschlüsseltabelle.
Es sind folgende Angaben zur Art der Fremdschlüsselfelder möglich:
· keine Schlüsselfelder/-kandidaten: Die Fremdschlüsselfelder sind weder
Primärschlüsselfelder der Fremdschlüsseltabelle noch identifizieren sie einen Satz der
Fremdschlüsseltabelle eindeutig (Schlüsselkandidaten). Die Fremdschlüsselfelder sind damit
nicht (teil)identifizierend für die Fremdschlüsseltabelle.
· Schlüsselfelder/-kandidaten: Die Fremdschlüsselfelder sind entweder Primärschlüsselfelder
der Fremdschlüsseltabelle oder identifizieren einen Satz der Fremdschlüsseltabelle bereits
eindeutig (Schlüsselkandidaten). Die Fremdschlüsselfelder sind damit (teil)identifizierend für
die Fremdschlüsseltabelle.
· Schlüsselfelder einer Texttabelle: Die Fremdschlüsseltabelle ist eine Texttabelle [Seite 28]
zur Prüftabelle, d.h. der Schlüssel der Fremdschlüsseltabelle unterscheidet sich nur in einem
zusätzlichen Sprachschlüsselfeld vom Schlüssel der Prüftabelle. Dieser Fall ist ein Spezialfall
der Art Schlüsselfelder/-kandidaten.

April 2001 27
BC - ABAP Dictionary SAP AG
Texttabelle

Texttabelle
Eine Tabelle A ist eine Texttabelle zu einer Tabelle B, falls sich der Schlüssel von A aus dem
Schlüssel von B und einem zusätzlichen Sprachschlüsselfeld (Feld mit Datentyp LANG)
zusammensetzt. In Tabelle A können damit zu jedem Schlüsseleintrag von B erläuternde Texte
in mehreren Sprachen erfaßt werden.
Um die Schlüsseleinträge mit den Texten zu verknüpfen, muß die Texttabelle A mit der Tabelle B
über einen Fremdschlüssel verbunden werden. Hierbei muß Schlüsselfelder einer Texttabelle für
die Art der Fremdschlüsselfelder gewählt werden (siehe Semantische Eigenschaften eines
Fremdschlüssels [Seite 25]).

Tabelle B
Schlüsselfelder K1 und K2
K1 K2 F1 F2
... ... ... ...
Texttabelle A zu B
1 1 XX YY
1 2 YY XX Schlüsselfelder K1, K2 und L (Typ LANG)
... ... ... ...
K1 K2 L TEXT
... ... ... ...
1 1 DE Text 1 (deutsch)
1 1 EN Text 1 (englisch)
1 2 DE Text 2 (deutsch)
1 2 EN Text 2 (englisch)
... ... ... ...

Textfremdschlüssel

Ist die Tabelle B Prüftabelle eines Feldes, so werden bei der Eingabehilfe (F4-Hilfe) die
vorhandenen Schlüsseleinträge der Tabelle B als mögliche Eingabewerte angezeigt. Zu jedem
Schlüsselwert der Tabelle B wird zusätzlich noch der erläuternde Text (Inhalt des ersten
characterartigen Nicht-Schlüsselfeldes der Texttabelle A) in der Anmeldesprache des Benutzers
eingeblendet.

28 April 2001
SAP AG BC - ABAP Dictionary
Texttabelle

Trefferliste bei englischer


Anmeldung des Benutzers

K1 K2 Text
... ... ...

1 1 Text1 (englisch)

1 2 Text2 (englisch)

... ... ...


Pflegebildschirm

Feld 1

Feld 2 Aufruf der Eingabehilfe

Feld wird gegen die


Tabelle B geprüft

Zu einer Tabelle B kann nur eine Texttabelle angelegt werden! Dies wird beim Versuch, eine
Tabelle mit Textfremdschlüssel zu B zu aktivieren, vom System überprüft.

April 2001 29
BC - ABAP Dictionary SAP AG
Strukturübergreifende Fremdschlüssel

Strukturübergreifende Fremdschlüssel
Bei der Definition eines Fremdschlüssels kann einem Feld der Prüftabelle auch ein nicht in der
Fremdschlüsseltabelle enthaltenes Feld der Workarea (z.B. ein Feld einer anderen Tabelle)
zugeordnet werden. Eine solche Zuordnung ist für alle Felder mit Ausnahme des Prüffeldes
möglich.

Die Tabelle T2 ist Prüftabelle der Fremdschlüsseltabelle T1. Dem Schlüsselfeld


Feld6 der Prüftabelle T2 wird ein Feld F der Workarea zugeordnet.

Fremdschlüsseltabelle T1

Feld 1 Feld 2 Feld 3 Feld 4

Primärschlüssel
Feld F der
Workarea

Prüftabelle T2

Feld 5 Feld 6 Feld 7

Primärschlüssel

Das entsprechende SELECT-Statement für die Eingabeprüfung sieht dann


folgendermaßen aus:
SELECT * FROM T2 WHERE T2-FELD5 = T1-FELD2 AND T2-FELD6 = F.
Wird eine Eingabe in das Feld T1-Feld2 (Prüffeld) gemacht, so wird dieses SELECT-
Statement abgeschickt. Wird ein entsprechender Satz gefunden, so ist die Eingabe
zulässig, andernfalls wird sie zurückgewiesen.

Ist einem Feld der Prüftabelle ein Feld zugeordnet, welches nicht in der
Fremdschlüsseltabelle enthalten ist, so muß dieses Feld zum Zeitpunkt einer
Eingabeprüfung gefüllt sein. Andernfalls schlägt die Prüfung stets fehl, d.h. es
können keine Werte in das Prüffeld eingegeben werden!

30 April 2001
SAP AG BC - ABAP Dictionary
Technische Einstellungen

Technische Einstellungen
Die technischen Einstellungen einer Tabelle bestimmen, wie die Tabelle beim Anlegen auf der
Datenbank behandelt wird, ob die Tabelle gepuffert wird und ob Änderungen an Datensätzen der
Tabelle protokolliert werden.
Die wichtigsten Parameter in den technischen Einstellungen sind:
· Datenart: Über die Datenart [Seite 32] können Sie bestimmen, in welchem physischen
Bereich der Datenbank (Tablespace) die Tabelle angelegt werden soll.
· Größenkategorie: Über die Größenkategorie [Seite 33] können Sie die Größe der für die
Tabelle angelegten Extents beeinflussen.
Beim Anlegen der Tabelle auf der Datenbank werden die notwendigen Informationen über den
zu wählenden Speicherbereich und die Extentgröße aus den technischen Einstellungen ermittelt.
· Pufferungserlaubnis: Hier können Sie festlegen, ob die Tabelle gepuffert werden darf (siehe
Pufferungserlaubnis [Seite 34]).
· Pufferungsart: Falls die Tabelle gepuffert werden darf, müssen Sie eine Pufferungsart
angeben (vollständig, partiell, generisch). Die Pufferungsart [Seite 35] bestimmt, wieviele
Sätze der Tabelle beim Zugriff auf einen Tabelleneintrag in den Puffer geladen werden.
· Protokollierung: Über diesen Parameter können Sie festlegen, ob Veränderungen an den
Tabelleneinträgen protokolliert werden sollen. Falls die Protokollierung [Seite 42]
eingeschaltet ist, wird jede Änderung an einem Satz der Tabelle in einer Protokolltabelle
festgehalten.
Für Pooltabellen oder Tabellen, die über dieses Kennzeichen zu einem früheren Zeitpunkt in
transparente Tabellen umgewandelt wurden, wird noch das Kennzeichen In transparente Tabelle
umwandeln (Transparent-Flag [Seite 44]) angezeigt.

Siehe auch:
Technische Einstellungen pflegen [Seite 79]
Datenbanktabellen puffern [Seite 45]

April 2001 31
BC - ABAP Dictionary SAP AG
Datenart

Datenart
Mit der korrekten Wahl der Datenart wird Ihre Tabelle beim Anlegen auf der Datenbank
automatisch dem richtigen Bereich (Tablespace bzw. DBSpace) der Datenbank zugeordnet.
Jeder Datenart entspricht ein physischer Bereich, in dem alle dieser Datenart zugeordneten
Tabellen abgelegt werden. Es sind folgende Datenarten möglich:
· APPL0 (Stammdaten): Daten, die nur selten geändert werden. Ein Beispiel für Stammdaten
sind die in einer Adressendatei enthaltenen Daten, wie z.B. Name, Anschrift und
Telefonnummer.
· APPL1 (Bewegungsdaten): Daten, die oft geändert werden. Ein Beispiel für
Bewegungsdaten sind die in einem Lager vorhandenen Warenbestände, die sich nach jeder
Bestellung ändern.
· APPL2 (Organisationsdaten): Customizingdaten, die bei der Einstellung des Systems
angegeben und danach nur selten verändert werden. Ein Beispiel ist die Tabelle mit
Länderschlüsseln.
Für den Kunden stehen zwei weitere Datenarten USR und USR1 zur Verfügung. Diese sind für
kundeneigene Entwicklungen vorgesehen. Die diesen Datenarten zugeordneten Tabellen
werden in einem Tablespace für Kundenentwicklungen abgelegt.

Tabellen im ABAP Dictionary

Stammdaten Organisationsdaten Bewegungsdaten Systemdaten


Tabelle 1 Tabelle 4 Tabelle 5
Tabelle 2
Tabelle 3 Tabelle 7 Tabelle 6

Tablespace Tablespace Tablespace Tablespace


Stammdaten Org.daten Beweg.daten Systemdaten

Tabelle 1 Tabelle 2 Tabelle 4 Tabelle 5

Tabelle 3 Tabelle 7 Tabelle 6

Datenbank

32 April 2001
SAP AG BC - ABAP Dictionary
Größenkategorie

Größenkategorie
Die Größenkategorie beschreibt den vermuteten Platzbedarf der Tabelle auf der Datenbank. Sie
können für Ihre Tabelle eine Größenkategorie zwischen 0 und 4 wählen. Jeder Kategorie ist
dabei, abhängig vom verwendeten Datenbanksystem, eine bestimmte feste Größe eines
Speicherbereiches (Extents) der Datenbank zugeordnet.
Beim Anlegen einer Tabelle wird für diese ein initialer Platz (Initial Extent) auf der Datenbank
reserviert. Benötigt sie später durch Erfassen von Daten mehr Platz, so wird Speicherplatz
entsprechend der gewählten Größenkategorie hinzugefügt.

Technische Einstellungen
Größenkategorie
TABA 1
TABB 3
Initial First Second
TABC 4
Extent Extent Extent

TABA ...
TABB ...
TABC ...
Datenbank

Die korrekte Wahl der Größenkategorie stellt sicher, daß nicht sehr viele kleine Extents zu einer
Tabelle entstehen. Weiterhin wird vermieden, daß Platz durch Anlegen von zu großen Extents
verschwendet wird.

April 2001 33
BC - ABAP Dictionary SAP AG
Pufferungserlaubnis

Pufferungserlaubnis
Ob und wie eine Tabelle gepuffert wird, muß in den technischen Einstellungen zur Tabelle
festgelegt werden. Dabei gibt es drei Möglichkeiten:
· Pufferung nicht erlaubt: Die Pufferung der Tabelle ist nicht erlaubt, z.B. weil
Anwendungsprogramme immer die aktuellsten Daten aus der Tabelle benötigen oder die
Tabelle zu häufig geändert wird.
· Pufferung erlaubt, aber ausgeschaltet: Betriebswirtschaftlich und technisch steht der
Pufferung der Tabelle nichts im Wege. Anwendungen, die auf die Tabelle zugreifen, laufen
mit und ohne Pufferung der Tabelle korrekt. Ob die Pufferung einer Tabelle einen
Performance-Gewinn bringt, hängt von der Tabellengröße und dem Zugriffsprofil der Tabelle
(Häufigkeit der verschiedenen Arten auf die Tabelle zuzugreifen) ab. Da noch nicht absehbar
ist, wie diese Werte im Kundensystem aussehen, ist die Pufferung der Tabelle
ausgeschaltet. Falls die Tabellengröße und das Zugriffsprofil der Tabelle für die Pufferung
der Tabelle sprechen, kann diese im Kundensystem jederzeit eingeschaltet werden.
· Pufferung eingeschaltet: Die Tabelle soll gepuffert werden. In diesem Fall muß eine
Pufferungsart [Seite 35] angegeben werden.

Siehe auch:
Datenbanktabellen puffern [Seite 45]
Welche Tabellen sollten gepuffert werden? [Seite 55]

34 April 2001
SAP AG BC - ABAP Dictionary
Pufferungsart

Pufferungsart
Die Pufferungsart bestimmt, welche Sätze einer Tabelle beim Zugriff auf einen Satz der Tabelle
in den Puffer des Applikationsservers geladen werden. Man unterscheidet die folgenden
Pufferungsarten:
· Vollständige Pufferung [Seite 36]: Beim Zugriff auf einen Satz der Tabelle werden sämtliche
Sätze der Tabelle in den Puffer geladen.
· Generische Pufferung [Seite 38]: Beim Zugriff auf einen Satz der Tabelle werden alle mit
diesem Satz in den generischen Schlüsselfeldern (linksbündiger Teil des Tabellenschlüssels,
der durch die Angabe einer Anzahl von Schlüsselfeldern identifiziert wird)
übereinstimmenden Sätze in den Puffer geladen.
· Pufferung von Einzelsätzen [Seite 40]: Es werden jeweils nur die Sätze einer Tabelle in den
Puffer geladen, auf die tatsächlich zugegriffen wird.

Siehe auch:
Datenbanktabellen puffern [Seite 45]

April 2001 35
BC - ABAP Dictionary SAP AG
Vollständige Pufferung

Vollständige Pufferung
Bei vollständiger Pufferung befindet sich die Tabelle entweder ganz oder gar nicht im Puffer.
Beim lesenden Zugriff auf einen Satz der Tabelle werden alle Sätze der Tabelle in den Puffer
geladen.

In diesem Beispiel wird der rot unterlegte Satz aus der Tabelle SCOUNTER von
einem Programm gelesen. Falls die Tabelle vollständig gepuffert ist, werden dabei
alle Sätze der Tabelle in den Puffer geladen.

Datenbanktabelle SCOUNTER Pufferinhalt


MANDT CARRID COUNTNUM AIRPORT 001 AA 00000001 ACA
001 AA 00000001 ACA 001 BA 00000001 ACE
001 BA 00000001 ACE 001 BA 00000002 BER
001 BA 00000002 BER 001 BA 00000003 LCY
001 BA 00000003 LCY 001 BA 00000004 LHR
001 BA 00000004 LHR 001 LH 00000001 BER
001 LH 00000001 BER 001 LH 00000002 DEN
001 LH 00000002 DEN 001 LH 00000003 FRA
001 LH 00000003 FRA 001 LH 00000004 LCY
001 LH 00000004 LCY 001 LH 00000005 LGW
001 LH 00000005 LGW 001 LH 00000006 LHR
001 LH 00000006 LHR 001 LH 00000007 MUC
001 LH 00000007 MUC 001 LH 00000008 RTM
001 LH 00000008 RTM 001 UA 00000001 HAM
001 UA 00000001 HAM
Applikationsserver
SELECT * FROM SCOUNTER WHERE
MANDT = ‘001’ AND CARRID = ‘LH’
AND COUNTNUM = '00000004'.

Die gepufferten Datensätze werden im Puffer nach dem Schlüssel der Tabelle
sortiert. Zugriffe auf die gepufferten Daten können damit nur Feldinhalte bis zum
letzten spezifizierten Schlüsselfeld zur Einschränkung der zu durchsuchenden
Datenmenge auswerten.
Bei solchen Zugriffen sollte also ein möglichst großer linksbündiger Teil des
Schlüssels verwendet werden. Ist beispielsweise das erste Schlüsselfeld nicht
versorgt, so erfolgt ein Full-Table-Scan im Puffer. Unter diesen Umständen kann ein
direkter Zugriff auf die Datenbank effizienter sein, falls dort geeignete
Sekundärindizes [Seite 63] vorhanden sind.

Wann ist vollständige Pufferung sinnvoll?


Bei der Entscheidung, ob eine Tabelle vollständig gepuffert werden soll, müssen die
Tabellengröße, die Anzahl der lesenden Zugriffe und die Anzahl der schreibenden Zugriffe

36 April 2001
SAP AG BC - ABAP Dictionary
Vollständige Pufferung

berücksichtigt werden. Je kleiner eine Tabelle ist, je häufiger sie gelesen und je seltener in sie
geschrieben wird, um so günstiger ist die vollständige Pufferung der Tabelle.
Vollständige Pufferung kann in folgenden Fällen sinnvoll sein:
· Für Tabellen mit einem Umfang bis zu 30 kB. Wird auf eine Tabelle häufig ausschließlich
lesend zugegriffen, kann diese Größe auch überschritten werden. Die Auslastung des
Puffers sollte aber immer berücksichtigt werden.
· Für größere Tabellen, auf die häufig Mengenzugriffe erfolgen. Können diese Mengenzugriffe
über eine sehr selektive WHERE-Bedingung über einen Datenbankindex [Seite 63]
formuliert werden, kann es aber günstiger sein, auf die Pufferung zu verzichten!
· Für Tabellen, auf die häufig Zugriffe auf nicht vorhandene Sätze abgesetzt werden. Da sich
alle Sätze der Tabelle im Puffer befinden, kann direkt im Puffer entschieden werden, ob ein
Satz vorhanden ist oder nicht.

April 2001 37
BC - ABAP Dictionary SAP AG
Generische Pufferung

Generische Pufferung
Bei generischer Pufferung werden beim Zugriff auf einen Satz der Tabelle alle mit diesem Satz in
den generischen Schlüsselfeldern übereinstimmenden Sätze in den Puffer geladen. Der
generische Schlüssel ist ein linksbündiger Teil des Primärschlüssels der Tabelle.

In diesem Beispiel wird der rot unterlegte Satz aus der Tabelle SCOUNTER von
einem Programm gelesen. Falls die Tabelle generisch gepuffert ist, werden dabei
alle mit dem gelesenen Satz in den generischen Schlüsselfeldern (MANDT und
CARRID) übereinstimmenden Sätze in den Puffer geladen.

Datenbanktabelle SCOUNTER Pufferinhalt


MANDT CARRID COUNTNUM AIRPORT
001 AA 00000001 ACA 001 LH 00000001 BER
001 BA 00000001 ACE 001 LH 00000002 DEN
001 BA 00000002 BER 001 LH 00000003 FRA
001 BA 00000003 LCY 001 LH 00000004 LCY
001 BA 00000004 LHR 001 LH 00000005 LGW
001 LH 00000001 BER 001 LH 00000006 LHR
001 LH 00000002 DEN 001 LH 00000007 MUC
001 LH 00000003 FRA 001 LH 00000008 RTM
001 LH 00000004 LCY
001 LH 00000005 LGW
001 LH 00000006 LHR
001 LH 00000007 MUC
001 LH 00000008 RTM
001 UA 00000001 HAM
Applikationsserver
SELECT * FROM SCOUNTER WHERE
generischer Schlüssel MANDT = ‘001’ AND CARRID = ‘LH’
AND COUNTNUM = '00000004'.

Wann ist generische Pufferung sinnvoll?


Eine Tabelle sollte generisch gepuffert werden, wenn für die Verarbeitung in der Regel nur
bestimmte generische Bereiche der Tabelle benötigt werden.
Mandantenabhängige, vollständig gepufferte Tabellen werden automatisch generisch gepuffert,
da auf einem Applikationsserver in der Regel nicht in allen Mandanten gleichzeitig gearbeitet
wird. Das Mandantenfeld ist der generische Schlüssel.
Sprachabhängige Tabellen sind ein weiteres Beispiel für den sinnvollen Einsatz generischer
Pufferung. In der Regel werden auf einem Applikationsserver nur Sätze einer Sprache benötigt.
Der generische Schlüssel umfaßt in diesem Fall alle Schlüsselfelder bis einschließlich des
Sprachfeldes.

38 April 2001
SAP AG BC - ABAP Dictionary
Generische Pufferung

Wie sollte der generische Schlüssel gewählt werden?


Bei generischer Pufferung ist die geeignete Wahl des generischen Schlüssels von
entscheidender Bedeutung.
Wird der generische Schlüssel zu klein gewählt, so werden sehr wenige große Bereiche im
Puffer gehalten. Bei einem Zugriff werden dann eventuell zu viele Daten in den Puffer geladen.
Wird der generische Schlüssel zu groß gewählt, entstehen möglicherweise zu viele kleine
generische Bereiche im Puffer. Diese können die Pufferverwaltung belasten, da dort für jeden
gepufferten generischen Bereich ein Eintrag verwaltet wird. Weiterhin besteht die Gefahr, daß
viele Zugriffe am Puffer vorbei direkt auf die Datenbank gehen, da sie den generischen Schlüssel
der Tabelle nicht voll angeben.Gibt es pro generischem Bereich nur einige wenige Sätze, so ist
es in der Regel günstiger, die Tabelle vollständig zu puffern.
Der generische Schlüssel wird nur bis 64 Bytes unterschieden. Die Angabe eines längeren
generischen Schlüssels ist möglich, die über den Wert von 64 Bytes hinausgehenden Teile
werden aber zur Bildung der generischen Bereiche nicht herangezogen.

Zugriff auf die gepufferten Daten


Generisches Puffern einer Tabelle ist nur dann sinnvoll, wenn auf die Tabelle mit voll
spezifizierten generischen Schlüsselfeldern zugegriffen wird. Ist bei einem SELECT-Statement
ein Feld des generischen Schlüssels nicht mit einem Wert versorgt, so wird am Puffer vorbei
direkt von der Datenbank gelesen!
Wird mit voll spezifiziertem generischen Schlüssel auf einen nicht im Puffer enthaltenen
generischen Bereich zugegriffen, erfolgt ein Datenbankzugriff, um den Bereich zu laden. Wenn
die Tabelle keine Sätze im angegebenen Bereich enthält ("No Record Found"), wird dieser
Bereich im Puffer als nicht existent vorgemerkt. So kann bei einem späteren Zugriffsversuch auf
diesen Bereich ein erneuter Datenbankzugriff vermieden werden.

April 2001 39
BC - ABAP Dictionary SAP AG
Pufferung von Einzelsätzen

Pufferung von Einzelsätzen


Bei der Pufferung von Einzelsätzen werden nur die Sätze in den Puffer geladen, auf die
tatsächlich lesend zugegriffen wird. Pufferung von Einzelsätzen spart dadurch gegenüber
generischer bzw. vollständiger Pufferung Speicherplatz im Puffer ein. Der Verwaltungsaufwand
im Puffer ist allerdings höher als bei generischer oder vollständiger Pufferung. Zum Laden der
Sätze sind wesentlich mehr Datenbankzugriffe erforderlich als bei den anderen Pufferungsarten.

In diesem Beispiel wird der rot unterlegte Satz aus der Tabelle SCOUNTER von
einem Programm gelesen. Falls für die Tabelle die Pufferung von Einzelsätzen
gewählt wurde, wird nur der gelesene Satz in den Puffer geladen.

Datenbanktabelle SCOUNTER Pufferinhalt


MANDT CARRID COUNTNUM AIRPORT
001 AA 00000001 ACA 001 LH 00000004 LCY
001 BA 00000001 ACE
001 BA 00000002 BER
001 BA 00000003 LCY
001 BA 00000004 LHR
001 LH 00000001 BER
001 LH 00000002 DEN
001 LH 00000003 FRA
001 LH 00000004 LCY
001 LH 00000005 LGW
001 LH 00000006 LHR
001 LH 00000007 MUC
001 LH 00000008 RTM
001 UA 00000001 HAM
Applikationsserver
SELECT SINGLE FROM SCOUNTER WHERE
MANDT = ‘001’ AND CARRID = ‘LH’
AND COUNTNUM = '00000004'.

Wann ist die Pufferung von Einzelsätzen sinnvoll?


Pufferung von Einzelsätzen ist insbesondere bei großen Tabellen empfehlenswert, für die nur auf
wenige Sätze durch SELECT SINGLE zugegriffen wird. Der Umfang der Sätze, auf die
zugegriffen wird, sollte zwischen 100-200 kB liegen.
Bei kleinen Tabellen, auf die oft zugegriffen wird, ist vollständige Pufferung in der Regel
günstiger. Denn zum Laden einer solchen Tabelle ist bei vollständiger Pufferung nur ein
Datenbank-Zugriff erforderlich, während bei Pufferung von Einzelsätzen viele Datenbank-Zugriffe
anfallen.

40 April 2001
SAP AG BC - ABAP Dictionary
Pufferung von Einzelsätzen

Zugriff auf die gepufferten Daten


Alle Zugriffe, die nicht über SELECT SINGLE abgesetzt werden, gehen am Puffer vorbei direkt
auf die Datenbank. Dies gilt auch, wenn im SELECT-Statement der vollständige Schlüssel
spezifiziert ist.
Wird mit SELECT SINGLE auf einen noch nicht gepufferten Satz zugegriffen, erfolgt ein
Datenbank-Zugriff, um den Satz zu laden. Enthält die Tabelle keinen Satz zum angegebenen
Schlüssel, so wird dieser Satz im Puffer als nicht existent vermerkt. Bei einem späteren Zugriff
mit demselben Schlüssel kann damit ein erneuter Datenbank-Zugriff vermieden werden.

April 2001 41
BC - ABAP Dictionary SAP AG
Protokollierung

Protokollierung
Über das Protokollierungskennzeichen können Sie festlegen, ob Änderungen an den
Datensätzen einer Tabelle protokolliert werden sollen. Falls die Protokollierung eingeschaltet ist,
wird jede Änderung (durch UPDATE, DELETE) eines bestehenden Datensatzes durch einen
Benutzer oder ein Anwendungsprogramm in einer Protokolltabelle (DBTABPRT) auf der
Datenbank festgehalten.

ABAP Dictionary
TAB protokollieren
Anwendungs-
transaktion
TAB

Feld 1 Feld 2 Feld 3


Verändern
eines Satzes

System-Profile
...
rec/client =ALL TAB Protokolltabelle
... Feld 1 Feld 2 Feld 3

Datenbank

Um die Protokollierung tatsächlich anzustoßen, muß das SAP-System mit einem Profile gestartet
werden, das den Parameter rec/client enthält. Über diesen kann gesteuert werden, ob die
Protokollierung für alle oder aber für ausgewählte Mandanten durchgeführt werden soll.
Folgende Parameterwerte sind möglich:
rec/client = ALL Alle Mandanten sollen protokolliert werden.
rec/client = 000[,...] Die angegebenen Mandanten sollen protokolliert werden.
rec/client = OFF Es findet keine Protokollierung statt.

Das Einschalten der Protokollierung verlangsamt ändernde Zugriffe auf die Tabelle!
Erstens muß für jede Änderung ein Satz in die Protokolltabelle geschrieben werden.
Zweitens greifen viele Benutzer parallel auf diese Protokolltabelle zu. Dadurch
können Sperrsituationen entstehen, obwohl die Benutzer auf verschiedenen
Anwendungstabellen arbeiten.
Die Protokollierung wird unabhängig von der Verbuchung durchgeführt.

42 April 2001
SAP AG BC - ABAP Dictionary
Protokollierung

Die vorhandenen Protokolle können über die Transaktion Tabellenhistorie (SCU3) angezeigt
werden.

April 2001 43
BC - ABAP Dictionary SAP AG
Pooltabelle in transparente Tabelle umwandeln

Pooltabelle in transparente Tabelle umwandeln


Über das Transparent-Flag der technischen Einstellungen können Sie Pooltabellen auf einfache
Art in transparente Tabellen umwandeln. Sie können diese Möglichkeit anwenden, wenn Sie
auch außerhalb des SAP-Systems auf eine Pooltabelle zugreifen wollen.

Vorgehensweise
1. Verzweigen Sie aus dem Pflegebild der Pooltabelle mit Technische Einstellungen in das
Pflegebild der technischen Einstellungen [Seite 31] zur Pooltabelle.
2. Markieren Sie das Kennzeichen In transparente Tabelle umwandeln. Sie nehmen damit nur
die technischen Einstellungen in Korrektur und nicht die Tabellendefinition.
3. Pflegen Sie die übrigen Attribute der technischen Einstellungen.
4. Aktivieren Sie die technischen Einstellungen.

Ergebnis
Die Pooltabelle wird durch eine Umsetzung (siehe Datenbank-Strukturen anpassen [Seite 231])
in eine transparente Tabelle umgewandelt. Sie können in einem Dialogfenster entscheiden, ob
die Umsetzung direkt oder im Hintergrund erfolgen soll.
Wird eine Tabelle mit gesetztem Transparent-Flag von SAP erneut als Pooltabelle ausgeliefert,
so bleibt sie im Kundensystem transparent! Soll eine Tabelle mit gesetztem Transparent-Flag
wieder in eine Pooltabelle umgewandelt werden, so muß zuerst das Transparent-Flag
zurückgenommen werden. Danach müssen die technischen Einstellungen aktiviert werden. Erst
nach diesen Aktionen können Sie die Tabellenart ändern [Seite 96].

Ist eine überarbeitete Version einer Pooltabelle vorhanden, so kann diese über das
Transparent-Flag nicht in eine transparente Tabelle umgewandelt werden. Die
technischen Einstellungen der Tabelle lassen sich in diesem Fall bei gesetztem
Transparent-Flag nicht aktivieren.
Für transparente Tabellen existieren einige Einschränkungen (Anzahl der
Schlüsselfelder, Schlüssellänge, Tabellenlänge), die für Pooltabellen nicht gelten. Es
können nur solche Pooltabellen über das Transparent-Flag umgewandelt werden,
die alle diese Einschränkungen erfüllen. Falls eine der Bedingungen verletzt ist,
lassen sich die technischen Einstellungen nicht aktivieren. Sie können dem
Aktivierungsprotokoll in diesem Fall die Fehlerursache entnehmen.

Siehe auch:
Pool- und Clustertabellen [Seite 269]

44 April 2001
SAP AG BC - ABAP Dictionary
Datenbanktabellen puffern

Datenbanktabellen puffern
Die Pufferung einer Tabelle erhöht die Performance beim Zugriff auf die in der Tabelle
enthaltenen Datensätze.
Die Tabellenpuffer befinden sich lokal auf jedem Applikationsserver des Systems. Zugriffe auf die
Daten gepufferter Tabellen können damit direkt aus dem Puffer des Applikationsservers
befriedigt werden. Zeitaufwendige Zugriffe auf die Datenbank werden dadurch eingespart.

Applikationsserver

ABAP Programm
R/3 Tabellenpuffer
SELECT * FROM SBOOK
WHERE ...

Datenbank-Schnittstelle

Applikationsserver

Datenbank Datenbank
Kommunikationssystem
Prozesse Puffer

Datenbank

Die Pufferung ist insbesondere in Client/Server-Umgebungen wichtig, da hier die Zugriffszeit


über das Netz wesentlich höher liegt als die Zugriffszeit auf eine lokal gepufferte Tabelle. Je nach
Netzwerkbelastung beträgt dieser Faktor 10-100.
Diese Performancedifferenz ist in zentralen Systemen (Systemen mit nur einem
Anwendungsserver) etwas geringer als in lokalen Systemen (Systemen mit mehreren
Anwendungsservern), jedoch wirkt sich auch in zentralen Systemen die Einsparung von
Prozeßwechseln und die gegenüber dem Datenbanksystem gezieltere Pufferung merklich auf die
Performance aus.

Wie werden die Puffer gefüllt?


Greift ein Programm auf Daten einer gepufferten Tabelle zu, so wird über die Datenbank-
Schnittstelle ermittelt, ob sich diese Daten im Puffer des Applikationsservers befinden. Ist dies
der Fall, so werden die Daten direkt aus dem Puffer gelesen. Sind die Daten nicht im Puffer des
Applikationsservers enthalten, so werden die Daten von der Datenbank gelesen und dabei in den
Puffer geladen. Der nächste Zugriff auf diese Daten kann damit aus dem Puffer befriedigt
werden.

April 2001 45
BC - ABAP Dictionary SAP AG
Datenbanktabellen puffern

Welche Sätze beim Zugriff in den Puffer geladen werden, ist durch die Pufferungsart [Seite 35]
bestimmt.

Applikationsserver

Programm

Tabellenpuffer Programm liest Daten


aus einer gepufferten
Tabelle, die sich noch
nicht im Puffer befindet

Daten werden in
den Puffer geladen

Datenbank

Wie werden die lokalen Puffer synchronisiert?


Eine gepufferte Tabelle wird in der Regel auf allen Applikationsservern gelesen und dort im
Puffer gehalten. Ändert ein Programm auf einem der Applikationsserver die in der Tabelle
enthaltenen Daten, so wird dies durch die Datenbank-Schnittstelle in einer Protokolltabelle
vermerkt. Auf allen anderen Applikationsservern haben die Puffer noch den alten Stand und die
Programme lesen damit unter Umständen veraltete Daten.
In einem festen Zeitintervall, in der Regel alle 1-2 Minuten, läuft ein
Synchronisationsmechanismus [Seite 48]. Dabei wird die Protokolltabelle gelesen und die
Pufferinhalte, die von anderen Servern verändert wurden, werden invalidiert. Beim nächsten
Zugriff werden die Daten invalidierter Tabellen dann direkt von der Datenbank gelesen und im
Puffer aktualisiert.

Verdrängung
Wenn durch Einlagern neuer Daten Platzbedarf im Puffer entsteht, werden diejenigen Daten
verdrängt, auf die am längsten nicht zugegriffen wurde. Die Verdrängung findet asynchron zu
bestimmten Zeitpunkten statt, die dynamisch anhand der Zugriffe auf den Puffer bestimmt
werden. Verdrängung findet nur statt, wenn zu diesem Zeitpunkt der freie Platz im Puffer einen
voreingestellten Wert unterschreitet oder die Zugriffsqualität zu schlecht ist.

Zurücksetzen der Tabellenpuffer


Über die Eingabe von $TAB im Kommandofeld können die Tabellenpuffer auf dem
entsprechenden Applikationsserver zurückgesetzt werden. Dabei werden alle Daten im Puffer
invalidiert.

46 April 2001
SAP AG BC - ABAP Dictionary
Datenbanktabellen puffern

Verwenden Sie dieses Kommando nur, wenn Inkonsistenzen im Puffer entstanden sind! Das
Füllen der Puffer kann in großen Systemen mehrere Stunden dauern. Während dieser Zeit ist die
Performance erheblich beeinträchtigt.

Siehe auch:
Synchronisation der lokalen Puffer [Seite 48]
Welche Tabellen sollten gepuffert werden? [Seite 55]
Wie sind die Tabellenpuffer technisch realisiert? [Seite 57]
Welche Zugriffe gehen direkt auf die Datenbank [Seite 56]
Wie kann man die Pufferqualität analysieren? [Seite 62]

April 2001 47
BC - ABAP Dictionary SAP AG
Synchronisation der lokalen Puffer

Synchronisation der lokalen Puffer


Die Tabellenpuffer befinden sich lokal auf jedem Applikationsserver des Systems. Damit entsteht
das Problem, daß die Pufferverwaltung Änderungen an gepufferten Objekten auf allen
Applikationsservern des Systems nachziehen muß.

Applikationsserver Applikationsserver

Programm Programm

Tabellenpuffer Tabellenpuffer

Datenbank

Wird eine gepufferte Tabelle modifiziert, so wird sie im Puffer des Applikationsservers, von dem
aus die Änderung durchgeführt wurde, synchron aktualisiert. Die netzweite
Puffersynchronisation, d.h. die Synchronisation der Puffer aller anderen Applikationsserver,
erfolgt mittels eines asynchronen Verfahrens.
Nach jeder Modifikation an Tabellen, die gepuffert werden können, werden Einträge in eine
zentrale Datenbanktabelle (DDLOG) geschrieben. Diese Einträge werden von jedem
Applikationsserver in festen Zeitabständen gelesen.
Werden Einträge gefunden, die eine Änderung der von diesem Server gepufferten Daten
anzeigen, so werden diese Daten invalidiert. Bei einem neuen Zugriff auf die Daten, werden
diese dann direkt von der Datenbank gelesen. Bei einem solchen Zugriff kann die Tabelle dann
erneut in den Puffer geladen werden.
Um zu verhindern, daß eine Tabelle permanent in den Puffer geladen und dort sofort wieder
invalidiert wird, kann die Tabelle nach dem Invalidieren erst nach Ablauf einer Wartezeit wieder
in den Puffer geladen werden.
Dieses Verfahren hat gegenüber einem synchronen Verfahren (jede Änderung an gepufferten
Daten eines Servers wird sofort allen anderen Servern über das Netz bekanntgegeben) den
großen Vorteil, die Netzlast des Systems gering zu halten. Würden die Puffer sofort nach jeder
Änderung synchronisiert, müßte jeder Server jede Änderung an einer gepufferten Tabelle allen
anderen Servern über das Netz mitteilen. Dies würde sich negativ auf die Performance
auswirken.

48 April 2001
SAP AG BC - ABAP Dictionary
Synchronisation der lokalen Puffer

Der Nachteil des Verfahrens gegenüber der synchronen Aktualisierung besteht darin, daß die
Daten während der Zeitspanne zwischen zwei Synchronisationen nicht mehr aktuell sein können.
Aufgrund des asynchronen Verfahrens zur Puffersynchronisation sollten Sie bei der Einstellung
der Pufferung für eine Tabelle folgende Punkte beachten:
· Es dürfen nur solche Tabellen gepuffert werden, auf die sehr selten schreibend zugegriffen
wird (read mostly) oder für die temporäre Inkonsistenzen keine Bedeutung haben.
· Tabellen, deren Einträge sich oft verändern, sollten nicht gepuffert werden. Sonst findet ein
ständiges Invalidieren und Neuladen statt, was sich negativ auf die Performance auswirkt.

Standardmäßig ist die Puffersynchronisation im Systemprofil eingeschaltet. In


zentralen Systemen, die nur einen Applikationsserver besitzen, ist die
Puffersynchronisation nicht nötig und sollte unbedingt ausgeschaltet werden.

Siehe auch:
Beispiel zur Puffersynchronisation [Seite 50]

April 2001 49
BC - ABAP Dictionary SAP AG
Beispiel zur Puffersynchronisation

Beispiel zur Puffersynchronisation


Das folgende Beispiel zeigt, wie die lokalen Puffer des Systems synchronisiert werden. Wir
gehen von einem System mit zwei Applikationsservern aus, die wir im folgenden als Server1 und
Server2 bezeichnen.
Ausgangssituation: Beide Server haben bisher noch nicht auf Sätze der vollständig gepufferten
Tabelle TAB zugegriffen. Die Sätze der Tabelle sind deshalb noch nicht in den lokalen Puffern
der beiden Server enthalten.
Zeitpunkt 1: Server 1 liest Sätze aus der Tabelle TAB auf der Datenbank.
Zeitpunkt 2: Die Tabelle TAB wird vollständig in den lokalen Puffer von Server 1 geladen.
Zugriffe von Server 1 auf die Daten der Tabelle TAB laufen nun über den lokalen Puffer dieses
Servers.
Zeitpunkt 3: Server 2 greift auf Sätze der Tabelle zu. Da sich die Tabelle noch nicht im lokalen
Puffer von Server 2 befindet, werden die Sätze direkt von der Datenbank gelesen.
Zeitpunkt 4: Die Tabelle TAB wird in den lokalen Puffer von Server 2 geladen. Damit greift auch
Server 2 beim nächsten Lesen über seinen lokalen Puffer auf Daten aus TAB zu.

Puffer Puffer

TAB TAB

Server 2 Server 1

SELECT * FROM TAB SELECT * FROM TAB


WHERE FIELD = ‘Y’. WHERE FIELD = ‘X’.

44
11
33
22
TAB
Synchronisationstabelle

Zeitpunkt 5: Server 1 löscht Sätze aus der Tabelle TAB und aktualisiert die Datenbank.
Zeitpunkt 6: Server 1 schreibt einen Eintrag in die Synchronisationstabelle.
Zeitpunkt 7: Server 1 aktualisiert seinen lokalen Puffer.

50 April 2001
SAP AG BC - ABAP Dictionary
Beispiel zur Puffersynchronisation

Puffer Puffer

TAB TAB
77
Server 2 Server 1

DELETE * FROM TAB


WHERE FIELD = ‘X’.

66
55
TAB von Server
1 modifiziert

TAB
Synchronisationstabelle

Zeitpunkt 8: Server 2 greift auf die gelöschten Datensätze zu. Da sich die Tabelle TAB in
seinem lokalen Puffer befindet, erfolgt der Zugriff über diesen lokalen Puffer.
Server 2 findet also die Sätze, obwohl diese in der Datenbanktabelle nicht mehr vorhanden sind!
Würde der gleiche Zugriff von einem Anwendungsprogramm auf Server 1 ausgeführt, so würde
dieses Programm erkennen, daß die Sätze nicht mehr vorhanden sind. Zu diesem Zeitpunkt
hängt das Verhalten eines Anwendungsprogramms also davon ab, auf welchem Server es läuft!

April 2001 51
BC - ABAP Dictionary SAP AG
Beispiel zur Puffersynchronisation

Puffer Puffer

TAB TAB
88
Server 2 Server 1

SELECT * FROM TAB


WHERE FIELD = ‘X’.

TAB von Server


1 modifiziert

TAB
Synchronisationstabelle

Zeitpunkt 9: Der Synchronisationszeitpunkt ist erreicht. Beide Server sehen in der


Synchronisationstabelle nach, ob eine der Tabellen in ihrem lokalen Puffer inzwischen von einem
anderen Server verändert wurde.
Zeitpunkt 10: Server 2 stellt fest, daß die Tabelle TAB in der Zwischenzeit von Server 1
verändert wurde. Server 2 invalidiert deshalb die Tabelle in seinem lokalen Puffer. Der nächste
Zugriff von Server 2 auf Daten der Tabelle TAB geht deshalb über die Datenbank. Server 1 muß
die Tabelle in seinem Puffer nicht invalidieren, da er selbst der einzige Änderer der Tabelle TAB
ist. Server 1 greift also beim nächsten Zugriff auf Sätze der Tabelle TAB erneut über seinen
lokalen Puffer zu.

52 April 2001
SAP AG BC - ABAP Dictionary
Beispiel zur Puffersynchronisation

Puffer Puffer

TAB TAB
10
10
Server 2 Server 1

Synchronisation

99 99

TAB von Server


1 modifiziert

TAB
Synchronisationstabelle

Zeitpunkt 11: Server 2 greift erneut auf Sätze der Tabelle TAB zu. Da TAB im lokalen Puffer von
Server 2 invalidiert ist, erfolgt der Zugriff über die Datenbank.
Zeitpunkt 12: Die Tabelle wird erneut in den lokalen Puffer von Server 2 geladen. Die beiden
Server und die Datenbank sind nun wieder konsistent bzgl. ihrer Informationen zur Tabelle TAB.

Puffer Puffer

TAB TAB

Server 2 Server 1

SELECT * FROM TAB


WHERE FIELD = ‘Y’.

12
12

11
11

TAB
Synchronisationstabelle

April 2001 53
BC - ABAP Dictionary SAP AG
Beispiel zur Puffersynchronisation

54 April 2001
SAP AG BC - ABAP Dictionary
Welche Tabellen sollten gepuffert werden?

Welche Tabellen sollten gepuffert werden?


Grundsätzlich können nur transparente Tabellen und Pooltabellen gepuffert werden. Für
Clustertabellen ist keine Pufferung möglich.
Allen Schlüsselfeldern gepufferter Tabellen müssen Character-Datentypen zugeordnet sein, d.h.
der Datentyp des Feldes muß auf einen der ABAP Typen C, N, D oder T abgebildet werden
(siehe Abbildung auf den ABAP-Datentyp [Seite 251]).
Die beiden folgenden Punkte sprechen gegen eine Pufferung einer Tabelle:
· Die von der Applikation gelesenen Daten müssen immer auf dem neuesten Stand sein. Die
Verzögerungen durch den Synchronisationsmechanismus (siehe Synchronisation der lokalen
Puffer [Seite 48]) können nicht hingenommen werden.
· Die Daten der Tabelle werden oft geändert. In diesem Fall kann der Aufwand für die
Synchronisation größer werden als der Performancegewinn durch die Pufferung. Als grobe
Richtschnur kann gelten, daß die Pufferung einer Tabelle nicht sinnvoll ist, falls mehr als ein
Prozent der Zugriffe auf die Tabelle ändernde Operationen sind.

Die Tabelle, die die Währungen enthält, wird nur einmal täglich aktualisiert, während
die Zahl der lesenden Zugriffe sehr hoch ist. In diesem Fall ist die Pufferung
empfehlenswert.
Typische Kandidaten für die Pufferung sind Customizing- und Systemtabellen. In bestimmten
Fällen sind auch Stammdaten mit Customizing-Charakter pufferbar.
Die Inhalte gepufferter Tabellen sind in einem verteilten System nicht immer auf dem aktuellsten
Stand. Mit Hilfe des ABAP-Kommandos "SELECT SINGLE... BYPASSING BUFFER" kann der
Puffer umgangen und die Daten können direkt aus der Datenbanktabelle gelesen werden. Wird
auf eine gepufferte Tabelle häufig mit diesem Kommando zugegriffen, sollte geprüft werden, ob
diese Tabelle unbedingt gepuffert werden muß bzw. ob der aktuelle Datenbankstand wirklich
unverzichtbar ist.
Ob und wie eine Tabelle gepuffert wird, muß in den technischen Einstellungen (siehe Technische
Einstellungen [Seite 31]) zur Tabelle festgelegt werden.

April 2001 55
BC - ABAP Dictionary SAP AG
Welche Zugriffe gehen direkt auf die Datenbank

Welche Zugriffe gehen direkt auf die Datenbank


Für das Programmieren von Zugriffen auf gepufferte Tabellen ist es wichtig zu wissen, welche
Zugriffe aus dem Puffer lesen und welche Zugriffe stets direkt auf die Datenbank gehen.
Die folgenden Zugriffe gehen immer am Puffer vorbei direkt auf die Datenbank:
· SELECT... BYPASSING BUFFER
· SELECT FOR UPDATE
· SELECT mit Aggregatfunktion, z.B. COUNT, MIN, MAX, SUM, AVG
· SELECT DISTINCT
· SELECT... WHERE... IS NULL
· ORDER BY (mit Ausnahme von PRIMARY KEY)
Bei generischer Pufferung gehen zusätzlich alle SELECT-Statements ohne vollständige Angabe
des generischen Schlüssels direkt auf die Datenbank. Bei generischer Pufferung können also nur
Zugriffe unter Angabe des vollständigen generischen Schlüssels aus dem Puffer befriedigt
werden.
Bei Pufferung von Einzelsätzen geht zusätzlich jedes SELECT-Statement ohne den Zusatz
SINGLE direkt auf die Datenbank. Dies gilt auch, wenn im SELECT-Statement der vollständige
Schlüssel spezifiziert ist. Bei Pufferung von Einzelsätzen können also nur Zugriffe mit SELECT
SINGLE aus dem Puffer befriedigt werden.
Natürlich gehen auch alle Zugriffe mit Native SQL (EXEC SQL) am Puffer vorbei direkt auf die
Datenbank. Solche Zugriffe sollten auf gepufferte Tabellen unbedingt vermieden werden.
Erstens gehen lesende Zugriffe immer an den Tabellenpuffern vorbei. Zweitens werden
ändernde Zugriffe vom R/3 System nicht bemerkt, da hier keine Einträge in die
Synchronisationstabelle gemacht werden (siehe Synchronisation der lokalen Puffer [Seite 48]).
Damit können Inkonsistenzen zwischen dem Datenbestand in den Puffern der Applikationsserver
und auf der Datenbank entstehen.

56 April 2001
SAP AG BC - ABAP Dictionary
Wie sind die Tabellenpuffer technisch realisiert?

Wie sind die Tabellenpuffer technisch realisiert?


Die Tabellenpuffer liegen im Shared Memory. Man unterscheidet zwischen dem partiellen
Tabellenpuffer TABLP und dem generischen/vollständigen Tabellenpuffer TABL. Die beiden
Tabellenpuffer unterscheiden sich im wesentlichen in ihrer Verwaltung freier Speicherbereiche
und in ihren Verdrängungsmechanismen.
Genauere Informationen zum technischen Aufbau der Puffer, insbesondere zu Aufbau,
Zugriffsmechanismus, Verdrängungsverhalten und globaler Synchronisation in verteilten
Systemen finden Sie in:
· Partieller Tabellenpuffer [Seite 58]
· Generischer und vollständiger Tabellenpuffer [Seite 60]

April 2001 57
BC - ABAP Dictionary SAP AG
Partieller Tabellenpuffer

Partieller Tabellenpuffer
Im partiellen Tabellenpuffer TABLP werden einzelne Sätze von satzweise gepufferten Tabellen
verwaltet.

Technische Realisierung und Pufferzugriff


Der partielle Tabellenpuffer besteht aus einer zentralen Verwaltungsstruktur, einem
Tabellenverzeichnis und dem Datenbereich. Der Datenbereich ist in Rahmen fester Größe
(frames) organisiert (standardmäßig 4kB).
Die Tabellennamen sind im Verzeichnis alphabetisch sortiert. Die Tabelleneinträge liegen,
ebenfalls sortiert, in den zugehörigen Rahmen des Datenbereichs.
Bei einem Pufferzugriff wird durch binäre Suche zunächst der Eintrag im Tabellenverzeichnis,
anschließend der betreffende Rahmen und schließlich der gesuchte Satz innerhalb des
Rahmens ermittelt.
Wenn neue Daten unter Beibehaltung der Sortierreihenfolge eingefügt werden, können Rahmen
im Datenbereich überlaufen. Solche überlaufenden Rahmen müssen geteilt und ihre
Verwaltungsstruktur muß aktualisiert werden. Hieraus erklärt sich auch, daß der partielle
Tabellenpuffer etwas weniger effizient als der generische/vollständige Tabellenpuffer arbeitet. Im
partiellen Tabellenpuffer müssen die Datensätze nach und nach unter Reorganisation der
Rahmenstruktur eingebaut werden. Im generischen/vollständigen Puffer werden dagegen alle
Daten einer Tabelle in einem Schritt - von der Datenbank bereits sortiert - eingelagert.

Verwaltung nicht vorhandener Sätze


Der partielle Puffer speichert auch Informationen über nicht vorhandene Sätze einer Tabelle.
Wird versucht mit einem Schlüssel auf die Tabelle zuzugreifen, der nicht in der Datenbank
vorhanden ist, so wird diese Information im Puffer gespeichert.
Dies geschieht über ein Flag, daß an jeden gespeicherten Satz im Puffer angehängt ist. Das Flag
zeigt an, ob dieser Satz in der Tabelle existiert oder nicht. Wird versucht auf einen nicht
vorhandenen Satz zuzugreiffen, so wird ein leerer Satz mit dem entsprechenden Schlüssel im
Puffer abgespeichert und das Flag wird auf den Wert für Nichtexistenz gesetzt. Wird erneut
versucht auf diesen Satz zuzugreifen, so kann direkt im Puffer festgestellt werden, daß dieser
Satz nicht auf der Datenbank existiert.
Satzweise Pufferung ist also auch dann empfehlenswert, wenn oft wiederholt versucht wird, auf
nicht existente Sätze einer Tabelle zuzugreifen.

Verdrängung
Wenn Sätze einer partiell gepufferten Tabelle gelesen und im Puffer gespeichert werden sollen,
kann es aus Platzgründen unter Umständen notwendig sein, andere Sätze aus dem Puffer zu
entfernen. In diesem Fall werden diejenigen Sätze der Tabelle aus dem Puffer entfernt, auf die
am längsten nicht mehr zugegriffen wurde.

Globale Synchronisation
Die Modifikationen in den lokalen Puffern müssen in verteilten Systemen synchronisiert werden,
um die gepufferten Daten konsistent zu halten. Das allgemeine Vorgehen bei der
Synchronisation ist beschrieben in Synchronisation der lokalen Puffer [Seite 48].

58 April 2001
SAP AG BC - ABAP Dictionary
Partieller Tabellenpuffer

Im folgenden werden die Auswirkungen verschiedener ABAP Befehle auf die lokale und globale
Synchronisation des partiellen Puffers beschrieben.
Werden Veränderungen mit WHERE-Bedingungen durchgeführt (UPDATE dbtab WHERE...,
DELETE FROM dbtab WHERE...), so wird die gesamte betroffene Tabelle zum
Synchronisationszeitpunkt sowohl im Puffer des lokalen Servers (Server auf dem der Befehl
abgesetzt wurde) als auch auf allen anderen Servern invalidiert.
Bei Veränderungen ohne WHERE-Bedingungen (UPDATE dbtab, INSERT dbtab, DELETE
dbtab) werden zum Synchronisationszeitpunkt die betroffenen Sätze im Puffer des lokalen
Servers geändert und in den Puffern aller anderen Server gelöscht.
Aus diesem Grunde belasten Veränderungen mit WHERE-Bedingung die Puffer-Verwaltung
erheblich mehr als solche ohne eine WHERE-Bedingung.

April 2001 59
BC - ABAP Dictionary SAP AG
Generischer und vollständiger Tabellenpuffer

Generischer und vollständiger Tabellenpuffer


Im generischen/vollständigen Tabellenpuffer TABL werden generische Tabellenbereiche bzw.
vollständige Tabellen verwaltet. Die einzelnen generischen Bereiche werden im Puffer wie
eigenständige, vollständig gepufferte Tabellen verwaltet.

Technische Realisierung und Pufferzugriff


Der generische/vollständige Tabellenpuffer besteht, wie auch der partielle Puffer, aus einer
zentralen Verwaltungsstruktur, einem Tabellenverzeichnis und dem Datenbereich.
Der Hauptunterschied zum partiellen Puffer liegt in der Verwaltung des Datenbereichs. Der
generische/vollständige Puffer teilt seinen Speicher in Bereiche (Extents) variabler Länge. Die
Länge eines Bereichs beträgt ein vielfaches einer festen Blockgröße (256 Byte). Die
Pufferverwaltung versucht, den Inhalt eines generischen Tabellenbereichs bzw. eine ganze
Tabelle in einem Extent zu plazieren. Dies ermöglicht eine Reduzierung des Platzbedarfs
gepufferter Daten im Vergleich zur satzweisen Pufferung.
Die Tabellennamen sind im Tabellenverzeichnis alphabetisch sortiert. Die Datensätze werden in
einem Schritt - von der Datenbank bereits sortiert - in das entsprechende Extent eingelagert.
Beim Pufferzugriff wird zunächst mittels binärer Suche der entsprechende Tabellenname im
Tabellenverzeichnis gesucht. Dann wird ebenfalls mittels binärer Suche der entsprechende
Datensatz im Extent gesucht.

Verdrängung
Im Gegensatz zum partiellen Puffer wird die Verdrängung beim generischen/vollständigen Puffer
asynchron zu bestimmten Zeitpunkten durchgeführt. Diese Zeitpunkte werden dynamisch
anhand der Anzahl der Zugriffe auf den Puffer bestimmt. Die Zeit zwischen zwei Verdrängungen
hängt also von der Auslastung des Puffers ab.
Eine Verdrängung findet nur statt, wenn zum entsprechenden Zeitpunkt der freie Platz im Puffer
einen voreingestellten Wert unterschreitet oder die Zugriffsqualität (d.h. die Anzahl der Zugriffe,
die direkt aus dem Puffer befriedigt werden können) zu schlecht ist. Es wird dann versucht, einen
bestimmten Platz im Puffer freizumachen. Es wird also zu bestimmten Zeitpunkten eine größere
Menge von Tabellen verdrängt.
Hierbei werden die Tabellen verdrängt, auf die am seltensten zugegriffen wurde. Die Zugriffe auf
eine Tabelle werden dabei, in Abhängigkeit vom Zeitpunkt an dem Sie erfolgten, verschieden
gewichtet. Zugriffe, die weiter in der Vergangenheit liegen, werden geringer gewichtet als solche,
die erst kurz vor dem Zeitpunkt der Verdrängung erfolgten.
Dieses Verfahren garantiert insbesondere, daß Tabellen, auf die nur zu einem bestimmten
Zeitpunkt sehr häufig zugegriffen wird, die aber danach nicht mehr benutzt werden, nach einiger
Zeit aus dem Puffer verdrängt werden können.
Bei generisch gepufferten Tabellen ist zu beachten, daß einzelne generische Bereiche im Puffer
wie eigenständige Tabellen behandelt werden. Es können also einzelne generische Bereiche
einer Tabelle verdrängt werden, während andere generische Bereiche der Tabelle im Puffer
erhalten bleiben.
Nach dem Verdrängen von Tabellen findet in bestimmten Zeitintervallen eine Reorganisation des
Puffers statt, um die Fragmentierung des Puffers zu vermindern.

60 April 2001
SAP AG BC - ABAP Dictionary
Generischer und vollständiger Tabellenpuffer

Globale Synchronisation
Die Modifikationen in den lokalen Puffern müssen in verteilten Systemen synchronisiert werden,
um die gepufferten Daten konsistent zu halten. Das allgemeine Vorgehen bei der
Synchronisation ist beschrieben in Synchronisation der lokalen Puffer [Seite 48].
Im folgenden werden die Auswirkungen verschiedener ABAP Befehle auf die lokale und globale
Synchronisation des generischen/vollständigen Puffers beschrieben.
Werden Veränderungen mit WHERE-Bedingungen durchgeführt (UPDATE dbtab WHERE...,
DELETE FROM dbtab WHERE...), so wird zum Synchronisationszeitpunkt der gesamte
betroffene generische Bereich bzw. die gesamte Tabelle sowohl im Puffer des lokalen Servers
(Server auf dem der Befehl abgesetzt wurde) als auch auf allen anderen Servern invalidiert.
Bei Veränderungen ohne WHERE-Bedingungen (UPDATE dbtab, INSERT dbtab, DELETE
dbtab) werden zum Synchronisationszeitpunkt die betroffenen Sätze im Puffer des lokalen
Servers geändert. In den Puffern aller anderen Server wird aber der gesamte betroffene
generische Bereich bzw. die gesamte Tabelle invalidiert.
Aus diesem Grunde belasten Veränderungen mit WHERE-Bedingung die Puffer-Verwaltung
erheblich mehr als solche ohne eine WHERE-Bedingung.

April 2001 61
BC - ABAP Dictionary SAP AG
Wie kann man die Pufferqualität analysieren?

Wie kann man die Pufferqualität analysieren?


Der Puffermonitor [Extern] bietet unter anderem die Möglichkeit, statistische Daten über die
Tabellenpuffer und über einzelne Tabellen einzusehen. Der Puffermonitor kann vom R/3
Eingangsbild aus über folgende Menüpunkte gestartet werden:
Werkzeuge ® Administration
Monitor ® Performance
Setup/Buffers ® Buffers
Es erscheint eine Übersicht zu allen R/3-Puffern und den Datenbank-Calls.
Über die Drucktaste History können Sie sich die Pufferauslastung ihres Servers in den letzten
Tagen ansehen.
Über die Drucktaste Current parameters können Sie sich die momentan gültigen Profile-
Parameter für die Puffergrößen anzeigen lassen.
Durch Doppelklick auf der Zeile Generic key erhält man ausführliche Informationen zum
generischen/vollständigen Tabellenpuffer. Doppelklick auf die Zeile Single record liefert
ausführliche Informationen über den partiellen Tabellenpuffer. Sie können diese
Detailinformationen auch über Goto ® Detail analysis menu und im Folgebild durch Betätigen
der Drucktaste Generic key bzw Single record erreichen.
Über die Drucktaste Buffered objects gelangen Sie aus der Detailanzeige zum
generisch/vollständigen bzw. partiellen Tabellenpuffer heraus zu einer Aufrufstatistik der
benutzten Tabellen. Die angezeigten Werte helfen bei der Optimierung der Pufferparameter im
Systemprofil und bei der Suche nach ungünstig gepufferten Tabellen. Rufen Sie die
Aufrufstatistik aus der Information zum generischen/vollständigen Puffer auf, so erscheint die
Statistik der generisch bzw. vollständig gepufferten Tabellen. Erfolgt der Aufruf aus der
Information zum partiellen Puffer, so erscheint die Statistik der partiell gepufferten Tabellen.

Siehe auch:
BC Computing Center Management System [Extern]

62 April 2001
SAP AG BC - ABAP Dictionary
Indizes

Indizes
Über einen Index kann das Durchsuchen einer Tabelle nach Datensätzen, die bestimmten
Suchkriterien genügen, beschleunigt werden.
Ein Index kann als eine auf bestimmte Felder reduzierte Kopie einer Datenbanktabelle aufgefaßt
werden. Diese Kopie liegt stets in sortierter Form vor. Die Sortierung ermöglicht einen schnellen
Zugriff auf die Datensätze der Tabelle, z.B. über binäre Suche. Damit auch die nicht im Index
enthaltenen Felder gelesen werden können, ist in einem Index noch ein Zeiger auf den
zugehörigen Satz der eigentlichen Tabelle enthalten.
Man unterscheidet zwischen dem Primärindex und Sekundärindizes einer Tabelle. Der
Primärindex besteht aus den Schlüsselfeldern der Tabelle sowie einem Zeiger auf die
Nichtschlüsselfelder der Tabelle. Der Primärindex wird beim Anlegen der Tabelle auf der
Datenbank automatisch mitangelegt.

Die Tabelle SCOUNTER im Flugmodell [Seite 312] enthält die Zuordnung der
Verkaufsschalter der Fluggesellschaften zu Flughäfen. Der Primärindex zu dieser
Tabelle besteht also aus den Schlüsselfeldern der Tabelle und einem Zeiger auf die
Originaldatensätze.

Tabelle SCOUNTER
MANDT CARRID COUNTNUM P MANDT CARRID COUNTNUM AIRPORT
001 AA 00000001 7 001 LH 00000005 ACA
001 BA 00000001 9 001 BA 00000004 ACE
001 BA 00000002 12 001 UA 00000001 BER
001 BA 00000003 5 001 LH 00000002 LCY
001 BA 00000004 2 001 BA 00000003 LHR
001 LH 00000001 10 001 LH 00000007 BER
001 LH 00000002 4 001 AA 00000001 DEN
001 LH 00000003 8 001 LH 00000003 FRA
001 LH 00000004 11 001 BA 00000001 LCY
001 LH 00000005 1 001 LH 00000001 LGW
001 LH 00000006 13 001 LH 00000004 LHR
001 LH 00000007 6 001 BA 00000002 MUC
001 LH 00000008 14 001 LH 00000006 RTM
001 UA 00000001 3 001 LH 00000008 HAM

Primärindex zu SCOUNTER

Schlüsselfelder

Im ABAP Dictionary können weitere Indizes zu einer Tabelle angelegt werden, die man als
Sekundärindizes bezeichnet. Dies ist notwendig, wenn auf die Tabelle häufig auf eine Art
zugegriffen wird, bei der die Sortierung des Primärindex nicht für den Zugriff ausgenutzt werden
kann. Verschiedene Indizes zur gleichen Tabelle werden über eine dreistellige Index-Kennung
[Seite 69] unterschieden.

April 2001 63
BC - ABAP Dictionary SAP AG
Indizes

Für Flugbuchungen werden oft alle Verkaufsschalter von Fluggesellschaften


gesucht, die sich an einem bestimmten Flughafen befinden. Bei einem solchen
Zugriff wird also über die Kennung des Flughafens nach Verkaufsschaltern gesucht.
Die Sortierung des Primärindex ist zur Beschleunigung dieses Zugriffs nutzlos. Da
die Tabelle SCOUNTER sehr viele Einträge besitzt, muß zur Unterstützung des
Zugriffs über die Flughafenkennung ein Sekundärindex über das Feld AIRPORT
(Kennung des Flughafens) angelegt werden.

Tabelle SCOUNTER
SELECT * FROM AIRPORT P MANDT CARRID COUNTNUM AIRPORT
SCOUNTER WHERE ACA 1 001 LH 00000005 ACA
AIRPORT = ‘LCY’. ACE 2 001 BA 00000004 ACE
BER 3 001 UA 00000001 BER
BER 6 001 LH 00000002 LCY
DEN 7 001 BA 00000003 LHR
FRA 8 001 LH 00000007 BER
HAM 14 001 AA 00000001 DEN
LCY 4 001 LH 00000003 FRA
Binäre Suche LCY 9 001 BA 00000001 LCY
LGW 10 001 LH 00000001 LGW
LHR 5 001 LH 00000004 LHR
LHR 11 001 BA 00000002 MUC
MUC 12 001 LH 00000006 RTM
RTM 13 001 LH 00000008 HAM
Sekundärindex
über AIRPORT

Ob ein Index für einen konkreten Zugriff auf eine Tabelle verwendet wird, wird vom Optimizer des
Datenbanksystems entschieden (siehe Wie prüft man, ob ein Index verwendet wird? [Seite 67]).
Damit ist es möglich, daß ein Index nur für bestimmte Datenbanksysteme einen
Performancegewinn bringt. Deshalb kann bei der Indexdefinition im ABAP Dictionary angeben
werden, auf welchen Datenbanksystemen ein Index angelegt werden soll (siehe Sekundärindizes
anlegen [Seite 80]).
Alle im ABAP Dictionary vorhandenen Indizes zu einer Tabelle werden beim Anlegen der Tabelle
auf der Datenbank standardmäßig mitangelegt, falls dies bei der Indexdefinition für dieses
Datenbanksystem nicht ausgeschlossen wurde.
Falls die Indexfelder Schlüsselfunktion besitzen, d.h. jeden Satz der Tabelle bereits eindeutig
identifizieren, kann ein Index als Unique-Index [Seite 68] gekennzeichnet werden.

Siehe auch:
Was sollten Sie beim Anlegen von Sekundärindizes beachten? [Seite 65]

64 April 2001
SAP AG BC - ABAP Dictionary
Was sollten Sie bei Sekundärindizes beachten?

Was sollten Sie bei Sekundärindizes beachten?


Wie gut ein vorhandener Index die Datenselektion aus einer Tabelle unterstützt, hängt davon ab,
wie weit die über den Index selektierte Datenmenge bereits die endgültig zu selektierende
Menge darstellt. Dies wird am besten durch ein Beispiel veranschaulicht.

Ein Index ist über die Felder FELD1, FELD2, FELD3 und FELD4 einer Tabelle
BSPTAB in dieser Reihenfolge definiert. Auf diese Tabelle wird zugegriffen mit dem
SELECT-Statement:
SELECT * FROM BSPTAB WHERE FELD1 = X1 AND FELD2 = X2 AND FELD4=
X4.
Da FELD3 nicht näher spezifiziert ist, ist die Sortierung des Index nur bis zu FELD2
brauchbar. Greift das Datenbanksystem über diesen Index auf die Daten zu, kann es
also schnell alle Sätze finden, für die FELD1 = X1 und FELD2 = X2 gilt. Aus dieser
Menge müssen dann noch alle Sätze nachselektiert werden, für die FELD4 = X4 gilt.
Die Reihenfolge der Felder im Index spielt für die Zugriffsgeschwindigkeit eine entscheidende
Rolle. An erster Stelle sollten die Felder stehen, die bei vielen Selektionen mit konstanten Werten
belegt sind. Ein Index ist bei der Selektion nur bis zum ersten unspezifizierten Feld von Nutzen!
Weiter sind nur solche Felder in einem Index sinnvoll, die die Ergebnismenge einer Selektion
signifikant einschränken.

Auf eine Adressendatei ADRTAB wird häufig folgende Selektion durchgeführt:


SELECT * FROM ADRTAB WHERE TITEL = ‘Prof.’ AND NAME = X AND
VORNAME = Y.
In einem Index über NAME, VORNAME und TITEL würde das Feld TITEL die über
Name und Vorname spezifizierten Sätze nur in seltenen Fällen weiter einschränken,
da es vermutlich nur wenige Personen gleichen Namens gibt, die sich nur im Titel
unterscheiden. Es wäre deshalb in diesem Index nicht sinnvoll. Ein Index über das
Feld TITEL allein wäre aber unter Umständen sinnvoll, falls beispielsweise häufig
alle Professoren selektiert werden.
Beachten Sie aber, daß zusätzlich angelegte Indizes das System auch belasten können, da
diese bei jeder Änderung des Tabelleninhalts angepaßt werden müssen. Jeder zusätzliche Index
verlangsamt deshalb das Einfügen von Sätzen in die Tabelle.
Tabellen, in die sehr häufig Einträge geschrieben werden, sollten also in der Regel nur wenige
Indizes besitzen.

Auch wenn für eine Selektion ein passender Index existiert, wird dieser manchmal
vom Datenbanksystem nicht benutzt. Welcher Index benutzt wird, hängt vom
verwendeten Optimizer des Datenbanksystems ab. Sie sollten deshalb prüfen, ob
der von Ihnen angelegte Index auch bei der Selektion verwendet wird (siehe Wie
prüft man, ob ein Index verwendet wird? [Seite 67]).

April 2001 65
BC - ABAP Dictionary SAP AG
Was sollten Sie bei Sekundärindizes beachten?

Sie sollten auch beachten, daß das Anlegen eines zusätzlichen Index Seiteneffekte
für die Performance haben kann. Denn ein bisher erfolgreich zur Selektion
verwendeter Index wird unter Umständen vom Optimizer nicht mehr verwendet, da
der neu angelegte Index vom Optimizer (manchmal fälschlicherweise) als selektiver
eingeschätzt wird.
Die Indizes zu einer Tabelle sollten deshalb möglichst disjunkt sein, d.h. möglichst
wenige Felder gemeinsam haben. Haben zwei Indizes zu einer Tabelle viele
gemeinsame Felder, so kann dies die Auswahl des selektivsten Index durch den
Optimizer erschweren.

66 April 2001
SAP AG BC - ABAP Dictionary
Wie prüft man, ob ein Index verwendet wird?

Wie prüft man, ob ein Index verwendet wird?


Vorgehensweise
1. Eröffnen Sie einen zweiten Modus und wählen Sie dort System ® Hilfsmittel ®
Performance Trace.
Es erscheint das Bild Trace requests.
2. Wählen Sie Trace on.
Der SQL-Trace wird damit für ihren Benutzer eingeschaltet, d.h. alle
Datenbankoperationen unter ihrem Benutzer werden aufgezeichnet.
3. Führen Sie im ersten Fenster die Aktion durch, bei der der Index verwendet werden soll.
Verwendet Ihr Datenbanksystem einen Cost-based Optimizer, so sollten Sie diese Aktion
mit einer möglichst repräsentativen Datenmenge durchführen. Ein Cost-based Optimizer
versucht den besten Index aufgrund von Statistiken zu ermitteln.
4. Wählen Sie im zweiten Modus Trace off und anschließend Trace list.

Ergebnis
Das Aussehen der dadurch erzeugten Ausgabe hängt vom verwendeten Datenbanksystem ab.
Den Index, den die Datenbank für ihre Aktion verwendet hat, können Sie mit Hilfe der Funktion
EXPLAIN auf den kritischen Statements (PREPARE, OPEN, REOPEN) ermitteln.

April 2001 67
BC - ABAP Dictionary SAP AG
Unique-Index

Unique-Index
Ein Eintrag in einem Index kann auf mehrere Sätze verweisen, die sich in den Werten für die
Indexfelder nicht unterscheiden. Ein Unique-Index läßt solche mehrfachen Einträge nicht zu. Die
Indexfelder eines Unique-Index haben also Schlüsselfunktion, d.h. identifizieren jeden Satz der
Tabelle bereits eindeutig.
Der Primärindex einer Tabelle ist stets ein Unique-Index, da die Indexfelder den Schlüssel der
Tabelle bilden und damit jeden Datensatz eindeutig identifizieren.
Beim Anlegen eines Sekundärindex kann man diesen als Unique-Index definieren. Damit kann
man sicherstellen, daß es in den im Index enthaltenen Feldern der Tabelle keine doppelten
Sätze gibt. Der Versuch, einen Eintrag in die Tabelle einzupflegen, der diese Bedingung verletzt,
führt zu einem Abbruch wegen Datenbankfehler.

Applikation

Duplikate Key bzgl. F2 und F4


Z 12 Text4 X

Unique-Index zu
Tabelle TAB TAB über F2 und F4
Einfügen wird von DB F1 F2 F3 F4 F2 F4
zurückgewiesen, da ein
12 X
doppelter Eintrag bzgl. des A 12 Text1 X
Unique-Index vorliegt.

Datenbank

Für die Zugriffsgeschwindigkeit spielt es keine Rolle, ob ein Index als Unique-Index definiert ist
oder nicht. Ein Unique-Index ist lediglich ein Hilfsmittel, um bereits auf der Seite der Datenbank
festzulegen, daß Datensätze in einer Tabelle bzgl. bestimmter Feldkombinationen eindeutig sind.

Ein Unique-Index zu einer mandantenabhängigen Tabelle muß das Mandantenfeld


enthalten.

68 April 2001
SAP AG BC - ABAP Dictionary
Index-Kennung

Index-Kennung
Mehrere Indizes zur gleichen Tabelle werden über eine dreistellige Indexkennung
unterschieden. Die Indexkennung darf nur aus Buchstaben und Ziffern bestehen. Die Kennung 0
ist für den Primärindex reserviert.
Der Indexname auf der Datenbank wird nach der Konvention <Tabellenname>~<Indexkennung>
gebildet.

Für die Tabelle TEST und den Sekundärindex mit der Kennung A ist TEST~A der
Name des entsprechenden Index auf der Datenbank.

Da sich die Konvention für die Bildung des Indexnamens auf der Datenbank
mehrfach geändert hat, folgen evtl. nicht alle auf der Datenbank vorhandenen
Indizes dieser Konvention.
Vor Release 3.0 angelegte Indizes können einen 8-stelligen Namen besitzen. Dabei
stehen die ersten 7 Stellen (evtl. aufgefüllt mit Unterstrichen) für den Tabellennamen
und die achte Stelle für die (einstellige) Indexkennung (beispielsweise TEST___A).
Zu Release 3.0 eingeführte Indizes können auf der Datenbank einen 13-stelligen
Namen besitzen. Dabei stehen die ersten 10 Stellen (evtl. aufgefüllt mit
Unterstrichen) für den Tabellennamen und die 11-te bis 13-te Stelle für die
dreistellige Indexkennung (beispielsweise TEST______A).

April 2001 69
BC - ABAP Dictionary SAP AG
Customizing-Includes

Customizing-Includes
Ein Customizing-Include ist eine Struktur, die einer speziellen Namenskonvention genügt. Die
Namen der Customizing-Includes beginnen mit ‘CI_’ und liegen im Kundennamensraum.
Falls im R/3 Standard schon mögliche Erweiterungen durch kundenspezifische Felder
vorgesehen sind, werden in der entsprechenden Standardtabelle bzw. Standardstruktur solche
Customizing-Includes inkludiert [Seite 17]. Das Customizing-Include (d.h. die Definition der
Struktur [Seite 149] selbst) wird in der Regel erst im Kundensystem angelegt und durch spezielle
Customizing-Transaktionen mit Feldern gefüllt.
Dies ermöglicht Kundenerweiterungen an Tabellen bzw. Strukturen des R/3 Standards, ohne die
Tabellen- bzw. Strukturdefinition selbst zu modifizieren. Damit besteht auch nicht die Gefahr, daß
die Kundenerweiterungen beim Upgrade verloren gehen. Wird eine Tabelle bzw. Struktur des
R/3 Standards über ein Customizing-Include um Kundenfelder ergänzt, so werden diese
Kundenfelder beim Upgrade automatisch in die von SAP neu ausgelieferte Tabellen- bzw.
Strukturdefinition eingefügt.
Der Kunde kann ein Customizing-Include im Bedarfsfall anlegen und mit Feldern füllen, muß das
aber nicht tun. Ein nicht vorhandenes Customizing-Include verursacht keinen Fehler bei der
Aktivierung der Tabellen bzw. Strukturen, die dieses inkludieren.
Ein Customizing-Include kann in mehreren Tabellen bzw. Strukturen enthalten sein, so daß diese
bei Änderungen des Includes konsistent bleiben.

Die Feldreihenfolge im ABAP Dictionary kann von der Feldreihenfolge auf der
Datenbank abweichen. Deshalb führt das Einfügen von Feldern in ein Customizing-
Include bei transparenten Tabellen, die dieses Include enthalten, nicht zu einer
Umsetzung der Daten (siehe Datenbank-Strukturen anpassen [Seite 231]). Die
neuen Felder der Tabelle im ABAP Dictionary werden einfach an die
Datenbanktabelle angehängt.

70 April 2001
SAP AG BC - ABAP Dictionary
Append-Strukturen

Append-Strukturen
Append-Strukturen dienen für Erweiterungen, die nicht im Standard vorgesehen sind. Zum
Beispiel für Sonderentwicklungen, Länderversionen und das Anfügen von Kundenfeldern an
beliebige Tabellen bzw. Strukturen.
Eine Append-Struktur ist eine Struktur, die genau einer Tabelle bzw. Struktur zugeordnet ist. Es
kann zu einer Tabelle bzw. Struktur aber mehrere Append-Strukturen geben.
Über eine Append-Struktur können folgende Erweiterungen an einer Tabelle bzw. Struktur TAB
vorgenommen werden:
· neue Felder in TAB einfügen,
· Fremdschlüssel zu bereits vorhandenen Feldern von TAB definieren,
· Suchhilfen an bereits vorhandene Felder von TAB anbinden.
Diese Erweiterungen sind Teil der Append-Struktur, d.h. Änderungen und Transport dieser
Erweiterungen müssen stets über die Append-Struktur erfolgen.
Beim Aktivieren einer Tabelle bzw. Struktur werden alle Append-Strukturen zur Tabelle gesucht
und die Felder aus diesen Append-Strukturen werden an die Tabelle bzw. Struktur angehängt.
Über die Append-Struktur hinzugefügte Fremdschlüssel und Suchhilfeanbindungen werden
ebenfalls an die Tabelle angehängt. Wird eine Append-Struktur angelegt oder geändert, so wird
bei ihrer Aktivierung auch die ihr zugeordnete Tabelle bzw. Struktur an diese Änderungen
angepaßt.
Da die Feldreihenfolge im ABAP Dictionary von der Feldreihenfolge auf der Datenbank
abweichen kann, führt das Anhängen von Append-Strukturen bzw. das Einfügen von Feldern in
solche Append-Strukturen nicht zur Umsetzung der Tabelle.
Append-Strukturen werden vom Kunden im Kundennamensraum angelegt und sind damit gegen
ein Überschreiben beim Upgrade geschützt. Auch die Felder in der Append-Struktur sollten im
Kundennamensraum liegen, d.h. die Feldnamen sollten mit ZZ oder YY beginnen. Damit werden
Namenskonflikte mit von SAP in die Tabelle eingefügten Feldern verhindert.
Nach einem Upgrade werden die neuen Versionen der Standardtabellen eingespielt und bei der
Aktivierung werden die in Append-Strukturen enthaltenen Felder, Fremdschlüsseldefinitionen
und Suchhilfeanbindungen an die neuen Standardtabellen angehängt.

Eine Standardtabelle enthält die Felder Feld 1, Feld 2 und Feld 3. Zu dieser Tabelle
ist eine Append-Struktur definiert, die die Felder ZZA und ZZB enthält. Nach der
Aktivierung der Tabelle enthält die zugehörige Datenbanktabelle die Felder Feld 1,
Feld 2, Feld 3, ZZA und ZZB.

April 2001 71
BC - ABAP Dictionary SAP AG
Append-Strukturen

Tabellendefinition im Feld ZZA Feld ZZB


ABAP Dictionary

Feld 1 Feld 2 Feld 3 Append-Struktur

Feld 1 Feld 2 Feld 3 ZZA ZZB

Tabellendefinition auf
der Datenbank

Weitere Hinweise:
· Eine Append-Struktur kann immer nur genau einer Tabelle bzw. Struktur zugeordnet werden.
Falls Sie die gleichen Felder an mehrere Tabellen bzw. Strukturen anhängen wollen, können
Sie diese Felder in einer Include-Struktur ablegen. Dann müssen Sie zu jeder dieser
Tabellen bzw. Strukturen eine Append-Struktur anlegen und die Include-Struktur dort
inkludieren.
· Das Anfügen einer Append-Struktur an eine SAP-Standardtabelle wird durch den
Modifikationsassistenten [Extern] unterstützt.
· Soll ein Feld, das im nächsten Release mit dem R/3-Standard ausgeliefert wird, vorab im
Kundensystem eingefügt werden, so ist dieses in der Tabelle selbst als Reparatur
aufzunehmen. Wird ein solches Feld in eine Append-Struktur zur Tabelle aufgenommen, so
kommt es nach dem Einspielen der neuen Standardtabelle doppelt vor. Dies führt zu einem
Aktivierungsfehler.
· An Tabellen mit langen Feldern (Datentyp VARC, LCHR oder LRAW) können keine Append-
Strukturen angehängt werden. Denn lange Felder müssen bei Tabellen immer als letztes
Feld der Tabelle auftauchen. Strukturen mit langen Feldern können dagegen durch Append-
Strukturen erweitert werden.
· Wird eine Tabelle bzw. Struktur mit einer angehängten Append-Struktur kopiert, so werden
die Felder der Append-Struktur zu Feldern der Zieltabelle. Über die Append-Struktur
angehängte Fremdschlüsseldefinitionen bzw. Suchhilfeanbindungen werden in die Zieltabelle
übernommen.
· Fremdschlüssel auf den angefügten Felder müssen innerhalb der Append-Struktur definiert
werden. Dabei dürfen auch Felder der der Append-Struktur zugeordneten Tabelle bzw.
Struktur bei der Zuordnung zwischen Schlüsselfeld und Fremdschlüsselfeld angegeben
werden.

72 April 2001
SAP AG BC - ABAP Dictionary
Append-Strukturen

· Indizes auf den angefügten Feldern müssen auf der Originaltabelle definiert werden.
· Über eine Append-Struktur kann eine Tabelle bzw. Struktur TAB nur um neue
Fremdschlüssel bzw. Suchhilfeanbindungen erweitert werden. Es ist also nicht möglich eine
für ein Feld von TAB bereits bestehende Fremdschlüsseldefinition bzw. Suchhilfeanbindung
über die Append-Struktur zu verändern.
Siehe auch:
Append-Struktur anhängen [Seite 87]

April 2001 73
BC - ABAP Dictionary SAP AG
Tabelle anlegen

Tabelle anlegen
Vorgehensweise
1. Markieren im Einstiegsbild des ABAP Dictionary die Objektklasse Datenbanktabelle, geben
Sie den Tabellennamen an und wählen Sie Anlegen.
Sie verzweigen damit in das Pflegebild der Tabelle.
2. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Sie können später z.B. über diesen Kurztext mit dem Infosystem nach der Tabelle
suchen.
3. Geben Sie auf der Registerkarte Eigenschaften die Auslieferungsklasse [Seite 82] der
Tabelle an.
Markieren Sie auf dieser Registerkarte das Kennzeichen Tabellenpflege erlaubt, wenn
Benutzer mit den entsprechenden Berechtigungen die Daten in der Tabelle über den
Data Browser (Transaktion SE16) verändern dürfen. Falls die Daten der Tabelle nur über
Programme oder die Tabellensicht-Pflege (Transaktion SM30) gepflegt werden sollen,
dürfen Sie das Kennzeichen nicht setzen.
4. Geben Sie auf der Registerkarte Felder die Felder der Tabelle an. Führen Sie hierzu für
jedes Feld der Tabelle die folgenden Schritte aus:
Tragen Sie in der Spalte Felder einen Namen für das Tabellenfeld ein. Der Feldname
darf nur Buchstaben, Ziffern und Unterstriche enthalten und muß mit einem Buchstaben
beginnen. Ein Feldname darf höchstens die Länge 16 haben.
Markieren Sie die Spalte Key, falls das Feld zum Schlüssel der Tabelle gehören soll.
Tragen Sie im Feld Feldtyp den Namen eines Datenelements [Seite 143] ein. In diesem
Fall übernimmt das Feld Datentyp, Länge, Dezimalstellen und Kurzbeschreibung aus
diesem Datenelement. Falls noch kein passendes Datenelement existiert, können Sie
durch Eintragen eines Namens und Doppelklick darauf in die Datenelementpflege [Seite
145] verzweigen.
Über Datenelement/Direkter Typ können Sie Datentyp, Feldlänge, Dezimalstellen und
Kurzbeschreibung direkt eingeben. Betätigen Sie diese Taste einfach erneut, falls Sie für
weitere Felder wieder Datenelemente eingeben möchten.
Für Felder ohne Datenelemente steht nur eine eingeschränkte Funktionalität zur
Verfügung. Es können für solche Felder keine Fremdschlüssel definiert werden, es
können keine Festwerte angeben werden und es gibt für solche Felder keine F1-Hilfe.
Für Felder der Typen CURR (Währungsbeträge) und QUAN (Mengenangabe) müssen
Sie auf der Registerkarte Währungs-/Mengenfelder noch Referenzfeld und
Referenztabelle [Seite 16] angeben.
Sie können auch die Felder einer bereits vorhandenen Struktur in die Tabelle inkludieren
[Seite 89]. Beachten Sie dabei aber, daß die Feldnamen in der Struktur in diesem Fall
höchstens die Länge 16 haben dürfen.
5. Pflegen Sie die technischen Einstellungen [Seite 79] zur Tabelle. Sie erreichen das
entsprechende Pflegebild über Springen ® Technische Einstellungen.

74 April 2001
SAP AG BC - ABAP Dictionary
Tabelle anlegen

Die technischen Einstellungen sind ein eigenständiges Objekt und können getrennt von
der Tabelle aktiviert und transportiert werden.
6. Pflegen Sie (falls notwendig) die Fremdschlüsselbeziehungen [Seite 77] der Tabelle zu
anderen Tabellen.
Sie erreichen das entsprechende Pflegebild, indem Sie den Cursor auf das Prüffeld
stellen und wählen.
7. Legen Sie (falls notwendig) Sekundärindizes zur Tabelle an [Seite 80].
Wählen Sie hierzu Springen ® Indizes.
8. Sichern Sie die Tabelle.
Es erscheint ein Dialogfenster, in dem Sie der Tabelle eine Entwicklungsklasse zuordnen
müssen.
9. Wählen Sie .

Ergebnis
Beim Aktivieren wird die Tabelle und alle Indizes (falls dies bei der Definition des Index nicht
explizit ausgeschlossen wurde) zur Tabelle automatisch auf der Datenbank angelegt. Sie können
sich die Definition der Tabelle auf der Datenbank über Hilfsmittel ® Datenbankobjekt ®
Anzeigen anzeigen lassen.
Bei der Aktivierung wird auch das Laufzeitobjekt [Seite 245] zur Tabelle erzeugt. Sie können sich
das Laufzeitobjekt über Hilfsmittel ® Laufzeitobjekt ® Anzeigen anzeigen lassen.
Informationen zum Ablauf der Aktivierung finden Sie im Aktivierungsprotokoll, das Sie sich über
Hilfsmittel ® Aktivierungsprotokoll anzeigen lassen können. Treten beim Aktivieren der Tabelle
Fehler auf, wird das Aktivierungsprotokoll automatisch angezeigt.

Weitere Möglichkeiten
· Einem Feld eine Suchhilfe zuordnen: Sie können einem Feld über Springen ® Suchhilfe
® Zum Feld eine Suchhilfe zuordnen. Die Suchhilfe steht dann für alle Dynprofelder zur
Verfügung, die sich auf dieses Feld beziehen. Siehe Anbindung einer Suchhilfe an ein
Tabellen- oder Strukturfeld [Seite 192].
· Der Tabelle eine Suchhilfe zuordnen: Sie können der Tabelle über Springen ® Suchhilfe
® Zur Tabelle eine Suchhilfe zuordnen. Diese Suchhilfe steht dann für alle Dynprofelder zur
Verfügung, die gegen die Tabelle geprüft werden. Siehe Anbindung einer Suchhilfe an die
Prüftabelle [Seite 190].
· Dokumentation erfassen: Sie können über Springen ® Dokumentation einen Text
erfassen, der die Verwendung der Tabelle und die Pflege der Daten in der Tabelle näher
beschreibt.
· Aktivierungsart zuordnen: Sie können der Tabelle über Zusätze ® Aktivierungsart eine
Aktivierungsart [Seite 84] zuordnen. Dies ist nur für Tabellen der Laufzeitumgebung relevant.
· Daten erfassen oder anzeigen: Falls Sie das Kennzeichen Tabellenpflege erlaubt gesetzt
haben, können Sie über Hilfsmittel ® Tabelleninhalt ® Einträge erfassen Daten in die
Tabelle eingeben. Sie können sich vorhandene Daten über Hilfsmittel ® Tabelleninhalt ®
Anzeigen ansehen.

April 2001 75
BC - ABAP Dictionary SAP AG
Tabelle anlegen

Einschränkungen
· Alle Schlüsselfelder einer Tabelle müssen zusammenhängend am Anfang der Tabelle
stehen. Es ist also nicht erlaubt, daß ein Nicht-Schlüsselfeld zwischen zwei Schlüsselfeldern
steht.
· Es sind maximal 16 Schlüsselfelder pro Tabelle zulässig. Die maximale Länge des
Schlüssels einer Tabelle ist 255.
· Falls die Schlüssellänge größer 120 ist, bestehen Einschränkungen beim Transport von
Tabelleneinträgen. Der Schlüssel kann beim Transport nur bis maximal 120 Stellen
spezifiziert werden. Ist der Schlüssel größer als 120, müssen Tabelleneinträge generisch
transportiert werden.
· Eine Tabelle darf maximal 249 Felder enthalten. Die Summe aller Feldlängen ist auf 1962
begrenzt (wobei Felder mit Datentyp LRAW und LCHR nicht mitzählen).
· Felder der Typen LRAW oder LCHR müssen am Ende der Tabelle stehen. Es ist nur ein
solches Feld pro Tabelle erlaubt. Außerdem muß direkt vor einem solchen Feld ein Feld vom
Typ INT2 stehen, in das dann die tatsächliche Länge des Feldes durch die
Datenbankschnittstelle eingetragen werden kann.

Siehe auch:
Technische Einstellungen [Seite 31]
Indizes [Seite 63]
Fremdschlüssel [Seite 20]

76 April 2001
SAP AG BC - ABAP Dictionary
Fremdschlüssel anlegen

Fremdschlüssel anlegen
Vorgehensweise
1. Markieren Sie in der Feldpflege der Tabelle das Prüffeld [Seite 20] und wählen Sie
Besitzt die Domäne [Seite 166] des Prüffeldes eine Wertetabelle [Seite 169], so können
Sie sich vom System einen Vorschlag mit der Wertetabelle als Prüftabelle erstellen
lassen. In diesem Fall wird ein Vorschlag für die Feldzuordnung im Fremdschlüssel
erzeugt.
Falls die Domäne keine Wertetabelle besitzt oder Sie den Systemvorschlag abgelehnt
haben, erscheint das Bild zur Fremdschlüsselpflege ohne Vorschlagswerte. Tragen Sie
in diesem Fall die Prüftabelle ein und sichern Sie ihre Eingaben. Die Prüftabelle muß ein
Schlüsselfeld besitzen, dem die Domäne des Prüffeldes zugeordnet ist.
Sie können dann vom System einen Vorschlag für die Zuordnung zwischen
Fremdschlüsselfeldern und Schlüsselfeldern der Prüftabelle erstellen lassen. Hierbei
versucht das System die Schlüsselfelder der Prüftabelle zu Feldern der Tabelle mit
gleicher Domäne zuzuordnen. Falls Sie keinen Vorschlag wünschen, werden die
Schlüsselfelder der Prüftabelle aufgelistet und Sie müssen diesen geeignete Felder der
Fremdschlüsseltabelle zuordnen.
2. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Der Kurztext dient zur technischen Dokumentation der Bedeutung des Fremdschlüssels.
3. Wählen Sie Übernehmen. Damit wird der Fremdschlüssel gesichert und Sie kehren in das
Pflegebild der Tabelle zurück.

Weitere Möglichkeiten
· Felder aus der Zuordnung herausnehmen: Sie können Fremdschlüsselfelder (mit
Ausnahme des Prüffelds) aus der Zuordnung zu den Schlüsselfeldern der Prüftabelle
herausnehmen (siehe Generische und konstante Fremdschlüssel [Seite 23]).
Markieren Sie das Kennzeichen generisch, um ein Feld aus der Prüfung gegen die
Schlüsselfelder der Prüftabelle herauszunehmen. Falls Sie einem Fremdschlüsselfeld
eine Konstante zuordnen möchten, müssen Sie diese im Feld Konstante in
Hochkommata eingeschlossen (Beispiel: ‘Konstante’) eintragen. In beiden Fällen
müssen Sie die Einträge in den Feldern FremdschlTab und FremdschlFeld entfernen.
· Werteprüfung ausschalten: Soll der Fremdschlüssel nicht für eine Werteprüfung verwendet
werden, müssen Sie die Markierung im Feld Prüfung erwünscht entfernen. Diese Festlegung
gilt für alle Dynpros, auf denen das Feld erscheint! Ein Ausschalten der Prüfung kann zum
Beispiel sinnvoll sein, wenn der Fremdschlüssel nur zur Definition von Pflege-Views [Seite
120], Help-Views [Seite 118] oder Sperrobjekten [Seite 214] verwendet wird.
· Nachricht zuordnen: Falls die Werteprüfung durch den Fremdschlüssel auf einem
Bildschirmfeld ergibt, daß eine Eingabe nicht zulässig ist, wird eine Standardnachricht
ausgegeben. Diese Standardnachricht kann durch eine beliebige Nachricht ersetzt werden.
Hierzu müssen Sie die Nachrichtenklasse der Nachricht im Feld AGeb und die
Nachrichtennummer im Feld MsgNr eingeben. Siehe hierzu Fehlernachricht in der
Fremdschlüsselprüfung [Seite 85].

April 2001 77
BC - ABAP Dictionary SAP AG
Fremdschlüssel anlegen

· Semantische Eigenschaften: Sie können optional die semantischen Eigenschaften [Seite


25] des Fremdschlüssels angeben. Diese haben überwiegend dokumentarische Bedeutung.

Falls der Fremdschlüssel aus einem Feld einer inkludierten Tabelle bzw. Struktur
(siehe Includes [Seite 17]) stammt, ist zusätzlich das Kennzeichen vom Include
geerbt angezeigt. Fremdschlüsseldefinitionen werden im allgemeinen von der
inkludierten Tabelle bzw. Struktur an die inkludierende Tabelle bzw. Struktur vererbt,
so daß der Fremdschlüssel von der Definition in der inkludierten Tabelle abhängt.
Das Kennzeichen ist standardmäßig markiert. Falls Sie die Markierung
zurücknehmen, wird die Verbindung zwischen Fremdschlüssel und inkludierter
Tabelle bzw. Struktur gelöst. Der Fremdschlüssel paßt sich damit nicht mehr an
Änderungen seiner Definition in der inkludierten Tabelle bzw. Struktur an.

Siehe auch:
Fremdschlüssel [Seite 20]

78 April 2001
SAP AG BC - ABAP Dictionary
Technische Einstellungen pflegen

Technische Einstellungen pflegen


Vorgehensweise
1. Wählen Sie in der Feldpflege der Tabelle Technische Einstellungen.
Das Pflegebild der technischen Einstellungen erscheint.
2. Wählen Sie die Datenart [Seite 32] und die Größenkategorie [Seite 33] der Tabelle.
Die Eingabe-Hilfe auf dem Feld Größenkategorie zeigt Ihnen an, wieviele Datensätze
den einzelnen Kategorien entsprechen.
3. Legen Sie über die Pufferungserlaubnis [Seite 34] fest, ob die Tabelle gepuffert werden darf.
Falls Sie die Pufferung der Tabelle erlaubt haben, müssen Sie noch die Pufferungsart
[Seite 35] der Tabelle festlegen.
Weitere Informationen darüber, wann Sie Tabellen puffern sollten und welche
Pufferungsart Sie wählen sollten, finden Sie in Datenbanktabellen puffern [Seite 45].
4. Markieren Sie Datenänderungen protokollieren, falls Änderungen an Datensätzen der
Tabelle protokolliert werden sollen (siehe Protokollierung [Seite 42]).
Damit Änderungen protokolliert werden, muß die Protokollierung im System über den
Profile-Parameter rec/client eingeschaltet sein. Das Kennzeichen Datenänderungen
protokollieren allein bewirkt keine Protokollierung der Tabellenänderungen!
5. Wählen Sie .
Falls bei der Aktivierung Fehler auftraten, werden diese im Aktivierungsprotokoll
angezeigt.

Weitere Möglichkeiten
Für Pooltabellen (und Tabellen die zu einem früheren Zeitpunkt über dieses Kennzeichen in eine
transparente Tabelle umgewandelt wurden) wird noch das Kennzeichen In Transparente Tabelle
umwandeln angezeigt. Sie können die Pooltabelle über dieses Kennzeichen zu einer
transparenten Tabelle machen (siehe Pooltabelle in transparente Tabelle umwandeln [Seite 44]).

Einschränkungen
· Ist die Schlüssellänge der Tabelle größer als 64, kann die Tabelle nicht generisch gepuffert
werden.
· Ist die Schlüssellänge der Tabelle größer als 120, kann die Tabelle nicht gepuffert werden.
· Falls der Schlüssel der Tabelle mehr als 86 Stellen bzw. der Datenteil der Tabelle mehr als
500 Stellen umfaßt, ist eine Protokollierung der Tabelle nicht möglich.

Siehe auch:
Technische Einstellungen [Seite 31]
Welche Tabellen sollten gepuffert werden? [Seite 55]

April 2001 79
BC - ABAP Dictionary SAP AG
Sekundärindizes anlegen

Sekundärindizes anlegen
Vorgehensweise
1. Wählen Sie im Pflegebild der Tabelle Indizes.
Falls schon Indizes zur Tabelle existieren, erscheint eine Liste dieser Indizes. Wählen
Sie .
2. Geben Sie im folgenden Dialogfenster die Indexkennung [Seite 69] ein und wählen Sie
Sie verzweigen damit ins Pflegebild für Indizes.
3. Geben Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Sie können später z.B. über das Infosystem über diesen Kurztext nach dem Index
suchen.
4. Wählen Sie die Felder der Tabelle, die Sie in den Index aufnehmen wollen, über die
Eingabehilfe zur Spalte Feldname aus.
Beachten Sie, daß die Reihenfolge der Felder im Index wichtig ist! Siehe hierzu Was
sollten Sie bei Sekundärindizes beachten? [Seite 65].
5. Falls die Werte in den Indexfeldern schon jeden Satz der Tabelle eindeutig identifizieren,
markieren Sie Unique-Index.
Da ein Unique-Index [Seite 68] auch eine funktionale Bedeutung (Vermeiden von
doppelten Einträgen bzgl. der Indexfelder) hat, wird ein Unique-Index beim Aktivieren
immer auf der Datenbank angelegt.
6. Lassen Sie Non-Unique-Index markiert, falls es sich nicht um einen Unique-Index handelt.
Sie können in diesem Fall über Auswahlknöpfe festlegen, ob der Index für alle
Datenbanksysteme, für ausgewählte Datenbanksysteme oder überhaupt nicht auf der
Datenbank angelegt werden soll.
7. Markieren Sie auf ausgewählten Datenbanksystemen, falls der Index nur auf ausgewählten
Datenbanksystemen angelegt werden soll.
Klicken Sie dann auf das Pfeilsymbol hinter den Auswahlknöpfen. Es erscheint ein
Dialogfenster, indem Sie über die Eingabehilfe eine Liste von bis zu 4
Datenbanksystemen angeben können. Wählen Sie Auswahlliste, falls der Index nur auf
den angegebenen Datenbanksystemen angelegt werden soll. Wählen Sie
Ausschlußliste, wenn der Index auf den angegebenen Datenbanksystemen nicht
angelegt werden soll. Wählen Sie
8. Wählen Sie .

Ergebnis
Der Sekundärindex wird beim Aktivieren automatisch auf der Datenbank angelegt, falls die
zugehörige Tabelle dort schon angelegt ist und das Anlegen des Index für das verwendete
Datenbanksystem nicht ausgeschlossen wurde.
Informationen über den Ablauf der Aktivierung finden Sie im Aktivierungsprotokoll, das Sie über
Hilfsmittel ® Aktivierungsprotokoll aufrufen können. Falls Fehler bei der Aktivierung des Index
auftraten, wird das Aktivierungsprotokoll automatisch angezeigt.

80 April 2001
SAP AG BC - ABAP Dictionary
Sekundärindizes anlegen

Siehe auch:
Indizes [Seite 63]

April 2001 81
BC - ABAP Dictionary SAP AG
Auslieferungsklasse

Auslieferungsklasse
Die Auslieferungsklasse steuert den Transport von Daten der Tabelle bei Installation, Upgrade,
Mandantencopy und beim Transport zwischen Kundensystemen. Die Auslieferungsklasse wird
auch in der Erweiterten Tabellenpflege berücksichtigt.
Es existieren folgende Auslieferungsklassen:
· A: Anwendungstabelle (Stamm- und Bewegungsdaten).
· C: Kundentabelle, Daten werden ausschließlich vom Kunden gepflegt.
· L: Tabelle zur Ablage temporärer Daten.
· G: Kundentabelle, SAP darf neue Datensätze einfügen aber keine vorhandenen
überschreiben oder löschen.
· E: Systemtabelle mit eigenen Namensräumen für Kundeneinträge. Der Kundennamensraum
muß in der Tabelle TRESC definiert werden.
· S: Systemtabelle, Datenänderungen haben den Status von Programmänderungen.
· W: Systemtabelle (z.B. Tabelle der Entwicklungsumgebung), deren Daten über eigene
Transportobjekte (z.B. R3TR PROG, R3TR TABL, etc) transportiert werden.

Verhalten beim Mandantencopy


Es werden nur Daten mandantenabhängiger Tabellen kopiert.
· Klasse C, G, E, S: Die Datensätze der Tabelle werden in den Zielmandanten kopiert.
· Klasse W, L: Die Datensätze der Tabelle werden nicht in den Zielmandanten kopiert.
· Klasse A: Datensätze werden nur auf expliziten Wunsch (Parameteroption) in den
Zielmandanten kopiert. Ein Transport solcher Daten ist in der Regel nicht sinnvoll, wird aber
unterstützt, um die Übernahme eines gesamten Mandantenumfeldes zu ermöglichen.

Verhalten bei Installation, Upgrade und Sprachenimport


Das Verhalten unterscheidet sich hier zwischen mandantenabhängigen und
mandantenunabhängigen Tabellen.

Mandantenabhängige Tabellen
· Klasse A und C: Daten werden nur in den Mandanten 000 importiert. Vorhandene
Datensätze werden überschrieben.
· Klasse E, S und W: Daten werden in alle Mandanten importiert. Vorhandene Datensätze
werden überschrieben.
· Klasse G: Im Mandanten 000 werden vorhandene Datensätze überschrieben. In allen
anderen Mandanten werden neue Datensätze eingefügt, aber keine schon vorhandenen
Datensätze überschrieben.
· Klasse L: Es werden keine Daten importiert.

Mandantenunabhängige Tabellen
· Klassen A, L und C: Es findet kein Import von Daten statt.

82 April 2001
SAP AG BC - ABAP Dictionary
Auslieferungsklasse

· Klassen E, S, und W: Daten werden importiert. Vorhandene Datensätze mit gleichem


Schlüssel werden überschrieben.
· Klasse G: Nicht vorhandene Datensätze werden eingefügt, es werden aber keine
vorhandenen Datensätze überschrieben.

Verhalten beim Transport zwischen Kundensystemen


Datensätze von Tabellen der Auslieferungsklasse L werden nicht ins Zielsystem importiert.
Datensätze von Tabellen der Auslieferungsklassen A, C, E, G, S und W werden ins Zielsystem
importiert (bei mandantenabhängigen Tabellen erfolgt dies für den im Transport angegebenen
Zielmandanten).

Verwendung der Auslieferungsklasse in der Erweiterten


Tabellenpflege
Die Auslieferungsklasse wird auch in der Erweiterten Tabellenpflege (SM30) ausgewertet. Die für
eine Tabelle generierte Pflegeoberfläche, führt folgende Prüfungen durch:
· Für Tabellen der Auslieferungsklassen W und L ist kein Transport der eingegebenen Daten
über den Transportanschluß der generierten Pflegeoberfläche möglich.
· Bei der Eingabe der Daten wird überprüft, ob diese den für die Tabelle in der Tabelle TRESC
definierten Namensraum verletzen. Falls die Daten den Namensraum verletzen, wird die
Eingabe zurückgewiesen.

April 2001 83
BC - ABAP Dictionary SAP AG
Aktivierungsart

Aktivierungsart
Die Aktivierungsart legt fest, ob die Tabelle direkt vom ABAP Dictionary aus aktiviert werden
kann oder ob das Laufzeitobjekt der Tabelle vorher mit einem C-Programm erzeugt werden muß.
Dieser Eintrag ist optional und nur für Tabellen der Laufzeitumgebung wichtig.
Es gibt folgende Möglichkeiten für die Aktivierungsart:
· Tabellen der Aktivierungsart 01 können nicht vom ABAP Dictionary aus aktiviert werden. Das
Laufzeitobjekt muß mittels eines C-Programms erzeugt werden. Anschließend kann die
Tabelle vom ABAP Dictionary aus aktiviert werden. Diese Aktivierungsart stellt sicher, daß
wichtige Systemtabellen nicht direkt verändert und aktiviert werden können.
· Tabellen der Aktivierungsart 02 werden auch in C-Programmen verwendet. Die Datenstruktur
im C-Programm muß also bei einer Änderung an der Tabelle manuell angepaßt werden. Im
Aktivierungsprotokoll erscheint für solche Tabellen dann ein entsprechender Hinweis.
· Tabellen der Aktivierungsart 10 werden benötigt bevor R3TRANS läuft. Solche Tabellen
müssen beim Upgrade vor allen anderen vorhanden sein.
· Tabellen der Aktivierungsart 00 können direkt vom ABAP Dictionary aus aktiviert werden.
Dies ist die Default-Einstellung für die Aktivierungsart.

84 April 2001
SAP AG BC - ABAP Dictionary
Fehlernachricht in der Fremdschlüsselprüfung

Fehlernachricht in der Fremdschlüsselprüfung


Bei einer Fremdschlüsselprüfung wird geprüft, ob in der Prüftabelle ein Satz mit dem durch die
Werte in den Fremdschlüsselfeldern vorgegeben Schlüssel existiert. Schlägt diese Prüfung fehl,
so wird eine Standardnachricht ausgegeben. Diese Standardnachricht kann in der Definition des
Fremdschlüssels durch eine beliebige Nachricht ersetzt werden.
Bei die Gestaltung dieser Nachricht können auch bis zu vier Platzhalter verwendet werden, die
dann vom System automatisch mit den Inhalten der Fremdschlüsselfelder und dem Namen der
Prüftabelle gefüllt werden.
Die ersten drei Platzhalter werden dabei mit den Inhalten der den ersten drei Schlüsselfeldern
der Prüftabelle (das Mandantenfeld ist dabei ausgenommen) zugeordneten Fremdschlüsselfelder
gefüllt. In den vierten Platzhalter wird der Name der Prüftabelle gestellt.

Ein Fremdschlüssel zwischen der Fremdschlüsseltabelle FS und der Prüftabelle PT


ist mit folgender Feldzuordnung definiert:
Prüftabelle PT Fremdschlüsseltabelle FS
Mandant Mandant
FELD_A FELD_1
FELD_B FELD_2
FELD_C FELD_3
FELD_D FELD_4

Als Fehlernachricht ist die Nachricht TEST 001 mit dem Text
Eintrag &1 &2 &3 existiert nicht in Tabelle &4.
im Fremdschlüssel eingetragen. Schlägt die Fremdschlüsselprüfung für die Werte
FELD_1 = 'Wert1', FELD_2 = 'Wert2', FELD_3 = 'Wert3' und FELD_4 = 'Wert4' fehl,
so wird folgender Nachrichtentext ausgegeben:
Eintrag Wert1 Wert2 Wert3 existiert nicht in der Tabelle PT.
Hat die Prüftabelle außer dem Mandant z.B. nur zwei weitere Schlüsselfelder, so werden die
Inhalte der zugeordneten Fremdschlüsselfelder in die Platzhalter &1 und &2 gestellt und der
dritte Platzhalter enthält den Namen der Prüftabelle.

April 2001 85
BC - ABAP Dictionary SAP AG
Änderungen an Tabellen durchführen

Änderungen an Tabellen durchführen


Vorgehensweise
1. Geben Sie im Einstiegsbild des ABAP Dictionary den Tabellennamen an.
2. Markieren Sie die Objektklasse Datenbanktabelle.
3. Wählen Sie Ändern.
Sie gelangen damit in das Pflegebild der Tabelle.
Hier ist beschrieben, wie Sie die folgenden Änderungen an bestehenden Tabellen durchführen
können:
· Append-Struktur anhängen [Seite 87]
· Include einfügen [Seite 89]
· Neue Felder einfügen [Seite 91]
· Vorhandene Felder löschen [Seite 94]
· Datentyp, Feldlänge und Dezimalstellen vorhandener Felder verändern [Seite 95]
· Tabellenart ändern [Seite 96]
· Felder verschieben [Seite 97]
· Felder aus einer anderen Tabelle übernehmen [Seite 98]
· Felder aus einem Entitätstyp übernehmen [Seite 99]
· Tabelle löschen [Seite 100]

86 April 2001
SAP AG BC - ABAP Dictionary
Append-Struktur anhängen

Append-Struktur anhängen
Vorgehensweise
1. Verzweigen Sie im Änderungsmodus in das Pflegebild der Tabelle, an die Sie die Append-
Struktur anhängen wollen.
Falls die Tabelle ein langes Feld (Datentyp VARC, LCHR oder LRAW) enthält, ist das
Anhängen einer Append-Struktur nicht möglich.
2. Wählen Sie Springen ® Append-Strukturen.
Es erscheint entweder ein Dialogfenster, in dem Sie den Namen der Append-Struktur
eingeben können, oder eine Liste aller bereits für die Tabelle angelegten Append-
Strukturen [Seite 71]. Falls schon Append-Strukturen vorhanden sind, müssen Sie
wählen, um das Dialogfenster zur Eingabe des Namens zu erhalten.
3. Geben Sie den Namen der Append-Struktur ein und wählen Sie . Der Name muß im
Kundennamensraum liegen.
Sie verzweigen damit in die Feldpflege der Append-Struktur.
4. Geben Sie nun die Felder der Append-Struktur an. Bis auf zwei Einschränkungen können Sie
dazu wie beim Anlegen einer normalen Struktur (siehe Struktur anlegen [Seite 151])
vorgehen.
Die Felder einer Append-Struktur müssen im Kundennamensraum liegen, d.h. der
Feldname muß mit YY oder ZZ beginnen. Damit werden Konflikte mit von der SAP in die
Tabelle eingefügten Feldern vermieden.
Eine Append-Struktur muß flach sein, d.h. jedes Feld der Append-Struktur muß entweder
auf ein Datenelement verweisen oder direkt mit Datentyp, Länge, Dezimalstellen und
Kurztext versehen werden.
5. Falls Sie Fremdschlüssel oder Suchhilfeanbindungen zu bereits vorhandenen Feldern der
Tabelle anlegen wollen, können Sie sich diese Felder über Appendierende einblenden
anzeigen lassen. Gehen Sie dann genauso vor, wie wenn Sie den Fremdschlüssel bzw. die
Suchhilfeanbindung in der zugrundeliegenden Tabelle anlegen würden (siehe Tabelle
anlegen [Seite 74]).
Falls für ein Feld in der Tabelle selbst schon ein Fremdschlüssel oder eine
Suchhilfeanbindung definiert ist, kann diese Definition über die Append-Struktur nicht
verändert werden.
6. Wählen Sie .

Ergebnis
Die Tabelle wird beim Aktivieren der Append-Struktur ebenfalls aktiviert. Die Felder aus der
Append-Struktur werden dabei auf der Datenbank an die Tabelle angehängt. Über die Append-
Struktur definierte Fremdschlüssel oder Suchhilfeanbindungen für die bereits in der Tabelle
vorhandenen Felder werden dabei ebenfalls aktiv.
Informationen zum Ablauf der Aktivierung können Sie sich über Hilfsmittel ®
Aktivierungsprotokoll anzeigen lassen. Falls bei der Aktivierung der Append-Struktur Fehler
auftraten, wird das Aktivierungsprotokoll direkt angezeigt.

April 2001 87
BC - ABAP Dictionary SAP AG
Append-Struktur anhängen

Siehe auch:
Append-Strukturen [Seite 71]

88 April 2001
SAP AG BC - ABAP Dictionary
Include einfügen

Include einfügen
Voraussetzungen
In eine Tabelle können nur flache Strukturen inkludiert werden. In einer flachen Struktur verweist
kein Feld auf eine andere Struktur. Alle Felder einer flachen Struktur zeigen also entweder auf
ein Datenelement oder wurden direkt mit Datentyp, Feldlänge und Dezimalstellen versehen.
In einer Tabelle darf ein Feldname nur maximal 16 Stellen lang sein. Eine Struktur kann deshalb
nur dann in eine Tabelle inkludiert werden, wenn alle Feldnamen in der Struktur nur maximal 16
Stellen lang sind.

Vorgehensweise
1. Stellen Sie den Cursor unter die Zeile, in die Sie das Include [Seite 17] einfügen wollen, und
wählen Sie Bearbeiten ® Include ® Einfügen.
Es erscheint ein Dialogfenster.
2. Geben Sie den Namen der Struktur ein. Optional können Sie einen Gruppennamen (siehe
Benannte Includes [Seite 153]) oder einen dreistelligen Suffix eingeben.
Über den Gruppennamen können Sie die Felder im Include in ABAP Programmen
gemeinsam ansprechen.
Der Suffix kann verwendet werden, um Namenskollisionen zwischen Feldern des
Includes und schon in der Tabelle vorhandenen Feldern aufzulösen. Der Suffix wird an
alle Felder des Includes angehängt, wobei der Feldname gegebenenfalls erst gekürzt
wird.
3. Wählen Sie .
In der Feldpflege der Tabelle wird eine Zeile mit .INCLUDE im Feld Felder und dem
Namen des Includes im Feld Feldtyp eingefügt.
4. Markieren Sie die Spalte Key, wenn alle Felder im Include Schlüsselfelder der Tabelle sein
sollen.
Der Schlüssel einer Tabelle muß zusammenhängend am Anfang der Feldliste stehen.
Falls Sie die Spalte Key markieren, müssen Sie also das Include hinter dem letzten
Schlüsselfeld oder zwischen bereits vorhandenen Schlüsselfeldern der Tabelle einfügen.
Falls Sie die Spalte Key nicht markieren, ist keines der inkludierten Felder ein
Schlüsselfeld der Tabelle.
5. Wählen Sie .

Ergebnis
Die Felder des Includes werden damit auf der Datenbank an die Tabelle angehängt. Falls Sie die
Felder des Includes als Schlüsselfelder eingefügt haben, wird der Primärindex [Seite 63] der
Tabelle neu aufgebaut.
Informationen zum Ablauf der Aktivierung finden Sie im Aktivierungsprotokoll, das Sie über
Hilfsmittel ® Aktivierungsprotokoll anzeigen lassen können. Treten beim Aktivieren der Tabelle
Fehler auf, wird das Aktivierungsprotokoll direkt angezeigt.

April 2001 89
BC - ABAP Dictionary SAP AG
Include einfügen

Weitere Möglichkeiten
Sie können sich die in einem Include enthaltenen Felder anzeigen lassen, indem Sie den Cursor
auf die Zeile des Includes stellen und wählen. Die Felder des Includes werden nun unterhalb
dieser Zeile eingeblendet. Sie können diese Aktion mit wieder rückgängig machen.
Mit können Sie alle in einer Tabelle enthaltenen Includes auflösen. Mit können Sie dies
wieder rückgängig machen.
Mit Bearbeiten ® Include ® Komponenten übernehmen können Sie die im Include
enthaltenen Felder direkt in die Tabelle übernehmen. Die Felder des Includes werden dabei zu
Tabellenfeldern. Sie passen sich damit nicht mehr an Änderungen im Include an.

Siehe auch
Includes [Seite 17]

90 April 2001
SAP AG BC - ABAP Dictionary
Neue Felder einfügen

Neue Felder einfügen


Vorgehensweise
1. Stellen Sie im Pflegebild der Tabelle den Cursor auf das Feld, vor dem das neue Feld
eingefügt werden soll, und wählen Sie Zeile einfügen. Mit Neue Zeilen können Sie am Ende
der Tabelle mehrere neue Felder anfügen.
Eine leere Zeile erscheint, in der Sie das zusätzliche Feld aufnehmen können. Wie Sie
ein Feld in die Tabelle aufnehmen, ist beschrieben in Tabelle anlegen [Seite 74].
2. Markieren Sie das Kennzeichen Init, wenn das neue Feld auf der Datenbank als NOT NULL
angelegt werden soll.
In diesem Fall wird beim Aktivieren die gesamte Tabelle durchlaufen und das neue Feld
wird mit dem Initialwert [Seite 92] gefüllt. Dies kann bei großen Tabellen sehr
laufzeitaufwendig sein!
Schlüsselfelder sind immer als NOT NULL definiert. Beim Einfügen eines neuen
Schlüsselfeldes wird der Primärindex der Tabelle auf der Datenbank neu aufgebaut.
3. Wählen Sie .

Ergebnis
Das neue Feld wird beim Aktivieren auf der Datenbank an die Tabelle angehängt. Dies geschieht
unabhängig von der Position des neuen Feldes in der Feldliste der Tabelle, d.h. die
Feldreihenfolgen im ABAP Dictionary und auf der Datenbank müssen nicht übereinstimmen.

Falls die Tabelle Prüftabelle eines Fremdschlüssels [Seite 20] ist, können neue
Schlüsselfelder nur an den bisherigen Primärschlüssel angehängt werden. Bei der
Aktivierung der Tabelle werden die betroffenen Fremdschlüssel dann als generisch
bzgl. der neuen Schlüsselfelder definiert. Die derart geänderten Fremdschlüssel sind
im Aktivierungsprotokoll aufgelistet.

Das Einfügen eines Mandantenfeldes führt zur Umsetzung der Tabelle (siehe
Datenbank-Strukturen anpassen [Seite 231]). Dabei werden die Daten der Tabelle in
alle in der Mandantentabelle T000 aufgeführten Mandanten kopiert.
Falls die Tabelle Prüftabelle eines Fremdschlüssels ist, ist das Einfügen eines
Mandantenfeldes nicht möglich. Sie müssen in diesem Fall vorher die bestehenden
Fremdschlüssel löschen.

April 2001 91
BC - ABAP Dictionary SAP AG
Initialwerte

Initialwerte
Ist der Wert eines Feldes in einem Datensatz undefiniert oder unbekannt, so wird dies als NULL-
Wert bezeichnet. NULL-Werte entstehen durch Einfügen neuer Felder in bestehende Tabellen
oder durch Inserts über Datenbank-Views [Seite 110].
Wird ein neues Feld in eine auf der Datenbank bereits vorhandene Tabelle eingefügt, so wird
diese Operation mit dem DDL-Statement
ALTER TABLE tabellenname ADD FIELD feldname...
auf der Datenbank durchgeführt. Bereits vorhandenen Sätze haben dann einen NULL-Wert im
neuen Feld. Wird ein INSERT auf eine Tabelle über einen Datenbank-View vorgenommen, so
entstehen NULL-Werte in allen nicht im View enthaltenen Feldern der Tabelle.
NULL-Werte bringen keine Nachteile mit sich, solange nicht auf das entsprechende Feld
selektiert wird. Bei einer Selektion auf ein Feld mit NULL-Werten werden aber eventuell nicht alle
Einträge gefunden, auf die die Selektionsbedingung paßt. Der Grund dafür ist, daß NULL-Werte
nur die Selektionsbedingung WHERE FIELD IS NULL erfüllen.

Das Feld Feld1 wird in eine Tabelle TAB eingefügt. Wird auf diese Tabelle mit dem
Statement SELECT... FROM TAB WHERE Feld1 <> 5... zugegriffen, so werden
Sätze mit NULL-Werten in Feld1 nicht gefunden, obwohl diese logisch der WHERE-
Bedingung des SELECT-Statements entsprechen.
Der im Beispiel beschriebene Fall kann vermieden werden, indem das eingefügte Feld als Initial
definiert wird. Das Feld wird damit auf der Datenbank als NOT NULL angelegt. Beim Aktivieren
wird die gesamte Tabelle durchlaufen und das neue Feld mit dem Initialwert gefüllt. Dies kann
sehr laufzeitaufwendig sein! Sie sollten deshalb das Initial-Kennzeichen nur im Bedarfsfall oder
wenn die Tabelle nur wenige Einträge hat verwenden.
Die Initialwerte sind vom Datentyp des Feldes abhängig.

Datentyp Initialwert
ACCP, CHAR, CUKY, LANG, UNIT “ “ Leerzeichen
CURR, DEC, FLTP, INT1, INT2, INT4, QUAN 0
CLNT 000
TIMS 000000
DATS 00000000
NUMC 00000... für Feldlänge <= 32
Kein Initialwert für Feldlänge
> 32
LRAW, LCHR, RAW, VARC Kein Initialwert vorgesehen

Beachten Sie, daß auch Felder auf der Datenbank als NOT NULL angelegt sein können, für die
das Initial-Kennzeichen im ABAP Dictionary nicht markiert ist! Ob ein Feld auf der Datenbank als
NOT NULL definiert ist, können Sie im Pflegebildschirm der entsprechenden Tabelle über
Hilfsmittel ® Datenbankobjekt ® Anzeigen ermitteln.

92 April 2001
SAP AG BC - ABAP Dictionary
Initialwerte

Beim Anlegen einer Tabelle werden alle Felder der Tabelle als NOT NULL und mit Default-Wert
angelegt. Das gleiche gilt beim Umsetzen der Tabelle! Nur wenn neue Felder an- bzw. eingefügt
werden, werden diese nicht als NOT NULL angelegt. Eine Ausnahme hiervon sind
Schlüsselfelder, die automatisch mit einem Initial-Kennzeichen versehen werden.

Ist das Initial-Kennzeichen für ein Include [Seite 17] gesetzt, so haben genau die
Strukturfelder mit gesetztem Initial-Kennzeichen diese Eigenschaft auch in der
Tabelle. Ist das Initial-Kennzeichen nicht gesetzt, sind NULL-Werte für alle Felder
des Includes zugelassen.
Felder mit den Datentypen LCHR, LRAW, RAW sowie NUMC Felder mit Feldlänge
größer 32 können nicht als Initial deklariert werden.

April 2001 93
BC - ABAP Dictionary SAP AG
Vorhandene Felder löschen

Vorhandene Felder löschen


Um ein Feld aus einer Tabelle zu löschen, müssen Sie den Cursor auf die entsprechende Zeile
stellen und Zeile löschen wählen. Wählen Sie dann .

Falls die Tabelle auf der Datenbank schon Daten enthält, ist nach dem Löschen
bestehender Felder eine Umsetzung (siehe Datenbank-Strukturen anpassen [Seite
231]) der Tabelle notwendig.
Falls Sie Schlüsselfelder der Tabelle löschen, können bei der Umsetzung Daten
verloren gehen. Wenn sich Datensätze in der Tabelle befanden, die sich nur in dem
gelöschten Schlüsselfeld unterschieden, kann nur einer dieser Datensätze in die
Tabelle zurückgeladen werden!

Wird ein Feld in einer anderen Tabelle als Referenzfeld verwendet, ist das Löschen
des Feldes nicht möglich. Sie müssen in diesem Fall alle Verwendungen des Feldes
als Referenzfeld (siehe Referenzfeld und Referenztabelle [Seite 16]) vorher
entfernen.
Falls die Tabelle Prüftabelle ist, ist das Löschen von Schlüsselfeldern der Tabelle
nicht möglich. Sie müssen in diesem Fall die entsprechenden Fremdschlüssel vorher
löschen.
Sie können alle Tabellen, die die betreffende Tabelle als Prüftabelle oder
Referenztabelle verwenden, über ermitteln.

94 April 2001
SAP AG BC - ABAP Dictionary
Datentyp und Länge vorhandener Felder verändern

Datentyp und Länge vorhandener Felder verändern


Falls dem Feld ein Datenelement [Seite 143] zugeordnet ist, müssen Sie die technischen
Feldeigenschaften (Datentyp, Länge, Anzahl der Dezimalstellen) in der Domäne des
Datenelements verändern.

Vorgehensweise bei Feldern mit Datenelement


1. Führen Sie einen Doppelklick auf dem Namen des Datenelements aus.
Sie verzweigen in die Datenelementpflege.
2. Führen Sie dort einen Doppelklick auf dem Namen der Domäne aus.
Sie verzweigen in die Domänenpflege.
3. Wählen Sie Domäne ® Anzeigen <> Ändern.
Nehmen Sie die gewünschten Änderungen vor und sichern ihre Eingaben.
Beachten Sie dabei, daß von dieser Änderung alle Tabellenfelder betroffen sind, die sich
auf die entsprechende Domäne beziehen! Es können Fremdschlüssel inkonsistent
werden und Umsetzungen erforderlich sein. Sie sollten sich deshalb vor einer Änderung
der Domäne über die Auswirkungen dieser Aktion informieren, indem Sie im Pflegebild
der Domäne wählen und die Verwendung der Domäne in anderen Tabellen prüfen.
4. Wählen Sie .
Die Tabelle wird nachaktiviert und das Tabellenfeld wird dabei an die Änderung der
Domäne angepaßt.

Vorgehensweise bei Feldern mit direkter Typeingabe


1. Stellen Sie den Cursor auf das Feld und wählen Sie Datenelement / Direkter Typ.
Die Felder Datentyp, Länge, DezStellen und Kurzbeschreibung werden eingabebereit.
2. Ändern Sie die Einträge für Datentyp und Länge und gegebenenfalls Dezimalstellen.
Sichern Sie ihre Eingaben.
3. Wählen Sie .

Beachten Sie, daß bei einer Änderung der Feldeigenschaften in der Regel eine
Umsetzung (siehe Datenbank-Strukturen anpassen [Seite 231]) der Tabelle
erforderlich wird.

April 2001 95
BC - ABAP Dictionary SAP AG
Tabellenart ändern

Tabellenart ändern
Voraussetzungen
Abhängig von der Art der Änderung müssen Sie folgende Besonderheiten beachten:
· Transparent in Struktur: Die Tabelle wird bei der Aktivierung von der Datenbank gelöscht.
Vorhandene Daten gehen dabei verloren! Vorhandene technische Einstellungen zur Tabelle
werden ebenfalls gelöscht.
· Pool-/Cluster in Transparent: Da technische Einstellungen für Pool- bzw. Clustertabellen
ohne Bedeutung sind, müssen Sie diese vor der Aktivierung der transparenten Tabelle
pflegen.
· Transparent in Pool/Cluster: Sie müssen noch die Zuordnung zum Tabellenpool bzw.
Tabellencluster angeben, in dem die Daten der Tabelle abgelegt werden sollen.

Vorgehensweise
1. Wählen Sie in der Feldpflege der Tabelle Zusätze ® Tabellenart ändern.
Es erscheint ein Dialogfenster, in dem die momentane Tabellenart (Transparente
Datenbanktabelle, Struktur, Pooltabelle, Clustertabelle) angekreuzt ist.
2. Markieren Sie die gewünschte Tabellenart und wählen Sie Auswählen.
Sie kommen damit wieder zurück in die Feldpflege der Tabelle.
3. Wählen Sie .

Für Pooltabellen gibt es, zusätzlich zum oben beschriebenen Verfahren, die
Möglichkeit die Tabellenart mit Hilfe des Transparent-Flag [Seite 44] zu ändern.

Eine Änderung einer Pool-/Clustertabelle in eine transparente Tabelle und


umgekehrt führt stets zu einer Umsetzung (siehe Datenbank-Strukturen anpassen
[Seite 231]) der Tabelle.

Siehe auch:
Pool- und Clustertabellen [Seite 269]

96 April 2001
SAP AG BC - ABAP Dictionary
Felder verschieben

Felder verschieben
Vorgehensweise
1. Stellen Sie den Cursor auf das zu verschiebende Feld und wählen Sie .
Das markierte Feld wird gelöscht und in die Zwischenablage kopiert.
2. Stellen Sie den Cursor auf das Feld, vor dem Sie das markierte Feld einfügen wollen, und
wählen Sie .
Das Feld wird an der neuen Position in die Tabelle eingefügt.

Die Feldreihenfolge im ABAP Dictionary kann von der Feldreihenfolge auf der
Datenbank abweichen. Eine Vertauschung der Feldreihenfolge (mit Ausnahme von
Schlüsselfeldern) im ABAP Dictionary führt deshalb zu keiner Änderung auf der
Datenbank. Insbesondere ist keine Umsetzung (siehe Datenbank-Strukturen
anpassen [Seite 231]) der Tabelle notwendig.
Falls die Tabelle Prüftabelle ist, ist die Änderung der Reihenfolge der Schlüsselfelder
nicht möglich. Sie müssen in diesem Fall die entsprechenden Fremdschlüssel vorher
löschen.

April 2001 97
BC - ABAP Dictionary SAP AG
Felder aus einer anderen Tabelle übernehmen

Felder aus einer anderen Tabelle übernehmen


Sie können Felder oder Blöcke von Feldern aus einer anderen Tabelle übernehmen.

Vorgehensweise
1. Wählen Sie im Pflegebild der Tabelle Bearbeiten ® Felder übernehmen.
Geben Sie im folgenden Dialogfenster den Namen der Tabelle an, aus der Sie die Felder
übernehmen wollen.
2. Wählen Sie Feldauswahl.
Eine Liste der in dieser Tabelle enthaltenen Felder erscheint.
3. Stellen Sie den Cursor auf das erste Feld des zu kopierenden Blocks und wählen Sie Block
markieren.
Wenn Sie nur einzelne Felder kopieren wollen, so stellen Sie den Cursor auf diese
Felder und wählen Sie Auswählen.
4. Stellen Sie den Cursor auf das letzte Feld des zu kopierenden Blocks und wählen Sie erneut
Block markieren.
Alle Felder des so markierten Blocks werden farblich unterlegt.
5. Wählen Sie Kopieren.
Der markierte Block bzw. die markierten Einzelfelder werden in einen Puffer kopiert und
Sie kehren in die Feldpflege zurück.
6. Stellen Sie den Cursor auf das Feld, vor dem Sie die neuen Felder einfügen wollen, und
wählen Sie .
Die vorher markierten Felder werden in die Tabelle eingefügt.
7. Wählen Sie .

Siehe auch:
Neue Felder einfügen [Seite 91]

98 April 2001
SAP AG BC - ABAP Dictionary
Felder aus einem Entitätstyp übernehmen

Felder aus einem Entitätstyp übernehmen


Vorgehensweise
1. Wählen Sie in der Feldpflege der Tabelle Bearbeiten ® Attrib. aus Enttyp.
Es erscheint ein Dialogfenster.
2. Geben Sie den Namen des Entitätstyps ein, aus dem Sie Attribute in die Tabelle
übernehmen wollen. Wählen Sie Feldauswahl.
Es erscheint ein Dialogfenster, in welchem alle Attribute des Entitätstyps aufgelistet sind.
3. Markieren Sie die Attribute, die Sie übernehmen wollen. Klicken Sie dazu den
entsprechenden Eintrag der Liste an und wählen Sie danach Auswählen.
Der Eintrag wird nun farblich unterlegt.
Beachten Sie hierbei, daß mit dieser Funktion nur die expliziten Attribute des Entitätstyps
übernommen werden können. Es werden nur diese expliziten Attribute angezeigt.
Explizite Attribute sind die Attribute, die nicht aus der dem Entitätstyp zugeordneten
Tabelle in diesen übernommen wurden. D.h. es können nur die Attribute übernommen
werden, die direkt im Data Modeler angegeben wurden.
4. Wählen Sie Kopieren, nachdem Sie alle gewünschten Felder markiert haben.
Die Attribute werden nun in die Zwischenablage übernommen.
5. Stellen Sie den Cursor auf das Feld, vor dem Sie die Felder einfügen wollen, und wählen Sie
.
Die vorher markierten Felder werden in die Tabelle eingefügt.

Siehe auch:
Neue Felder einfügen [Seite 91]
Data Modeler: Überblick und Modellierungsprinzip [Extern] (Datenmodellierung, Entitätstypen)

April 2001 99
BC - ABAP Dictionary SAP AG
Tabelle löschen

Tabelle löschen
Voraussetzungen
Eine Tabelle kann im ABAP Dictionary erst dann gelöscht werden, wenn Sie nicht mehr in
anderen Objekten (z.B. Views oder Programmen) verwendet wird.

Vorgehensweise
1. Markieren Sie im Einstiegsbild des ABAP Dictionary den Objekttyp Datenbanktabelle und
geben Sie den Namen der Tabelle ein.
Prüfen Sie über den Verwendungsnachweis , ob die Tabelle noch in Programmen
oder anderen Objekten des ABAP Dictionary verwendet wird.
2. Wählen Sie .
Es erscheint ein Dialogfenster, in dem Sie aufgefordert werden, den Löschauftrag
nochmals zu bestätigen. In diesem Dialogfenster wird Ihnen auch mitgeteilt, ob die
Tabelle noch Daten enthält.
3. Bestätigen Sie den Löschauftrag.

Ergebnis
Die Tabelle wird nun gelöscht, falls Sie nicht mehr in anderen Objekten des ABAP Dictionary
verwendet wird.

100 April 2001


SAP AG BC - ABAP Dictionary
Views

Views
Daten zu einem Anwendungsobjekt sind oft auf mehrere Tabellen verteilt. Durch die Definition
eines Views kann eine anwendungsspezifische Sicht definiert werden, die diese Daten
zusammenfaßt. Die Struktur einer solchen Sicht wird durch die Angabe der am View beteiligten
Tabellen und Felder festgelegt. Weiterhin können überflüssige Felder ausgeblendet und
Schnittstellen damit minimiert werden. Ein View kann in ABAP Programmen zur Datenselektion
verwendet werden.

View auf die Tabellen

F1 F2 F3 F5 F8

Sicht auf Daten, die


auf mehrere Tabellen
verteilt sind

F1 F2 F3 F6 F7 F8
F4 F5

Tabelle 1 Tabelle 3
Tabelle 2

Die Daten eines Views werden nicht physisch abgespeichert, sondern aus einer oder mehreren
Tabellen abgeleitet. Diese Ableitung von Daten kann im einfachsten Fall darin bestehen, daß ein
oder mehrere Felder aus einer Basistabelle ausgeblendet werden (Projektion) oder daß nur
bestimmte Einträge aus einer Basistabelle in den View übernommen werden (Selektion).
Kompliziertere Views können sich aus mehreren Basistabellen zusammensetzen, wobei die
einzelnen Tabellen über die relationale Join-Operation verbunden werden. Siehe hierzu Join,
Projektion und Selektion [Seite 103].
Bei der Definition eines Views müssen im ersten Schritt die Basistabellen des Views gewählt
werden. Diese müssen dann im zweiten Schritt durch die Angabe der Join-Bedingungen
verknüpft werden. Hierbei besteht auch die Möglichkeit, die Join-Bedingung aus einem zwischen
den Tabellen definierten Fremdschlüssel (siehe Fremdschlüsselbeziehung und Join-Bedingung
[Seite 107]) zu übernehmen. Im dritten Schritt müssen die Felder der Basistabellen ausgewählt
werden, welche in den View eingehen sollen. Im vierten Schritt können dann
Selektionsbedingungen formuliert werden, die die Sätze im View einschränken.
Es werden vier verschiedene Viewtypen unterstützt. Diese unterscheiden sich in der Art der
Realisierung des Views und in den möglichen Zugriffsarten auf die Viewdaten.
· Datenbank-Views [Seite 111] werden durch einen äquivalenten View auf der Datenbank
realisiert.

April 2001 101


BC - ABAP Dictionary SAP AG
Views

· Projektions-Views [Seite 117] dienen zum Ausblenden von Feldern aus einer Tabelle (nur
Projektion).
· Help-Views [Seite 118] können als Selektionsmethode in Suchhilfen [Seite 177] verwendet
werden.
· Pflege-Views [Seite 120] erlauben es, die auf mehrere Tabellen verteilten Daten zu einem
Anwendungsobjekt gemeinsam zu pflegen.
Datenbank-Views realisieren einen Inner Join. Die anderen Viewtypen realisieren einen Outer
Join (siehe Inner Join und Outer Join [Seite 106]).
Die Joinbedingungen können bei Datenbank-Views über Gleichheitsbeziehungen zwischen
beliebigen Basisfeldern formuliert werden. Bei den anderen Viewtypen müssen Sie aus
bestehenden Fremdschlüsseln übernommen werden. Tabellen können also nur dann in einem
Pflege-View oder Help-View zusammengefaßt werden, wenn Sie über Fremdschlüssel
miteinander verbunden sind.
Der Pflegestatus [Seite 108] bestimmt, ob auf den View nur lesend zugegriffen werden kann oder
ob auch Daten über den View eingefügt bzw. geändert werden können.
Siehe auch:
Beispiel zu Views [Seite 138]
Views anlegen [Seite 123]
Views löschen [Seite 137]

102 April 2001


SAP AG BC - ABAP Dictionary
Join, Projektion und Selektion

Join, Projektion und Selektion


Dieses Beispiel zeigt den Aufbau eines Views über die relationalen Operatoren Join, Projektion
und Selektion.
Wir gehen aus von zwei Tabellen TABA und TABB. Die Tabelle TABA enthält 2 Einträge, die
Tabelle TABB enthält 4 Einträge.

Tabelle TABA Tabelle TABB


Feld 1 Feld 2 Feld 3 Feld 4 Feld 5
1 Text 1 1 A Text 3
2 Text 2 1 B Text 4
2 A Text 5
2 B Text 6

Feld 1 Feld 2 Feld 3 Feld 4 Feld 5 Kreuzprodukt der


Tabellen TABA
1 Text 1 1 A Text 3 und TABB
1 Text 1 1 B Text 4
1 Text 1 2 A Text 5
1 Text 1 2 B Text 6
2 Text 2 1 A Text 3
2 Text 2 1 B Text 4
2 Text 2 2 A Text 5
2 Text 2 2 B Text 6

Zunächst wird jeder Satz von TABA mit jedem Satz von TABB kombiniert. Falls keine Join-
Bedingung definiert ist, wird über den View das Kreuzprodukt der Tabellen TABA und TABB
angezeigt.

Join-Bedingungen
Das gesamte Kreuzprodukt ist in der Regel keine sinnvolle Selektion. Deshalb muß das
Kreuzprodukt über Join-Bedingungen eingeschränkt werden. Eine Join-Bedingung beschreibt,
wie die Sätze der beiden Tabellen zusammenhängen.
In unserem Beispiel soll Feld 1 von TABA mit Feld 3 von TABB identifiziert werden. Die Join-
Bedingung lautet also TABA-Feld 1 = TABB-Feld 3. Durch diese Join-Bedingung werden alle
Sätze aus dem Kreuzprodukt entfernt, bei denen der Eintrag in Feld 1 nicht mit dem Eintrag aus
Feld 3 identisch ist. Die Spalte für Feld 3 im View wird damit überflüssig.

April 2001 103


BC - ABAP Dictionary SAP AG
Join, Projektion und Selektion

Joinbedingung: TABA - Feld 1 = TABB - Feld 3

Reduzieren des Kreuzprodukts um alle Sätze, in denen


der Eintrag in Feld 1 ungleich dem Eintrag in Feld 3 ist.

Feld 1 Feld 2 Feld 3 Feld 4 Feld 5

1 Text 1 1 A Text 3
1 Text 1 1 B Text 4
1 Text 1 2 A Text 5
1 Text 1 2 B Text 6
2 Text 2 1 A Text 3
2 Text 2 1 B Text 4
2 Text 2 2 A Text 5
2 Text 2 2 B Text 6

Projektion
Oft sind nicht alle Felder der an einem View beteiligten Tabellen von Interesse. Die in den View
eingehende Menge von Feldern kann explizit bestimmt werden (Projektion). In unserem Beispiel
ist Feld 4 nicht von Interesse und wird deshalb ausgeblendet.

Feld 1 Feld 2 Feld 4 Feld 5

1 Text 1 A Text 3
1 Text 1 B Text 4
2 Text 2 A Text 5
2 Text 2 B Text 6

Projektion

Auswahl der relevanten


Felder

Feld 1 Feld 2 Feld 5

1 Text 1 Text 3
1 Text 1 Text 4
2 Text 2 Text 5
2 Text 2 Text 6

104 April 2001


SAP AG BC - ABAP Dictionary
Join, Projektion und Selektion

Selektionsbedingungen
Für einen View können Selektionsbedingungen angegeben werden, die als Filter für die
aufzubauende Sicht verwendet werden.
In Selektionsbedingungen können Restriktionen für die Inhalte der Viewfelder angegeben
werden. Es können dann nur solche Datensätze über den View selektiert werden, die diesen
Restriktionen genügen. In einer Selektionsbedingung wird der Inhalt eines Viewfeldes durch
einen Vergleichsoperator mit einer Konstanten verglichen. Mehrere Selektionsbedingungen
können über die logischen Operatoren AND und OR verknüpft werden.
In unserem Beispiel sollen nur solche Sätze über den View angezeigt werden, die in Feld 4 den
Wert A haben. Die Selektionsbedingung lautet in diesem Fall also TABB-Feld 4 = 'A'.
Eine Selektionsbedingung kann also auch über ein nicht im View enthaltenes Feld formuliert
werden.

Feld 1 Feld 2 Feld 5 Feld 4

1 Text 1 Text 3 A
1 Text 1 Text 4 B
2 Text 2 Text 5 A
2 Text 2 Text 6 B

Selektionsbedingung: TABB - Feld 4 = ‘A’.

Feld 1 Feld 2 Feld 5

1 Text 1 Text 3
1 Text 1 Text 4
2 Text 2 Text 5
2 Text 2 Text 6

Siehe auch:
Inner Join und Outer Join [Seite 106]

April 2001 105


BC - ABAP Dictionary SAP AG
Inner Join und Outer Join

Inner Join und Outer Join


Die Datenmenge, die über einen View selektiert werden kann, hängt entscheidend davon ab, ob
der View einen Inner Join oder einen Outer Join realisiert. Beim Inner Join erhält man nur die
Sätze des Kreuzprodukts, zu denen in allen am View beteiligten Tabellen ein Eintrag existiert.
Beim Outer Join werden dagegen auch solche Sätze selektiert, bei denen in einigen der am View
beteiligten Tabellen kein Eintrag existiert.
Die über einen Outer Join ermittelte Treffermenge kann also eine echte Obermenge der über
einen Inner Join ermittelten Treffermenge sein.
Datenbank-Views realisieren einen Inner Join. Man erhält über einen Datenbank-View also nur
solche Sätze, zu denen in allen am View beteiligten Tabellen ein Eintrag vorhanden ist. Help-
Views und Pflege-Views realisieren dagegen einen Outer Join.

Tabelle TABA Tabelle TABB

Feld 1 Feld 2 Feld 3 Feld 4


A Text 1 A Text 3
B Text 2 B Text 4
C Text 5
Join-Bedingung

Was wird über den View angezeigt?

Feld 1 Feld 2 Feld 4 Feld 1 Feld 2 Feld 4


A Text 1 Text 3 A Text 1 Text 3
B Text 2 Text 4 B Text 2 Text 4
C Text 5

Inner Join Outer Join

106 April 2001


SAP AG BC - ABAP Dictionary
Fremdschlüsselbeziehung und Join-Bedingung

Fremdschlüsselbeziehung und Join-Bedingung


Falls zwischen zwei am View beteiligten Tabellen schon ein geeigneter Fremdschlüssel
vorhanden ist, kann die Verknüpfung dieser Tabellen über die Join-Bedingung aus diesem
Fremdschlüssel übernommen werden.

Ein View soll über die Tabellen TAB1 und TAB2 gebildet werden. Dabei ist TAB1
Primärtabelle des Views. TAB2 ist Sekundärtabelle des Views. TAB1 ist Prüftabelle
zu TAB2. Die Fremdschlüsselfelder sind den Prüftabellenfeldern wie folgt
zugeordnet:
TAB1-FELD_A zugeordnet zu TAB2-FELD_1
TAB1-FELD_B zugeordnet zu TAB2-FELD_2

Die aus dem Fremdschlüssel generierte Join-Bedingung des Views lautet dann:
CREATE VIEW ... AS SELECT ... WHERE TAB2-FELD_1 = TAB1-FELD_A AND
TAB2-FELD_2 = TAB1-FELD_B.

Join-Bedingungen können auch aus generischen und konstanten Fremdschlüsseln übernommen


werden. Falls einem Feld im Fremdschlüssel eine Konstante zugeordnet ist, wird diese dem Feld
auch in der Join-Bedingung zugeordnet. Für eine generische Beziehung im Fremdschlüssel
entfällt die Join-Bedingung.

Der Fremdschlüssel zwischen den Tabellen TAB1 (Prüftabelle) und TAB2


(Fremdschlüsseltabelle) ist wie folgt definiert:

TAB1-FELD_A zugeordnet zu TAB2-FELD_1


TAB1-FELD_B generisch
TAB1-FELD_C zugeordnet zu Konstante ‘C’

Die aus dem Fremdschlüssel generierte Join-Bedingung zum View würde in diesem
Fall wie folgt lauten:
CREATE VIEW ... AS SELECT ... WHERE TAB2-FELD_1 = TAB1-FELD_A AND
TAB2-FELD_2 = ‘C’.

April 2001 107


BC - ABAP Dictionary SAP AG
Pflegestatus

Pflegestatus
Der Pflegestatus eines Views steuert, ob über den View auch das Ändern bzw. Einfügen von
Datensätzen in die im View enthaltenen Tabellen möglich ist.
Es sind folgende Angaben für den Pflegestatus möglich:
· nur lesen: Über den View können nur Daten gelesen werden.
· lesen, ändern, löschen und anfügen: Über den View können auch Daten der im View
enthaltenen Tabellen geändert, gelöscht und eingefügt werden.
Für Datenbank-Views [Seite 111], die über mehrere Tabellen definiert sind, sind ausschließlich
lesende Zugriffe erlaubt. Falls ein Datenbank-View nur eine einzelne Tabelle enthält, können
über den View auch Daten in diese Tabelle eingefügt werden (siehe Inserts über Datenbank-
Views [Seite 110]).
Für Pflege-Views [Seite 120] können zusätzlich folgende Statusangaben gewählt werden:
· lesen und ändern: Bestehende View-Einträge können geändert werden. Es können aber
keine Sätze gelöscht oder eingefügt werden.
· lesen und ändern (zeitabhängige Views): Es dürfen nur Einträge eingefügt werden, die
sich im zeitunabhängigen Teil [Seite 109] des Schlüssels nicht von schon vorhandenen
Einträgen unterscheiden.

108 April 2001


SAP AG BC - ABAP Dictionary
Zeitabhängige Schlüsselteile

Zeitabhängige Schlüsselteile
Bei einigen Views kann man den Schlüssel in einen zeitunabhängigen und einen zeitabhängigen
Bereich unterteilen. Die Sätze dieser Views haben damit eine zeitabhängige Bedeutung.

Die Preise einer Dienstleistung ändern sich abhängig vom Datum. In einem View
sind die Dienstleistungskennung, ein Datumsfeld und ein Feld für den Preis
enthalten. Das Feld für die Dienstleistungskennung ist damit der zeitunabhängige
Schlüsselbereich und das Datumsfeld der zeitabhängige Schlüsselbereich des
Views.
Wurde für den View der Pflegestatus lesen und ändern (zeitabhängige Views)
gewählt, so können über den View nur Sätze eingefügt werden, die in der
Dienstleistungskennung mit schon vorhandenen Sätzen übereinstimmen. Es ist also
möglich für eine vorhandene Dienstleistung ab einem neuen Datum einen neuen
Preis einzutragen. Es wäre dagegen nicht möglich, Sätze mit einer noch nicht
vorhandenen Dienstleistungskennung einzufügen. Neue Dienstleistungen können
also über den View nicht eingefügt werden.

Dienstleistung Datum Preis

01 1.1.1997 100
01 1.6.1997 105 Einfügen erlaubt
01 1.9.1997 108 01 1.11.1997 103
02 1.6.1997 20
02 1.9.1997 22
04 1.3.1997 205 Einfügen verboten
04 1.7.1997 217
07 1.1.1997 30
08 1.1.1997 70
08 1.9.1997 85

Zeitunabhängiger Zeitabhängiger
Schlüssel Schlüssel

April 2001 109


BC - ABAP Dictionary SAP AG
Inserts über Datenbank-Views

Inserts über Datenbank-Views


Enthält ein Datenbank-View nur eine einzelne Tabelle, so können Daten über den View in diese
Tabelle eingefügt werden (siehe Pflegestatus [Seite 108]). Für den Inhalt der nicht im View
enthaltenen Tabellenfelder gibt es dabei folgende Möglichkeiten:
· Ist das Feld auf der Datenbank als NOT NULL mit Initialwert definiert, wird das Feld mit
dem entsprechenden Initialwert gefüllt.
· Ist das Feld auf der Datenbank als NOT NULL ohne Initialwert definiert, ist ein Einfügen
nicht möglich. Eine solche Aktion führt zu einem Datenbankfehler.
· Ist das Feld auf der Datenbank nicht als NOT NULL definiert, so entsteht ein NULL-Wert
in diesem Feld.
Sie sollten deshalb über einen Datenbank-View nur dann Daten in die Tabelle einfügen, falls für
alle nicht im View enthaltenen Tabellenfelder Initialwerte [Seite 92] definiert sind.
Das Verändern von bereits vorhandenen Datensätzen über einen Datenbank-View ist unkritisch,
falls der Datenbank-View alle Schlüsselfelder der Tabelle enthält.
Beim Einfügen von Datensätzen über Pflege-Views [Seite 120] oder Projektions-Views [Seite
117] werden alle nicht im View enthaltenen Tabellenfelder mit dem Default-Wert des Feldes
versehen. Dies geschieht unabhängig davon, ob das Feld auf der Datenbank als NOT NULL
definiert ist. Damit werden NULL-Werte in diesen Feldern in jedem Fall vermieden.

110 April 2001


SAP AG BC - ABAP Dictionary
Datenbank-Views

Datenbank-Views
Daten zu einem Anwendungsobjekt sind oft über mehrere Datenbanktabellen verteilt. Über einen
Datenbank-View kann eine anwendungsspezifische Sicht auf solche verteilten Daten hergestellt
werden.
Datenbank-Views werden im ABAP Dictionary definiert. Beim Aktivieren wird ein Datenbank-
View automatisch auf der unterliegenden Datenbank angelegt.
Auf die Daten eines Datenbank-Views können Anwendungsprogramme über die
Datenbankschnittstelle zugreifen. Der Zugriff auf die Daten kann in ABAP Programmen sowohl
über OPEN SQL als auch über NATIVE SQL erfolgen. Die eigentliche Datenselektion erfolgt
jedoch in der Datenbank. Da in diesem Fall die Join-Operation auf der Datenbank ausgeführt
wird, kann man damit die Anzahl der Datenbankzugriffe minimieren. Datenbank-Views realisieren
einen Inner Join (siehe Inner- und Outer Join [Seite 106]).

ABAP Programm
Viewdefinition im ABAP Dictionary

F1 F2 F3 F5 F8

Wird beim Aktivieren Datenbank-Schnittstelle


auf der DB angelegt

F1 F2 F3 F5 F8 Viewdefinition auf
der Datenbank

F1 F2 F3 F6 F7 F8
F4 F5

Tabelle 1 Tabelle 3
Tabelle 2

Ist nur eine einzige Tabelle im Datenbank-View enthalten, so kann über den Pflegestatus [Seite
108] bestimmt werden, ob auch Datensätze über den View eingefügt werden können. Sind
mehrere Tabellen im Datenbank-View enthalten, kann nur lesend auf seine Daten zugegriffen
werden.
Datenbank-Views sollten angelegt werden, wenn logisch zusammenhängende Daten aus
unterschiedlichen Tabellen gleichzeitig selektiert werden müssen. Der Zugriff über einen
Datenbank-View ist in der Regel schneller als die Einzelzugriffe auf die Tabellen. Auch bei der
Selektion über Views sollte sichergestellt sein, daß passende Indizes auf den im View
enthaltenen Tabellen angelegt sind.
Da ein Datenbank-View auf der Datenbank realisiert wird, können nur transparente Tabellen in
einen Datenbank-View aufgenommen werden.

April 2001 111


BC - ABAP Dictionary SAP AG
Datenbank-Views

Über die technischen Einstellungen eines Datenbank-Views [Seite 114] kann gesteuert werden,
ob die Viewdaten gepuffert werden sollen.
Siehe auch:
Datenbank-View anlegen [Seite 124]
Includes in Datenbank-Views [Seite 113]

112 April 2001


SAP AG BC - ABAP Dictionary
Includes in Datenbank-Views

Includes in Datenbank-Views
In einen Datenbank-View kann eine ganze Tabelle inkludiert werden. In diesem Fall werden alle
Felder der inkludierten Tabelle zu Feldern des Views (wobei es möglich ist bestimmte Felder
explizit herauszunehmen). Werden in die Tabelle neue Felder aufgenommen oder vorhandene
Felder gelöscht, so wird der View automatisch an diese Änderung angepaßt. Ein neues bzw.
gelöschtes Feld wird also in diesem Fall in den View aufgenommen bzw. aus dem View gelöscht.

Datenbank-View auf TABA, TABB und TABC

F1 F3 F4 F5 F6 F8

TABB in
View
inkludiert

F1 F2 F3 F4 F5 F6 F 7 F 8

TABA TABB TABC

Um eine der Tabellen in den View zu inkludieren, müssen Sie im Pflegebild des Views auf der
Registerkarte Viewfelder im Feld Viewfeld das Zeichen *, im Feld Tabelle den Namen der zu
inkludierenden Tabelle und im Feld Feldname erneut das Zeichen * eintragen.
Es ist möglich, einzelne Felder aus einer inkludierten Tabelle auszuschließen. Wenn Sie ein Feld
der inkludierten Tabelle nicht in den View aufnehmen möchten, müssen Sie im Feld Viewfeld ein
-, im Feld Tabelle den Namen der inkludierten Tabelle und im Feld Feldname den Namen des
auszuschließenden Feldes angeben.

April 2001 113


BC - ABAP Dictionary SAP AG
Technische Einstellungen eines Datenbank-Views

Technische Einstellungen eines Datenbank-Views


Die von einem ABAP Programm über einen Datenbank-View gelesenen Daten können gepuffert
werden. Die Pufferung der Viewdaten verhält sich völlig analog zur Pufferung von Tabellen
(siehe Datenbanktabellen puffern [Seite 45]).
Über die technischen Einstellungen eines Datenbank-Views kann gesteuert werden, ob die
Pufferung der Viewdaten erlaubt ist (siehe Pufferungserlaubnis [Seite 34]) und wie diese
vorgenommen werden soll (siehe Pufferungsart [Seite 35]). Es gibt hier die gleichen
Einstellungsmöglichkeiten wie bei der Pufferung von Tabellen.
Die gepufferten Viewdaten werden invalidiert, sobald Daten in einer der Basistabellen des Views
verändert werden.

114 April 2001


SAP AG BC - ABAP Dictionary
Append-Views

Append-Views
Append-Views werden für Erweiterungen von Datenbank-Views des SAP Standards verwendet.
Dies betrifft spezielle Entwicklungen, länderspezifische Entwicklungen und Modifikationen durch
den Kunden.
Über einen Append-View können Felder aus den Basistabellen des Views modifikationsfrei in
den View aufgenommen werden. Dies ist analog zur Erweiterung einer Tabelle durch eine
Append-Struktur.
Append-Views sind ein neuer Viewtyp, der ausschließlich zur Erweiterung bestehender
Datenbank-Views um neue Felder verwendet werden kann. Ein Append-View ist genau einem
Datenbank-View zugeordnet. Es können aber mehrere Append-Views zu einem Datenbank-View
angelegt werden.
Wird ein Datenbank-View aktiviert, so werden alle Append-Views zu diesem View gesucht und
deren Felder werden an den Datenbank-View angehängt. Wird ein Append-View angelegt oder
geändert, so wird der ihm zugeordnete Datenbank-View beim Aktivieren des Append-View ist
automatisch an diese Änderung angepaßt.

Auf den Tabellen A und B ist ein Datenbank-View V definiert. Tabelle A enthält die
Felder 1, 2, und 3. Tabelle B enthält die Felder 4, 5, 6, und 7. Der Datenbank-View V
enthält Feld 1 und 2 aus Tabelle A und Feld 5 aus Tabelle B.
Der Datenbank-View V wird in einer Anwendung zur Selektion von Daten aus den
Tabellen A und B benutzt. Aufgrund spezieller Anforderungen werden aber für eine
Sonderentwicklung nicht nur die Inhalte der im View enthaltenen Felder, sondern
auch die Inhalte der Felder 6 und 7 aus Tabelle B benötigt. Diese beiden Felder aus
Tabelle B können nun über einen Append-View D in den View V aufgenommen
werden.

April 2001 115


BC - ABAP Dictionary SAP AG
Append-Views

View V Append-View D

Feld 1 Feld 2 Feld 5 Feld 6 Feld 7

Feld 1 Feld 2 Feld 3 Feld 4 Feld 5 Feld 6 Feld 7

Tabelle A Tabelle B

Joinbedingung

Die beschriebene Append-Technik kann ausschließlich für Datenbank-Views verwendet werden.


Über einen Append-View können nur neue Felder aus den im View enthaltenen Basistabellen in
den View aufgenommen werden. Es ist nicht möglich neue Tabellen in den View aufzunehmen
oder die Joinbedingungen bzw. Selektionsbedingungen des Views zu modifizieren.
Siehe auch:
Append-View anlegen [Seite 136]

116 April 2001


SAP AG BC - ABAP Dictionary
Projektions-Views

Projektions-Views
Über Projektions-Views können Felder aus einer Tabelle ausgeblendet werden (Projektion).
Dadurch können Schnittstellen minimiert werden, d.h. beim Zugriff auf die Datenbank werden nur
die tatsächlich benötigten Feldinhalte gelesen und geschrieben.
Ein Projektions-View enthält nur genau eine Tabelle. Selektionsbedingungen können für
Projektions-Views nicht angegeben werden.
Ein Projektions-View hat keine Entsprechung auf der Datenbank. Der Zugriff auf einen
Projektions-View wird vom R/3-System in den entsprechenden Zugriff auf seine Basistabelle
abgebildet. Über einen Projektions-View kann auch auf Pooltabellen oder Clustertabellen
zugegriffen werden.

Tabellendefinition im
F1 F2 F3 F4 F5
ABAP Dictionary

Projektions-View
F1 F2 F5
zur Tabelle

Zugriff auf die Daten über


die Datenbank-Schnittstelle

F1 F2 F3 F4 F5
DB-Tabelle

Der Pflegestatus [Seite 108] des Views steuert, wie auf die Daten der Tabelle über den
Projektions-View zugegriffen werden kann.
Siehe auch:
Projektions-View anlegen [Seite 129]

April 2001 117


BC - ABAP Dictionary SAP AG
Help-Views

Help-Views
Ein Help-View muß angelegt werden, wenn als Selektionsmethode einer Suchhilfe [Seite 177]
ein View mit Outer Join [Seite 106] benötigt wird.
Die Selektionsmethode einer Suchhilfe ist entweder eine Tabelle oder ein View. Falls für die
Suchhilfe Daten aus mehreren Tabellen selektiert werden müssen, sollte in der Regel ein
Datenbank-View als Selektionsmethode verwendet werden. Ein Datenbank-View realisiert
allerdings immer einen Inner Join. Falls für die Selektion der Daten ein View mit Outer Join
benötigt wird, muß ein Help-View als Selektionsmethode verwendet werden.

Feld 1 001
Suchhilfe zum Feld
Feld 2 F4

...

Help-View als
Selektionsmethode

Selektion der
Trefferliste

TAB1 TAB2

Alle Tabellen, die in einem Help-View zusammengefaßt werden, müssen über Fremdschlüssel
verbunden sein. Hierbei können nur Fremdschlüssel verwendet werden, die gewisse
Eigenschaften besitzen (siehe Einschränkungen für Pflege- und Help-Views [Seite 122]). Die
erste Tabelle, die in den Help-View aufgenommen wird, wird als Primärtabelle des Help-Views
bezeichnet. Die zu dieser Primärtabelle über Fremdschlüssel hinzugefügten Tabellen werden als
Sekundärtabellen bezeichnet.

Die Funktionalität eines Help-View hat sich zwischen Release 3.0 und Release 4.0
grundlegend geändert! In Release 3.0 wurde ein Help-View automatisch bei der
Eingabehilfe (F4-Hilfe) auf allen Feldern angezeigt, die gegen die Primärtabelle des
Help-Views geprüft wurden. Dies ist zu Release 4.0 nicht mehr der Fall!
Ab Release 4.0 muß explizit eine Suchhilfe angelegt werden, die mit den Feldern,
auf denen sie angeboten werden soll, verknüpft werden muß (siehe Suchhilfe mit
einem Bildschirmfeld verbinden [Seite 187]).

118 April 2001


SAP AG BC - ABAP Dictionary
Help-Views

Vorhandene Help-Views werden beim Upgrade auf ein Release größer 4.0
automatisch zu Suchhilfen migriert [Seite 213].

Ein Help-View realisiert einen Outer-Join, d.h. es werden immer alle Inhalte der
Primärtabelle des Help-Views angezeigt. Deshalb ist es nicht sinnvoll, eine
Selektionsbedingung auf Felder in einer der Sekundärtabellen des Help-Views zu
formulieren. Falls aufgrund dieser Selektionsbedingung Sätze dieser
Sekundärtabelle nicht gelesen werden können, werden in der Anzeige der
betroffenen Sätze die Inhalte aus den zugehörigen Feldern der Sekundärtabelle den
Initialwert erhalten.
Siehe auch:
Help-View anlegen [Seite 127]

April 2001 119


BC - ABAP Dictionary SAP AG
Pflege-Views

Pflege-Views
Über Pflege-Views können auf einfache Weise Möglichkeiten für die Pflege komplexer
Anwendungsobjekte geschaffen werden.
Für den Anwender bilden auf mehrere Tabellen verteilte Daten oft eine logische Einheit, d.h. ein
Anwendungsobjekt. Die Daten eines solchen Anwendungsobjekts sollen deshalb gemeinsam
angezeigt, geändert und angelegt werden können. An der technischen Realisierung des
Anwendungsobjekts, d.h. der Verteilung der Daten auf mehrere Tabellen, ist der Anwender in der
Regel nicht interessiert.
Ein Pflege-View erlaubt es, die Daten eines Anwendungsobjekts gemeinsam zu pflegen. Die
Verteilung der Daten auf die unterliegenden Datenbanktabellen findet automatisch statt. Welche
Zugriffe auf die Daten der zugrundeliegenden Tabellen über den Pflege-View möglich sind, wird
durch den Pflegestatus [Seite 108] bestimmt.
Alle in einem Pflege-View zusammengefaßten Tabellen müssen über Fremdschlüssel verknüpft
sein, d.h. die Join-Bedingungen werden beim Pflege-View immer aus dem Fremdschlüssel
abgeleitet (siehe Fremdschlüsselbeziehung und Join-Bedingung [Seite 107]). Eine direkte
Eingabe der Join-Bedingungen wie bei Datenbank-Views ist nicht möglich.
Es bestehen einige Einschränkungen bzgl. der Eigenschaften der Fremdschlüssel, über die die
Tabellen in einem Pflege-View verknüpft werden können (siehe Einschränkungen für Pflege- und
Help-Views [Seite 122]).

Anwendungsobjekt

Pflege-View auf
die Tabellen F1 F2 F3 F5 F8
Datenaustausch über
den Pflege-View

Tabelle 1 Tabelle 3
Tabelle 2
F1 F2 F3 F6 F7 F8
F4 F5

Fremdschlüssel Fremdschlüssel

Es steht eine standardisierte Tabellenpflege-Transaktion (SM30) zur Verfügung, die es erlaubt,


Daten aus den Basistabellen eines Pflege-Views gemeinsam zu pflegen.

120 April 2001


SAP AG BC - ABAP Dictionary
Pflege-Views

Pflegemechanismen, wie Dynpros und Verarbeitungsprogramme, müssen dafür über die


Transaktion Generierung Tabellensicht (SE54) aus der Viewdefinition generiert werden. Damit ist
es möglich, auf einfache Weise komfortable Pflegeoberflächen zu erstellen.
Wie Sie solche Pflegemechanismen erstellen können, erfahren Sie in der Dokumentation BC -
Generieren Tabellenpflegedialog [Extern].

F1 F2 F3 F5 F8 A F1
Aus dem Pflege-
Pflege-View auf die Tabellen B F2 D F5 View generierte
Eingabemaske
C F3 E F8

F1 F2 F3 F6 F7 F8
A B C F4 F5 D E
B D

Fremdschlüssel Fremdschlüssel

Siehe auch:
Pflege-View anlegen [Seite 131]
Pflegestatus [Seite 108]

April 2001 121


BC - ABAP Dictionary SAP AG
Einschränkungen für Pflege- und Help-Views

Einschränkungen für Pflege- und Help-Views


Bei der Auswahl der Sekundärtabellen eines Pflege-Views oder Help-Views bestehen gewisse
Einschränkungen. Die Sekundärtabellen müssen zur Primärtabelle bzw. zur transitiv
vorhergehenden Sekundärtabelle in einer N:1-Abhängigkeit stehen. Damit ist sichergestellt, daß
zu einem Datensatz in der Primärtabelle höchstens ein abhängiger Datensatz in jeder der
Sekundärtabellen vorhanden ist.

Primärtabelle

N:1 Abhängigkeit N:1 Abhängigkeit

Sekundärtabelle 1 Sekundärtabelle 2

N:1 Abhängigkeit N:1 Abhängigkeit

Sekundärtabelle 3 Sekundärtabelle 4

N:1 Abhängigkeit

Sekundärtabelle 5

Eine N:1-Abhängigkeit besteht, wenn die Sekundärtabelle die Prüftabelle im verwendeten


Fremdschlüssel [Seite 20] ist. Ist die Sekundärtabelle die Fremdschlüsseltabelle, so müssen die
Fremdschlüsselfelder Schlüsselfelder einer Texttabelle sein oder der Fremdschlüssel muß die
Kardinalität N:1 oder N:C haben (siehe Semantische Eigenschaften eines Fremdschlüssels
[Seite 25]).

122 April 2001


SAP AG BC - ABAP Dictionary
Views anlegen

Views anlegen
Die Vorgehensweise beim Anlegen eines Views hängt vom Typ des Views ab.

Vorgehensweise
1. Markieren Sie im Einstiegsbild des ABAP Dictionary die Objektklasse View, geben Sie den
Viewnamen ein und betätigen Sie die Drucktaste Anlegen.
Es erscheint ein Dialogfenster, in dem Sie den Typ des Views wählen müssen.
2. Mit Auswählen kommen Sie in das Pflegebild des gewählten Viewtyps.
Wie Sie weiter vorgehen müssen ist (je nach Viewtyp) beschrieben in:
· Datenbank-View anlegen [Seite 124]
· Pflege-View anlegen [Seite 131]
· Help-View anlegen [Seite 127]
· Projektions-View anlegen [Seite 129]

April 2001 123


BC - ABAP Dictionary SAP AG
Datenbank-View anlegen

Datenbank-View anlegen
Vorgehensweise
1. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Sie können später beispielsweise mit dem Infosystem über diesen Kurztext nach dem
View suchen.
2. Geben Sie auf der Registerkarte Tabellen/Joinbedingungen im Feld Tabellen die Tabellen
an, die Sie in den View aufnehmen wollen.
Beachten Sie, daß Sie in einen Datenbank-View nur transparente Tabellen aufnehmen
können.
3. Verbinden Sie die aufgenommenen Tabellen über Join-Bedingungen [Seite 103].
Falls zwischen den Tabellen geeignete Fremdschlüssel vorhanden sind, sollten Sie die
Join-Bedingungen aus diesen Fremdschlüsseln übernehmen (siehe
Fremdschlüsselbeziehung und Join-Bedingung [Seite 107]).
Stellen Sie hierzu den Cursor auf einen Tabellenamen und betätigen Sie die Drucktaste
Beziehungen. Es erscheinen nun alle für die Tabelle definierten Fremdschlüssel zu
anderen Tabellen. Markieren Sie den gewünschten Fremdschlüssel und wählen Sie
Übernehmen. Die Join-Bedingung wird nun aus den Angaben im Fremdschlüssel
abgeleitet.
Wenn Sie nur die zwischen zwei Tabellen bestehende Fremdschlüsselbeziehung sehen
wollen, so müssen Sie diese beiden Tabellen markieren (erste Spalte des
Eingabebereichs Tabellen anklicken) und dann Beziehungen wählen.
4. Wählen Sie auf der Registerkarte Viewfelder die Felder aus, die Sie in den View übernehmen
wollen.
Betätigen Sie die Drucktaste Tabellenfelder. In einem Dialogfenster werden nun alle im
View enthaltenen Tabellen angezeigt. Wählen Sie eine Tabelle per Doppelklick aus. Es
werden nun alle in dieser Tabelle enthaltenen Felder angezeigt. Sie können daraus
Felder übernehmen, indem Sie diese in der ersten Spalte markieren und Übernehmen
wählen.
Es ist auch möglich, eine Tabelle vollständig in den View zu includieren (siehe Includes
in Datenbank-Views [Seite 113]).
5. Formulieren Sie (optional) auf der Registerkarte Selektionsbedingungen Einschränkungen für
die über den View anzeigbaren Datensätze (siehe Selektionsbedingung des Views pflegen
[Seite 135]).
Die Selektionsbedingungen bestimmen, welche Datensätze über den View selektiert
werden können.
6. Pflegen Sie (optional) über Springen ® Technische Einstellungen die technischen
Einstellungen des Datenbank-Views.
Hier können Sie festlegen, ob bzw. wie der Datenbank-View gepuffert werden soll.
Verfahren Sie hier wie bei den technischen Einstellungen einer Tabelle (siehe
Technische Einstellungen pflegen [Seite 79]). Beachten Sie, daß für Datenbank-Views
nur die Einstellungen zur Pufferung pflegbar sind.

124 April 2001


SAP AG BC - ABAP Dictionary
Datenbank-View anlegen

7. Wählen Sie auf der Registerkarte Pflegestatus den Pflegestatus [Seite 108] des Datenbank-
Views.
Falls mehr als eine Tabelle im View enthalten ist, ist der Pflegestatus nur lesen nicht
änderbar.
8. Sichern Sie ihre Eingaben. Sie werden dabei aufgefordert, dem View eine
Entwicklungsklasse zuzuordnen.
Sie können diese Entwicklungsklasse später über Springen ® Objektkatalogeintrag
verändern.
9. Wählen Sie .

Ergebnis
Beim Aktivieren eines Datenbank-Views wird der entsprechende View auf der Datenbank
automatisch angelegt, falls die Basistabellen des Views dort schon angelegt sind.
Bei der Aktivierung wird ein Protokoll geschrieben, das Sie sich über Hilfsmittel ®
Aktivierungsprotokoll anzeigen lassen können. Falls bei der Aktivierung des Views Fehler oder
Warnungen auftraten, wird das Aktivierungsprotokoll direkt angezeigt.
Falls die Basistabellen noch nicht auf der Datenbank angelegt sind, wird dies im
Aktivierungsprotokoll vermerkt. Der View wird im ABAP Dictionary trotzdem aktiv. Sie können
den zugehörigen View auf der Datenbank in diesem Fall zu einem späteren Zeitpunkt über das
Datenbank-Utility anlegen.

Weitere Möglichkeiten
· Dokumentation erfassen: Sie können über Springen ® Dokumentation Informationen zur
Verwendung des Views erfassen. Diese Dokumentation wird z.B. beim Drucken des Views
mit ausgegeben.
· Datenelement eines Viewfeldes ändern: Markieren Sie auf der Registerkarte Viewfelder
die Spalte Mod (Modifizieren). Das Feld Datenelement wird nun eingabebereit. Sie können
hier ein Datenelement eintragen, das auf die gleiche Domäne wie das Datenelement des
zugeordneten Tabellenfeldes zeigt. Nehmen Sie die Markierung des Kennzeichens Mod
zurück, wenn Sie wieder das Datenelement des zugeordneten Tabellenfeldes verwenden
wollen.
· Viewdaten anzeigen: Über Hilfsmittel ® Inhalt können Sie feststellen, welche Daten sich
über den View selektieren lassen.
· Create-Statement anzeigen lassen: Über Zusätze ® CREATE-Anweisung können Sie sich
anzeigen lassen, wie der View auf der Datenbank angelegt würde. Es wird das Statement
angezeigt, das beim Anlegen der momentan bearbeiteten Version des Views auf der
Datenbank ausgeführt würde.
· Definition des Views auf der Datenbank prüfen: Über Hilfsmittel ® Datenbankobjekt ®
Prüfen können Sie ermitteln, ob die Definition des Views auf der Datenbank zur aktiven
Version des Views konsistent ist. Mit Hilfsmittel ® Datenbankobjekt ® Anzeigen können Sie
sich die Definition des Views auf der Datenbank anzeigen lassen.
· Laufzeitobjekt des Views prüfen: Über Hilfsmittel ® Laufzeitobjekt ® Prüfen können Sie
ermitteln, ob die Definition des Views in der ABAP Dictionary Pflege mit den Angaben im
Laufzeitobjekt des Views identisch ist. Mit Hilfsmittel ® Laufzeitobjekt ® Anzeigen können
Sie sich das Laufzeitobjekt des Views anzeigen lassen.

April 2001 125


BC - ABAP Dictionary SAP AG
Datenbank-View anlegen

Siehe auch:
Datenbank-Views [Seite 111]

126 April 2001


SAP AG BC - ABAP Dictionary
Help-View anlegen

Help-View anlegen
Vorgehensweise
1. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Sie können später beispielsweise mit dem Infosystem über diesen Kurztext nach dem
View suchen.
2. Geben auf der Registerkarte Tabellen/Joinbedingungen unter Tabellen die Primärtabelle des
Views an.
In den View können nur Tabellen aufgenommen werden, die mit der Primärtabelle
(indirekt) über Fremdschlüssel verbunden sind.
3. Sichern Sie ihre Eingaben.
Sie werden dann aufgefordert, dem Help-View eine Entwicklungsklasse zuzuordnen. Sie
können diese Entwicklungsklasse später über Zusätze ® Objektkatalogeintrag
verändern.
4. Nehmen Sie, falls notwendig, weitere Tabellen in den View auf. Sie können in einen Help-
View nur Tabellen aufnehmen, die über Fremdschlüssel miteinander verbunden sind.
Stellen Sie dazu den Cursor auf die Primärtabelle und wählen Sie Beziehungen. Es
werden alle bestehenden Fremdschlüsselbeziehungen der Primärtabelle angezeigt.
Markieren Sie die gewünschten Fremdschlüssel und wählen Sie Übernehmen. Die an
einem solchen Fremdschlüssel beteiligte Sekundärtabelle wird in den View
übernommen. Die aus den Fremdschlüsseln abgeleiteten Join-Bedingungen
(Fremdschlüsselbeziehung und Join-Bedingung [Seite 107]) werden angezeigt.
Sie können auch Tabellen aufnehmen, die mit einer der bisher aufgenommenen
Sekundärtabellen über einen Fremdschlüssel verbunden sind. Stellen Sie hierzu den
Cursor auf die Sekundärtabelle und wählen Sie Beziehungen. Gehen Sie dann wie zuvor
beschrieben vor.
Bei Pflege- und Help-Views bestehen gewisse Restriktionen bzgl. der Fremdschlüssel,
über die Tabellen in den View übernommen werden können (siehe Einschränkungen für
Pflege- und Help-Views [Seite 122]). Die Fremdschlüssel, für die diese Bedingungen
verletzt sind, werden am Ende der Liste unter der Überschrift Beziehungen mit
ungeeigneter Kardinalität angezeigt.
5. Wählen Sie auf der Registerkarte Viewfelder die Felder aus, die Sie in den View übernehmen
wollen. Die Schlüsselfelder der Primärtabelle wurden automatisch als Vorschlag in den View
übernommen.
Betätigen Sie die Drucktaste Tabellenfelder. In einem Dialogfenster werden nun alle im
View enthaltenen Tabellen aufgelistet. Wählen Sie eine Tabelle aus. Die Felder der
Tabelle werden nun in einem Dialogfenster eingeblendet. Markieren Sie die
gewünschten Felder in der ersten Spalte und wählen Sie Übernehmen.
6. Formulieren Sie (optional) auf der Registerkarte Selektionsbedingungen einschränkende
Bedingungen an die Datensätze, die über den View angezeigt werden sollen (siehe
Selektionsbedingung des Views pflegen [Seite 135]).
Die Selektionsbedingungen bestimmen, welche Datensätze über den View selektiert
werden können.

April 2001 127


BC - ABAP Dictionary SAP AG
Help-View anlegen

7. Wählen Sie .

Ergebnis
Der View wird nun aktiviert. Bei der Aktivierung wird ein Protokoll geschrieben, das Sie sich über
Hilfsmittel ® Aktivierungsprotokoll anzeigen lassen können. Falls bei der Aktivierung des Views
Fehler oder Warnungen auftraten, wird das Aktivierungsprotokoll direkt angezeigt.

Weitere Möglichkeiten
· Dokumentation erfassen: Sie können über Springen ® Dokumentation Informationen zur
Verwendung des Views erfassen. Diese Dokumentation wird z.B. beim Drucken des Views
ausgegeben.
· Datenelement eines Viewfeldes ändern: Kreuzen Sie hierzu die Spalte Mod (Modifikation)
bei dem Viewfeld an. Das Feld Datenelement wird nun eingabebereit. Tragen Sie dort
einfach das neue Datenelement ein. Sie können hier ein Datenelement eintragen, das auf die
gleiche Domäne wie das Datenelement des zugeordneten Tabellenfeldes zeigt. Nehmen Sie
die Markierung des Kennzeichens Mod zurück, wenn Sie wieder das Datenelement des
zugeordneten Tabellenfeldes verwenden wollen.
· Prüffunktionen: Über Zusätze ® Laufzeitobjekt ® Prüfen können Sie ermitteln, ob die
Definition des Views in der ABAP Dictionary Pflege mit den Angaben im Laufzeitobjekt des
Views identisch sind. Mit Zusätze ® Laufzeitobjekt ® Anzeigen können Sie sich das
Laufzeitobjekt des Views anzeigen lassen.
Siehe auch:
Help-Views [Seite 118]

128 April 2001


SAP AG BC - ABAP Dictionary
Projektions-View anlegen

Projektions-View anlegen
Vorgehensweise
1. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Sie können später beispielsweise mit dem Infosystem über diesen Kurztext nach dem
View suchen.
2. Geben Sie im Feld Basistabelle einen Tabellennamen ein.
Ein Projektions-View enthält immer nur genau eine Tabelle.
3. Wählen Sie die Felder der Basistabelle aus, die Sie in den View übernehmen wollen.
Wählen Sie hierzu Tabellenfelder. Die Felder der Tabelle werden nun in einem
Dialogfenster eingeblendet. Sie können daraus Felder übernehmen, indem Sie diese in
der ersten Spalte markieren und Übernehmen wählen.
4. Sichern Sie ihre Eingaben.
Sie werden dabei aufgefordert, dem View eine Entwicklungsklasse zuzuordnen. Sie
können diese Entwicklungsklasse später über Springen ® Objektkatalogeintrag
verändern.
5. Wählen Sie .

Ergebnis
Der Help-View wird aktiviert. Bei der Aktivierung wird ein Protokoll geschrieben, das Sie sich
über Hilfsmittel ® Aktivierungsprotokoll anzeigen lassen können. Falls bei der Aktivierung des
Views Fehler oder Warnungen auftraten, wird das Aktivierungsprotokoll direkt angezeigt.

Weitere Möglichkeiten
· Dokumentation erfassen: Sie können über Springen ® Dokumentation Informationen zur
Verwendung des Views erfassen. Diese Dokumentation wird z.B. beim Drucken des Views
ausgegeben.
· Datenelement eines Viewfeldes ändern: Markieren Sie die Spalte Mod (Modifikation) bei
dem betroffenen Viewfeld. Das Feld Datenelement wird nun eingabebereit. Sie können hier
ein Datenelement eintragen, das auf die gleiche Domäne wie das Datenelement des
zugeordneten Tabellenfeldes zeigt. Nehmen Sie die Markierung des Kennzeichens Mod
zurück, wenn Sie wieder das Datenelement des zugeordneten Tabellenfeldes verwenden
wollen.
· Pflegestatus ändern: Der Pflegestatus [Seite 108] bestimmt, wie Sie aus ABAP
Programmen heraus auf die Viewdaten zugreifen können (nur lesend, lesend und ändernd).
Wählen Sie Zusätze ® Pflegestatus. Es erscheint ein Dialogfenster, in welchem Sie den
Pflegestatus des Views auswählen können.
· Prüffunktionen: Über Hilfsmittel ® Laufzeitobjekt ® Prüfen können Sie ermitteln, ob die
Definition des Views in der ABAP Dictionary Pflege mit den Angaben im Laufzeitobjekt des
Views identisch sind. Mit Hilfsmittel ® Laufzeitobjekt ® Anzeigen können Sie sich das
Laufzeitobjekt des Views anzeigen lassen.
Siehe auch:

April 2001 129


BC - ABAP Dictionary SAP AG
Projektions-View anlegen

Projektions-Views [Seite 117]

130 April 2001


SAP AG BC - ABAP Dictionary
Pflege-View anlegen

Pflege-View anlegen
Vorgehensweise
1. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Sie können später beispielsweise mit dem Infosystem über diesen Kurztext nach dem
View suchen.
2. Geben Sie auf der Registerkarte Tabellen/Joinbedingungen unter Tabellen die Primärtabelle
des Views an.
Es können nur solche Tabellen in den Pflege-View aufgenommen werden, die mit der
Primärtabelle (indirekt) über Fremdschlüssel verbunden sind.
3. Nehmen Sie falls notwendig weitere Tabellen in den View auf. Sie können in einen Pflege-
View nur Tabellen aufnehmen, die über Fremdschlüssel miteinander verbunden sind.
Stellen Sie den Cursor auf die Primärtabelle und wählen Sie Beziehungen. Es werden
alle bestehenden Fremdschlüsselbeziehungen der Primärtabelle angezeigt. Kreuzen Sie
die gewünschten Fremdschlüssel an und wählen Sie Übernehmen. Die an einem
solchen Fremdschlüssel beteiligte Sekundärtabelle wird in den View übernommen. Die
aus den Fremdschlüsseln abgeleiteten Join-Bedingungen (Fremdschlüsselbeziehung
und Join-Bedingung [Seite 107]) werden angezeigt.
Sie können auch Tabellen aufnehmen, die mit einer der bisher aufgenommenen
Sekundärtabellen über einen Fremdschlüssel verbunden sind. Stellen Sie hierzu den
Cursor auf die Sekundärtabelle und betätigen Sie Beziehungen. Gehen Sie dann wie
oben beschrieben vor.
Bei Pflege- und Help-Views bestehen gewisse Restriktionen bzgl. der Fremdschlüssel,
über die Tabellen in den View übernommen werden können (siehe Einschränkungen für
Pflege- und Help-Views [Seite 122]). Die Fremdschlüssel, für die diese Bedingungen
verletzt sind, werden am Ende der Liste unter der Überschrift Beziehungen mit
ungeeigneter Kardinalität angezeigt.
4. Wählen Sie auf der Registerkarte Viewfelder die Felder aus, die Sie in den View übernehmen
wollen.
Betätigen Sie die Drucktaste Tabellenfelder. In einem Dialogfenster werden alle im View
enthaltenen Tabellen angezeigt. Wählen Sie eine Tabelle aus. Die Felder der Tabelle
werden nun in einem Dialogfenster eingeblendet. Sie können daraus Felder
übernehmen, indem Sie diese in der ersten Spalte markieren und Übernehmen
wählen.
Alle Schlüsselfelder der Primärtabelle müssen in einen Pflege-View aufgenommen
werden. Zusätzlich müssen alle Schlüsselfelder von Sekundärtabellen, die nicht am
Fremdschlüssel beteiligt sind (d.h. nicht über eine Join-Bedingung mit einem bereits in
den View aufgenommenen Schlüsselfeld verbunden sind), in den View aufgenommen
werden.
Damit wird sichergestellt, daß die über einen Pflege-View eingefügten Sätze korrekt in
die im View enthaltenen Tabellen geschrieben werden können.
5. Formulieren Sie (optional) auf der Registerkarte Selektionsbedingungen Einschränkungen an
die Datensätze, die über den View angezeigt werden können (siehe Selektionsbedingung
des Views pflegen [Seite 135]).

April 2001 131


BC - ABAP Dictionary SAP AG
Pflege-View anlegen

Die Selektionsbedingungen legen fest, welche Datensätze über den View selektiert
werden können.
6. Legen Sie auf der Registerkarte Pflegestatus den Pflegestatus [Seite 108] des Views fest.
Der Pflegestatus bestimmt, wie Sie über die Standardviewpflege (SM30) auf die
Viewdaten zugreifen können.
7. Wählen Sie .
Bei der Aktivierung wird ein Protokoll geschrieben, das Sie sich über Hilfsmittel ®
Aktivierungsprotokoll anzeigen lassen können. Falls bei der Aktivierung des Views
Fehler oder Warnungen auftraten, wird das Aktivierungsprotokoll automatisch angezeigt.
8. Verzweigen Sie über Umfeld ® Tab.pflegegenerator in die Transaktion SE54.
Dort können Sie aus der Viewdefinition Pflegebausteine und Pflegeoberflächen
generieren, die die Verteilung der über den View eingegebenen Daten auf die
Basistabellen des Views übernehmen. Genauere Informationen finden Sie in Erstellung
eines Pflegedialoges [Extern].

Weitere Möglichkeiten
· Dokumentation erfassen: Sie können über Springen ® Dokumentation Informationen zur
Verwendung des Views erfassen. Diese Dokumentation wird z.B. beim Drucken des Views
ausgegeben.
· Datenelement eines Viewfeldes ändern: Kreuzen Sie hierzu die Spalte Mod (Modifikation)
für das Viewfeld an. Das Feld Datenelement wird nun eingabebereit. Sie können hier ein
Datenelement eintragen, das auf die gleiche Domäne wie das Datenelement des
zugeordneten Tabellenfeldes zeigt. Nehmen Sie die Markierung des Kennzeichens Mod
zurück, wenn Sie wieder das Datenelement des zugeordneten Tabellenfeldes verwenden
wollen.
· Auslieferungsklasse des Views angeben: Wählen Sie auf der Registerkarte Pflegestatus
die Auslieferungsklasse [Seite 134] des Pflege-Views.
· Pflegemerkmal eines Viewfeldes angeben: Sie können auf der Registerkarte Viewfelder in
der Spalte F das Pflegemerkmal [Seite 133] des Viewfeldes angeben.
· Prüffunktionen: Über Zusätze ® Laufzeitobjekt ® Prüfen können Sie ermitteln, ob die
Definition des Views in der ABAP Dictionary Pflege mit den Angaben im Laufzeitobjekt des
Views identisch sind. Mit Zusätze ® Laufzeitobjekt ® Anzeigen können Sie sich das
Laufzeitobjekt des Views anzeigen lassen.
Siehe auch:
Pflege-Views [Seite 120]
BC - Generieren Tabellenpflegedialog [Extern]

132 April 2001


SAP AG BC - ABAP Dictionary
Pflegemerkmal eines Viewfeldes

Pflegemerkmal eines Viewfeldes


Für ein Feld eines Pflege-Views kann über das Pflegemerkmal gesteuert werden, wie auf das
Feld zugegriffen werden kann. Es sind folgende Pflegemerkmale möglich:
· R : Für ein so gekennzeichnetes Feld sind nur rein lesende Zugriffe erlaubt. Eine Pflege mit
der Transaktion SM30 ist für solche Felder nicht möglich.
· S : Ein so gekennzeichnetes Feld dient der Bildung von Teilmengen (Subsets) bei der Pflege
von View-Daten. Dabei wird nur eine Teilmenge von Daten angezeigt, die durch die Eingabe
eines entsprechenden Wertes in dieses Feld festgelegt ist.
· H : Ein so gekennzeichnetes Feld wird im Pflegedialog vor dem Benutzer verborgen (Hide).
Das Feld erscheint also nicht auf dem Pflegebild. Für den korrekten Inhalt solcher Felder
muß individuell gesorgt werden. Standardmäßig bleiben solche Felder sonst leer.
· : Es bestehen keine Einschränkungen bzgl. der Feldpflege.

April 2001 133


BC - ABAP Dictionary SAP AG
Auslieferungsklasse eines Pflege-Views

Auslieferungsklasse eines Pflege-Views


Die Auslieferungsklasse eines Pflege-Views wird in der Erweiterten Tabellenpflege (SM30)
ausgewertet. Falls für den Pflege-View eine Pflegeoberfläche generiert wird, werden bei der
Eingabe von Viewdaten über diese Oberfläche folgende Informationen ausgewertet:
· Für Pflege-Views der Auslieferungsklassen E bzw. G wird geprüft, ob die eingegebenen
Daten den in der Tabelle TRESC für den View definierten Namensräumen genügen.
· Es wird geprüft, ob der in der generierten Tabellenpflege eingebaute Transportanschluß
sinnvoll ist. Für Pflege-Views der Auslieferungsklassen L und W erfolgt z.B. kein Transport.
Wie die über den View in eine Basistabelle des Views eingegebenen Daten beim Upgrade und
beim Transport zwischen Kundensystemen behandelt werden, ist ausschließlich durch die
Auslieferungsklasse der entsprechenden Basistabelle [Seite 82] des Views bestimmt.

134 April 2001


SAP AG BC - ABAP Dictionary
Selektionsbedingung des Views pflegen

Selektionsbedingung des Views pflegen


Nachdem Sie die Basistabellen und Felder des Views festgelegt haben, können Sie über die
Angabe einer Selektionsbedingung (siehe Join, Projektion und Selektion [Seite 103]) die Menge
der über den View selektierbaren Datensätze einschränken.

Vorgehensweise
1. In jeder Zeile auf der Registerkarte Selektionsbedingungen können Sie eine Bedingung
folgender Form eingeben:
Tabelle, Feldname, Operator, Vergleichswert, AND/OR
2. Die Einträge haben folgende Bedeutung:
Tabelle: Name der Basistabelle, aus der das Feld entnommen wird.
Feldname: Name des Feldes, für das die Selektionsbedingung formuliert wird.
Operator: Operator für den Vergleich zwischen Feldinhalt und Vergleichswert. Die
zulässigen Operatoren können Sie über die F4-Hilfe ermitteln.
Vergleichswert: Konstanter Wert, mit dem der Feldwert verglichen wird. Als
Vergleichswerte sind je nach Datentyp des Feldes Text-Literale, die in Hochkommata
eingeschlossen werden müssen, und Zahlen erlaubt.
AND/OR: Verknüpfung zweier Zeilen der Selektionsbedingung.
Sie können die Felder, für die Sie Selektionsbedingungen angeben wollen, direkt
eintragen oder über die Drucktaste Tabellenfelder übernehmen.
3. Falls Sie mehrere Selektionsbedingungen eingeben, müssen Sie diese über AND bzw. OR
verknüpfen.
OR-Verknüpfungen sind dabei nur zwischen Zeilen zulässig, die sich auf das gleiche
Feld beziehen. Beachten Sie, daß deshalb hier OR stärker bindet als AND. Die
Bedingung <BED1> AND <BED2> OR <BED3> wird also als <BED1> AND (<BED2>
OR <BED3>) interpretiert.
4. Sichern Sie die Angaben der Selektionsbedingung(en).

Sie können Selektionsbedingungen für alle Felder der im View enthaltenen Tabellen
formulieren. Es spielt dabei keine Rolle, ob diese Felder in den View aufgenommen
wurden oder nicht.

April 2001 135


BC - ABAP Dictionary SAP AG
Append-View anlegen

Append-View anlegen
1. Geben Sie im Einstiegsbild des ABAP Dictionary den Namen des Datenbank-Views an, an
den Sie den Append-View [Seite 115] anhängen wollen. Wählen Sie Anzeigen.
Sie verzweigen damit im Anzeigemodus ins Pflegebild des Datenbank-Views.
2. Wählen Sie Springen ® Append-View.
Es erscheint ein Dialogfenster, in dem Sie den Namen des Append-Views eintragen
müssen. Dieser Name sollte im Kundennamensraum (bzw. im Namensraum des
Partners oder der Sonderentwicklung) liegen.
3. Wählen Sie .
Sie verzweigen ins Pflegebild des Append-Views. Dort sehen Sie im Bereich Tabellen die im
View enthaltenen Tabellen aufgelistet. Sie können nun über den Append-View weitere Felder
dieser Tabellen in den zugrundeliegenden Datenbank-View aufnehmen. Das Hinzufügen weiterer
Tabellen ist über einen Append-View nicht möglich.
Gehen Sie nun wie folgt vor:
1. Geben Sie im Feld Kurzbeschreibung einen erläuternden Text ein.
Dieser Text sollte die Ursache bzw. die Rolle der Erweiterung des zugrundeliegenden
Datenbank-Views beschreiben.
2. Stellen Sie den Cursor auf den Namen der Tabelle aus der Sie zusätzliche Felder in den
Append-View aufnehmen wollen. Wählen Sie dann Tabellenfelder.
Eine Liste aller Felder der Tabelle erscheint. Bereits im View enthaltene Felder sind
in der ersten Spalte markiert.
3. Markieren Sie die Felder, die Sie zusätzlich in den View aufnehmen wollen, in der ersten
Spalte. Wählen Sie dann Übernehmen.
Die gewählten Felder werden nun im Bereich Viewfelder eingeblendet.
4. Sichern und aktivieren Sie den Append-View.
Bei der Aktivierung des Append-View wird der zugrundeliegende View ebenfalls aktiviert
und die neuen Felder werden auf der Datenbank an den View angehängt.

136 April 2001


SAP AG BC - ABAP Dictionary
Views löschen

Views löschen
Voraussetzungen
Sie sollten einen View erst löschen, wenn er nicht mehr in Programmen verwendet wird.

Vorgehensweise
1. Markieren Sie im Einstiegsbild des ABAP Dictionary den Objekttyp View und geben Sie den
Namen des Views ein.
Prüfen Sie über , ob der View noch in Programmen verwendet wird.
2. Wählen Sie .
Es erscheint ein Dialogfenster, in dem Sie aufgefordert werden, den Löschauftrag
nochmals zu bestätigen.
3. Bestätigen Sie den Löschauftrag.

Ergebnis
Der View wird nun im ABAP Dictionary und auf der Datenbank gelöscht.

April 2001 137


BC - ABAP Dictionary SAP AG
Beispiel zu Views

Beispiel zu Views
Reisebüros müssen in vielen Situationen prüfen, welcher Kunde auf welchen Flügen gebucht ist
(siehe Flugmodell [Seite 312]). Die entsprechenden Daten sind auf mehrere Tabellen verteilt:
· SCUSTOM: Kundendaten, wie z.B. Kundennummer, Name, Anschrift, usw.
· SBOOK: Buchungsdaten, wie z.B. Fluggesellschaft, Flugnummer, Passagier
(Kundennummer), usw.
· SPFLI: Flugdaten, wie z.B. Abflugstadt, Ankunftsstadt, usw.
Um eine Gesamtsicht auf die bestehenden Buchungen zu ermöglichen, muß ein View auf die
Tabellen SCUSTOM, SBOOK und SPFLI angelegt werden.
Zu einer Kundennummer (ID) aus der Tabelle SCUSTOM können alle Buchungen ermittelt
werden, die unter dieser Kundennummer (CUSTOMID) in der Tabelle SBOOK vorhanden sind.
Zu einer gefundenen Buchung können dann über die Kennung der Fluggesellschaft (CARRID)
und die Flugnummer (CONNID) die Fluginformationen aus der Tabelle SPFLI gelesen werden.
Damit ergeben sich folgende Joinbedingungen für den View:
SBOOK-MANDT = SCUSTOM-MANDT
SBOOK-CUSTOMID = SCUSTOM-ID
SPFLI-MANDT = SBOOK-MANDT
SPFLI-CARRID = SBOOK-CARRID
SPFLI-CONNID = SBOOK-CONNID

MANDT ID NAME CITY ... SCUSTOM

001 122356 Smith New York ...

MANDT CARRID CONNID FLDATE BOOKID CUSTOMID ... SBOOK


001 AA 48 ... 3689 122356 ...

001 LH 324 ... 3690 122356 ...

MANDT CARRID CONNID ... CITYFROM ... CITYTO ... SPFLI


001 AA 48 ... New York ... Berlin ...

001 LH 324 ... Berlin ... Tokyo ...

138 April 2001


SAP AG BC - ABAP Dictionary
Beispiel zu Views

Die Joinbedingungen können auch aus den bestehenden Fremdschlüsselbeziehungen zwischen


den Tabellen des Views abgeleitet werden (siehe Fremdschlüsselbeziehung und Join-Bedingung
[Seite 107]).
Falls man nur die nicht stornierten Buchungen eines Kunden über den View anzeigen will, kann
man dies über die Selektionsbedingung SBOOK-CANCELLED <> ‘X’ erreichen.

Struktur des Views SCUS_BOOK für die


Flugbuchungen der Kunden

MANDT ID NAME CITY CARRID CONNID FLDATE BOOKID CITYFROM CITYTO

001 122356 Smith New York AA 48 3689 New York Berlin

001 122356 Smith New York LH 324 3690 Berlin Tokyo

SCUSTOM SBOOK SPFLI

Datenselektion über den View SCUS_BOOK


Ein View kann in einem ABAP Programm zur Selektion von Daten benutzt werden.
Das folgende Beispielprogramm ermittelt die für einen Kunden bestehenden Flugbuchungen. Die
Daten werden dabei über den View SCUS_BOOK selektiert.

April 2001 139


BC - ABAP Dictionary SAP AG
Beispiel zu Views

REPORT CUSBOOK1.

PARAMETERS: CUSTOMID LIKE SBOOK-CUSTOMID.


TABLES: SCUS_BOOK.

WRITE: / ‘Bestehende Buchungen für Kunde’,


CUSTOMID,‘:’.

SELECT * FROM SCUS_BOOK WHERE CUSTOMID = CUSTOMID.


WRITE: / ‘KUNDE’, SCUS_BOOK-NAME, ‘gebucht auf’,
SCUS_BOOK-CARRID,SCUS_BOOK-CONNID, ‘von’,
SCUS_BOOK-CITYFROM, ‘nach’,SCUS_BOOK-CITYTO,
‘am’,SCUS_BOOK-FLDATE.
ENDSELECT.

IF SY-SUBRC <> 0.
WRITE: / ‘Keine Buchungen vorhanden’.
ENDIF.

140 April 2001


SAP AG BC - ABAP Dictionary
Typen

Typen
Benutzerdefinierte Datentypen können programmübergreifend im ABAP Dictionary abgelegt
werden. Diese benutzerdefinierten Typen bieten die gleiche Funktionalität, wie die in ABAP
Programmen mit TYPES definierbaren lokalen Typen (siehe Datentypen und Datenobjekte
[Extern]).
Die im ABAP Dictionary global definierten Typen sind in ABAP Programmen mit TYPE
ansprechbar. Auf die im ABAP Dictionary definierten Typen kann auch bei der Typisierung der
Schnittstelle eines Funktionsbausteins Bezug genommen werden.

Strukturierter Typ PERSON im ABAP Dictionary

NAME ADRESSE
VORNAME NACHNAME STRASSE ORT

STRNAME HAUSNR PLZ ORTSNAME

Übernimmt
Typdefinition aus dem
ABAP Dictionary

ABAP Report
...
TYPES: BEGIN OF PERSONEN,
PERSON TYPE PERSON,
TELNR(15) TYPE C,
... END OF PERSONEN.

Die zentrale Definition mehrfach genutzter Typen im ABAP Dictionary ermöglicht deren zentrale
Änderung. Durch das aktive ABAP Dictionary werden solche Änderungen dann an allen
betroffenen Stellen nachgezogen. ABAP Programme passen sich beispielsweise beim
Neugenerieren an die veränderten Typdefinitionen an. Wird ein Typ geändert, so werden bei der
Aktivierung alle Objekte (z.B. Typen oder Tabellen) ermittelt, die diesen verwenden. Die
gefundenen Objekte werden dann automatisch an die Änderung angepaßt.
Alle Typen haben ein Laufzeitobjekt [Seite 245]. Dieses Laufzeitobjekt wird bei der erstmaligen
Aktivierung des Typs erzeugt und danach bei jeder erneuten Aktivierung an die aktuelle
Typdefinition angepaßt.
Bei der Typdefinition im ABAP Dictionary ist es möglich semantische Informationen zu einem Typ
zu erfassen. Zum Beispiel Texte, die bei der F1-Hilfe angezeigt werden, Texte für die
Verwendung auf Dynpros, Suchhilfen oder auch technische Dokumentation.
Es gibt drei unterschiedliche Arten von Typen:
· Datenelemente [Seite 143] (elementare Typen und Referenztypen).

April 2001 141


BC - ABAP Dictionary SAP AG
Typen

· Strukturen [Seite 149] (strukturierte Typen): Eine Struktur besteht aus Komponenten, die
ebenfalls typisiert sind, d.h. auf einen Typ verweisen.
· Tabellentypen [Seite 154]: Ein Tabellentyp beschreibt den Aufbau und die funktionalen
Eigenschaften einer internen Tabelle. Ein Spezialfall sind die Ranges-Tabellentypen [Seite
162].
Alle Typen liegen in einem gemeinsamen Namensraum. Damit kann beispielsweise für ein
Datenelement keine Struktur bzw. kein Tabellentyp gleichen Namens angelegt werden.
Bei der Verwendung in Programmen verschatten die lokal im Programm definierten Typen die
gleichnamigen globalen Typen aus dem ABAP Dictionary.

142 April 2001


SAP AG BC - ABAP Dictionary
Datenelemente

Datenelemente
Ein Datenelement beschreibt entweder einen elementaren Typ oder einen Referenztyp.
Ein elementarer Typ ist durch den eingebauten Datentyp, die Länge und gegebenenfalls die
Anzahl der Dezimalstellen definiert. Diese Typeigenschaften können entweder direkt beim
Datenelement angegeben oder aus einer Domäne [Seite 166] übernommen werden.
Ein Referenztyp dient zur Typisierung von Referenzvariablen, die Zeiger auf Objekte oder
Interfaces enthalten. Ein Referenztyp ist durch Angabe einer vorhandenen Klasse oder eines
vorhandenen Interfaces definiert. Es ist auch möglich eine generische Referenz auf Objekte oder
Datenobjekte anzugeben.
Ein Datenelement kann verwendet werden, um Tabellenfelder, Strukturkomponenten oder den
Zeilentyp eines Tabellentyps zu typisieren. Ein Datenelement kann auch in ABAP Programmen
mit TYPE referiert werden. Damit können in einem ABAP Programm Variablen definiert werden,
die die Eigenschaften eines Datenelements übernehmen.
Einem Datenelement können auch Informationen zur Bedeutung eines Tabellenfeldes bzw. einer
Strukturkomponente und Informationen zur Aufbereitung des zugehörigen Feldes auf Dynpros
zugeordnet werden. Diese Informationen stehen dann automatisch für alle Dynprofelder zur
Verfügung, die auf das Datenelement zeigen.
Diese Informationen umfassen die Darstellung des Feldes auf Eingabemasken durch
Schlüsselworttexte, Spaltenüberschriften bei Listausgaben des Tabelleninhalts (siehe
Feldbezeichner [Seite 148]) und die Aufbereitung der Ausgabe durch Parameter-IDs.
Dies gilt auch für die Online-Felddokumentation. Der bei der Feldhilfe (F1-Hilfe) erscheinende
Text (siehe Dokumentation und Doku-Status [Seite 147]) auf einem Feld einer Eingabemaske
stammt aus dem entsprechenden Datenelement.

Das Feld CONNID (Flugklasse) der Tabelle SBOOK zeigt auf das Datenelement
S_CONN_ID. Dieses Datenelement übernimmt seine technischen Eigenschaften
(Datentyp NUMC, Feldlänge 4) aus der Domäne S_CONN_ID. Das Datenelement
S_CONN_ID beschreibt die technischen Eigenschaften und die Bedeutung (über
einen zugeordneten Langtext und erklärende Kurztexte) des Feldes CONNID (und
aller anderen Felder, die auf dieses Datenelement verweisen).
In einem ABAP Programm kann mit der Anweisung DATA CONNID TYPE
S_CONN_ID eine Variable vom Typ des Datenelements S_CONN_ID definiert
werden.

April 2001 143


BC - ABAP Dictionary SAP AG
Datenelemente

Tabelle SBOOK Tabelle SFLIGHT Tabelle SPFLI


CONNID CONNID CONNID

Übernehmen
Feldbedeutung aus
Datenelement

Datenelement
S_CONN_ID

Übernimmt Datentyp, Länge


und evtl. Anzahl der
Dezimalstellen aus Domäne

Domäne
S_CONN_ID

Siehe auch:
Datenelement anlegen [Seite 145]

144 April 2001


SAP AG BC - ABAP Dictionary
Datenelement anlegen

Datenelement anlegen
Vorgehensweise
1. Markieren Sie im Einstiegsbild des ABAP Dictionary den Objekttyp Datentyp, geben Sie den
Namen des Datenelements ein und wählen Sie Anlegen.
Es erscheint ein Dialogfenster.
2. Markieren Sie dort Datenelement und wählen Sie .
Sie verzweigen in das Pflegebild für Datenelemente.
3. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Der Kurztext erscheint als Überschrift in der F1-Hilfe aller Bildschirmfelder, die auf dieses
Datenelement verweisen.
4. Definieren Sie auf der Registerkarte Definition den Datentyp [Seite 248], die Zahl der Stellen
und gegebenenfalls die Anzahl der Dezimalstellen des Datenelements. Sie können diese
Eigenschaften durch Angabe einer Domäne oder durch direkte Typeingabe vornehmen.
Falls das Datenelement die Typeigenschaften einer Domäne übernehmen soll, genügt
es Domäne zu markieren und den Namen der Domäne im zugehörigen Feld
einzutragen. Sie können hier auch eine neue Domäne angeben und durch Doppelkick in
die Domänenpflege navigieren, um diese anzulegen (siehe Domäne anlegen [Seite
173]).
Falls Sie die Typeigenschaften direkt eingeben wollen, markieren Sie Direkte
Typeingabe. Damit werden die Felder Datentyp, Zahl der Stellen und Dezimalstellen
eingabebereit.
Soll das Datenelement eine Referenz auf eine Klasse oder ein Interface realisieren,
müssen Sie Referenztyp markieren. Tragen Sie dann den Namen der Klasse oder des
Interfaces im Feld Referenz auf ein. Sie können auch OBJECT oder DATA eintragen,
falls das Datenelement eine generische Referenz auf Objekte oder Datenobjekte
realisieren soll.
5. Pflegen Sie (optional) auf der Registerkarte Feldbezeichner [Seite 148] Textinformationen
(kurzer, mittlerer, langer Feldbezeichner und die Überschrift) zum Datenelement.
Diese Textinformationen können auf Eingabemasken zur Darstellung von Feldern, die
auf dieses Datenelement verweisen, verwendet werden.
6. Sichern Sie das Datenelement.
Sie werden dabei aufgefordert, dem Datenelement eine Entwicklungsklasse zuzuordnen.
7. Wählen Sie .

Ergebnis
Das Datenelement wird aktiviert. Informationen über den Ablauf der Aktivierung finden Sie im
Aktivierungsprotokoll, das Sie sich über Hilfsmittel ® Aktivierungsprotokoll anzeigen lassen
können. Falls bei der Aktivierung des Datenelements Fehler auftraten, wird das
Aktivierungsprotokoll automatisch angezeigt.

April 2001 145


BC - ABAP Dictionary SAP AG
Datenelement anlegen

Weitere Möglichkeiten
· Dokumentation erfassen: Erfassen Sie über Dokumentation einen Text, der die inhaltliche
Bedeutung des Datenelements beschreibt. Dieser Text wird bei der F1-Hilfe auf allen
Dynprofeldern angezeigt, die auf dieses Datenelement verweisen. Sie sollten deshalb nur
dann auf diesen Schritt verzichten, falls das Datenelement nicht auf einem Dynpro erscheint.
In diesem Fall sollten Sie den Doku-Status [Seite 147] entsprechend setzen.
· Suchhilfe zuordnen: Sie können dem Datenelement eine Suchhilfe [Seite 177] zuordnen.
Diese Suchhilfe wird dann beim Betätigen der Eingabehilfe (F4-Hilfe) auf allen Dynprofeldern
angeboten, die auf dieses Datenelement zeigen (siehe Anbindung einer Suchhilfe an ein
Datenelement [Seite 188]). Für die Zuordnung der Suchhilfe müssen Sie in der
Datenelementpflege deren Namen und im Feld Parameter noch einen Exportparameter der
Suchhilfe angeben.
· Parameter-Id zuordnen: Über eine Parameter-Id kann ein Feld mit Vorschlagswerten aus
dem SAP-Memory gefüllt werden. Ein Dynprofeld wird nur dann automatisch mit dem unter
der Parameter-Id des Datenelements abgespeicherten Wert gefüllt, wenn dies im Screen-
Painter explizit erlaubt wurde.

Hat ein Benutzer z.B. nur die Berechtigung für den Buchungskreis 001, so kann
dieser Buchungskreis zu Beginn einer Transaktion unter der entsprechenden
Parameter-Id im Memory gespeichert werden. In allen nachfolgenden
Bildschirmmasken werden Felder, die auf das Datenelement Buchungskreis
verweisen, dann automatisch mit dem Wert 001 gefüllt. Hierzu muß nur im
Datenelement für den Buchungskreis die entsprechende Parameter-Id eingetragen
werden.
· Default-Komponentenname zuordnen: Sie können beim Datenelement einen Vorschlag
für die Namen der Tabellenfelder bzw. Strukturkomponenten hinterlegen, die auf dieses
Datenelement verweisen. Verwenden Sie nach Möglichkeit einen englischsprachigen
Defaultnamen. Für Komponenten in BAPI-Strukturen (Strukturen mit festgelegter
Schnittstelle) sollte dann stets dieser Defaultname verwendet werden. Dies führt zu einer
einheitlicheren Vergabe von Feld- bzw. Komponentennamen.
· Datenelement als relevant für Änderungsbelege kennzeichnen: Die Daten eines
betriebswirtschaftlichen Objekts sind oft auf mehrere Tabellen verteilt. Damit Änderungen an
diesem betriebswirtschaftlichen Objekt verfolgt werden können, können diese Tabellen in
einem Änderungsbelegobjekt zusammengefaßt werden. Aus einem solchen
Änderungsbelegobjekt werden Funktionsbausteine generiert, die in die entsprechenden
Anwendungsprogramme integriert werden können und die Protokollierung der Änderungen
übernehmen. Ein geänderter Feldinhalt wird nur dann protokolliert, wenn beim Datenelement
des Feldes das Kennzeichen Änderungsbeleg markiert ist.

146 April 2001


SAP AG BC - ABAP Dictionary
Dokumentation und Doku-Status

Dokumentation und Doku-Status


Die zu einem Datenelement erfaßte Dokumentation erscheint bei der Betätigung der F1-Hilfe auf
jedem Dynprofeld, welches auf dieses Datenelement verweist. Ist keine Dokumentation zum
Datenelement vorhanden, so erscheint bei der F1-Hilfe nur der Kurztext des Datenelements.
Datenelemente, die auf Eingabemasken verwendet werden, sollten daher in der Regel
dokumentiert werden.

Pflege einer Flugbuchung


...

CONNID

CLASS
Aufruf der F1-Hilfe
...

Tabelle SBOOK
CONNID
Kurztext
Code der Flugverbindung
Definition Anzeige der
Vierstelliger Code, der
eine Flugverbindung Dokumentation des
zwischen zwei Städten Datenelements
definiert.

Datenelement S_CONN_ID
Dokumentation zum
Datenelement

Der Doku-Status bestimmt, inwieweit für ein Datenelement schon Dokumentation erfaßt wurde
bzw. ob Gründe vorliegen, die dies unnötig erscheinen lassen. Sie können sich den Doku-Status
eines Datenelements im Pflegebild des Datenelements über Springen ® Dokumentation ®
Status anzeigen lassen.
Folgende Statusangaben sind möglich:
· Objekt wird dokumentiert: Standardeinstellung. Dokumentation ist entweder schon
vorhanden oder soll noch erstellt werden.
· Objekt wird nicht auf Maske verwendet: Das Objekt wird nicht auf einem Dynpro verwendet.
Dokumentation ist nicht vorhanden und soll auch nicht erstellt werden.
· Objekt wird durch Kurztext dokumentiert: Der Kurztext erklärt das Objekt schon ausreichend.
Dokumentation ist nicht vorhanden und soll auch nicht erstellt werden.
· Dokumentation wird vorübergehend zurückgestellt: Diese Angabe ist zum Beispiel sinnvoll,
wenn die Verwendung des Datenelements noch nicht vollständig klar ist. Dokumentation ist
(noch) nicht vorhanden.

April 2001 147


BC - ABAP Dictionary SAP AG
Feldbezeichner

Feldbezeichner
Einem Datenelement können über die Feldbezeichner Textinformationen zugeordnet werden.
Die Feldbezeichner werden zur Darstellung eines Bildschirmfeldes verwendet. Bei der Definition
eines Dynpros im Screen Painter können Strukturkomponenten und Tabellenfelder aus dem
ABAP Dictionary auf die Eingabemaske übernommen werden (Funktion Holen aus Dictionary).
Ein Feld kann dabei zusätzlich mit einem Feldbezeichner versehen werden, der aus dem
Datenelement des Feldes stammt.
Die Texte der Feldbezeichner können mit den Übersetzungswerkzeugen zentral übersetzt
werden. Die Texte werden dann in der jeweiligen Anmeldesprache des Benutzers auf der
Eingabemaske angezeigt.

Kurzer, mittlerer und langer Feldbezeichner


Schlüsselwörter in verschiedenen Längen für die Bezeichnung von Bildschirmfeldern. Da je nach
Gestaltung einer Eingabemaske mehr oder weniger Platz für solche Texte zur Verfügung stehen
kann, können die Textinformationen in drei verschiedenen Längen angegeben werden.
Jedem Feldbezeichner muß eine maximale Länge zugeordnet werden. Diese ist dann
Obergrenze für die Längen aller Übersetzungen des eingegebenen Textes. Deshalb sollte die
maximale Länge des Feldbezeichners nach Möglichkeit etwas länger als der eingegebene Text
in der Originalsprache sein.

Überschrift
Dieser Text wird als Spaltenüberschrift bei der Ausgabe der Feldinhalte als Liste im Data
Browser verwendet. Er kann im Screen Painter ebenfalls einem Feld zugeordnet werden.
Auch der Überschrift muß eine maximale Länge zugeordnet werden. Diese ist dann Obergrenze
für die Längen aller Übersetzungen der Überschrift. Wählen Sie die maximale Länge der
Überschrift nach Möglichkeit etwas länger als den eingegebene Text in der Originalsprache.
Beachten Sie aber auch, daß die Überschrift oft zur Aufbereitung von Listausgaben über der
entsprechenden Spalte eingeblendet wird. Deshalb sollte die Länge der Überschrift nach
Möglichkeit die Länge des Datenelements nicht überschreiten.

148 April 2001


SAP AG BC - ABAP Dictionary
Strukturen

Strukturen
Eine Struktur (strukturierter Typ) setzt sich aus Komponenten (Feldern) zusammen. Die
Komponenten sind typisiert. Eine Komponente kann dabei auf einen elementaren Typ (über ein
Datenelement oder durch direkte Angabe von Datentyp und Länge in der Strukturdefinition), eine
andere Struktur oder einen Tabellentyp verweisen. Eine Struktur kann also beliebig geschachtelt
sein.
Strukturen werden zur Definition der Daten an der Schnittstelle von Modulpools und Dynpros
sowie für die Typisierung der Parameter von Funktionsbausteinen genutzt.

Die Daten zur Verwaltung der Adressen von Personen können durch eine
geschachtelte Struktur PERSON abgebildet werden. Die Struktur besteht aus den
Komponenten (Strukturen) NAME und ADRESSE. Die Struktur NAME besteht aus
den Komponenten (Datenelemente) VORNAME und NACHNAME. Die Struktur
ADRESSE besteht aus den Komponenten (Strukturen) STRASSE und ORT. Die
Struktur STRASSE besteht aus den Komponenten (Datenelementen)
STRASSENNAME und HAUSNUMMER. Die Struktur ORT besteht aus den
Komponenten (Datenelementen) POSTLEITZAHL und ORTSNAME.

NAME
PERSON
VORNAME
NAME
NACHNAME
ADRESSE

STRASSE
ADRESSE
STRASSENNAME
STRASSE
HAUSNUMMER
ORT

ORT
POSTLEITZAHL

ORTSNAME

Die zentrale Definition mehrfach genutzter Strukturen ermöglicht deren zentrale Änderung, die
durch das aktive ABAP Dictionary dann an allen betroffenen Stellen nachgezogen wird. ABAP
Programme oder Bildschirmmasken, die eine Struktur verwenden, werden bei einer Änderung
der Struktur automatisch angepaßt (siehe Laufzeitobjekte [Seite 245]). Damit wird auch bei
komplexen Programmen ein Höchstmaß an Konsistenz der Datendefinition erreicht.
Man kann zwischen flachen, geschachtelten und tiefen Strukturen unterscheiden. Eine flache
Struktur referiert ausschließlich elementare Typen. Eine geschachtelte Struktur referiert

April 2001 149


BC - ABAP Dictionary SAP AG
Strukturen

mindestens einen weitere Struktur, aber keinen Tabellentyp. Eine tiefe Struktur referiert
mindestens einen Tabellentypen.

Flache Struktur Feld A Feld B

Geschachtelte Struktur Feld A Feld B


Typreferenz auf
andere Struktur
Feld C Feld D

Tiefe Struktur Feld A Feld B


Typreferenz auf
Tabellentyp
Feld C Feld D

In einer Datenbanktabelle können Sie ausschließlich flache Strukturen als


Unterstruktur inkludieren [Seite 89].

Siehe auch:
Struktur anlegen [Seite 151]

150 April 2001


SAP AG BC - ABAP Dictionary
Struktur anlegen

Struktur anlegen
Vorgehensweise
1. Geben Sie im Einstiegsbild des ABAP Dictionary den Namen der Struktur im Feld Datentyp
ein und wählen sie Anlegen.
Es erscheint ein Dialogfenster, in dem Sie die Art des Typs wählen müssen.
2. Markieren Sie Struktur und wählen Sie .
Sie verzweigen damit ins Pflegebild für Strukturen.
3. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Sie können später beispielsweise über das Infosystem über diesen Kurztext nach der
Struktur suchen.
Führen Sie die folgenden Schritte für alle Komponenten durch, die Sie in die Struktur
aufnehmen wollen.
Sie können statt einzelner Komponenten auch Strukturen, Tabellen oder Views
inkludieren. Wie Sie hierzu vorgehen müssen, ist in Include einfügen [Seite 89]
beschrieben.
4. Tragen Sie in der Spalte Komponente einen Namen ein.
Falls Sie die Struktur später als Include [Seite 17] in eine transparente Tabelle
aufnehmen wollen, dürfen die Komponentennamen höchstens 16-stellig sein.
5. Tragen Sie im Feld Komponententyp den Namen des Typs ein, dessen Eigenschaften die
Komponente übernehmen soll. Es kann hier ein beliebiger Typ (Datenelement, Struktur oder
Tabellentyp) eingegeben werden.
Sie können auch Komponenten durch direkte Angabe von Datentyp und Länge
aufnehmen. Wählen Sie hierzu Eingebauter Typ. Die Felder DTyp, Länge, DezStellen
und Kurzbeschreibung werden nun eingabebereit. Mit Komponententyp können Sie
wieder auf die Eingabe von Verweisen auf vorhandene Typen umschalten.
Sie können Komponenten mit direkter Angabe des Typs und Komponenten, die durch
Verweis auf einen vorhandenen Typ spezifiziert werden, beliebig miteinander
kombinieren.
6. Für Komponenten der Typen CURR (Währungsbeträge) und QUAN (Mengenangabe)
müssen Referenzfeld und Referenztabelle [Seite 16] angegeben werden.
Sie können diese Eingaben auf der Registerkarte Währungs-/Mengenfelder vornehmen.
7. Pflegen Sie nun die Fremdschlüssel der Struktur.
Sie können dabei wie beim Pflegen der Fremdschlüssel einer Tabelle vorgehen (siehe
Fremdschlüssel anlegen [Seite 77]).
8. Sichern Sie Ihre Eingaben, nachdem Sie alle Komponenten der Struktur bestimmt haben.
Sie werden dabei aufgefordert der Struktur eine Entwicklungsklasse zuzuordnen. Sie
können die Entwicklungsklasse später über Springen ® Objektkatalogeintrag ändern.
9. Wählen Sie .

April 2001 151


BC - ABAP Dictionary SAP AG
Struktur anlegen

Ergebnis
Die Struktur wird nun aktiviert. Dabei wird das Laufzeitobjekt der Struktur erzeugt. Bei der
Aktivierung wird ein Protokoll geschrieben, das Sie sich über Hilfsmittel ® Aktivierungsprotokoll
anzeigen lassen können. Falls bei der Aktivierung der Struktur Fehler auftraten, wird das
Aktivierungsprotokoll automatisch angezeigt.

Weitere Möglichkeiten
· Dokumentation erfassen: Sie können über Springen ® Dokumentation Informationen zur
Verwendung der Struktur erfassen. Diese Dokumentation wird beim Drucken der Struktur mit
ausgegeben.
· Suchhilfe zuordnen: Sie können der Struktur eine Suchhilfe zuordnen. Diese Suchhilfe wird
dann beim Betätigen der Eingabehilfe (F4-Hilfe) auf allen Bildschirmfeldern angeboten, die
auf dieses Strukturfeld zeigen (siehe Anbindung einer Suchhilfe an ein Tabellenfeld [Seite
192]). Gehen Sie hierzu wie folgt vor:
1. Wählen Sie Springen ® Suchhilfe.
2. Geben Sie im folgenden Dialogfenster den Suchhilfenamen ein und wählen Sie .
3. Das System erstellt automatisch einen Vorschlag für die Zuordnung der
Suchhilfeparameter zu Strukturfeldern. Hierbei wird versucht einem Suchhilfeparameter
ein Strukturfeld mit gleicher Domäne zuzuordnen. Falls kein solches Feld existiert, bleibt
die Zuordnung offen. Die so erstellte Zuordnung wird in einem Dialogfenster angezeigt.
4. Sie können den Vorschlag des Systems (außer für das Suchfeld, d.h. das Feld dem die
Suchhilfe zugeordnet wurde) verändern, indem Sie einem Suchhilfeparameter ein
Strukturfeld mit gleichem Datentyp und gleicher Feldlänge zuordnen.
5. Wählen Sie Übernehmen.
· Aktivierungsart festlegen: Die Aktivierungsart [Seite 84] legt fest, ob die Struktur direkt vom
ABAP Dictionary aus aktiviert werden kann oder ob das Laufzeitobjekt der Struktur vorher mit
einem C-Programm erzeugt werden muß. Die Angabe einer Aktivierungsart ist nur für
Strukturen der Laufzeitumgebung wichtig. Sie können die Aktivierungsart über Zusätze ®
Aktivierungsart angeben.

152 April 2001


SAP AG BC - ABAP Dictionary
Benannte Includes

Benannte Includes
Wird zur Definition einer Datenbanktabelle oder Struktur ein Include [Seite 17] verwendet, kann
der inkludierten Teilstruktur ein Name zugeordnet werden. Über diesen Namen kann die Gruppe
der Felder im Include in ABAP Programmen als Ganzes angesprochen werden.
In ABAP-Programmen können die Felder dann entweder direkt über <Tabellen-/Strukturname>-
<Feldname> oder analog über <Tabellen-/Strukturname>-<Gruppenname>-<Feldname>
angesprochen werden. Auf die Felder der Gruppe als Ganzes kann über <Tabellen-
/Strukturname>-<Gruppenname> zugegriffen werden.

Eine Struktur PERSON inkludiert eine Struktur ADDRESS mit dem Namen ADR.
ADDRESS hat ein Feld CITY. Sie können über PERSON-ADR alle Felder in der
Struktur ADDRESS ansprechen. Das inkludierte Feld CITY kann dann alternativ über
PERSON-CITY oder PERSON-ADR-CITY angesprochen werden.
Es ist möglich, eine Struktur mehrfach zu inkludieren (z.B. in Periodengruppen). Da hierbei der
direkte Zugriff über Feldnamen zulässig bleiben soll, müssen die inkludierten Feldnamen aus
Eindeutigkeitsgründen umbenannt werden.
Hierfür läßt sich jeder Gruppe ein Suffix zuordnen, um den die Namen der Gruppenfelder
erweitert werden. Die Felder können dann in ABAP-Programmen über <Tabellen-
/Strukturname>-<Feldname (mit Suffix)> oder <Tabellen-/Strukturname>-<Gruppenname>-
<Feldname (mit Suffix)> angesprochen werden.

Eine Struktur PERSON inkludiert eine Struktur ADDRESS zweifach. Eine Adresse ist
die Privatadresse mit Suffix H und Namen ADRH. Die andere Adresse ist die
Geschäftsadresse mit Suffix W und Namen ADRW. Auf das Feld CITY in der
Privatadresse kann dann über PERSON-CITYH oder PERSON-ADRH-CITY
zugegriffen werden.
Die Funktionalität der benannten Includes im ABAP Dictionary entspricht dem ABAP-Konstrukt
INCLUDE TYPE ... AS ... RENAMING ... .

April 2001 153


BC - ABAP Dictionary SAP AG
Tabellentypen

Tabellentypen
Ein Tabellentyp beschreibt den Aufbau und die funktionalen Eigenschaften einer internen Tabelle
im ABAP. Auf einen im ABAP Dictionary definierten Tabellentypen TTYP kann in ABAP
Programmen mit der Anweisung DATA <inttab> TYPE TTYP referiert werden. Dadurch wird im
Programm eine interne Tabelle <inttab> mit den für TTYP im ABAP Dictionary definierten
Eigenschaften angelegt.
Ein Tabellentyp ist bestimmt durch:
· seinen Zeilentyp, der Aufbau und Datentypeigenschaften einer Zeile der internen Tabelle
bestimmt
· die Verwaltung und die Zugriffsmöglichkeiten (Zugriffsart [Seite 159]) auf die Daten der
internen Tabelle
· den Schlüssel (Schlüsseldefinition [Seite 160] und Schlüsselart [Seite 158]) der internen
Tabelle
Der Zeilentyp wird durch direkte Eingabe von Datentyp, Länge und Zahl der Dezimalstellen oder
durch Referenz auf ein Datenelement [Seite 143], einen strukturierten Typ (Struktur [Seite 149],
Tabelle [Seite 13] oder View [Seite 101]) oder einen anderen Tabellentyp hergestellt.

Tabellentyp TABTYPE
Zeilentyp STRA
Feld 1 Feld 2 Feld 3 Feld 4
Zeilentyp wird durch
Referenz auf die Struktur
STRA festgelegt

Struktur STRA
Feld 1 Feld 2 Feld 3 Feld 4

Zugriffsart und Schlüssel


bestimmen, wie die Daten in
TABTYPE verwaltet werden und
wie auf die Daten zugegriffen wird

Der in der Abbildung dargestellte Tabellentyp TABTYPE kann mit der Anweisung
DATA <name> TYPE TABTYPE in ABAP Programmen zur Definition einer internen
Tabelle <name> verwendet werden.
Mit TYPES <name> TYPE TABTYPE kann im Programm ein lokaler Typ <name>
definiert werden, der die Eigenschaften des Typs TABTYPE übernimmt.

154 April 2001


SAP AG BC - ABAP Dictionary
Tabellentypen

Ein Spezialfall von Tabellentypen sind Ranges-Tabellentypen [Seite 162].

Siehe auch:
Tabellentyp anlegen [Seite 156]

April 2001 155


BC - ABAP Dictionary SAP AG
Tabellentyp anlegen

Tabellentyp anlegen
Vorgehensweise
1. Geben Sie im Einstiegsbild des ABAP Dictionary den Namen des Tabellentyps im Feld
Datentyp ein und wählen Sie Anlegen.
Es erscheint ein Dialogfenster, in dem Sie die Art des Typs bestimmen müssen.
2. Markieren Sie Tabellentyp und wählen Sie .
Sie verzweigen damit ins Pflegebild für Tabellentypen.
3. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Sie können später beispielsweise mit dem Infosystem über diesen Kurztext nach dem
Tabellentyp suchen.
Sie müssen nun den Aufbau einer Zeile des Tabellentyps (Zeilentyp), die Möglichkeiten
auf Daten in der dadurch definierten internen Tabelle zuzugreifen (Zugriffsart) und den
Schlüssel des Tabellentyps definieren.
4. Geben Sie auf der Registerkarte Zeilentyp und Zugriff den Zeilentyp des Tabellentyps an.
Hierzu können Sie auf einen schon vorhandenen Typ (Datenelement, Struktur, Tabelle,
View, Tabellentyp) verweisen oder den Zeilentyp direkt eingeben.
Falls Sie auf einen vorhandenen Typ verweisen wollen, müssen Sie das Kennzeichen
Zeilentyp markieren und den Namen des Typs im dahinterstehenden Feld eintragen.
Falls Sie direkt den Datentyp, die Feldlänge und gegebenenfalls die Anzahl der
Dezimalstellen eingeben möchten, müssen Sie das Kennzeichen Eingebauter Typ
markieren. Die Felder Datentyp, Zahl der Stellen und Dezimalstellen werden damit
eingabebereit.
5. Definieren Sie die Zugriffsart [Seite 159] des Tabellentyps.
Damit legen Sie fest, wie in ABAP Programmen auf die Daten in einer über den
Tabellentyp definierten internen Tabelle zugegriffen werden kann.
6. Definieren Sie auf der Registerkarte Schlüssel den Schlüssel des Tabellentyps.
Der Schlüssel eines Tabellentyps ist durch die Schlüsseldefinition [Seite 158] und die
Schlüsselart [Seite 160] festgelegt.
Falls Sie Schlüsselkomponenten markieren, können Sie den Schlüssel des Tabellentyps
im gleichnamigen Eingabebereich direkt angeben. Diese Option ist nur möglich, wenn
der Zeilentyp des Tabellentyps eine Struktur, eine Tabelle oder ein View ist.
Mit Komponenten auswählen können Sie sich alle Komponenten des Zeilentyps
anzeigen lassen. Markieren Sie die Komponenten, die Sie in den Schlüssel übernehmen
wollen und wählen Sie .
7. Sichern Sie den Tabellentyp.
Sie werden dabei aufgefordert dem Tabellentyp eine Entwicklungsklasse zuzuordnen.
Sie können diese Entwicklungsklasse bei Bedarf später mit Springen ®
Objektkatalogeintrag ändern.
8. Wählen Sie .

156 April 2001


SAP AG BC - ABAP Dictionary
Tabellentyp anlegen

Ergebnis
Der Tabellentyp wird nun aktiviert. Dabei wird das Laufzeitobjekt [Seite 245] des Typs erzeugt.
Bei der Aktivierung wird ein Protokoll geschrieben, das Sie sich über Hilfsmittel ®
Aktivierungsprotokoll anzeigen lassen können. Falls bei der Aktivierung Fehler auftraten, wird
das Aktivierungsprotokoll automatisch angezeigt.

Weitere Möglichkeiten
· Sie können über Springen ® Dokumentation einen erläuternden Text zum Tabellentyp
erfassen. Es handelt sich hier um eine rein technische Dokumentation, die im Online
Hilfesystem nicht angezeigt wird.
· Sie können sich das Laufzeitobjekt des Tabellentyps über Hilfsmittel ® Laufzeitobjekt ®
Anzeigen einblenden lassen. Mit Hilfsmittel ® Laufzeitobjekt ® Prüfen können Sie
überprüfen, ob das Laufzeitobjekt des Tabellentyps mit seiner Definition im Pflegebild des
ABAP Dictionary konsistent ist.

April 2001 157


BC - ABAP Dictionary SAP AG
Schlüsseldefinition eines Tabellentyps

Schlüsseldefinition eines Tabellentyps


Bei der Definition eines Tabellentyps muß angegeben werden, welcher Schlüssel für den
Tabellentyp verwendet werden soll.
Es gibt folgende Möglichkeiten:
· Standardschlüssel: Der Aufbau des Schlüssels hängt von der Art des Zeilentyps ab. Bei
einem strukturierten Zeilentyp besteht der Standardschlüssel aus allen zeichenartigen
Komponenten der Tabellenzeile. Bei einem elementaren Zeilentyp oder einem Referenztyp
als Zeilentyp besteht der Standardschlüssel aus der gesamten Tabellenzeile. Bei einem
Tabellentyp als Zeilentyp ist der Standardschlüssel leer. Man beachte, daß nur bei der
Zugriffsart Standardtabelle ein leerer Schlüssel erlaubt ist.
· Zeilentyp: Der Schlüssel besteht aus allen Feldern des Zeilentyps.
· Schlüsselkomponenten: Der Schlüssel wird explizit durch Auswahl von Komponenten
(Feldern) des Zeilentyps angegeben. Dies ist nur möglich, wenn als Zeilentyp eine Struktur,
Tabelle oder ein View gewählt wurde.
· Schlüssel ist nicht spezifiziert: Es wird keine Angabe bzgl. des Schlüssels gemacht.
Hierdurch wird ein generischer Tabellentyp [Seite 161] definiert.

158 April 2001


SAP AG BC - ABAP Dictionary
Zugriffsart

Zugriffsart
Die Zugriffsart bestimmt, wie auf die Daten in der durch den Tabellentyp definierten internen
Tabelle bei generischen Schlüsseloperationen (READ TABLE, INSERT TABLE, MODIFY
TABLE, COLLECT) zugegriffen werden kann. Insbesondere wird festgelegt, ob Schlüsselzugriffe
(siehe Schlüssel eines Tabellentyps [Seite 158]) auf die interne Tabelle erlaubt sind.
Mögliche Zugriffsarten sind:
· Standard-Tabelle:
Der Schlüsselzugriff auf eine Standardtabelle erfolgt mit sequentieller Suche. Die Zeit,
die für einen Zugriff benötigt wird, hängt damit linear von der Anzahl der Einträge in der
internen Tabelle ab.
In der Regel sollte über Index-Operationen auf eine Standard-Tabelle zugegriffen
werden.
· Sortierte Tabelle:
Die Tabelle wird intern stets nach ihrem Schlüssel sortiert gehalten. Der Schlüsselzugriff
auf eine sortierte Tabelle kann damit mit binärer Suche erfolgen. Bei nicht eindeutigem
Schlüssel wird auf den Eintrag mit dem niedrigsten Index zugegriffen. Die Zeit, die für
einen Zugriff benötigt wird, hängt logarithmisch von der Anzahl der Einträge der internen
Tabelle ab.
Auf Sortierte-Tabellen sind auch Index-Zugriffe erlaubt. In der Regel sollte auf eine
Sortierte-Tabelle aber über ihren Schlüssel zugegriffen werden.
· Hash-Tabelle:
Die Tabelle wird intern mit einem Hash-Verfahren verwaltet. Alle Einträge müssen einen
eindeutigen Schlüssel besitzen. Die Zeit, die für einen Schlüsselzugriff benötigt wird, ist
konstant, d.h. hängt nicht von der Anzahl der Einträge in der internen Tabelle ab.
Auf Hash-Tabellen kann nicht mit Index zugegriffen werden. Zugriffe müssen über
generische Schlüsseloperationen (SORT, LOOP, usw.) erfolgen.
· Index-Tabelle:
Die Tabelle kann eine Standard-Tabelle oder eine Sortierte Tabelle sein.
Auf einer solchen Index-Tabelle sind Indexzugriffe erlaubt. Index-Tabellen können zur
Typisierung von generischen Parametern einer FORM (Unterprogramm) oder eines
Funktionsbausteins verwendet werden.
· nicht spezifiziert:
Die Tabelle kann eine Standardtabelle, eine sortierte Tabelle oder eine Hashtabelle sein.
Die Menge der zulässigen Operationen auf einer derartigen Tabelle ergibt sich aus der
Schnittmenge der zulässigen Operationen für diese drei Zugriffsarten.
Auf Tabellen dieses Typs kann nicht mit Indexoperationen zugegriffen werden.

Wird für die Zugriffsart Index-Tabelle oder nicht spezifiziert gewählt, so entsteht ein
generischer Tabellentyp [Seite 161] der nicht zur Definition von Datenobjekten oder
Typen in Programmen verwendet werden kann.

April 2001 159


BC - ABAP Dictionary SAP AG
Schlüsselart

Schlüsselart
Die Schlüsselart legt fest, ob die durch den Tabellentyp bestimmte interne Tabelle nur Sätze mit
eindeutigem Schlüssel enthalten darf oder ob bzgl. des Schlüssels Duplikate erlaubt sind.
Es sind folgende Schlüsselarten zulässig:
· unique: Ein solcher Tabellentyp kann nur Sätze mit eindeutigem Schlüssel enthalten.
· nonunique: Eine Tabelle mit diesem Tabellentyp kann auch Sätze enthalten, die sich bzgl.
des Schlüssels des Tabellentyps nicht unterscheiden.
· nicht spezifiziert: Die Schlüsselart ist unique oder nonunique. Durch diese Angabe wird ein
generischer Tabellentyp [Seite 161] definiert.
Es sind nur bestimmte Kombinationen aus Zugriffsart [Seite 159] und Schlüsselart zulässig.
Diese sind in der folgenden Tabelle aufgelistet:

Zugriffsart Schlüsselart
nicht spezifiziert nicht spezifiziert
Index-Tabelle nicht spezifiziert
Standard-Tabelle non-unique
Sortierte-Tabelle unique, non-unique oder nicht spezifiziert
Hash-Tabelle unique

Hierbei ist eine Ausnahme zu beachten. Ist der Schlüssel einer Standard-Tabelle oder einer
Hash-Tabelle nicht spezifiziert, so muß auch die Schlüsselart nicht spezifiziert gewählt werden.

160 April 2001


SAP AG BC - ABAP Dictionary
Generische Tabellentypen

Generische Tabellentypen
Ein generischer Tabellentyp bestimmt nicht alle Eigenschaften einer internen Tabelle im ABAP,
sondern läßt einige dieser Eigenschaften undefiniert.
Ein Tabellentyp ist in folgenden Fällen generisch:
· für die Zugriffsart ist Indextabelle oder nicht spezifiziert gewält,
· für die Schlüsseldefinition ist nicht spezifiziert gewält,
· für die Schlüsselart ist nicht spezifiziert gewält.
Generische Tabellentypen werden zur Typisierung von generischen Tabellenparametern bei
Funktionsbausteinen und Forms verwendet.

Wird ein generische Tabellentyp mit Zugriffsart Indextabelle als Parameter eines
Funktionsbausteins verwendet, so kann beim Aufruf sowohl eine sortierte Tabelle als
auch eine Standardtabelle übergeben werden.
Generische Tabellentypen bieten damit Freiheitsgrade bzgl. der bei entsprechenden Aufrufen
übergebenen Argumente.
Da generische Tabellentypen nicht alle notwendigen Eigenschaften einer internen Tabelle
definieren, können sie nicht zur Definition von Datenobjekten (mit DATA) oder Typen (über
TYPE) verwendet werden.

April 2001 161


BC - ABAP Dictionary SAP AG
Ranges-Tabellentypen

Ranges-Tabellentypen
Ein Ranges-Tabellentyp ist ein Spezialfall eines Tabellentyps. Ein Ranges-Tabellentyp
beschreibt die Struktur einer internen Tabelle zur Verwaltung von komplexen Bereichen, d.h. den
Typ einer internen Ranges-Tabelle im ABAP.
Ranges-Tabellen können z.B. in logischen Bedingungen (IN-Operator) bei den Anweisungen
SELECT, IF, WHILE und CHECK oder zur Übergabe von Daten an Selektionstabellen benutzt
werden.
Der Zeilentyp eines Ranges-Tabellentyps hat einen festgelegten Aufbau. Der Zeilentyp besteht
aus den 4 Komponenten SIGN (Vorzeichen), OPTION (Vergleichsoperator), LOW (Untergrenze)
und HIGH (Obergrenze) in dieser Reihenfolge.
Der Typ der Komponenten LOW und HIGH ist durch einen elementaren Bezugstyp festgelegt.
Dieser kann durch Angabe eines Datenelements oder durch direkte Angabe von Datentyp,
Anzahl der Stellen und - falls notwendig - Dezimalstellen festgelegt werden.
Ein Ranges-Tabellentyp besitzt immer die Zugriffsart Standardtabelle und einen
Standardschlüssel, der non-unique ist.

Siehe auch:
Ranges-Tabellentyp anlegen [Seite 163]

162 April 2001


SAP AG BC - ABAP Dictionary
Ranges-Tabellentyp anlegen

Ranges-Tabellentyp anlegen
1. Geben Sie im Einstiegsbild des ABAP Dictionary den Namen des Ranges-Tabellentyps
[Seite 162] im Feld Datentyp ein und wählen Sie Anlegen.
Es erscheint ein Dialogfenster, in dem Sie die Art des Typs wählen müssen.
2. Markieren Sie Tabellentyp und wählen Sie .
Sie verzwiegen in das Pflegebild für Tabellentypen.
3. Geben Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Sie können später beispielsweise mit dem Infosystem über diesen Kurztext nach dem
Ranges-Tabellentyp suchen.
4. Wählen Sie Bearbeiten ® Als Ranges-Tabellentyp definieren.
Es wird nun auf das Pflegebild für Ranges-Tabellentypen umgeschaltet. Zugriffsart [Seite
159], Schlüsseldefinition [Seite 158] und Schlüsselart [Seite 160] sind für einen Ranges-
Tabellentyp fest vorgegeben und müssen nicht definiert werden.
Sie müssen zur Definition des Ranges-Tabellentyps lediglich einen elementaren Typ zur
Typisierung der LOW- und HIGH-Komponente des zugehörigen Zeilentyps angeben.
Falls Sie die LOW- und HIGH-Komponente durch ein vorhandenes Datenelement
typisieren wollen, müssen Sie Datenelement markieren und den Namen des
Datenelements im dahinterstehenden Feld eingeben. Sie können auch den Namen eines
noch nicht vorhandenen Datenelements eingeben und per Doppelklick direkt in die
Datenelementpflege verzweigen, um dieses anzulegen.
Sie können den elementaren Typ der LOW- und HIGH-Komponente auch direkt
angeben. Markieren Sie hierzu Eingebauter Typ. Die Felder Datentyp, Zahl der Stellen
und Dezimalstellen werden nun eingabebereit.
5. Geben Sie nun im Feld Strukturierter Zeilentyp einen Namen für den Zeilentyp des Ranges-
Tabellentyps an.
Ein Ranges-Tabellentyp muß wie jeder andere Tabellentyp einen Zeilentyp besitzen. Für
den Spezialfall von Ranges-Tabellentypen hat dieser Zeilentyp immer eine fest
vorgegebene Struktur. Deshalb wird in der Pflege die Möglichkeit geboten, den Zeilentyp
aus dem Pflegebild des Ranges-Tabellentyps heraus zu generieren.
6. Sichern Sie ihre Eingaben.
Sie werden dabei aufgefordert dem Ranges-Tabellentyp eine Entwicklungsklasse
zuzuordnen. Sie können diese Entwicklungsklasse später bei Bedarf über Springen ®
Objektkatalogeintrag verändern.
7. Wählen Sie Anlegen. Mit dieser Funktion können Sie den Zeilentyp des Ranges-Tabellentyps
generieren.
Sie verzweigen damit in das Pflegebild für Strukturen. Die Komponenten des Zeilentyps
sind aufgrund ihrer Angaben zum Bezugstyp für die LOW- und HIGH-Komponenten
schon vorgegeben. Sie müssen hier nur noch einen Kurztext für den Zeilentyp angeben
und diesen Aktivieren. Wählen Sie dann Zurück.
8. Wählen Sie .

April 2001 163


BC - ABAP Dictionary SAP AG
Ranges-Tabellentyp anlegen

Ergebnis
Der Ranges-Tabellentyp wird nun aktiviert. Dabei wird das Laufzeitobjekt [Seite 245] des Typs
erzeugt. Bei der Aktivierung wird ein Protokoll geschrieben, das Sie sich über Hilfsmittel ®
Aktivierungsprotokoll anzeigen lassen können. Falls bei der Aktivierung Fehler auftraten, wird
das Aktivierungsprotokoll direkt angezeigt.

164 April 2001


SAP AG BC - ABAP Dictionary
Typ löschen

Typ löschen
Voraussetzungen
Beachten Sie bitte, daß Sie einen Typ (Datenelement, Struktur, Tabellentyp) im ABAP Dictionary
erst löschen können, wenn er nicht mehr in anderen Objekten (beispielsweise in Tabellen,
Strukturen oder Programmen) verwendet wird.

Vorgehensweise
1. Geben Sie im ABAP Dictionary Einstiegsbild den Namen des Typs (Datenelement, Struktur,
Tabellentyp) im Feld Datentyp ein.
Verschaffen Sie sich mit einen Überblick über noch vorliegende Verwendungen des
Typs. Stellen Sie sicher, daß der Typ nicht mehr in anderen Objekten verwendet wird.
2. Wählen Sie .
Es erscheint ein Dialogfenster, in dem Sie aufgefordert werden, den Löschauftrag
nochmals zu bestätigen.
3. Bestätigen Sie den Löschauftrag.

Ergebnis
Der Typ wird nun gelöscht, falls er nicht mehr in anderen Objekten verwendet wird.

April 2001 165


BC - ABAP Dictionary SAP AG
Domänen

Domänen
Eine Domäne definiert einen Wertebereich. Eine Domäne wird einem Datenelement zugeordnet.
Alle Tabellenfelder bzw. Strukturkomponenten, die dieses Datenelement verwenden, besitzen
dann den durch die Domäne definierten Wertebereich. Die Beziehung zwischen Feld bzw.
Komponente und Domäne wird also über das Datenelement des Feldes bzw. der Komponente
hergestellt.
Felder bzw. Komponenten, die (über die ihnen zugeordneten Datenelemente) auf dieselbe
Domäne verweisen, werden bei einer Änderung der Domäne gleichzeitig mitgeändert. Damit ist
die Konsistenz der Wertebereiche dieser Felder bzw. Komponenten sichergestellt. Technisch
gleichartige Felder bzw. Komponenten können damit durch Verweis auf die gleiche Domäne
zusammengefaßt werden.

Felder sind bzgl. Datentyp und


Länge stets konsistent

Tabelle 1 Tabelle 2 Tabelle 3

Datenelement 1 Datenelement 2

Domäne

Der Wertebereich einer Domäne wird durch die Angabe eines Datentyps und einer Länge
bestimmt (bei numerischen Datentypen ist noch die Anzahl der Dezimalstellen anzugeben).

Eine Personalnummer wird durch das Datenformat NUMC und die Angabe der
Stellenzahl für diese Personalnummer festgelegt.
Der Wertebereich einer Domäne kann durch die Angabe von Festwerten [Seite 168] weiter
eingeschränkt werden. Falls alle Felder bzw. Komponenten, die auf die Domäne zeigen, gegen
eine bestimmte Tabelle geprüft werden sollen, so kann diese Tabelle als Wertetabelle [Seite 169]
der Domäne angegeben werden.
Weiterhin können bei der Domäne noch Ausgabeeigenschaften für alle Felder bzw.
Komponenten, die auf die Domäne zeigen, definiert werden (siehe Domäne anlegen [Seite 173]).
Einer Domäne kann eine Konvertierungsroutine [Seite 170] zugeordnet werden. Für Felder bzw.

166 April 2001


SAP AG BC - ABAP Dictionary
Domänen

Komponenten, die auf diese Domäne verweisen, übernimmt diese Konvertierungsroutine dann
die Umwandlung von Werten vom Anzeigeformat ins interne Format.

Siehe auch:
Domäne anlegen [Seite 173]
Domäne verändern [Seite 175]
Domäne löschen [Seite 176]

April 2001 167


BC - ABAP Dictionary SAP AG
Festwerte

Festwerte
Der Wertebereich einer Domäne kann durch die Angabe von Festwerten weiter eingeschränkt
werden. Falls Festwerte für eine Domäne definiert wurden, werden diese bei der Eingabeprüfung
auf Bildschirmmasken herangezogen. Falls keine andere Hilfemöglichkeit für ein Feld definiert ist
(Suchhilfen [Seite 177], Fremdschlüssel [Seite 20]), werden die Festwerte auch bei der
Eingabehilfe (F4-Hilfe) angeboten.

Die Domäne S_CLASS (Datentyp CHAR, Länge 1) im Flugmodell [Seite 312]


beschreibt die möglichen Klassen einer Flugbuchung. Der Wertebereich der Domäne
S_CLASS ist festgelegt durch die Festwerte C (Business Class), F (First Class) und
Y (Economy Class). Für alle Felder, die auf diese Domäne verweisen, können auf
Bildschirmmasken damit nur die Werte C, F und Y eingegeben werden.
Sie können entweder Festwertintervalle durch Eingabe von Unter- und Obergrenze oder auch
Einzelwerte angeben. Wertebereiche und Einzelwerte können beliebig kombiniert werden. Zu
jedem Einzelwert oder Intervall können Sie einen erläuternden Text erfassen, der dann in der
Eingabehilfe angezeigt wird.
Die Angabe von Festwerten ist nur für Domänen der Datentypen CHAR, NUMC, DEC, INT1,
INT2 und INT4 möglich. Eine Eingabeprüfung auf der Maske wird nur für die Datentypen CHAR
und NUMC durchgeführt.

168 April 2001


SAP AG BC - ABAP Dictionary
Wertetabelle

Wertetabelle
In einigen Fällen ist bei der Definition einer Domäne schon absehbar, daß alle Tabellenfelder
bzw. Strukturkomponenten, die auf diese Domäne zeigen, gegen eine bestimmte Tabelle geprüft
werden sollen. Diese Information kann in der Domäne durch den Eintrag einer Wertetabelle
hinterlegt werden.
Die Wertetabelle wird, beim Versuch einen Fremdschlüssel [Seite 20] für das Feld bzw. die
Komponente zu definieren, vom System als Prüftabelle vorgeschlagen. Dieser Vorschlag kann
aber übersteuert werden.

Die Domäne S_CARR_ID (Datentyp CHAR, Länge 3) im Flugmodell [Seite 312]


beschreibt die dreistelligen Kürzel der Fluggesellschaften. Alle vorhandenen
Fluggesellschaften sind in der Tabelle SCARR mit ihrem Kürzel verzeichnet. Für
Felder, die auf die Domäne S_CARR_ID zeigen, ist also in aller Regel eine Prüfung
gegen die Tabelle SCARR sinnvoll. Deshalb ist SCARR als Wertetabelle für die
Domäne S_CARR_ID eingetragen. Falls auf einem Feld, daß auf S_CARR_ID zeigt,
ein Fremdschlüssel definiert werden soll, wird SCARR als Prüftabelle vorgeschlagen.
Durch das Eintragen einer Wertetabelle wird noch keine Prüfung implementiert! Die Prüfung
gegen die Wertetabelle wird erst nach Definition eines Fremdschlüssels wirksam.

April 2001 169


BC - ABAP Dictionary SAP AG
Eingabe- und Ausgabekonvertierungen

Eingabe- und Ausgabekonvertierungen


Beim Umwandeln des Inhalts eines Bildschirmfeldes vom Anzeigeformat in das SAP-interne
Format und umgekehrt erfolgt je nach Datentyp des Feldes eine Konvertierung. Falls diese
Standardkonvertierung ungeeignet ist, kann Sie durch die Angabe einer Konvertierungsroutine in
der zugrundeliegenden Domäne übersteuert werden.
Eine Konvertierungsroutine wird über einen fünfstelligen Namen identifiziert und ist als Gruppe
von zwei Funktionsbausteinen abgelegt. Die Funktionsbausteine haben dabei eine festgelegte
Namenskonvention. Der Konvertierungsroutine xxxxx sind folgende Funktionsbausteine
zugeordnet:
· CONVERSION_EXIT_xxxxx_INPUT
· CONVERSION_EXIT_xxxxx_OUTPUT
Der INPUT-Baustein führt die Konvertierung vom Anzeigeformat in das interne Format durch, der
OUTPUT-Baustein umgekehrt die Konvertierung vom internen Format in das Anzeigeformat.

Wann wird eine Konvertierungsroutine ausgeführt?


Verweist ein Bildschirmfeld auf eine Domäne mit Konvertierungsroutine, so wird diese
Konvertierungsroutine beim Sichern einer Eingabe in dieses Bildschirmfeld oder beim Anzeigen
von Werten über dieses Bildschirmfeld automatisch ausgeführt. Die Konvertierungsroutine der
Domäne wird auch bei der Ausgabe des Feldinhalts mittels der ABAP-Anweisung WRITE
angestoßen.

Die Tabelle SPFLI im Flugmodell [Seite 312] enthält Informationen zu den von den
Fluggesellschaften angebotenen Flügen. Zu jedem Flug ist im Feld FLTIME die
Flugdauer vermerkt. Auf Eingabemasken soll die Flugdauer in der Form HHH:MM
(Stunden:Minuten) eingegeben und angezeigt werden. Auf der Datenbank soll die
eingegebene Flugdauer aber als Integer-Zahl (Anzahl der Minuten, die der Flug
dauert) abgespeichert werden. Die Eingabe 3:27 wird also als 207 (3 Stunden 27
Minuten = 207 Minuten) auf der Datenbank abgespeichert.
Das Feld FLTIME zeigt auf die Domäne S_DURA, dem die Konvertierungsroutine
SDURA zugeordnet ist. Die beschriebene Wertekonvertierung wird also von den
beiden Funktionsbausteinen CONVERSION_EXIT_SDURA_INPUT und
CONVERSION_EXIT_SDURA_OUTPUT durchgeführt.

170 April 2001


SAP AG BC - ABAP Dictionary
Eingabe- und Ausgabekonvertierungen

Eingabe von Werten in


Bildschirmmaske

Flug
CONVERSION_EXIT_SDURA_INPUT
Konvertiert Eingabe in internes Format
Dauer 3:27

SPFLI
Dauer
Anzeige von Werten in 207
Bildschirmmaske

Flug

CONVERSION_EXIT_SDURA_OUTPUT
Dauer 3:27 Konvertiert internes Format in Anzeigeformat

Eine Konvertierungsroutine kann auch durch Angabe ihres fünfstelligen Namens bei den
Attributen eines Feldes im Screen Painter oder durch den Zusatz USING EDIT MASK <Name
der Konvertierungsroutine> bei der WRITE-Anweisung im Programm angestoßen werden. Mit
dem Zusatz USING NO EDIT MASK bei der WRITE-Anweisung wird eine bei der Domäne
definierte Konvertierungsroutine bei der Ausgabe übergangen.

Parameter
Beide Funktionsbausteine einer Konvertierungsroutine müssen genau zwei Parameter mit den
Namen INPUT und OUTPUT für den zu konvertierenden Wert und den konvertierten Wert
haben.
Der INPUT-Parameter bei der INPUT-Konvertierung und der OUTPUT-Parameter bei der
OUTPUT-Konvertierung sollten kein Bezugsfeld haben, da der beim Aufruf übergebene Wert
eine andere Länge als eigentlich erwartet haben kann.

Programmierung von Konvertierungsroutinen


ABAP Anweisungen, die zu einer Unterbrechung der Verarbeitung führen (z.B. CALL SCREEN,
CALL DIALOG, CALL TRANSACTION, SUBMIT, COMMIT WORK, ROLLBACK WORK,
MESSAGE I, MESSAGE W), sind in Konvertierungsroutinen nicht erlaubt.
Bei der Ausgabe-Konvertierung sind höchstens A-Messages sinnvoll, bei der Eingabe-
Konvertierung können A-,E- sowie (weniger sinnvoll) S-Messages ausgelöst werden. E-
Messages führen zu einem Fehlerdialog. Ausnahmen werden beim Aufruf nicht abgefangen.
Die Ausgabe-Konvertierung wird auch bei WRITE und WRITE-TO angestoßen. Bei Listen erfolgt
der Aufruf der Konvertierungsroutine also unter Umständen sehr häufig. Deshalb sollte die
Ausgabe-Konvertierung möglichst effizient programmiert sein.
In Konvertierungsroutinen sollten keine externen Performs verwendet werden. Extern
aufgerufene Programme nutzen die Tabellenarbeitsbereiche des ersten aufrufenden

April 2001 171


BC - ABAP Dictionary SAP AG
Eingabe- und Ausgabekonvertierungen

Hauptprogramms. Dies kann bei Konvertierungsroutinen zu schwer analysierbaren Fehlern


führen, da diese zu manchmal unvorhergesehenen Zeitpunkten im Programmablauf aufgerufen
werden.

172 April 2001


SAP AG BC - ABAP Dictionary
Domäne anlegen

Domäne anlegen
Bevor Sie eine neue Domäne anlegen, sollten Sie überprüfen, ob nicht bereits eine Domäne
existiert, die denselben Wertebereich definiert. Verwenden Sie in diesem Fall nach Möglichkeit
die schon vorhandene Domäne.

Vorgehensweise
1. Markieren Sie im ABAP Dictionary Einstiegsbild den Objekttyp Domänen, tragen sie den
Namen der Domäne ein und wählen Sie Anlegen.
Sie verzweigen in das Pflegebild für Domänen.
2. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Sie können später beispielsweise mit dem Infosystem über diesen Kurztext nach der
Domäne suchen.
3. Wählen Sie in der Registerkarte Datentyp den Datentyp [Seite 248], die Zahl der Stellen
(gültige Positionen ohne Aufbereitungszeichen wie z.B. Kommata oder Punkte) und die
Anzahl der Dezimalstellen (nur für die Datentypen DEC, FLTP, QUAN und CURR
notwendig).
Beachten Sie, daß einige Datentypen eine feste Länge haben. Zum Beispiel ist der
Datentyp CLNT (Mandant) stets dreistellig. Falls Sie für einen solchen Datentyp eine
unzulässige Zahl der Stellen eingeben, wird dies vom System nach einer Warnung
automatisch korrigiert.
4. Falls für die Domäne nur bestimmte Eingabewerte zulässig sind, können Sie diese in der
Registerkarte Wertebereich als Festwerte [Seite 168] eintragen.
Sie können in dieser Registerkarte auch eine Wertetabelle [Seite 169] als
Vorschlagswert für Fremdschlüsselprüfungen angeben.
5. Sichern Sie die Domäne.
Sie werden dabei aufgefordert, der Domäne eine Entwicklungsklasse zuzuweisen.
6. Wählen Sie .

Ergebnis
Die Domäne wird aktiviert. Informationen zum Ablauf der Aktivierung können Sie dem
Aktivierungsprotokoll entnehmen, das Sie über Hilfsmittel ® Aktivierungsprotokoll aufrufen
können. Falls bei der Aktivierung der Domäne Fehler auftraten, wird das Aktivierungsprotokoll
automatisch angezeigt.

Weitere Möglichkeiten
· Dokumentation erfassen: Sie können mit Springen ® Dokumentation eine technische
Dokumentation zur Domäne erfassen.
· Ausgabelänge beschränken: Der Wert für die Ausgabelänge (maximale Feldlänge
inklusive Aufbereitungszeichen wie z.B. Kommata oder Dezimalpunkte) wird automatisch aus
den Angaben für Datentyp, Zahl der Stellen und Dezimalstellen errechnet. Falls Felder, die
auf diese Domäne verweisen, bei der Ausgabe auf Dynpros oder in Listen nur bis zu einer
bestimmten Länge ausgegeben werden sollen, können Sie diesen Wert verkürzen.

April 2001 173


BC - ABAP Dictionary SAP AG
Domäne anlegen

· Groß-/Kleinschreibung unterscheiden: Wenn Sie für die Felder, die auf diese Domäne
verweisen, Klein- und Großschreibung unterscheiden wollen, müssen Sie das Kennzeichen
Kleinbuchstaben markieren. Im anderen Fall werden alle eingegebenen Buchstaben auf der
Datenbank in Großbuchstaben umgewandelt. Dieses Feld ist nur für die Datentypen CHAR
und LCHR eingabebereit.
· Konvertierungsroutine zuordnen: Falls die Werte von Feldern bei der Ein- und Ausgabe
konvertiert werden müssen, kann eine Konvertierungsroutine [Seite 170] angegeben werden.
· Vorzeichen auf Ausgabe: Falls Felder, die auf diese Domäne verweisen, negative Werte
enthalten können, muß das Kennzeichen Vorzeichen markiert werden. Bei der Ausgabe des
Feldinhalts auf Dynpros wird dann die erste Stelle der Ausgabe für ein Vorzeichen reserviert.
Falls das Kennzeichen nicht gesetzt ist und das Feld trotzdem negative Werte enthält, kann
es bei der Ausgabe auf Dynpros zu Problemen kommen. Dieses Feld ist nur für die
Datentypen DEC, FLTP, QUAN und CURR eingabebereit.

174 April 2001


SAP AG BC - ABAP Dictionary
Domäne verändern

Domäne verändern
Vorgehensweise
Markieren Sie im Einstiegsbild des ABAP Dictionary den Objkettyp Domäne, geben Sie den
Namen der Domäne ein und wählen Sie Ändern.

Von Änderungen bestehender Domänen sind alle Tabellen und Strukturen betroffen,
in denen ein Feld bzw. eine Komponente auf die betreffende Domäne verweist!
Bei betroffenen Tabellen kann eine Umsetzung erforderlich werden (siehe
Datenbank-Strukturen anpassen [Seite 231]). Dies kann bei Tabellen, die viele Sätze
enthalten, sehr aufwendig sein! Außerdem können in den betroffenen Tabellen bzw.
Strukturen Fremdschlüssel inkonsistent werden. Bevor Sie eine Domäne ändern,
sollten Sie sich deshalb über den Verwendungsnachweis über die Auswirkungen
der Änderung informieren.

Änderung des Datentyps, der Zahl der Stellen oder der Dezimalstellen
Sie können den Datentyp und die Zahl der Stellen bzw. Dezimalstellen ändern, indem Sie die
entsprechenden Angaben einfach überschreiben. Beachten Sie dabei, daß eine solche Änderung
zu einer Umsetzung aller Tabellen führen kann, in denen ein Feld auf die geänderte Domäne
verweist!
Ermitteln Sie deshalb vor einer solchen Änderung alle Datenbanktabellen, in denen ein Feld auf
die Domäne verweist. Wählen Sie hierzu und auf dem dann eingeblendeten Dialogfenster
Indirekte Verwendung. Es erscheint eine Liste. Markieren Sie dort den Eintrag DB-Tabellen und
wählen Sie . Es werden alle Datenbanktabellen angezeigt, in denen ein Feld auf die Domäne
verweist.

Änderung der Ausgabeeigenschaften


Eine Änderung der Ausgabeeigenschaften einer Domäne beeinflußt das Dialogverhalten auf
allen Dynpros, in denen ein Feld auf diese Domäne verweist.
Sie sollten deshalb vor einer solchen Änderung alle betroffenen Dynpros ermitteln. Wählen Sie
hierzu und auf dem dann eingeblendeten Dialogfenster Indirekte Verwendung. Es erscheint
eine Liste. Markieren Sie dort den Eintrag Dynpros und wählen Sie . Nun werden alle Dynpros
aufgelistet, in denen ein Feld auf die Domäne verweist.

Änderung der Wertetabelle


Die Wertetabelle [Seite 169] dient als Vorschlagswert für Fremdschlüsseldefinitionen. Falls Sie
die Wertetabelle ändern, sollten Sie über den Verwendungsnachweis prüfen, ob auch bereits
angelegte Fremdschlüssel verändert werden müssen. Die betroffenen Fremdschlüssel können
Sie ermitteln, indem Sie alle Felder suchen, die auf die Domäne verweisen und gegen die
geänderte Wertetabelle geprüft werden.

April 2001 175


BC - ABAP Dictionary SAP AG
Domäne löschen

Domäne löschen
Voraussetzungen
Sie können eine Domäne nur löschen, wenn diese von keinem Datenelement mehr verwendet
wird.

Vorgehensweise
1. Markieren Sie im Einstiegsbild des ABAP Dictionary den Objekttyp Domäne und geben Sie
den Namen der Domäne ein.
Wählen Sie und prüfen Sie, ob die Domäne noch in Datenelementen verwendet wird.
2. Wählen Sie .
Es erscheint ein Dialogfenster, in dem Sie aufgefordert werden, den Löschauftrag
nochmals zu bestätigen.
3. Bestätigen Sie den Löschauftrag.

Ergebnis
Die Domäne wird nun gelöscht, falls sie nicht noch in Datenelementen verwendet wird.

176 April 2001


SAP AG BC - ABAP Dictionary
Suchhilfen

Suchhilfen
Die Eingabehilfe (F4-Hilfe) ist eine Standardfunktion des R/3 Systems. Über die Eingabehilfe
kann sich der Benutzer die Liste aller möglichen Eingabewerte für ein Bildschirmfeld anzeigen
lassen. Die möglichen Eingabewerte können dabei um erläuternde Zusatzinformationen ergänzt
sein. Dies ist insbesondere dann sinnvoll, wenn das Feld die Eingabe eines formalen Schlüssels
erfordert.

Standardablauf einer Eingabehilfe


Der Aufruf einer Eingabehilfe durch einen Benutzer besteht aus folgenden Schritten (je nach
Gestaltung der Eingabehilfe können einzelne Schritte entfallen):
1. Der Benutzer startet die Eingabehilfe, um sich mögliche Eingabewerte für ein Feld (Suchfeld)
auf einer Bildschirmmaske anzeigen zu lassen.
2. Das System bietet dem Benutzer eine Reihe von möglichen Suchpfaden an. Der Benutzer
wählt einen dieser Suchpfade aus. Jeder Suchpfad bietet eine Reihe von Einschränkungen,
um die Menge der möglichen Eingabewerte einzugrenzen. Diese werden nach Auswahl des
Suchpfads auf einem Dialogfenster zur Werteselektion angeboten.
3. Der Benutzer gibt (optional) einschränkende Bedingungen ein und startet die Suche.

Dialogfenster zur
Wertebereich einschränken
Werteselektion
Flugges. LH
Flugnr.
Abflug
Ankunft Selektiert alle Flüge
... der Gesellschaft LH

Datenbank

4. Das System ermittelt die auf die eingegebenen Einschränkungen passenden Werte
(Treffermenge) und zeigt diese als Liste (Trefferliste) an.

Code der Flugverbindung


Fluggesellschaft LH

Nr. Abflug Ankunft


400 Frankfurt New York
402 Frankfurt Berlin Auswahl
452 Frankfurt Singapore
452 Rome Berlin eines
452 Berlin Sydney Eintrags
... ... ...

5. Der Benutzer wählt die passende Zeile der Trefferliste durch Doppelklick aus.

April 2001 177


BC - ABAP Dictionary SAP AG
Suchhilfen

6. Der Wert des Suchfeldes wird (evtl. zusammen mit anderen Werten) in die Bildschirmmaske
zurückgestellt.
Die Schritte 2 und 3 entfallen, falls nur ein einziger Suchpfad zur Verfügung steht. In diesem Fall
wird direkt das Dialogfenster zur Werteselektion angeboten. Es ist auch möglich direkt nach dem
Starten der Eingabehilfe die Liste der Treffer auszugeben. In diesem Fall entfallen die Schritte 2
bis 4.

Funktion einer Suchhilfe


Dieser Standardablauf einer Eingabehilfe kann durch Anlegen einer Suchhilfe im ABAP
Dictionary vollständig gestaltet werden. Diese Suchhilfe muß dann nur noch den
Bildschirmfeldern zugeordnet werden, auf denen sie zur Verfügung stehen soll (siehe Suchhilfe
mit einem Bildschirmfeld verbinden [Seite 187]).
Man muß hierbei zwischen zwei Typen von Suchhilfen unterscheiden:
· Elementare Suchhilfen [Seite 179] beschreiben einem Suchpfad. In der elementaren
Suchhilfe muß angegeben werden, woher die Daten der Trefferliste gelesen werden sollen
(Selektionsmethode), wie der Werteaustausch zwischen Bildschirmmaske und
Selektionsmethode realisiert ist (Schnittstelle der Suchhilfe) und wie der Dialog bei der
Eingabehilfe gestaltet sein soll (Dialogverhalten der Suchhilfe).
· Sammelsuchhilfen [Seite 183] fassen mehrere elementare Suchhilfen zusammen. Über eine
Sammelsuchhilfe können also mehrere alternative Suchpfade zur Verfügung gestellt werden.

Siehe auch:
Beispiel zu Suchhilfen [Seite 209]
Anlegen einer elementaren Suchhilfe [Seite 198]
Anlegen einer Sammelsuchhilfe [Seite 204]

178 April 2001


SAP AG BC - ABAP Dictionary
Struktur einer elementaren Suchhilfe

Struktur einer elementaren Suchhilfe


Eine elementare Suchhilfe definiert den Standardablauf einer Eingabehilfe. In der Suchhilfe
können folgende Bestandteile dieses Ablaufs bestimmt werden:
· woher die in der Trefferliste angezeigten Daten stammen (Selektionsmethode)
· welche Informationen auf dem Dialogfenster zur Werteselektion und auf der Trefferliste
angezeigt werden sollen (Suchhilfeparameter)
· welche Feldinhalte für die Selektion der Trefferliste berücksichtigt werden können und
welche Werte aus der Trefferliste in Dynprofelder zurückgestellt werden können
(Suchhilfeparameter)
· welche Dialogschritte bei der Eingabehilfe ausgeführt werden sollen (Dialogverhalten)

Selektionsmethode
Die auf der Trefferliste angezeigten möglichen Eingabewerte für ein Feld werden zur Laufzeit
durch eine Selektion von der Datenbank ermittelt.

Pflege von Flügen

Fluggesellschaft LH

F4
Flugnummer SELECT * FROM SPFLI
WHERE CARRID = 'LH'.
...

Selektionsmethode
SPFLI SPFLI

Stammen alle auf der Trefferliste benötigten Daten aus einer einzigen Tabelle, so genügt es
diese Tabelle (oder einen Projektions-View auf diese Tabelle) als Selektionsmethode zu wählen.
Falls eine Texttabelle [Seite 28] zur Tabelle existiert, stehen die Felder dieser Texttabelle bei der
Eingabehilfe ebenfalls zur Verfügung. Ein Tabelleneintrag wird über den vorhandenen
Fremdschlüssel mit dem zugehörigen Text verknüpft.
Falls die auf der Trefferliste benötigten Daten aus mehreren Tabellen stammen, müssen diese
Tabellen über einen View (Datenbank-View oder Help-View) verknüpft werden. Als
Selektionsmethode muß dann dieser View angegeben werden.

April 2001 179


BC - ABAP Dictionary SAP AG
Struktur einer elementaren Suchhilfe

Sind die zugrundeliegenden Tabellen mandantenabhängig, muß das Mandantenfeld im View


enthalten sein. Ansonsten würde bei der Eingabehilfe über alle Mandanten selektiert!

Suchhilfeparameter
Eine Suchhilfe besitzt eine Schnittstelle aus Parametern. Über diese Parameter wird festgelegt,
welche Felder der Selektionsmethode in der Eingabehilfe verwendet werden sollen.
Jedem Feld auf dem Dialogfenster zur Werteselektion und jedem Feld auf der Trefferliste muß
ein Parameter der Suchhilfe entsprechen. Die Parameter werden aus der zugehörigen
Selektionsmethode übernommen, d.h. sind stets namensgleich zum entsprechenden Feld der
Selektionsmethode.
Wird die Suche über einen Parameter der Suchhilfe eingeschränkt, so wird dies bei der
Datenselektion zur Formulierung einer WHERE-Bedingung für das namensgleiche Feld der
Selektionsmethode genutzt. Umgekehrt werden die Parameter der Suchhilfe mit den Inhalten der
namensgleichen Felder der Selektionsmethode versorgt.
Die Suchhilfe sollte keinen Parameter für den Mandanten enthalten. Bei der Eingabehilfe wird
automatisch im Anmeldemandanten des Benutzers selektiert.
Jedem Suchhilfeparameter muß ein Datenelement zugeordnet werden, d.h. die
Suchhilfeparameter sind stets typisiert.
Eine Suchhilfe kann noch weitere Parameter enthalten, die keinem Feld der Selektionsmethode
entsprechen. Dies ist aber in Regel nur dann notwendig, wenn der durch die Suchhilfe
beschriebene Standardablauf der Eingabehilfe noch über ein Suchhilfe-Exit [Seite 207]
modifiziert werden muß.

Import- und Export-Parameter


Beim Aufruf einer Eingabehilfe werden die vom Benutzer auf der Eingabemaske schon
vorgenommenen Eingaben berücksichtigt. Ruft ein Benutzer beispielsweise die Eingabehilfe für
Flugnummern auf und hat die Fluggesellschaft schon spezifiziert, so sollen natürlich nur die
Nummern zu Flügen dieser Fluggesellschaft angeboten werden.
Wählt der Benutzer umgekehrt eine Zeile der Trefferliste aus, so sollen eventuell mehrere Felder
der Eingabemaske mit Daten aus der gewählten Zeile der Trefferliste gefüllt werden. Wird
beispielsweise die Flugnummer aus der Trefferliste übernommen, so sollen auch gleich die
Abflugsstadt und die Ankunftsstadt in die Bildschirmmaske zurückgestellt werden.

180 April 2001


SAP AG BC - ABAP Dictionary
Struktur einer elementaren Suchhilfe

F4
Fluggesellschaft LH
Nr Abflugsstadt Ankunftsstadt

0400 Frankfurt New York


Kontext
berücksichtigen 0402 Frankfurt New York

Fluggesellschaft LH

Flugnummer 0*

... Werte zurückstellen

Über die Schnittstelle einer Suchhilfe wird festgelegt, welche Kontextdaten in die Eingabehilfe
eingehen können und welche Daten auf die Eingabemaske zurückgestellt werden können.
Ein Parameter einer Suchhilfe kann klassifiziert werden als:
· Import-Parameter: Parameter, über den Kontextinformationen aus der prozessierten
Eingabemaske (Dynpro) in den Hilfeablauf übernommen werden dürfen.
· Export-Parameter: Parameter, über den Werte aus der Trefferliste auf die Eingabemaske
zurückgestellt werden dürfen.
Ein Parameter kann gleichzeitig Import- und Export-Parameter sein. Eine Suchhilfe kann auch
Parameter enthalten, die weder Import- noch Export-Parameter sind. Solche Parameter können
z.B. für den internen Ablauf der Eingabehilfe benötigt werden.
Bei der Suchilfeanbindung [Seite 187] wird festgelegt, woher die Import-Parameter der Suchhilfe
ihre Werte beziehen und in welche Felder die Inhalte der Export-Parameter zurückgestellt
werden. Siehe auch Wertetransport bei der Eingabehilfe [Seite 196].

Beschreibung des Dialogverhaltens


Das Dialogverhalten bestimmt, welche Dialogschritte beim Ablauf der Eingabehilfe durchlaufen
werden und wie die Trefferliste und das Dialogfenster zur Werteselektion aufgebaut sind.
Über den Dialogtyp [Seite 201] kann entschieden werden, ob das Dialogfenster zur
Werteselektion angezeigt werden soll oder nicht. Falls das Dialogfenster zur Werteselektion
übersprungen wird, wird die Trefferliste direkt nach Aufruf der Eingabehilfe angezeigt.
Bei der Definition einer elementaren Suchhilfe kann auch das Aussehen des Dialogfensters zur
Werteselektion und der Trefferliste gestaltet werden. Hier kann z.B. die Position eines
Parameters auf dem Dialogfenster zur Werteselektion bestimmt werden. Auch die

April 2001 181


BC - ABAP Dictionary SAP AG
Struktur einer elementaren Suchhilfe

Spaltenposition, in der die Werte eines Parameters auf der Trefferliste angezeigt werden sollen,
kann hier festgelegt werden.

Siehe auch:
Anlegen einer elementaren Suchhilfe [Seite 198]
Beispiel zu Suchhilfen [Seite 209]

182 April 2001


SAP AG BC - ABAP Dictionary
Struktur einer Sammelsuchhilfe

Struktur einer Sammelsuchhilfe


Eine Sammelsuchhilfe faßt mehrere elementare Suchhilfen zusammen. Über eine
Sammelsuchhilfe kann der Benutzer also zwischen mehreren alternativen Suchpfaden
auswählen.
Bei der Definition einer Sammelsuchhilfe müssen lediglich diejenigen Suchhilfen angegeben
werden, die über die Sammelsuchhilfe zusammengefaßt werden sollen. Bei der Eingabehilfe
erfolgt der Wertetransport zwischen der vom Benutzer gewählten elementaren Suchhilfe und der
Eingabemaske über die Sammelsuchhilfe. Deshalb besitzt eine Sammelsuchhilfe ebenfalls eine
Schnittstelle, über die der Wertetransport vorgenommen werden kann.

Schnittstelle der Sammelsuchhilfe


Eine Sammelsuchhilfe besitzt wie eine elementare Suchhilfe [Seite 179] eine Schnittstelle aus
Import- und Export-Parametern. Über diese Schnittstelle findet der Datenaustausch zwischen der
Bildschirmmaske und den Parametern der zugeordneten elementaren Suchhilfen statt.

Eingabemaske

Feld 1
Feld 2
Schnittstelle der
... Sammelsuchhilfe
Parameter 1

Schnittstelle der Parameter 2


elem. Suchhilfe
Parameter A
Parameter B

Zugeordnete Suchhilfen
Eine Sammelsuchhilfe besteht aus mehreren elementaren Suchhilfen. Sie faßt alle Suchpfade
zusammen, die für ein Feld sinnvoll sind.
Die Schnittstellenparameter (Import- und Export-Parameter) der inkludierten Suchhilfen müssen
den Parametern der Sammelsuchhilfe zugeordnet werden. Es müssen nicht alle Parameter
zugeordnet werden, d.h. die Zuordnung kann für einige der Parameter offen bleiben.

April 2001 183


BC - ABAP Dictionary SAP AG
Struktur einer Sammelsuchhilfe

Elementare
Suchhilfe A
Parameter 1
Parameter 2

Schnittstelle der Elementare


Sammelsuchhilfe Suchhilfe B
Parameter 1 Parameter 1
Parameter 2 Parameter 2
Parameter 3 Parameter 3

Elementare
Suchhilfe C
Parameter 1
Parameter 2

In eine Sammelsuchhilfe können sowohl elementare Suchhilfen als auch andere


Sammelsuchhilfen inkludiert werden. Sind in einer Sammelsuchhilfe andere Sammelsuchhilfen
enthalten, so werden diese beim Aufruf der Eingabehilfe bis auf die Ebene der elementaren
Suchhilfen aufgelöst.

Siehe auch:
Anlegen einer Sammelsuchhilfe [Seite 204]
Beispiel zu Suchhilfen [Seite 209]

184 April 2001


SAP AG BC - ABAP Dictionary
Append-Suchhilfen

Append-Suchhilfen
Eine Append-Suchhilfe dient der modifikationsfreien Erweiterung einer Sammelsuchhilfe (die im
aktuellen System nicht Original ist) um weitere Suchpfade (elementare Suchhilfen). Diese
Technik kann z.B. von Sonderentwicklungen, Länderversionen, SAP-Partnern oder SAP-Kunden
genutzt werden, um an eine Sammelsuchhilfe des SAP-Standards weitere Suchpfade
anzufügen.
Eine Append-Suchhilfe ist einer Sammelsuchhilfe [Seite 183] (ihrer Appendierenden) fest
zugeordnet. Diese Appendierende wird durch die Append-Suchhilfe erweitert. Der Aufbau einer
Append-Suchhilfe entspricht dem Aufbau einer Sammelsuchhilfe.
Die Append-Suchhilfe übernimmt die Parameter ihrer Appendierenden. Eine Append-Suchhilfe
wird automatisch in ihre Appendierende inkludiert. Dabei werden die gleichnamigen Paremeter
der beiden Suchhilfen einander zugeordnet.

Elem. Suchhilfe A
Parameter A
Parameter B
Parameter C
Zusätzliche
Elem. Suchhilfe B
Schnittstelle der Suchpfade
Sammelsuchhilfe Parameter D

Parameter 1 Parameter E

Parameter 2 Elem. Suchhilfe C


Parameter 3 Parameter F
Append-Suchhilfe
Parameter G
Parameter 1
Inklusion der
Append-Suchhilfe Parameter 2
Elem. Suchhilfe D
Parameter 3
Parameter H
Parameter I

Append-Suchhilfen können auch selbst zur Beschreibung einer Eingabehilfe herangezogen


werden. Sie werden dann wie Sammelsuchhilfen behandelt. Einer Append-Suchhilfe kann kein
Suchhilfe-Exit zugeordnet werden.
Über eine Append-Suchhilfe können auch modifikationsfrei elementare Suchhilfen aus einer
SAP-Sammelsuchhilfe ausgeblendet werden. Hierzu müssen Sie die auszublendende Suchhilfe
auch in die Append-Suchhilfe inkludieren und dort die Inklusion ausblenden. Der durch diese
Suchhilfe definierte Suchpfad wird damit in der appendierenden Suchhilfe nicht mehr angeboten.

Ändern sich die Parameter der Appendierenden, so wird diese Änderung bei der
Append-Suchhilfe nicht automatisch nachgezogen. Es erfolgt vielmehr ein Hinweis
darauf, daß die Parameter der Append-Suchhilfe angepaßt werden sollten. In

April 2001 185


BC - ABAP Dictionary SAP AG
Append-Suchhilfen

diesem Fall sollten Sie prüfen, ob Sie auch die Zuordnungen zwischen den
Parametern der Append-Suchhilfe und den in sie inkludierten Suchhilfen verändern
wollen.
Eine automatische Änderung der Schnittstelle der Appendierenden wäre nicht
sinnvoll, da bei einer Schnittstellenänderung der Sammelsuchhilfe in der Regel
einige der enthaltenen elementaren Suchhilfen an diese Änderung angepaßt werden
müssen.

Siehe auch:
Append-Suchhilfe anlegen [Seite 206]

186 April 2001


SAP AG BC - ABAP Dictionary
Suchhilfen mit einem Bildschirmfeld verbinden

Suchhilfen mit einem Bildschirmfeld verbinden


Mit einer Suchhilfe kann das Verhalten eines Feldes beim Aufruf der Eingabehilfe beeinflußt
werden. Hierzu muß die Suchhilfe dem Feld zugeordnet werden. Für diese Zuordnung gibt es
mehrere Möglichkeiten:
· Anbindung an ein Datenelement [Seite 188]
· Anbindung an die Prüftabelle [Seite 190]
· Anbindung an ein Tabellenfeld [Seite 192]
· Anbindung an ein Dynprofeld [Seite 194]
Einem Feld können damit mehrere Suchhilfen zugeordnet sein. Konflikte beim Aufruf der
Eingabehilfe werden durch eine Hierarchie der Suchhilfeanbindungen [Seite 195] aufgelöst.

Einem Feld ist direkt im Dynpro eine Suchhilfe A zugeordnet. An das zugehörige
Tabellenfeld ist eine Suchhilfe B angebunden. Es existiert eine Prüftabelle zum Feld,
an die eine Suchhilfe C angebunden ist. An das Datenelement des Feldes ist eine
Suchhilfe D angebunden.

Dynpro
Suchhilfe B
Feld
Anbindung
an Feld
...
Tabelle/Struktur

Anbindung in
Dynprodefinition

Suchhilfe A Prüftabelle
Datenelement

Anbindung an Anbindung an
Prüftabelle Datenelement

Suchhilfe C Suchhilfe D

April 2001 187


BC - ABAP Dictionary SAP AG
Anbindung an ein Datenelement

Anbindung an ein Datenelement


Die Suchhilfe steht für alle Bildschirmfelder zur Verfügung, die auf das Datenelement [Seite 143]
zeigen. Damit haben alle Felder mit der gleichen inhaltlichen Bedeutung eine identische
Eingabehilfe.
Bei der Anbindung der Suchhilfe an ein Datenelement muß dem Datenelement ein Export-
Parameter der Suchhilfe zugeordnet werden. Wählt der Benutzer in der Eingabehilfe eine Zeile
der Trefferliste aus, so wird der Inhalt dieses Parameters in das entsprechende Bildschirmfeld
zurückgestellt. Das Zurückstellen mehrerer Werte wird bei der Anbindung einer Suchhilfe an ein
Datenelement nicht unterstützt.

Die Tabelle SPFLI (Flugplan) enthält das Feld DISTID für die Einheit (Kilometer,
Meilen) der im Feld DISTANCE angegebenen Flugdistanz. Das Feld DISTID
verweist auf das Datenelement S_DISTID. An dieses Datenelement ist die
elementare Suchhilfe S_UNIT_DIST (Suche nach Längeneinheiten) angebunden.
Dem Datenelement ist dabei der Export-Parameter MSEHI der Suchhilfe zugeordnet.
Die Suchhilfe S_UNIT_DIST steht damit für das Feld DISTID beim Einpflegen von
Flugdaten in die Tabelle SPFLI zur Verfügung. Wählt der Benutzer in der
Eingabehilfe eine Zeile der Trefferliste aus, so wird der Inhalt des Parameters
MSEHI in die Bildschirmmaske zurückgestellt.

...
Distance

Dist. Id.
...

Bezug auf Tabellenfeld im ABAP Dictionary

Tabelle SPFLI

... DISTANCE DISTID FLTYPE

Datenelement zum Feld

Datenelement S_DISTID

Anbindung der Suchhilfe


ans Datenelement Suchhilfe S_UNIT_DIST

MSEHI MSEH3 ...

Ist der dem Datenelement zugeordnete Parameter auch Import-Parameter der Suchhilfe, so wird
der Inhalt des Suchfeldes für die Werteselektion berücksichtigt, falls er ein Muster enthält.
Weitere Import-Parameter der Suchhilfe können bei der Anbindung der Suchhilfe an ein
Datenelement nicht berücksichtigt werden.

188 April 2001


SAP AG BC - ABAP Dictionary
Anbindung an ein Datenelement

Die Anbindung der Suchhilfe an das Datenelement gehört zur Definition des Datenelements. Wie
Sie eine Suchhilfe an ein Datenelement anbinden können, ist beschrieben in Datenelement
anlegen [Seite 145].

April 2001 189


BC - ABAP Dictionary SAP AG
Anbindung an die Prüftabelle

Anbindung an die Prüftabelle


Besitzt ein Feld eine Prüftabelle, so ist die Menge aller möglichen Eingaben in das Feld durch
den Inhalt dieser Prüftabelle (siehe Fremdschlüssel [Seite 20]) bestimmt. Der Inhalt der
Schlüsselfelder der Prüftabelle wird daher bei der Eingabehilfe automatisch angeboten. Ist zur
Prüftabelle eine Texttabelle [Seite 28] definiert, wird zusätzlich noch der Inhalt des ersten
Textfelds dieser Texttabelle in der Anmeldesprache des Benutzers angezeigt.
Diese aus der Prüftabelle stammende Eingabehilfe kann durch Zuordnung einer Suchhilfe zur
Prüftabelle weiter aufbereitet werden. Die zugeordnete Suchhilfe steht damit für alle
Bildschirmfelder zur Verfügung, die gegen die Tabelle geprüft werden.
Wird eine Suchhilfe an eine Prüftabelle angebunden, sollte sie die in dieser Prüftabelle
enthaltenen Daten anzeigen. Als Selektionsmethode der Suchhilfe muß in diesem Fall also die
Prüftabelle selbst oder ein View auf diese Prüftabelle gewählt werden.
Bei der Zuordnung einer Suchhilfe zu einer Prüftabelle muß eine Zuordnung zwischen den
Schlüsselfeldern der Prüftabelle und den Parametern der Suchhilfe erfolgen. Ist einem
Schlüsselfeld der Prüftabelle ein Export-Parameter der Suchhilfe zugeordnet, so wird der Inhalt
dieses Parameters in das entsprechende Bildschirmfeld zurückgestellt, sobald der Benutzer in
der Eingabehilfe eine Zeile der Trefferliste auswählt. Ist einem Schlüsselfeld der Prüftabelle ein
Import-Parameter der Suchhilfe zugeordnet, so wird der Feldinhalt für die Werteselektion
verwendet (siehe Wertetransport bei der Eingabehilfe [Seite 196]).

Das Feld CONNID (Nummer der Flugverbindung) der Tabelle SFLIGHT (Flüge) wird
gegen die Tabelle SPFLI (Flugplan) geprüft. Der Tabelle SPFLI ist die elementare
Suchhilfe H_SPFLI (Suche nach Flügen über Abflugsstadt und Ankunftsstadt)
zugeordnet. Bei der Eingabe von Daten in die Tabelle SFLIGHT steht diese
Suchhilfe damit für das Feld CONNID zur Verfügung.
Die Suchhilfe H_SPFLI enthält kein Mandantenfeld, da bei der Eingabehilfe stets im
Anmeldemandanten des Benutzers selektiert wird!

190 April 2001


SAP AG BC - ABAP Dictionary
Anbindung an die Prüftabelle

...
Carrier

Connect.
...

Bezug auf Tabellenfeld im ABAP Dictionary

Tabelle SFLIGHT
MANDT CARRID CONNID FLDATE ...

Feldzuordnung im Fremdschlüssel

Prüftabelle SPFLI
MANDT CARRID CONNID CITYFROM ... CITYTO ...

Schlüsselfelder Zuordnung zwischen Suchhilfeparametern


und Schlüsselfeldern der Prüftabelle

Suchhilfe H_SPFLI
CARRID CONNID CITYFROM CITYTO

Die Suchhilfeanbindung gehört zur Definition der Tabelle/Struktur, an die die Suchhilfe
angebunden wird. Wie Sie eine Suchhilfe an eine Tabelle anbinden können, ist beschrieben in
Tabelle anlegen [Seite 74].

April 2001 191


BC - ABAP Dictionary SAP AG
Anbindung an ein Tabellen- oder Strukturfeld

Anbindung an ein Tabellen- oder Strukturfeld


Die Suchhilfe steht für alle Bildschirmfelder zur Verfügung, die sich auf das Tabellen- oder
Strukturfeld beziehen. Bei dieser Art der Anbindung muß eine Zuordnung zwischen den
Suchhilfeparametern und den Feldern der Tabelle bzw. Struktur getroffen werden.
Ist einem Tabellenfeld ein Export-Parameter der Suchhilfe zugeordnet, so wird der Inhalt dieses
Parameters in das entsprechende Bildschirmfeld zurückgestellt, sobald der Benutzer in der
Eingabehilfe eine Zeile der Trefferliste auswählt. Ist einem Tabellenfeld ein Import-Parameter der
Suchhilfe zugeordnet, so wird der Feldinhalt für die Werteselektion verwendet (siehe
Wertetransport bei der Eingabehilfe [Seite 196]).
In der Regel kann nicht jeder Parameter der Suchhilfe einem Tabellenfeld zugeordnet werden.
Die Zuordnung kann also für einige Suchhilfeparameter offen bleiben. Einem Suchhilfeparameter
kann auch eine Konstante oder ein beliebiges anderes Feld zugeordnet werden, welches beim
Aufruf der Eingabehilfe dann im Modulpool des prozessierten Dynpros gesucht wird.

Die Suchhilfe STRAVELAG_NAME erlaubt die Suche nach der Nummer eines
Reisebüros über Zusatzinformationen zum Reisebüro (Name, Stadt, Land). Diese
Suchhilfe soll für alle Bildschirmfelder zur Verfügung stehen, die auf das Feld
AGENCYNUM (Nummer des Reisebüros) der Tabelle STRAVELAG referieren. Die
Suchhilfe wird deshalb direkt an das Feld AGENCYNUM der Tabelle STRAVELAG
angebunden. Alle Parameter der Suchhilfe können entsprechenden Tabellenfeldern
zugeordnet werden.

Agencyno.

Name

Street
...

Bezug auf Tabellenfeld


im ABAP Dictionary

Tabelle STRAVELAG

MANDT AGENCYNUM NAME STREET ... CITY COUNTRY ...

Zuordnung zwischen
Suchhilfeparametern
und Tabellenfeldern
Suchhilfe STRAVELAG_NAME

AGENCYNUM NAME CITY COUNTRY

192 April 2001


SAP AG BC - ABAP Dictionary
Anbindung an ein Tabellen- oder Strukturfeld

Die Suchhilfeanbindung gehört zur Definition der Tabelle/Struktur, an die die Suchhilfe
angebunden wird. Wie Sie eine Suchhilfe an ein Tabellenfeld anbinden können, ist beschrieben
in Tabelle anlegen [Seite 74].

April 2001 193


BC - ABAP Dictionary SAP AG
Anbindung an ein Dynprofeld

Anbindung an ein Dynprofeld


Eine Suchhilfe kann direkt einem Dynprofeld zugeordnet werden. Die Suchhilfe steht dann nur
für dieses Dynpro zur Verfügung. Wird das gleiche Feld auf mehreren Dynpros benutzt, sollte die
Suchhilfe deshalb in der Regel an das referierte Tabellenfeld bzw. Strukturfeld angebunden
werden (siehe Anbindung an ein Tabellenfeld [Seite 192]).
Es gibt folgende Möglichkeiten, eine Suchhilfe direkt in ein Dynpro einzubinden:
· Der Name der Suchhilfe muß hierzu im Screen Painter in den Attributen zum Feld in das
Feld Suchhilfe eingetragen werden.
· Der Name der Suchhilfe kann für Selektionsbilder in ABAP Reports in der PARAMETERS
bzw. SELECT-OPTIONS Anweisung direkt hinter dem Zusatz AS SEARCH PATTERN
angegeben werden.
In beiden Fällen wird dadurch der erste Parameter der Suchhilfe dem Dynprofeld zugeordnet.
Damit kann nur ein Wert aus der Trefferliste in die Bildschirmmaske zurückgestellt werden.

194 April 2001


SAP AG BC - ABAP Dictionary
Hierarchie des Suchhilfeaufrufs

Hierarchie des Suchhilfeaufrufs


Suchhilfen können auf mehrere Arten an Bildschirmfelder angebunden [Seite 187] werden.
Dadurch können einem Bildschirmfeld mehrere Suchhilfen zugeordnet sein. Konfliktsituationen
beim Aufruf der Eingabehilfe werden durch eine Hierarchie auf den verschiedenen Arten der
Suchhilfeanbindung aufgelöst.
Wird die Eingabehilfe für ein Bildschirmfeld aufgerufen, so wird zuerst überprüft, ob über das
Dynpro eine Eingabehilfe für das Feld definiert ist. Hierbei sind drei Fälle zu unterscheiden. Ist
über PROCESS ON VALUE-REQUEST eine programmierte Hilfe vorhanden, so wird diese
ausgeführt. Ist keine programmierte Hilfe vorhanden, wird versucht, die dem Feld im Dynpro
zugeordnete Suchhilfe aufzurufen. Ist dem Feld im Dynpro keine Suchhilfe zugeordnet, wird die
über FIELD SELECT bzw. FIELD VALUES definierte Hilfe angeboten.
Ist über das Dynpro keine Eingabehilfe für das Feld definiert, wird versucht die an das
Tabellenfeld angebundene Suchhilfe aufzurufen. Ist hier keine Suchhilfe vorhanden, wird
versucht die Prüftabellenhilfe anzuzeigen. Hier sind zwei Fälle zu unterscheiden. Ist an die
Prüftabelle eine Suchhilfe angebunden, so wird diese angezeigt. Andernfalls werden nur die
Schlüsselwerte der Prüftabelle angezeigt. Falls eine Texttabelle [Seite 28] zur Prüftabelle
existiert, werden dabei zusätzlich die Texte zum Schlüsselwert in der Anmeldesprache des
Benutzers ergänzt.
Ist für das Feld keine Prüftabelle vorhanden, wird versucht die Suchhilfe aus dem Datenelement
aufzurufen. Falls auch beim Datenelement keine Suchhilfe vorhanden ist, werden vorhandene
Domänenfestwerte angezeigt. Für Felder mit Datentyp DATS und TIMS stehen schließlich die
Kalenderhilfe bzw. Uhrzeithilfe automatisch zur Verfügung.
vorhanden
Suchhilfe aus Dynpro
nicht vorhanden

Eingabehilfe aus
Dictionary
Suchhilfe zum Feld Eingabehilfe aus
PROCESS ON ABAP Report
VALUE-REQUEST

Prüftabellenhilfe
Suchhilfe zum
Dynprofeld

Suchhilfe zur Suchhilfe aus


Prüfungen der Prüftabelle Datenelement
Ablauflogik
FIELD … SELECT
Prüftabelle mit
FIELD … VALUES Texttabelle Festwerte

Schlüsselwerte
der Prüftabelle
Uhrzeit oder
Kalenderhilfe

April 2001 195


BC - ABAP Dictionary SAP AG
Wertetransport bei der Eingabehilfe

Wertetransport bei der Eingabehilfe


Beim Aufruf der Eingabehilfe und beim Auswählen einer Zeile der Trefferliste findet ein
Wertetransport zwischen den Feldinhalten auf dem Dynpro und der Schnittstelle der Suchhilfe
statt. Damit können auf dem Dynpro schon eingegebene Werte bei der Selektion der Trefferliste
als einschränkende Bedingungen ausgenutzt werden. Es werden nur noch die Treffer angezeigt,
die mit den schon eingegebenen Werten konsistent sind.

referierte Tabelle
Dynpro bzw. Struktur angebundene
Suchhilfe
A
A A Import/Export
B
B B Import
...
C C Export
C
D F Import/Export
D
E G interner Parameter
E

Inhalt der Dynpro-Felder A und B


wird für die Selektion der Treffer
aus der Selektionsmethode
berücksichtigt

A B C F
Rückstellen der Inhalte
der Parameter A und C
bei Auswahl einer Zeile Trefferliste
der Trefferliste

Im obigen Beispiel sind die Dynpro-Felder A, B und C mit Parametern der Suchhilfe verbunden.
Damit ist prinzipiell nur für diese drei Felder ein Wertetransport zwischen Dynpro und Suchhilfe
möglich. Vorhandene Inhalte der Dynpro-Felder A und B können für die Selektion der Trefferliste
berücksichtigt werden, da Sie mit einem Import-Parameter der Suchhilfe verbunden sind. Aus der
Trefferliste können die Werte der Parameter A und C auf das Dynpro zurückgestellt werden, da
diese Parameter als Export-Parameter der Suchhilfe deklariert sind.

Versorgung der Import-Parameter der Suchhilfe


Ist die Suchhilfe über ein Datenelement (Anbindung an ein Datenelement [Seite 188]) oder direkt
im Dynpro (Anbindung an ein Bildschirmfeld [Seite 194]) an das Dynpro-Feld angebunden, so ist
diesem nur ein Suchhilfeparameter zugeordnet. Der Wertetransport kann damit nur zwischen
dem Dynpro-Feld und diesem Parameter stattfinden.
Ist die Suchhilfe an das Tabellenfeld (Anbindung an ein Tabellenfeld [Seite 192]) oder an die
Prüftabelle des Feldes (Anbindung an eine Tabelle [Seite 190]) angebunden, so kann ein
Wertetransport für alle Dynpro-Felder stattfinden, die mit einem Parameter der Suchhilfe
verbunden sind.
Beim Aufruf der Eingabehilfe wird versucht für jeden Import-Parameter der Suchhilfe, der mit
einem Tabellen- bzw. Strukturfeld verbunden ist, ein namensgleiches Feld auf dem Dynpro zu

196 April 2001


SAP AG BC - ABAP Dictionary
Wertetransport bei der Eingabehilfe

ermitteln. Falls ein solches gefunden wird, wird der Inhalt des Dynpro-Feldes in den Suchhilfe-
Parameter übertragen.
Die Suche nach dem namensgleichen Dynpro-Feld erfolgt in maximal vier Schritten:
· Wird die Eingabehilfe in einer Step-Loop aufgerufen, so wird in dieser Step-Loop nach einem
namensgleichen Feld gesucht.
· Ist in der Step-Loop kein namensgleiches Feld vorhanden, so wird auf dem zugehörigen
Sub-Screen gesucht.
· Ist kein namensgleiches Feld auf dem Sub-Screen vorhanden, wird auf dem Main Dynpro
gesucht.
· Falls auch auf dem Main Dynpro kein namensgleiches Feld gefunden wird, wird im Modul-
Pool des zugehörigen Dynpros gesucht.

Modul-Pool
Main Dynpro des Dynpros

?
Sub-Screen

? ?
Step-Loop

Aufruf der Eingabehilfe


in der Step-Loop

Rückstellen der Werte aus der Trefferliste


Das Rückstellen der Werte erfolgt ausschließlich auf der Ebene des Aufrufs der Eingabehilfe.
Wird die Eingabehilfe beispielsweise innerhalb einer Step-Loop aufgerufen, so werden die Werte
aus der Trefferliste nur in Felder der entsprechenden Zeile dieser Step-Loop zurückgestellt.
Insbesondere werden niemals Werte aus der Trefferliste in den Modul-Pool des Dynpros
zurückgestellt.
Die Werte der Trefferliste werden nur in eingabebereite Felder und in solche Felder
zurückgestellt, die nur mit einem Export-Parameter der Suchhilfe verbunden sind (dient zur
Versorgung von reinen Textfeldern, die nicht in die Selektion eingehen).

April 2001 197


BC - ABAP Dictionary SAP AG
Anlegen einer elementaren Suchhilfe

Anlegen einer elementaren Suchhilfe


Vorgehensweise
1. Markieren Sie im Einstiegsbild des ABAP Dictionary die Objektklasse Suchhilfe, geben Sie
den Namen der Suchhilfe ein und wählen Sie Anlegen.
Es erscheint ein Dialogfenster, in dem Sie den Typ der Suchhilfe wählen müssen.
2. Markieren Sie Elementare Suchhilfe und wählen Sie .
Sie gelangen nun in das Pflegebild für elementare Suchhilfen.
3. Geben Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Sie können später beispielsweise über das Infosystem über diesen Kurztext nach der
Suchhilfe suchen.
4. Geben Sie auf der Registerkarte Definition die Selektionsmethode der Suchhilfe an.
Sie können hier den Namen einer Tabelle oder eines Views (Datenbank-View,
Projektions-View oder Help-View) eingeben. Falls Sie eine Tabelle eingeben, zu der eine
Texttabelle [Seite 28] vorhanden ist, wird der Name der Texttabelle automatisch im
entsprechenden Feld eingetragen.
5. Wählen Sie über die Eingabehilfe (F4-Hilfe) auf dem Bereich Suchhilfeparameter Felder der
Selektionsmethode als Parameter aus. Sie sollten hier die Felder auswählen, die auf dem
Dialogfenster zur Werteselektion oder in der Trefferliste verwendet werden sollen.
Ist die Selektionsmethode eine Tabelle, zu der eine Texttabelle existiert, so werden bei
der Eingabehilfe sowohl die Felder der Tabelle als auch die Felder der Texttabelle
angeboten.
Das Datenelement des Parameters wird automatisch aus der Selektionsmethode
übernommen. Das Datenelement definiert die Ausgabeeigenschaften und die F1-Hilfe
des Parameters auf der Trefferliste und auf dem Dialogfenster zur Werteselektion.
Sie können dem Parameter ein anderes Datenelement zuordnen. Markieren Sie hierzu
das Kennzeichen Mod. Das Feld Datenelement wird nun eingabebereit. Wählen Sie
dann ein Datenelement über die Eingabehilfe (F4-Hilfe) aus. Es können nur
Datenelemente zugeordnet werden, die in Datentyp, Länge und Anzahl der
Dezimalstellen mit dem bisherigen Datenelement übereinstimmen.
Damit wird die Kopplung zwischen dem Datenelement des Suchhilfeparameters und
dem Datenelement des namensgleichen Feldes der Selektionsmethode aufgehoben.
Wenn Sie die Markierung des Kennzeichens Mod zurücknehmen, wird das
Datenelement des zugeordneten Feldes wieder übernommen.
6. Definieren Sie die Eigenschaften der Suchhilfeparameter.
Markieren Sie das Kennzeichen IMP, falls es sich um einen Import-Parameter handelt.
Markieren Sie das Kennzeichen EXP, falls es sich um einen Export-Parameter handelt.
Über die Felder LPos, SPos und SAnz können Sie den Dialog bei der Eingabehilfe
gestalten. Tragen Sie in LPos die Position des Parameters auf der Trefferliste ein. Falls
Sie hier nichts bzw. den Wert 0 eintragen, wird der Parameter nicht auf der Trefferliste
angezeigt.

198 April 2001


SAP AG BC - ABAP Dictionary
Anlegen einer elementaren Suchhilfe

Parameter LPos Suchhilfe H_SPFLI


CARRID 1 Suche nach
CONNID 2 Flugnummern
CITYFROM 3
CITYTO 4

CA CO FROM TO Trefferliste
LH 67 Bonn Berlin
LH 103 München Berlin
LH 24 Frankfurt Boston
AA 188 New York Miami
AA 15 New York London
... ... ... ...

Tragen Sie in SPos die Position des Parameters auf dem Dialogfenster zur
Werteselektion ein. Falls Sie hier nichts bzw. den Wert 0 eintragen, wird der Parameter
nicht auf dem Dialogfenster zur Werteselektion angezeigt.

Suchhilfe H_SPFLI
(Suche nach Flugnummern)
Parameter SPos
CARRID 1
CONNID 2
CITYFROM 3 Dialogfenster zur
CITYTO 4 Werteselektion
Flugges.
Flugnr.
Abflug
Ankunft

Markieren Sie das Kennzeichen SAnz, falls der Parameter auf dem Dialogfenster zur
Werteselektion ein reines Anzeigefeld sein soll. Damit wird dem Benutzer die
Einschränkung durch den Inhalt des Parameters bekannt gemacht, er kann diese
Einschränkung aber nicht ändern. Dies ist z.B. sinnvoll, wenn der Parameter ein Import-
Parameter ist oder einen Defaultwert besitzt.
Im Feld Defaultwert können Sie dem Parameter einen Default-Wert [Seite 203]
zuordnen.
7. Wählen Sie den Dialogtyp [Seite 201] der Suchhilfe.
Der Dialogtyp steuert die Anzeige der Trefferliste bei der Eingabehilfe.
8. Sichern Sie ihre Eingaben.
Es erscheint ein Dialogfenster, in dem Sie der Suchhilfe eine Entwicklungsklasse
zuordnen müssen.
9. Wählen Sie .

Vergessen Sie nicht, die Suchhilfe mit einem Bildschirmfeld zu verbinden [Seite 187]!
Die Suchhilfeanbindung gehört nicht zur Definition der Suchhilfe, sondern zur
Definition des Objekts, an das die Suchhilfe angebunden wird.

April 2001 199


BC - ABAP Dictionary SAP AG
Anlegen einer elementaren Suchhilfe

Ergebnis
Die Suchhilfe wird aktiviert. Informationen zum Ablauf der Aktivierung können Sie dem
Aktivierungsprotokoll entnehmen, das Sie sich über Hilfsmittel ® Aktivierungsprotokoll
anzeigen lassen können. Falls bei der Aktivierung Fehler auftraten, wird das
Aktivierungsprotokoll automatisch angezeigt.

Weitere Möglichkeiten:
· Kurzanwahl zuordnen: Falls die Suchhilfe über eine Kurzanwahl [Seite 202] angesprochen
werden soll, müssen Sie ein einstelliges Kürzel im Feld Kurzanwahl eintragen. Alle in einer
Sammelsuchhilfe enthaltenen elementaren Suchhilfen sollten sich bzgl. ihrer Kurzanwahl
unterscheiden.
· Suchhilfe-Exit zuordnen: In Ausnahmefällen kann es notwendig sein, den durch die
Suchhilfe vorgegebenen Standardablauf über ein Suchhilfe-Exit [Seite 207] zu verändern.
Tragen Sie in diesem Fall den Namen des Suchhilfe-Exits im entsprechenden Feld ein.
· Suchhilfe testen: Sie können den über die elementare Suchhilfe definierten Ablauf einer
Eingabehilfe über testen. Es erscheint ein Dialogfenster, in dem Sie das Verhalten der
Suchhilfe unter verschiedenen Bedingungen simulieren können. Informationen über die auf
diesem Fenster zur Verfügung stehenden Möglichkeiten können Sie über erhalten.

Siehe auch:
Struktur einer elementaren Suchhilfe [Seite 179]

200 April 2001


SAP AG BC - ABAP Dictionary
Dialogtyp

Dialogtyp
Der Dialogtyp einer elementaren Suchhilfe steuert die Anzeige der Trefferliste beim Aufruf der
Eingabehilfe.
Es sind folgende Dialogtypen möglich:
· Sofortige Werteanzeige: Die Trefferliste wird nach Aufruf der Eingabehilfe direkt angezeigt.
Dies ist nur dann sinnvoll, wenn die Trefferliste in der Regel nur wenige Einträge enthält.
· Komplexer Dialog mit Werteeinschränkung: Das Dialogfenster zur Werteeinschränkung
wird direkt angeboten. Diese Option sollten Sie wählen, wenn die Liste der möglichen
Eingaben in der Regel sehr groß ist. Eine Einschränkung der zu verarbeitenden Datenmenge
durch den Benutzer erhöht die Übersichtlichkeit der Trefferliste und vermindert die
Systembelastung bei der Werteselektion.
· Dialog abhängig von Wertemenge: Falls die Trefferliste weniger als 100 Einträge enthält,
wird sie direkt angezeigt. Enthält die Trefferliste mehr als 100 Einträge, wird das
Dialogfenster zur Werteeinschränkung angezeigt.

April 2001 201


BC - ABAP Dictionary SAP AG
Kurzanwahl

Kurzanwahl
Über die Kurzanwahl kann die Auswahl der elementaren Suchhilfe aus der Sammelsuchhilfe und
die Eingabe der Einschränkungen im Dialogfenster zur Werteeinschränkung direkt vom
Eingabefeld aus erfolgen. Falls der Benutzer häufig über die gleiche Suchhilfe nach Werten
sucht, kann dieses Vorgehen Zeit sparen.
Die Kurznotation muß im Eingabefeld nach folgender Konvention eingetragen werden:
=<Kurzanwahl>.S1.S2.S3....
S1, S2, S3, usw. sind die Einschränkungen, die in dieser Reihenfolge auf dem zugehörigen
Selektionspopup eingegeben würden. Dabei wird jeder Eintrag generisch interpretiert.

Selektionspopup der
elementaren Suchhilfe A

Suche nach Flügen

Fluggesellschaft AZ*

Flugnummer 123*

Ankunftsort FRA*
...

=A.AZ.123.FRA
Kurzanwahl im
Eingabefeld

Falls die als Standardsuchhilfe gespeicherte elementare Suchhilfe verwendet werden soll, muß
die Kurzanwahl nicht angegeben werden. Falls S1 aus mehr als einem Zeichen besteht, kann in
diesem Fall kann auch das erste Trennzeichen ‘.’ weggelassen werden.
Wird die Kurzanwahl ohne Einschränkungen angegeben ( =<Kurzanwahl>) so wird das
Dialogfenster zur Werteeinschränkung aufgerufen. Werden Einschränkungen mitgegeben, so
wird das Dialogfenster zur Werteeinschränkung übersprungen und die Trefferliste wird direkt
angezeigt. Falls genau ein Treffer gefunden wird, entfällt auch die Anzeige der Trefferliste. Die
Werte des gefundenen Treffers werden in diesem Fall direkt in die Bildschirmmaske
zurückgestellt.

202 April 2001


SAP AG BC - ABAP Dictionary
Default-Werte für Suchhilfeparameter

Default-Werte für Suchhilfeparameter


Einem Parameter einer Suchhilfe kann ein Default-Wert zugeordnet werden.
Als Default-Werte sind zulässig:
· Konstanten, die in der Pflege in Hochkommata eingeschlossen anzugeben sind. Für
Parameter, deren Datentyp eine Aufbereitungsmaske besitzt (z.B. Datum und Zeit), muß die
Konstante in der internen Darstellung angegeben werden. Zum Beispiel ist das Datum
01.03.1998 als '19980301' anzugeben.
· Systemfelder, d.h. Felder aus der Struktur SYST, wobei an Stelle des Präfix SYST- auch das
Präfix SY- verwendet werden kann.
· Get-Parameter-Ids, über die der Parameter mit Werten aus dem SAP-Memory versorgt
werden kann.
Der Default-Wert wird dem Parameter im Eingabehilfeablauf in den folgenden Fällen
zugewiesen:
· Falls der Parameter kein IMPORT-Parameter ist.
· Falls dem Parameter bei der Suchhilfeanbindung, über die die Suchhilfe an das Dynprofeld
angebunden wurde, nichts zugeordnet wurde.
· Falls dem Parameter bei der Suchhilfeanbindung ein Feld zugeordnet wurde, das beim
Eingabehilfeablauf weder auf dem Dynpro noch in der Ablauflogik vorhanden ist.
· Falls eine Suchhilfe in eine Sammelsuchhilfe inkludiert ist und dabei der Parameter mit
keinem Parameter dieser Sammelsuchhilfe verbunden ist.

April 2001 203


BC - ABAP Dictionary SAP AG
Anlegen einer Sammelsuchhilfe

Anlegen einer Sammelsuchhilfe


Vorgehensweise
1. Markieren Sie im Anforderungsbild des ABAP Dictionary die Objektklasse Suchhilfe, geben
Sie den Namen der Suchhilfe ein und wählen Sie Anlegen.
Es erscheint ein Dialogfenster, in dem Sie den Typ der Suchhilfe wählen müssen.
2. Markieren Sie Sammelsuchhilfe und wählen Sie .
Sie gelangen nun in das Pflegebild für Sammelsuchhilfen.
3. Geben Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Sie können später beispielsweise mit dem Infosystem über diesen Kurztext nach der
Suchhilfe suchen.
4. Geben Sie auf der Registerkarte Definition die Parameter der Sammelsuchhilfe ein.
Markieren Sie das Kennzeichen Imp, falls es sich um einen Import-Parameter handelt.
Markieren Sie das Kennzeichen Exp, falls es sich um einen Export-Parameter handelt.
Die Parameter einer Sammelsuchhilfe müssen durch Zuordnung eines Datenelements
typisiert werden. Geben Sie im Feld Datenelement den Namen des Datenelements ein,
das die inhaltliche Bedeutung des Suchhilfe-Parameters beschreibt.
Im Feld Defaultwert können Sie dem Parameter einen Default-Wert [Seite 203]
zuordnen.
5. In Ausnahmefällen kann es notwendig sein, den durch die Suchhilfe vorgegebenen
Standardablauf zu verändern. Sie können die Abweichung vom Standard über ein Suchhilfe-
Exit [Seite 207] realisieren.
Tragen Sie in diesem Fall den Namen des Suchhilfe-Exits im entsprechenden Feld ein.
6. Geben Sie auf der Registerkarte Inkludierte Suchhilfen die Suchhilfen an, die Sie in die
Sammelsuchhilfe inkludieren wollen.
Sie können elementare Suchhilfen und Sammelsuchhilfen inkludieren.
Über das Kennzeichen Ausgeblendet können Sie steuern, ob eine inkludierte Suchhilfe
auf dem Dialogfenster zur Auswahl der elementaren Suchhilfe erscheinen soll. Falls das
Kennzeichen markiert ist, wird die Suchhilfe dort nicht angeboten.
Das Ausblenden von Suchhilfeinklusionen macht Sinn, wenn ein oder mehrere im
Standard vorgesehene Suchpfade in einem konkreten R/3 System nicht genutzt werden
sollen. Umgekehrt können auch Suchhilfeinklusionen im Standard bereits ausgeblendet
enthalten sein, weil sie nur in wenigen R/3 Systemen sinnvoll genutzt werden können. In
diesen ist das entsprechende Kennzeichen zurückzunehmen.
7. Stellen Sie den Cursor nacheinander auf jede zugeordnete Suchhilfe und wählen Sie
Parameterzuordnung.
Geben Sie im folgenden Bild im Feld Bezugsparameter den Parameternamen der
Einzelsuchhilfe an, der dem entsprechenden Parameter der Sammelsuchhilfe
zugeordnet werden soll.

204 April 2001


SAP AG BC - ABAP Dictionary
Anlegen einer Sammelsuchhilfe

Sie können die in der inkludierten Suchhilfe enthaltenen Parameter über die Eingabehilfe
auswählen. Über Vorschlag können Sie sich einen Vorschlag für die Zuordnung erstellen
lassen.
8. Sichern Sie ihre Eingaben.
Es erscheint ein Dialogfenster, in dem Sie der Suchhilfe eine Entwicklungsklasse
zuordnen müssen.
9. Wählen Sie .

Ergebnis
Die Sammelsuchhilfe wird aktiviert. Informationen zum Ablauf der Aktivierung können Sie dem
Aktivierungsprotokoll entnehmen, das Sie sich über Hilfsmittel ® Aktivierungsprotokoll
anzeigen lassen können. Falls bei der Aktivierung der Sammelsuchhilfe Fehler auftraten, wird
das Aktivierungsprotokoll automatisch angezeigt.

Vergessen Sie nicht, die Suchhilfe mit einem Bildschirmfeld zu verbinden [Seite 187]!
Die Suchhilfeanbindung gehört nicht zur Definition der Suchhilfe, sondern zur
Definition des Objekts, an das die Suchhilfe angebunden wird.

Weitere Möglichkeiten
Sie können den über die Sammelsuchhilfe definierten Ablauf einer Eingabehilfe über testen.
Es erscheint ein Dialogfenster, in dem Sie das Verhalten der Suchhilfe unter verschiedenen
Bedingungen simulieren können. Informationen über die auf diesem Fenster zur Verfügung
stehenden Möglichkeiten können Sie über erhalten.

Siehe auch:
Struktur einer Sammelsuchhilfe [Seite 183]

April 2001 205


BC - ABAP Dictionary SAP AG
Append-Suchhilfe anlegen

Append-Suchhilfe anlegen
4. Geben Sie im Einstiegsbild des ABAP Dictionary den Namen der Sammelsuchhilfe an, an die
Sie die Append-Suchhilfe anhängen wollen. Wählen Sie Anzeigen.
Sie verzweigen damit im Anzeigemodus ins Pflegebild der Sammelsuchhilfe.
5. Wählen Sie Springen ® Append-Suchhilfen.
Es erscheint ein Dialogfenster, in dem Sie den Namen der Append-Suchhilfe eintragen
müssen. Dieser Name sollte im Kundennamensraum (bzw. im Namensraum des
Partners oder der Sonderentwicklung) liegen.
6. Wählen Sie .
Sie verzweigen ins Pflegebild der Append-Suchhilfe. Sie können nun wie beim Anlegen einer
Sammelsuchhilfe [Seite 204] fortfahren.
Beachten Sie folgende Besonderheiten:
· Die Sammelsuchhilfe übernimmt stets die Schnittstelle ihrer Appendierenden. Deshalb sind
die Angaben auf der Registerkarte Definition nicht änderbar.
· Wenn Sie über die Append-Suchhilfe eine in der Appendierenden inkludierte Suchhilfe
ausblenden wollen, müssen Sie diese Suchhilfe auch in die Append-Suchhilfe aufnehmen.
Geben Sie dazu den Namen der auszublendenden Suchhilfe auf der Registerkarte
Inkludierte Suchhilfen ein und markieren Sie das Kennzeichen Ausgeblendet.
· Beim Aktivieren der Append-Suchhilfe wird die Definition der appendierenden Suchhilfe
automatisch angepaßt. Die Append-Suchhilfe wird dabei automatisch in die Appendierende
inkludiert.

Siehe auch:
Append-Suchhilfen [Seite 185]

206 April 2001


SAP AG BC - ABAP Dictionary
Suchhilfe-Exit

Suchhilfe-Exit
Eine Suchhilfe beschreibt den Standardablauf einer Eingabehilfe. In Ausnahmefällen kann es
notwendig sein, von diesem Standard in einigen Punkten abzuweichen. Eine solche Abweichung
vom Standard kann über ein Suchhilfe-Exit realisiert werden.

Der Ablauf der Eingabehilfe sollte sich dem Endbenutzer systemweit möglichst
eindeutig präsentieren. Deshalb sollten Suchhilfe-Exits nur in Ausnahmefällen
verwendet werden!
Ein Suchhilfe-Exit ist ein Funktionsbaustein, der eine vordefinierte Schnittstelle besitzt. Ein
Suchhilfe-Exit wird vom Hilfeprozessor zu festgesetzten Zeitpunkten aufgerufen. Über die
Schnittstelle werden dem Suchhilfe-Exit dabei die Verwaltungsdaten des Hilfeprozessors
übergeben.
Im Suchhilfe-Exit kann eigene Programmlogik hinterlegt werden, die diese Verwaltungsdaten
manipuliert. Über ein Suchhilfe-Exit können auch einzelne Schritte des Ablaufs der Eingabehilfe
übersprungen werden.

Das Suchhilfe-Exit F4UT_OPTIMIZE_COLWIDTH paßt die Spaltenbreiten auf der


Trefferliste an den Spalteninhalt an. Der Einsatz dieses Suchhilfe-Exits ist sinnvoll,
wenn die Spalten der Trefferliste für extreme Fälle sehr breit angelegt werden
müssen (z.B. für Namensfelder), in der Regel aber mit deutlich kürzeren Werten
gefüllt sind.
Jedes Suchhilfe-Exit muß die gleiche Schnittstelle wie der Funktionsbaustein
F4IF_SHLP_EXIT_EXAMPLE (dient als Muster für alle anzulegenden Suchhilfe-Exits) besitzen.
Genauere Informationen zur Schnittstelle können Sie der Dokumentation dieses
Funktionsbausteins entnehmen.

Aufruf des Suchhilfe-Exits


Ist einer Suchhilfe ein Suchhilfe-Exit zugeordnet, so wird dieses zu folgenden Zeitpunkten vom
Hilfeprozessor aufgerufen:

Vor der Anzeige des Dialogfensters zur Auswahl des gewünschten Suchpfades.
Der Aufruf erfolgt nur für Sammelsuchhilfen. Über das Suchhilfe-Exit kann hier z.B. die Menge
der zur Verfügung stehenden elementaren Suchhilfen kontextsensitiv eingeschränkt werden.

Vor der Anzeige des Dialogfensters zur Eingabe der Suchbedingungen.


Hier kann der Dialog zur Eingabe der Suchbedingungen entweder beeinflußt oder ganz
übersprungen werden. Es ist auch möglich, das Aussehen des Selektionsbildes zu beeinflussen.

Vor der Datenselektion.


Die Datenselektion kann teilweise oder vollständig vom Suchhilfe-Exit übernommen werden.
Dies kann notwendig sein, falls die Datenselektion nicht über ein SELECT-Statement auf eine
Tabelle oder einen View realisiert werden kann.

April 2001 207


BC - ABAP Dictionary SAP AG
Suchhilfe-Exit

Vor der Anzeige der Trefferliste.


Die Anzeige der Trefferliste kann in diesem Schritt durch den Suchhilfe-Exit beeinflußt werden.
Hier kann die Menge der angezeigten Werte reduziert werden. Beispielsweise können nur die
Werte angezeigt werden, für die der Aufrufer der Eingabehilfe eine Berechtigung besitzt. Die
Anzeige der Trefferliste kann aber auch vollständig vom Suchhilfe-Exit übernommen werden.

Vor dem Zurückstellen der vom Benutzer gewählten Werte in die Eingabemaske.
Ein Eingriff zu diesem Zeitpunkt kann sinnvoll sein, wenn die Steuerung des weiteren Ablaufs der
Transaktion vom gewählten Wert abhängig gemacht werden soll. Ein typisches Beispiel ist das
Setzen von Set-/Get-Parametern.

Die Suchhilfe SFLIGHT dient zur Suche nach Flugdaten. Mitarbeiter in Reisebüros
benötigen in der Regel bei der Suche nach Flügen auch eine Information darüber, ob
auf dem entsprechenden Flug noch Plätze frei sind. Diese Information ist in der
Selektionsmethode der Suchhilfe (View über die Tabellen SCARR, SFLIGHT und
SPFLI) nicht direkt enthalten. Die Selektionsmethode enthält lediglich die
Informationen, wie viele Plätze auf dem Flug zur Verfügung stehen und wie viele
Plätze schon belegt sind.
Das Suchhilfe-Exit SAPBC_GLOBAL_F4_SFLIGHT berechnet aus diesen
Informationen die noch freien Plätze und stellt das Resultat in einen Parameter der
Suchhilfe zurück. Damit kann die Anzahl der noch freien Plätze dann auf der
Trefferliste dargestellt werden.
Im Suchhilfe-Exit muß also nur eine Aktion für den Aufruf vor dem Anzeigen der
Trefferliste programmiert werden.

Pflege von Buchungen Fluggesellschaft Alitalia


Nr Abflugstadt ... Frei
Fluggesellschaft AZ 0555 Rom ... 147

Flugnummer 0555 Rom ... 198

F4
5 ... ... ... ...
Flugdatum
...

2 4
Suchhilfe-Exit
SAPBC_GLOBAL_F4_SFLIGHT

Abflugstadt Rom ...


3
SELECT * FROM
Ankunftstadt ...
SFLIGHTS...
...

208 April 2001


SAP AG BC - ABAP Dictionary
Beispiel zu Suchhilfen

Beispiel zu Suchhilfen
Jeder Kunde einer Fluggesellschaft (siehe Flugmodell [Seite 312]) bzw. eines Reisebüros besitzt
eine Kundennummer. Es soll eine Suchmöglichkeit nach dieser Kundennummer bereitgestellt
werden.
Hierbei müssen dem Benutzer zwei verschiedene Suchpfade angeboten werden:
· Der Benutzer soll über die Kundendaten, wie z.B. Name und Adresse, nach der
Kundennummer suchen können.
· Der Benutzer soll über bereits bestehende Buchungen des Kunden nach der Kundennummer
suchen können.
Die gewünschte Suchmöglichkeit kann durch Anlegen einer Sammelsuchhilfe [Seite 183]
SCUSTOM bereitgestellt werden. Für die eigentlichen Suchpfade werden zwei elementare
Suchhilfen [Seite 179] SCUSTOM_NAME (für die Suche über die Daten des Kunden) und
SCUSTOM_BOOK (für die Suche über die bestehenden Buchungen) angelegt. Diese
elementaren Suchhilfen werden dann in die Sammelsuchhilfe aufgenommen.

Elementare Suchhilfe SCUSTOM_NAME


Diese elementare Suchhilfe soll die Suche nach der Kundennummer über Name und Adresse
(Straße, Stadt, Land) ermöglichen. Alle diese Daten befinden sich in der Tabelle SCUSTOM. Die
Tabelle SCUSTOM muß also als Selektionsmethode der elementaren Suchhilfe gewählt werden.
Werteselektion über die Suchhilfe

Name Klaus Meier

Straße
Stadt
Land DE

Selektionsmethode
Tabelle SCUSTOM SCUSTOM

Nun muß entschieden werden, welche Felder der Selektionsmethode im Ablauf der Eingabehilfe
benötigt werden. Das sind die Felder, die entweder auf dem Dialogfenster zur
Werteeinschränkung oder auf der Trefferliste erscheinen sollen.
Auf dem Dialogfenster zur Werteeinschränkung soll der Benutzer über den Namen des Kunden
und dessen Anschrift, d.h. die Felder für Straße, Stadt und Land, einschränken können. Auf der
Trefferliste sollen diese Felder und zusätzlich die Kundennummer (die Information, nach der
gesucht wird, muß natürlich immer auf der Trefferliste stehen) angezeigt werden. In die Suchhilfe
müssen also die Felder ID, NAME, STREET, CITY und COUNTRY der Tabelle SCUSTOM als
Parameter aufgenommen werden.
Der Parameter ID ist als Import-Parameter deklariert. Damit kann ein im zugeordneten Feld einer
Bildschirmmaske eingegebenes Muster direkt für die Werteselektion ausgenutzt werden.
Einschränkungen für die anderen Parameter der Suchhilfe müssen auf dem Dialogfenster zur
Werteselektion eingegeben werden.

April 2001 209


BC - ABAP Dictionary SAP AG
Beispiel zu Suchhilfen

Alle Parameter der Suchhilfe sind als Export-Parameter deklariert. Damit können alle Parameter
aus der Trefferliste in die Bildschirmmaske zurückgestellt werden, sofern dort entsprechende
Felder vorhanden sind.

Elementare Suchhilfe SCUSTOM_BOOK


Diese elementare Suchhilfe soll die Suche nach der Kundennummer über bestehende
Buchungen des Kunden ermöglichen. Hier soll über die Flugdaten zur Buchung (Flugnummer,
Flugdatum, Abflugsstadt, Ankunftsstadt) und über den Namen des Kunden gesucht werden.
Diese Daten sind auf die Tabellen SBOOK (Buchungen), SCUSTOM (Name) und SPFLI
(Abflugstadt und Ankunftsstadt) verteilt. Die folgende Grafik zeigt den Zusammenhang der
entsprechenden Tabellen, d.h. die vorhandenen Fremdschlüsselbeziehungen.

SPFLI
MANDT CARRID CONNID ...

SBOOK
MANDT CARRID CONNID ... CUSTOMID ...

SCUSTOM
MANDT ID ...

Als Selektionsmethode muß in diesem Fall ein Datenbank-View SCUS_BOOK über diese drei
Tabellen angelegt werden (siehe Beispiel zu Views [Seite 138]). Die Verknüpfung der Tabellen
im View (Join) kann aus den bestehenden Fremdschlüsselbeziehungen (siehe
Fremdschlüsselbeziehung und Join-Bedingung [Seite 107]) übernommen werden.
Werteselektion über die Suchhilfe

Airline
Name
Abflug
Ankunft

Selektionsmethode
View SCUS_BOOK SCUS_BOOK

SBOOK SPFLI
SCUSTOM

Auf dem Dialogfenster zur Werteeinschränkung soll der Benutzer die Suche nach
Buchungsdaten über die Kennung der Airline, den Kundennamen, die Abflugstadt und die
Ankunftsstadt des Fluges einschränken können. Auf der Trefferliste sollen zusätzlich noch das
Flugdatum und natürlich die Kundennummer angezeigt werden. Als Parameter der Suchhilfe
müssen also die Felder CARRID, FLDATE, CUSTOMID, NAME, CITYFROM und CITYTO des
Views SCUS_BOOK in die elementare Suchhilfe aufgenommen werden.
Der Parameter CUSTOMID ist als Import-Parameter deklariert. Alle Parameter der Suchhilfe sind
Export-Parameter.

210 April 2001


SAP AG BC - ABAP Dictionary
Beispiel zu Suchhilfen

Sammelsuchhilfe SCUSTOM
Die beiden elementaren Suchhilfen werden nun in die Sammelsuchhilfe inkludiert. Hierbei ist
eine Zuordnung der Parameter der elementaren Suchhilfen zu den Parametern der
Sammelsuchhilfe anzugeben.

Sammelsuchhilfe SCUSTOM

ID NAME CITY COUNTRY

Elementare Suchhilfe SCUSTOM_NAME Elementare Suchhilfe SCUSTOM_BOOK

ID NAME STREET CITY COUNTRY CARRID CUSTOMID NAME ...

Der Parameter ID der Sammelsuchhilfe ist als Import-Parameter gegennzeichnet. Alle Parameter
sind Export-Parameter. Die Werte können damit aus der Trefferliste in die Bildschirmmaske
übernommen werden.

Anbindung der Suchhilfe


Damit die Suchhilfe SCUSTOM auf Bildschirmmasken genutzt werden kann, muß noch die
Anbindung der Suchhilfe (siehe Suchhilfen mit einem Bildschirmfeld verbinden [Seite 187])
definiert werden.

Anbindung an die Prüftabelle SCUSTOM


Die Suchhilfe soll für alle Felder zur Verfügung stehen, die gegen die Tabelle SCUSTOM geprüft
werden. Die Suchhilfe muß deshalb an die Tabelle SCUSTOM angebunden werden. Hierbei ist
eine Zuordnung der Suchhilfeparameter zu den Schlüsselfeldern der Tabelle SCUSTOM
notwendig.
Bei dieser Feldzuordnung wird dem Feld ID der Tabelle SCUSTOM der Parameter ID der
Suchhilfe SCUSTOM zugeordnet. Für alle anderen Parameter der Suchhilfe (NAME, CITY und
COUNTRY) ist keine Zuordnung möglich, da die Tabelle SCUSTOM diese Informationen nicht
als Schlüsselfelder enthält.

April 2001 211


BC - ABAP Dictionary SAP AG
Beispiel zu Suchhilfen

Anbindung an ein Feld der Tabelle SCUSTOM


Damit die Suchhilfe auch dann zur Verfügung steht, wenn das Feld SCUSTOM-ID direkt auf die
Eingabemaske übernommen wurde, ist noch eine Anbindung der Suchhilfe an dieses Feld
notwendig.
Bei dieser Art der Anbindung können alle Parameter der Suchhilfe den entsprechenden Feldern
der Tabelle zugeordnet werden.

Tabelle SCUSTOM

MANDT ID NAME FORM ... CITY COUNTRY ...

Suchfeld

Sammelsuchhilfe SCUSTOM

ID NAME CITY COUNTRY

212 April 2001


SAP AG BC - ABAP Dictionary
Migration von Help-Views und Matchcodes zu Suchhilfen

Migration von Help-Views und Matchcodes zu


Suchhilfen
Suchhilfen wurden zu Release 4.0 neu eingeführt. Zuvor konnten Eingabehilfen durch das
Anlegen von Matchcodes und Help-Views gestaltet werden, die aber deutlich weniger
Funktionalität besaßen. Beim Upgrade auf 4.x werden aus diesen Objekten Suchhilfen mit
gleichem Namen erzeugt (ggf. wird dem Namen noch ein Y oder Z vorangestellt). Die
Ursprungsobjekte verbleiben aber vorerst im System, auch wenn sie bedeutungslos geworden
sind.
Ein Help-View war vor Release 4.0 eine vollwertige Beschreibung einer Eingabehilfe, die
automatisch an seine Primärtabelle (und nur an diese) angebunden war. Aus jedem Help-View
wird eine elementare Suchhilfe erzeugt. In vielen Fällen kann dabei die Primärtabelle des Help-
Views als Selektionsmethode eingetragen werden, in den übrigen wird der Help-View verwendet.
Die erzeugte Suchhilfe wird an die Primärtabelle des Help-Views angebunden.
Aus einer Matchcode-Id wird eine elementare Suchhilfe erzeugt. Diese erhält als
Selektionsmethode den generierten DB-View (bei transparenter Id) bzw. die generierte
Pooltabelle (bei intransparenter Id) der Matchcode-Id. Im ersten Fall wird der generierte View
nunmehr als eigenständiges Objekt im ABAP Dictionary verwaltet. Im zweiten Fall hängt die
Pooltabelle weiterhin an ihrer Matchcode-Id, da die Matchcodetechnik zur Aktualisierung der
Daten in dieser Tabelle verwendet wird.
Aus einem Matchcode-Objekt wird eine Sammelsuchhilfe erzeugt. Die Anbindung von
Matchcodes an Eingabefelder erfolgte auf Dynproebene. Diese Anbindungen werden in
Anbindungen der erzeugten Sammelsuchhilfen an die entsprechenden Dynprofelder
umgewandelt.
Die folgende Abbildung illustriert die Migration für Help-Views und für transparente Matchcodes.

MC-Id DB-View
gehört zu generiert
Help-View A M_ABCDA
Release 3.x MC-Objekt
H_NAME
ABCD
Primärtab. T MC-Id DB-View
1 generiert M_ABCD1
Sekundärtab. 1 gehört zu
...

Tabelle
Release 4.x El. Suchhilfe
T
ABCDA DB-View
Suchhilfe-
El. Suchhilfe anbindung M_ABCDA
Selektions-
H_NAME methode
Sammelsuchh.
Selektions- Help-View ABCD
methode
oder H_NAME El. Suchhilfe DB-View
Suchhilfe-
Primärtab. T inklusionen ZABCD1 M_ABCD1

Sekundärtab. 1 Selektions-
methode
...

April 2001 213


BC - ABAP Dictionary SAP AG
Sperrobjekte

Sperrobjekte
Der gleichzeitige Zugriff mehrerer Benutzer auf denselben Datenbestand wird im SAP-System
durch einen Sperrmechanismus [Seite 222] synchronisiert. Das Setzen bzw. Freigeben von
Sperren erfolgt in der Programmierung von Dialogtransaktionen durch den Aufruf von
Funktionsbausteinen (siehe Funktionsbausteine für Sperranforderungen [Seite 218]), die
automatisch aus der Definition von Sperrobjekten im ABAP Dictionary generiert werden.

Struktur eines Sperrobjekts


In einem Sperrobjekt werden diejenigen Tabellen mit ihren Schlüsselfeldern angegeben, in
denen Datensätze mit einem Sperrauftrag gesperrt werden sollen. Bei der Tabellenauswahl wird
von einer Tabelle (Primärtabelle) ausgegangen. Zu dieser können weitere Tabellen
(Sekundärtabellen) über Fremdschlüsselbeziehungen (siehe auch Bedingungen an die
Fremdschlüssel [Seite 221]) hinzugenommen werden.

K1 D1 Tabelle T1

Fremdschlüssel

K2 K3 D2 Tabelle T2

Fremdschlüssel

K4 K5 K6 D3 D4 Tabelle T3

Sperrargumente
Das Sperrargument einer Tabelle im Sperrobjekt besteht aus den Schlüsselfeldern der Tabelle.
Die Sperrargumentfelder eines Sperrobjekts werden in den aus der Sperrobjektdefinition
generierten Funktionsbausteinen zum Setzen und Freigeben von Sperren als Eingabeparameter
verwendet. Beim Aufruf dieser Funktionsbausteine werden die zu sperrenden (bzw.
freizugebenden) Tabellenzeilen durch die Angabe bestimmter, unter Umständen auch
generischer Werte, dieser Felder spezifiziert. Die Sperrargumentfelder bestimmen also, welche
Teilmenge der Tabellenzeilen gesperrt werden soll.

214 April 2001


SAP AG BC - ABAP Dictionary
Sperrobjekte

Sperrargument T1 K1

Sperrargument T2 K2 K3

Sperrargument T3 K4 K5 K6

Im einfachsten Fall besteht ein Sperrobjekt aus genau einer Tabelle, und das Sperrargument der
Tabelle ist der Primärschlüssel dieser Tabelle. Es können auch mehrere Tabellen in ein
Sperrobjekt einfließen. Mit einer Sperranforderung kann dann nicht nur ein Satz aus einer
Tabelle, sondern ein ganzes logisches Objekt gesperrt werden. Ein solches logisches Objekt
kann z.B. ein Beleg sein, der aus einem Eintrag in einer Kopftabelle und N Einträgen in einer
Positionstabelle besteht.

Aufruf des Sperrfunktionsbausteins mit


K1=2 und K3=1 (K6 unspezifiziert)

Tabelle T1 Tabelle T2 Tabelle T3


K1 D1 K2 K3 D2 K4 K5 K6 D3 D4

1 ... 1 1 ... 1 1 A ... ...


2 ... 2 1 ... 2 1 A ... ...
3 ... 2 2 ... 2 1 B ... ...
... 3 1 ... 2 1 C ... ...
3 3 ... 2 3 A ... ...
... ... ...
2 3 B
3 1 A ... ...
...
Rote Einträge sind gesperrt!

Sperren können über entsprechende Schnittstellen auch von Programmen in anderen Systemen
gesetzt werden, wenn das Sperrobjekt mit RFC-Erlaubnis definiert wurde.
Für jede Tabelle im Sperrobjekt kann ein Sperrmodus [Seite 217] vergeben werden. Dieser
bestimmt, wie andere Benutzer auf einen gesperrten Satz der Tabelle zugreifen können.

April 2001 215


BC - ABAP Dictionary SAP AG
Sperrobjekte

Die Tabelle SFLIGHT im Flugmodell [Seite 312] enthält alle geplanten Flüge einer
Fluggesellschaft. Im Feld SEATSMAX ist die zur Verfügung stehende Anzahl von
Plätzen vermerkt. Im Feld SEATSOCC steht die Anzahl der bisher gebuchten Plätze.
Wird eine Buchung für einen Kunden vorgenommen (von einem Reisebüro oder
einem Verkaufsschalter der Fluggesellschaft), muß geprüft werden, ob noch
ausreichend freie Plätze vorhanden sind. Mit der Buchung wird dann auch die Zahl
der belegten Plätze hochgezählt.
Bei diesem Mechanismus muß sichergestellt werden, daß nicht zwei Verkaufsstellen
gleichzeitig eine Buchung vornehmen und ein Flug damit überbucht wird.
Dies kann durch Anlegen eines Sperrobjekts ESFLIGHT erreicht werden. In dieses
Sperrobjekt muß nur die Tabelle SFLIGHT aufgenommen werden. Beim Buchen
eines Fluges kann (mit den aus dem Sperrobjekt generierten Funktionsbausteinen)
dann der Flug gesperrt werden. Will eine andere Verkaufsstelle ebenfalls Plätze für
diesen Flug buchen, wird über die Sperre eine Überbuchung des Flugs verhindert.

Siehe auch:
Beispiel zu Sperrobjekten [Seite 228]
Sperrobjekt anlegen [Seite 225]
Sperrobjekte löschen [Seite 227]

216 April 2001


SAP AG BC - ABAP Dictionary
Sperrmodus

Sperrmodus
Der Sperrmodus regelt, ob mehrere Benutzer gleichzeitig auf Datensätze zugreifen können. Der
Sperrmodus kann für jede Tabelle im Sperrobjekt separat vergeben werden. Beim Setzen der
Sperre wird in der Sperrtabelle [Extern] des Systems pro Tabelle der entsprechende Sperreintrag
abgelegt.
Man unterscheidet die folgenden Arten, den Zugriff mehrerer Benutzer zu synchronisieren:
· Schreibsperre: Die gesperrten Daten können ausschließlich von einem Benutzer angezeigt
bzw. bearbeitet werden. Sowohl die Anforderung einer weiteren Schreibsperre als auch einer
Lesesperre werden abgewiesen.
· Lesesperre: Mehrere Benutzer können gleichzeitig im Anzeigemodus auf die gesperrten
Daten zugreifen. Die Anforderungen weiterer Lesesperren werden akzeptiert, auch wenn
diese von anderen Benutzern kommen. Eine Schreibsperre wird abgewiesen.
· Erweiterte Schreibsperre: Während Schreibsperren mehrfach von der gleichen Transaktion
angefordert und sukzessive wieder abgebaut werden können, kann eine Erweiterte
Schreibsperre auch von der gleichen Transaktion nur ein einziges Mal angefordert werden.
Jede weitere Anforderung einer Sperre wird abgewiesen.

Siehe auch:
Kollisionen von Sperren [Extern]

April 2001 217


BC - ABAP Dictionary SAP AG
Funktionsbausteine für Sperranforderungen

Funktionsbausteine für Sperranforderungen


Durch die Aktivierung eines Sperrobjekts im ABAP Dictionary werden automatisch
Funktionsbausteine für das Setzen (ENQUEUE_<Sperrobjektname>) und Freigeben
(DEQUEUE_<Sperrobjektname>) von Sperren angelegt.

Die generierten Funktionsbausteine werden automatisch zu Funktionsgruppen


zugeordnet. Sie sollten diese generierten Funktionsbausteine und deren Zuordnung
zur Funktionsgruppe nicht ändern, da die Funktionsbausteine bei jeder neuen
Aktivierung des Sperrobjekts wieder neu generiert werden.
Sie sollten die Funktionsgruppen, die die automatisch generierten
Funktionsbausteine enthalten, niemals transportieren! Die generierten
Funktionsbausteine eines Sperrobjekts können im Zielsystem in einer anderen
Funktionsgruppe liegen! Transportieren Sie immer die Sperrobjekte! Bei der
Aktivierung des Sperrobjekts im Zielsystem werden die Funktionsbausteine neu
generiert und korrekt zu Funktionsgruppen zugeordnet.

Parameter der Funktionsbausteine


Feldnamen des Sperrobjekts
Hier müssen die zu sperrenden Schlüssel übergeben werden.
Zu jedem Sperrfeld <Feld> existiert ein weiterer Parameter X_<Feld>, der das Sperrverhalten bei
Übergabe des Initialwertes bestimmt. Werden <Feld> und X_<Feld> mit dem Initialwert belegt,
erfolgt bzgl. <Feld> eine generische Sperre. Wird <Feld> mit dem Initialwert und X_<Feld> mit X
belegt, erfolgt die Sperre exakt mit dem Initialwert von <Feld>.

Parameter für die Sperrübergabe an den Verbucher


Eine Sperre wird in der Regel am Ende der Transaktion oder beim Aufruf des entsprechenden
DEQUEUE-Funktionsbausteins aufgehoben. Falls die Transaktion Verbuchungsroutinen
aufgerufen hat, gilt dies jedoch nicht mehr. In diesem Fall muß das Aufheben von Sperren über
einen Parameter gesteuert werden.
Der Parameter _SCOPE steuert, wie die Sperre bzw. Sperrfreigabe an den Verbucher
weitergegeben wird (siehe Das Eigentümerkonzept von Sperren [Extern]). Es gibt folgende
Möglichkeiten:
· _SCOPE = 1: Sperren bzw. Sperrfreigaben werden nicht an den Verbucher weitergegeben.
Die Sperre wird bei Beendigung der Transaktion aufgehoben.
· _SCOPE = 2: Die Sperre bzw. Sperrfreigabe wird an den Verbucher weitergegeben. Die
Rücknahme der Sperre erfolgt durch den Verbucher. Der Dialog, aus dem heraus die Sperre
gesetzt wurde, hat keinen Einfluß mehr auf das Sperrverhalten. Dies ist die
Standardeinstellung für den ENQUEUE-Funktionsbaustein.
· _SCOPE = 3: Die Sperre bzw. Sperrfreigabe wird zusätzlich an den Verbucher
weitergegeben. Die Sperre muß sowohl im Dialog als auch in der Verbuchung wieder
freigegeben werden. Dies ist die Standardeinstellung für den DEQUEUE-Funktionsbaustein.

218 April 2001


SAP AG BC - ABAP Dictionary
Funktionsbausteine für Sperranforderungen

Parameter für den Sperrmodus


Für jede Basistabelle TAB des Sperrobjekts existiert ein Parameter MODE_<TAB>. Durch diesen
Parameter kann der Sperrmodus [Seite 217] für diese Basistabelle dynamisch gesetzt werden.
Zulässige Werte für diesen Parameter sind S (Lesesperre), E (Schreibsperre) und X (Erweiterte
Schreibsperre).
Der beim Anlegen des Sperrobjekts für die Tabellen angegebene Sperrmodus ist der Default-
Wert für diesen Parameter. Dieser Default-Wert kann aber beim Aufruf des Funktionsbausteins
beliebig übersteuert werden.
Soll eine mit einem Sperrmodus gesetzte Sperre durch Aufruf des DEQUEUE-
Funktionsbausteins wieder aufgehoben werden, so muß dieser Aufruf mit dem gleichen Wert für
den Parameter MODE_<TAB> erfolgen.

Steuerung des Abschickens der Sperre


Ob die Anforderung einer Sperre oder das Aufheben einer Sperre direkt erfolgt oder vorerst nur
in den lokalen Sperrcontainer [Seite 224] geschrieben wird, kann über den Parameter
_COLLECT gesteuert werden. Dieser Parameter kann mit folgenden Werten belegt werden:
· Initialwert: Die Sperranforderung bzw. die Sperrfreigabe wird direkt an den Sperrserver
abgeschickt.
· X : Die Sperranforderung bzw. Sperrfreigabe wird in den lokalen Sperrcontainer gestellt. Die
in diesem Sperrcontainer aufgesammelten Sperranforderungen bzw. Sperrfreigaben können
dann zu einem späteren Zeitpunkt durch Aufruf des Funktionsbausteins FLUSH_ENQUEUE
gemeinsam an den Sperrserver abgeschickt werden.

Verhalten bei Sperrkonflikten (nur ENQUEUE)


Der ENQUEUE-Funktionsbaustein besitzt noch den Parameter _WAIT. Dieser Parameter
bestimmt das Sperrverhalten beim Auftreten eines Sperrkonflikts [Extern].
Es gibt folgende Möglichkeiten:
· Initialwert: Schlägt ein Sperrversuch fehl, weil bereits eine überschneidende Sperre gesetzt
ist, wird die Ausnahme FOREIGN_LOCK ausgelöst.
· X : Schlägt ein Sperrversuch fehl, weil bereits eine überschneidende Sperre gesetzt ist, wird
der Sperrversuch nach einer Wartezeit erneut unternommen. Nur wenn ein bestimmtes
Zeitlimit seit dem ersten Sperrversuch überschritten wurde, wird die Ausnahme
FOREIGN_LOCK ausgelöst. Die Wartezeit und das Zeitlimit werden durch Profile-Parameter
bestimmt.

Steuerung des Löschens des Sperreintrags (nur DEQUEUE)


Der DEQUEUE-Funktionsbaustein besitzt noch den Parameter _SYNCHRON.
Wenn X übergeben wird, dann wartet die DEQUEUE-Funktion, bis der Eintrag tatsächlich aus
der Sperrtabelle gelöscht wurde. Andernfalls erfolgt das Löschen asynchron, d.h. wenn sofort
nach dem Entsperren die Sperrtabelle gelesen wird, kann unter Umständen der Sperreintrag
noch vorgefunden werden.

Ausnahmen des ENQUEUE-Funktionsbausteins


· FOREIGN_LOCK: Es existiert bereits eine überschneidende Sperre. Der Benutzer, der die
Sperre hält, kann der Systemvariablen SY-MSGV1 entnommen werden.

April 2001 219


BC - ABAP Dictionary SAP AG
Funktionsbausteine für Sperranforderungen

· SYSTEM_FAILURE: Diese Ausnahme wird ausgelöst, wenn der Sperrserver meldet, daß ein
Problem beim Setzen der Sperre aufgetreten ist. Die Sperre konnte in diesem Fall nicht
gesetzt werden.
Falls die Ausnahmen vom Aufrufer nicht selbst behandelt werden, werden zu allen Ausnahmen
entsprechende Nachrichten gesendet.

Bezugsfelder bei RFC-fähigen Sperrobjekten


Ein RFC-fähiger Funktionsbaustein muß vollständig typisiert sein. Die Parameter der generierten
Funktionsbausteine werden deshalb bei RFC-fähigen Sperrobjekten mit den folgenden
Bezugsfeldern versehen:
Parameter Bezugsfelder
X_<Feldname> DDENQ_LIKE-XPARFLAG
_WAIT DDENQ_LIKE-WAITFLAG
_SCOPE DDENQ_LIKE-SCOPE
_SYNCHRON DDENQ_LIKE-SYNCHRON

Siehe auch:
Beispiel zu Sperrobjekten [Seite 228]

220 April 2001


SAP AG BC - ABAP Dictionary
Bedingungen an die Fremdschlüssel

Bedingungen an die Fremdschlüssel


Alle Tabellen, die in ein Sperrobjekt aufgenommen werden, müssen über Fremdschlüssel [Seite
20] miteinander verbunden sein. Es existieren eine Reihe von Einschränkungen an die
zulässigen Verbindungen:
1. Die Tabellen des Sperrobjekts müssen bzgl. der Fremdschlüsselbeziehungen einen Baum
bilden. Die Tabellen bilden die Knoten des Baums. Die Kanten des Baums haben dabei die
Bedeutung ist Prüftabelle zu.
2. Die Fremdschlüsselfelder müssen Schlüsselfelder der Fremdschlüsseltabelle sein.
3. Kein Feld aus einer der Basistabellen darf bzgl. der zwischen den Basistabellen des
Sperrobjekts definierten Fremdschlüsselbeziehungen gegen mehr als ein anderes Feld
geprüft werden. Ein Feld darf also weder zweimal als Fremdschlüsselfeld in einer Beziehung
vorkommen, noch in zwei verschiedenen Fremdschlüsselbeziehungen gegen zwei
unterschiedliche Felder geprüft werden.
4. Bei strukturübergreifenden Fremdschlüsseln [Seite 30] ist eine Einschränkung zu beachten.
Wird ein Feld einem außerhalb der Prüftabelle liegenden Feld zugeordnet, so muß die
Tabelle aus der dieses Feld stammt in einem Teilbaum liegen, der die Prüftabelle dieser
Fremdschlüsselbeziehung als Wurzel hat.
Diese Bedingungen sind auf jeden Fall erfüllt, wenn der Schlüssel der Fremdschlüsseltabelle
stets eine Erweiterung des Schlüssels der Prüftabelle ist.
Die Bedingungen 2, 3 und 4 sind unbedeutend, wenn das jeweilige Fremdschlüsselfeld aus der
Zuordnung zu den Schlüsselfeldern der Prüftabelle herausgenommen wurde, indem es als
generisch gekennzeichnet oder als konstant gesetzt wurde [Seite 23]. Dies gilt auch bei
strukturübergreifenden Fremdschlüsseln, falls das Fremdschlüsselfeld auf eine nicht im
Sperrobjekt enthaltene Tabelle zeigt.

April 2001 221


BC - ABAP Dictionary SAP AG
Sperrmechanismus

Sperrmechanismus
Der Zugriff mehrerer Programme auf dieselben Daten kann über einen logischen
Sperrmechanismus synchronisiert werden. Dieser Sperrmechanismus erfüllt im wesentlichen
zwei Funktionen:
· Ein Programm kann anderen Programmen mitteilen, welche Datensätze es gerade ändert
oder liest.
· Ein Programm kann sich davor schützen, Daten zu lesen, die gerade von einem anderen
Programm verändert werden.
Die zu sperrenden Datensätze einer Tabelle werden durch eine logische Bedingung festgelegt.
Beim Setzen einer Sperre wird diese logische Bedingung in eine Sperrtabelle [Extern]
eingetragen. Dieser Eintrag bleibt solange bestehen, bis er vom Programm wieder aufgehoben
wird oder das Programm beendet wird. Bei Programmende werden also alle von einem
Programm gehaltenen Sperren aufgehoben.

Fordert
Sperre an
Programm
1

Sperre Enqueue
Zugriff 3
gesetzt Server
auf
Daten 4 Trägt
2 Sperre
ein
Sperrtabelle

Datenbank

Beim Zugriff auf Datensätze können die gerade von anderen Programmen bearbeiteten Sätze
anhand des Eintrags in der Sperrtabelle identifiziert werden. Ein solcher Eintrag für die Sperre
muß aus der Angabe einer Anzahl voll spezifizierter Schlüsselfelder bestehen, d.h. für das
Schlüsselfeld wird entweder ein Wert übergeben oder die Sperre erfolgt generisch bzgl. dieses
Feldes.
Um Sperren zu setzen, muß im ABAP Dictionary ein Sperrobjekt [Seite 214] definiert werden.
Beim Aktivieren dieses Sperrobjekts werden zwei Funktionsbausteine (siehe Funktionsbausteine
für Sperranforderungen [Seite 218]) mit den Namen ENQUEUE_<Sperrobjektname> und
DEQUEUE_<Sperrobjektname> generiert.
Sollen Datensätze gesperrt werden, so muß der Funktionsbaustein
ENQUEUE_<Sperrobjektname> aufgerufen werden. Beim Aufruf werden ihm für alle im
Sperrobjekt enthaltenen Tabellen die Werte der Schlüsselfelder übergeben, die die zu
sperrenden Sätze spezifizieren. Falls nicht für alle Schlüsselfelder ein Wert übergeben wird,
erfolgt eine generische Sperre. Der Funktionsbaustein schreibt den entsprechenden Sperreintrag
(siehe Beispiel zu Sperrobjekten [Seite 228]). Fordert ein anderes Programm ebenfalls eine
Sperre an, wird dies je nach dem Sperrmodus [Seite 217] akzeptiert oder zurückgewiesen (siehe
Kollisionen von Sperren [Extern]). Das Programm kann dann auf diese Situation reagieren.
Gesperrte Datensätze können durch Aufruf des Funktionsbausteins
DEQUEUE_<Sperrobjektname> wieder entsperrt werden. Hierzu müssen diesem

222 April 2001


SAP AG BC - ABAP Dictionary
Sperrmechanismus

Funktionsbaustein die Schlüsselwerte und der Sperrmodus, die zum Setzen der Sperre
verwendet wurden, übergeben werden.
ABAP Programm

call function 'ENQUEUE_E_TAB'
exporting Alle Sätze aus
mode_tab = 'E' TAB mit K1=‘1’
K1 = '1' sind gesperrt
K2 =''

Sperrtabelle

Table TAB TAB E 1 *
K1 K2 D1 D2 …

Key fields

Dieses Sperrverfahren setzt natürlich voraus, daß sich alle beteiligten Programme kooperativ
verhalten. Falls ein Programm Daten liest oder verändert, ohne sie vorher gesperrt zu haben,
kann es zu Inkonsistenzen kommen. Die Datensätze sind also beim Setzen einer Sperre nur
dann gegen Änderungen eines anderen Programms geschützt, falls dieses vor dem Zugriff auf
die Daten ebenfalls eine Sperre anfordert!
Es besteht auch die Möglichkeit, Sperranforderungen bzw. Sperrfreigaben nicht direkt in die
Sperrtabelle zu schreiben, sondern diese zunächst in einem lokalen Sperrcontainer [Seite 224]
aufzusammeln. Diese aufgesammelten Sperren können dann zu einem späteren Zeitpunkt
gemeinsam abgeschickt werden. Ob eine Sperranforderung bzw. Sperrfreigabe direkt
abgeschickt wird, kann über einen Parameter des jeweiligen Funktionsbausteins gesteuert
werden.
Weitergehende Informationen zum Sperrkonzept und zur Funktionsweise der Sperrverwaltung
finden Sie in der Dokumentation Das R/3 Sperrkonzept [Extern].

April 2001 223


BC - ABAP Dictionary SAP AG
Lokaler Sperrcontainer

Lokaler Sperrcontainer
Sperranforderungen bzw. Sperrfreigaben können in einem lokalen Sperrcontainer aufgesammelt
und dann gemeinsam durch Aufruf des Funktionsbausteins FLUSH_ENQUEUE abgeschickt
werden.
Dies hat gegenüber dem direkten Abschicken der Sperraufträge zwei Vorteile:
· Durch das gemeinsame Abschicken der Sperraufträge wird die Kommunikation mit dem
Sperrserver minimiert.
· Die gesammelten Sperraufträge werden gemeinsam behandelt, d.h. nur dann in die
Sperrtabelle geschrieben, wenn dies für alle Einzelaufträge möglich ist.
Falls alle gesammelten Sperraufträge ausgeführt werden können, wird der lokale Sperrcontainer
geleert, andernfalls bleibt sein Inhalt unverändert.

ABAP Programm

... Lokaler Sperrcontainer


Sammelt alle abgesetzten
CALL FUNCTION ‘ENQUEUE_…’. Sperraufträge
...
...
CALL FUNCTION ‘ENQUEUE_…’. ENQUEUE ...
...
ENQUEUE ...
DEQUEUE ...
CALL FUNCTION ‘DEQUEUE_…’. ...
...

CALL FUNCTION ‘FLUSH_ENQUEUE’.


...

FLUSH_ENQUEUE schickt alle


aufgesammelten Sperraufträge
Sperrserver an den Sperrserver

Der lokale Sperrcontainer kann durch Aufruf des Funktionsbausteins RESET_ENQUEUE geleert
werden. Damit werden alle aufgesammelten Sperraufträge bzw. Sperrfreigaben gelöscht. Bei
Beendigung des zugehörigen internen Modus wird lokale Sperrcontainer automatisch geleert.
Im lokalen Sperrcontainer werden Sperranforderungen und Sperrfreigaben gemeinsam verwaltet.
Beim Abschicken der aufgesammelten Aufträge werden dann zunächst alle Sperranforderungen
abgeschickt. Falls alle angeforderten Sperren gewährt werden können, werden die
Sperrfreigaben abgeschickt.
Es findet also kein Abgleich von Sperranforderungen und Sperrfreigaben im lokalen
Sperrcontainer statt. Auch die Reihenfolge, in der die einzelnen Aufträge in den lokalen
Sperrcontainer geschrieben werden, spielt keine Rolle.

224 April 2001


SAP AG BC - ABAP Dictionary
Sperrobjekt anlegen

Sperrobjekt anlegen
Vorgehensweise
1. Markieren Sie im Einstiegsbild des ABAP Dictionary den Objekttyp Sperrobjekt, geben Sie
einen Objektnamen an und wählen Sie Anlegen. Der Name eines Sperrobjekts sollte mit E
(Enqueue) beginnen.
Sie verzweigen damit in das Pflegebild für Sperrobjekte.
2. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Sie können später z.B. mit dem Infosystem über diesen Kurztext nach dem Sperrobjekt
suchen.
3. Tragen Sie den Namen der Primärtabelle des Sperrobjekts ein.
Alle anderen in das Sperrobjekt aufgenommenen Tabellen müssen mit der Primärtabelle
über Fremdschlüssel [Seite 20] verbunden sein. Es bestehen hier zusätzlich noch einige
Einschränkungen bzgl. der zulässigen Fremdschlüsselbeziehungen [Seite 221].
4. Wählen Sie den Sperrmodus [Seite 217] der Primärtabelle im darunterstehenden Feld.
Der Sperrmodus dient als Default für die entsprechenden Parameter der aus dem
Sperrobjekt generierten Funktionsbausteine [Seite 218].
5. Wählen Sie Hinzufügen, wenn Sie über das Sperrobjekt Sätze in mehreren Tabellen sperren
wollen.
Es erscheint eine Liste aller mit der Primärtabelle über zulässige Fremdschlüssel [Seite
221] verbundenen Tabellen. Wählen Sie die entsprechende Tabelle durch Doppelklick
aus. Als Sperrmodus wird der Sperrmodus der Primärtabelle übernommen. Sie können
diese Einstellung beliebig ändern, d.h. der Sperrmodus kann pro Tabelle vergeben
werden.
Sie können auf die gleiche Weise eine mit der gerade aufgenommenen Sekundärtabelle
über Fremdschlüssel verbundene Tabelle hinzufügen. Stellen Sie dazu den Cursor auf
den Namen der Sekundärtabelle und wählen Sie Hinzufügen.

Wird einer Tabelle kein Sperrmodus zugeordnet, so werden für die Einträge dieser
Tabelle beim Aufruf der generierten Funktionsbausteine keine Sperren gesetzt! Es
ist sinnvoll keinen Sperrmodus zuzuordnen, falls eine Sekundärtabelle nur
aufgenommen wurde, um zwischen Primärtabelle und einer weiteren
Sekundärtabelle einen Pfad über Fremdschlüssel zu etablieren.
6. Sichern Sie Ihre Eingaben.
Es erscheint ein Dialogfenster, in dem Sie das Sperrobjekt einer Entwicklungsklasse
zuordnen müssen.
7. Auf der Registerkarte Sperrparameter können Sie (optional) Sperrparameter (siehe
Sperrobjekte [Seite 214]) aus der Generierung der Funktionsbausteine ausschließen. Das ist
beispielsweise sinnvoll, wenn bzgl. eines Parameters immer generisch gesperrt werden soll.

April 2001 225


BC - ABAP Dictionary SAP AG
Sperrobjekt anlegen

Entfernen Sie hierzu einfach die Markierung des Kennzeichens Gew. für den Parameter.
In den generierten Funktionsbausteinen wird der Parameter dann nicht berücksichtigt.
Eine Sperre bzgl. dieses Parameters erfolgt deshalb stets generisch.
Ein Sperrparameter hat in der Regel den Namen des zugehörigen Tabellenfeldes. Falls
zwei gleichnamige Felder aus verschiedenen Tabellen in das Sperrobjekt als
Sperrparameter aufgenommen wurden, müssen Sie im Feld Sperrparameter für eines
der Felder einen neuen Namen wählen.
8. Auf der Registerkarte Eigenschaften können Sie einstellen, ob die aus dem Sperrobjekt
generierten Funktionsbausteine RFC-fähig sein sollen.
Falls Sie das Kennzeichen RFC erlauben markieren, können die generierten
Funktionsbausteine per Remote Function Calls aus einem anderen System heraus
aufgerufen werden.
Erlauben Sie nachträglich Remote Function Calls bei einem schon bestehenden
Sperrobjekt, so müssen Sie sicherstellen, daß der Aufruf der generierten
Funktionsbausteine aus einem ABAP Programm heraus mit typgerechten Parametern
erfolgt! Überprüfen Sie deshalb alle Programme, die die zugehörigen Funktionsbausteine
benutzen, bevor Sie das Sperrobjekt mit der neuen Option aktivieren!
9. Wählen Sie .

Ergebnis
Bei der Aktivierung des Sperrobjekts werden aus dessen Definition die beiden
Funktionsbausteine ENQUEUE_<Sperrobjektname> und DEQUEUE_<Sperrobjektname> zum
Setzen und Freigeben von Sperren generiert.
Informationen über den Ablauf der Aktivierung können Sie dem Aktivierungsprotokoll entnehmen,
das Sie sich über Hilfsmittel ® Aktivierungsprotokoll anzeigen lassen können. Falls bei der
Aktivierung Fehler auftraten, wird das Aktivierungsprotokoll direkt angezeigt.

226 April 2001


SAP AG BC - ABAP Dictionary
Sperrobjekte löschen

Sperrobjekte löschen
Voraussetzungen
Beim Löschen eines Sperrobjekts werden die beim Aktivieren des Sperrobjekts generierten
Funktionsbausteine [Seite 218] automatisch mitgelöscht. Beachten Sie, daß diese generierten
Funktionsbausteine möglicherweise noch in Programmen oder Klassen verwendet werden.
Ermitteln Sie deshalb vor dem Löschen eines Sperrobjekts alle Programme oder Klassen, die
diese Funktionsbausteine enthalten, und entfernen Sie die Aufrufe der Funktionsbausteine.

Vorgehensweise
1. Markieren Sie im ABAP Dictionary Einstiegsbild den Objekttyp Sperrobjekt und geben Sie
den Namen des Sperrobjekts ein.
Wählen Sie , um alle Programme oder Klassen zu ermitteln, die das Sperrobjekt noch
verwenden. Entfernen Sie in den gefundenen Objekten die Aufrufe der Sperrbausteine.
2. Wählen Sie dann .
Es erscheint ein Dialogfenster, in dem Sie den Löschauftrag nochmals bestätigen
müssen. Falls die zum Sperrobjekt gehörenden Funktionsbausteine noch in
Programmen oder Klassen verwendet werden, erscheint eine entsprechende Warnung.
Sie müssen die betroffenen Programme oder Klassen dann vor dem Löschen des
Sperrobjekts anpassen.
3. Bestätigen Sie den Löschauftrag.

Ergebnis
Das Sperrobjekt wird zusammen mit den aus ihm generierten Funktionsbausteinen gelöscht.

April 2001 227


BC - ABAP Dictionary SAP AG
Beispiel zu Sperrobjekten

Beispiel zu Sperrobjekten
Bei einer Flugbuchung (siehe Flugmodell [Seite 312]) müssen Überbuchungen eines Fluges
verhindert werden. Deshalb muß der betreffende Flug für die Dauer der Bearbeitung zusammen
mit allen für diesen Flug bestehenden Buchungen gesperrt werden. Dies kann über ein
Sperrobjekt E_BOOKING erreicht werden.
Die Flüge sind in der Tabelle SFLIGHT verzeichnet, die Buchungen zu den Flügen in der Tabelle
SBOOK. Beide Tabellen sind über einen Fremdschlüssel verbunden. Das Sperrobjekt
E_BOOKING muß also die Tabelle SFLIGHT als Primärtabelle und als weitere Tabelle die
Tabelle SBOOK enthalten.

Primärschlüssel

Fremdschlüsseltabelle SBOOK

MANDT CARRID CONNID FLDATE BOOKID CUSTOMID ...

Fremdschlüsselzuordnung

Prüftabelle SFLIGHT

MANDT CARRID CONNID FLDATE ...

Primärschlüssel

Das Sperrargument der Tabelle SFLIGHT besteht damit aus den Feldern MANDT, CARRID,
CONNID, FLDATE. Das Sperrargument der Tabelle SBOOK besteht aus den Feldern MANDT,
CARRID, CONNID, FLDATE, BOOKID und CUSTOMID.
Als Sperrmodus wird Schreibsperre gewählt, d.h. die gesperrten Daten können ausschließlich
von einem Benutzer angezeigt und bearbeitet werden.
Bei der Aktivierung des Sperrobjekts werden aus seiner Definition die folgenden
Funktionsbausteine generiert:
· ENQUEUE_ E_BOOKING (Setzen von Sperren)
· DEQUEUE_ E_BOOKING (Freigeben von Sperren)
Diese Funktionsbausteine können nun in ABAP Programmen eingebunden werden.
Das folgende Beispiel zeigt einen Aufruf des Funktionsbausteins ENQUEUE_ E_BOOKING.

228 April 2001


SAP AG BC - ABAP Dictionary
Beispiel zu Sperrobjekten

CALL FUNCTION 'ENQUEUE_E_BOOKING'


exporting
mode_sflight = 'E'
Sperrmodi
mode_sbook = 'E'
mandt = sy-mandt
carrid = 'LH '
connid = 400
Sperrparameter
fldate = '19981129'
bookid = 0
customid = 0
x_carrid = ' '
x_connid = ' '
Sperrverhalten bei
x_fldate = ' ' Übergabe des Initialwertes
x_bookid = ' '
x_customid = ' '
_scope = '2' Sperrübergabe an den Verbucher
_wait = ’X' Verhalten bei Konflikten
_collect = ' ' Sperrcontainer
exceptions
foreign_lock = 1
system_failure = 2
others = 3.

Durch diesen Aufruf wird der Flug LH 400 am 29.11.1998 in der Tabelle SFLIGHT zusammen mit
allen für diesen Flug in der Tabelle SBOOK eingetragenen Buchungen (da für BOOKID und
CUSTOMID der Initialwert 0 mitgegeben wird) exklusiv (Sperrmodus E) gesperrt. Die Sperre wird
an den Verbucher weitergegeben (_SCOPE = '2'). Bei einem Sperrkonflikt wird nach einiger Zeit
erneut versucht, die Sperre abzusetzen (_WAIT = 'X').
Die gesetzten Sperren können mit dem folgenden Aufruf des Funktionsbausteins
DEQUEUE_E_BOOKING wieder freigegeben werden.

April 2001 229


BC - ABAP Dictionary SAP AG
Beispiel zu Sperrobjekten

CALL FUNCTION 'DEQUEUE_E_BOOKING'


exporting
mode_sflight = 'E'
Sperrmodi
mode_sbook = 'E'
mandt = sy-mandt
carrid = 'LH'
connid = 400
Sperrparameter
fldate = ’19981129'
bookid = 0
customid = 0
x_carrid = ' '
x_connid = ' '
Sperrverhalten bei
x_fldate = ' '
Übergabe des Initialwertes
x_bookid = ' '
x_customid = ' '
_scope = '3' Sperrübergabe an den Verbucher
_synchron = ' ' Sperreintrag synchron löschen
_collect = ' '. Sperrcontainer

Die bestehenden exklusiven Sperreinträge für den Flug LH 400 in der Tabelle SFLIGHT und die
Buchungen zu diesem Flug in der Tabelle SBOOK werden gelöscht. Der Auftrag zum Löschen
der Sperreinträge wird an den Verbucher weitergegeben (_SCOPE = '3').

Siehe auch:
Funktionsbausteine für Sperranforderungen [Seite 218]

230 April 2001


SAP AG BC - ABAP Dictionary
Datenbank-Strukturen anpassen

Datenbank-Strukturen anpassen
Damit ein korrekter Zugriff von ABAP Programmen auf Datenbanktabellen möglich ist, muß das
Laufzeitobjekt der Tabelle [Seite 245] zur Struktur der Tabelle auf der Datenbank passen. Bei
einer Änderung der Tabelle im ABAP Dictionary muß somit bei der Aktivierung (bei der das
Laufzeitobjekt neu geschrieben wird) sichergestellt werden, daß die Datenbank-Struktur der
Tabelle an die Änderung im ABAP Dictionary angepaßt wird.

überarbeitete Version

Feld 1 Feld 2 Feld 3 Feld 1 Feld 2 Feld 3 Feld 4

aktive Version

Neues Feld muß beim


Aktivieren auf der DB
angehängt werden

Tabelle ist in der


aktiven Version auf
der DB vorhanden

Feld 1 Feld 2 Feld 3

Datenbank

Bei einigen Änderungen im ABAP Dictionary ist keine Änderung der Datenbank-Struktur
notwendig. Zum Beispiel muß die Datenbanktabelle nicht an eine Änderung der Feldreihenfolge
(außer bei Schlüsselfeldern) im ABAP Dictionary angepaßt werden, da die Feldreihenfolge im
ABAP Dictionary nicht mit der Feldreihenfolge auf der Datenbank übereinstimmen muß. In
diesem Fall wird einfach die geänderte Struktur im ABAP Dictionary aktiviert und die Datenbank-
Struktur bleibt unverändert.
Die Anpassung der Datenbankstruktur einer Tabelle an ihre veränderte ABAP Dictionary
Definition kann auf drei Arten erfolgen:
· Durch Löschen und Neuanlegen der Datenbanktabelle. Die auf der Datenbank vorhandene
Tabelle wird gelöscht. Danach wird die überarbeitete Version der Tabelle im ABAP Dictionary
aktiviert und auf der Datenbank erneut angelegt. In der Tabelle vorhandene Daten gehen
hierbei verloren.
· Durch Änderung des Datenbank-Katalogs (ALTER TABLE). Es wird lediglich die Definition
der Tabelle auf der Datenbank geändert. In der Tabelle vorhandene Daten bleiben erhalten.
Indizes zur Tabelle müssen aber unter Umständen neu aufgebaut werden.
· Durch eine Umsetzung der Tabelle (siehe Ablauf einer Umsetzung [Seite 233]). Die
Datenbanktabelle wird umbenannt und dient als temporärer Zwischenspeicher für die Daten.
Dann wird die überarbeitete Version der Tabelle im ABAP Dictionary aktiviert und auf der

April 2001 231


BC - ABAP Dictionary SAP AG
Datenbank-Strukturen anpassen

Datenbank angelegt. Danach werden die Daten aus dem temporären Zwischenspeicher in
die neue Datenbanktabelle zurückgeladen (mit MOVE-CORRESPONDING) und die Indizes
zur Tabelle werden neu aufgebaut.
Welche dieser Aktionen vom System in einem konkreten Fall angewandt wird, hängt ab von
· der Art der Strukturänderung
· dem verwendeten Datenbank-System
· der Frage, ob schon Daten in der Tabelle vorhanden sind
Enthält die Tabelle keine Daten, so wird die vorhandene Tabelle auf der Datenbank gelöscht und
neu angelegt. Sind Daten in der Tabelle vorhanden, so wird versucht die Strukturänderung durch
ein ALTER TABLE durchzuführen. Falls das verwendete Datenbanksystem die Strukturänderung
nicht durch ein ALTER TABLE abbilden kann, wird eine Umsetzung durchgeführt.
Eine Umsetzung ist in der Regel bzgl. der benötigten Resourcen die aufwendigste Art der
Strukturanpassung. Aber auch bei Strukturänderungen durch Änderungen des Datenbank-
Katalogs können bei einigen Datenbank-Systemen aufwendige interne Reorganisationen der
Daten ablaufen. Details über die in der Datenbank ablaufenden Prozesse bei
Strukturänderungen durch ALTER TABLE finden Sie in der Dokumentation Ihres Datenbank-
Systems.

Eine Anpassung der Datenbankstruktur sollte in der Regel nicht während des
Produktivbetriebs durchgeführt werden. Zumindest sollten alle Applikationen, die auf
die Tabelle zugreifen, während der Strukturanpassung deaktiviert sein. Da der
Datenbestand einer Tabelle während der Strukturanpassung (insbesondere bei
Umsetzungen) nicht konsistent ist, können sich Programme beim Zugriff auf diesen
Datenbestand fehlerhaft verhalten!

Siehe auch:
Probleme bei Umsetzungen [Seite 238]

232 April 2001


SAP AG BC - ABAP Dictionary
Ablauf einer Umsetzung

Ablauf einer Umsetzung


Das folgende Beispiel soll die bei einer Umsetzung notwendigen Schritte verdeutlichen.

Ausgangssituation
Die Tabelle TAB wurde im ABAP Dictionary verändert. Dabei wurde die Länge eines Feldes
(Feld 3) von 60 auf 30 Stellen gekürzt. Im ABAP Dictionary ist also eine aktive (in der das Feld
eine Länge von 60 Stellen besitzt) und eine überarbeitete Version der Tabelle (in der das Feld
nur noch 30 Stellen besitzt) vorhanden.
Auf der Datenbank ist die Tabelle mit der aktiven Version angelegt, d.h. auf der Datenbank hat
Feld 3 momentan 60 Stellen. Für die Tabelle sind im ABAP Dictionary zwei Sekundärindizes
definiert, die auf der Datenbank ebenfalls angelegt wurden. Die Tabelle enthält bereits Daten.
Das Verkürzen eines Feldes führt zu einer Umsetzung der Tabelle. Diese Umsetzung wird in
einer Abfolge von 7 Schritten durchgeführt.

Schritt 1: Sperre setzen


Die Tabelle wird gegen weitere Strukturänderungen gesperrt. Dieser Sperrmechanismus soll
verhindern, daß eine neue Strukturänderung durchgeführt wird, solange die Umsetzung noch
nicht korrekt beendet ist. Bricht die Umsetzung nach Ausführung von Schritt 2 und vor
Beendigung von Schritt 4 ab, könnte eine erneute Strukturänderung (z.B. durch einen erneuten
Umsetzversuch) zu Datenverlust führen.

Schritt 2: Tabelle umbenennen


Die auf der Datenbank vorhandene Tabelle wird umbenannt. Alle Indizes zur Tabelle werden
dabei gelöscht. Der Name der neuen Tabelle setzt sich aus dem Präfix QCM und dem
Tabellennamen zusammen. Der Name der temporären Tabelle zur Tabelle TAB ist also
QCMTAB.

April 2001 233


BC - ABAP Dictionary SAP AG
Ablauf einer Umsetzung

Feld 1 Feld 2 Feld 3


NUMC,6 CHAR, 8 CHAR, 60

aktive Version von TAB TAB gesperrt


11
Feld 1 Feld 2 Feld 3
NUMC,6 CHAR, 8 CHAR, 30

überarbeitete Version von TAB TAB wird gesperrt

Umbenennen von Löschen der


TAB in QCMTAB Indizes
QCMTAB TAB
Feld 1 Feld 2 Feld 3 Feld 1 Feld 2 Feld 3 22
NUMC, 6 CHAR, 8 CHAR, 60 NUMC, 6 CHAR, 8 CHAR, 60 TAB_______1
22
000100 1111A00 Text1... 000100 1111A00
000100 Text1... TAB_______A
001200 0222B10 Text2 ... 001200 0222B10
001200 Text2 ...
003000 0030B20 Text3 ... 003000 0030B20
003000 Text3 ...

Schritt 3: Tabelle aktivieren


Die überarbeitete Version der Tabelle wird im ABAP Dictionary aktiviert. Dabei wird die Tabelle
mit ihrer neuen Struktur und mit dem Primärindex auf der Datenbank angelegt. Die Struktur der
Datenbanktabelle entspricht also nach diesem Schritt der Struktur im ABAP Dictionary. Die
Datenbanktabelle enthält aber noch keine Daten.
Zusätzlich wird eine Datenbanksperre für die umzusetzende Tabelle gesetzt. Während der
Umsetzung sind damit keine schreibenden Zugriffe von Anwendungsprogrammen auf die
umzusetzende Tabelle möglich.

234 April 2001


SAP AG BC - ABAP Dictionary
Ablauf einer Umsetzung

Feld 1 Feld 2 Feld 3


NUMC,6 CHAR, 8 CHAR, 60

aktive Version von TAB


TAB gesperrt
Feld 1 Feld 2 Feld 3
NUMC,6 CHAR, 8 CHAR, 30

überarbeitete Version von TAB


33
33 Aktivieren im
ABAP Dictionary

TAB wird auf DB neu angelegt

Feld 1 Feld 2 Feld 3 Feld 1 Feld 2 Feld 3


NUMC, 6 CHAR, 8 CHAR, 60 NUMC, 6 CHAR, 8 CHAR, 30
QCMTAB TAB
000100 1111A00 Text1...
001200 0222B10 Text2 ...
003000 0030B20 Text3 ...

Schritt 4: Daten zurückladen


Die Daten werden aus der temporären Tabelle (QCM-Tabelle) in die neue Tabelle zurückgeladen
(mit dem ABAP Befehl MOVE-CORRESPONDING). Die Daten sind nach diesem Schritt in der
Originaltabelle und in der temporären Tabelle vorhanden. Informationen, wie vorhandene
Einträge in einem Feld bei einer Typänderung des Feldes behandelt werden, können Sie der
ABAP Dokumentation zum Befehl MOVE-CORRESPONDING entnehmen.
Da die Daten während der Umsetzung sowohl in der Originaltabelle als auch in der temporären
Tabelle vorhanden sind, entsteht bei der Umsetzung ein erhöhter Platzbedarf. Sie sollten vor der
Umsetzung größerer Tabellen deshalb prüfen, ob im betreffenden Tablespace genügend Platz
vorhanden ist.
Beim Kopieren der Daten aus der temporären Tabelle in die Originaltabelle wird nach 16MB ein
Datenbank-Commit abgesetzt. Ein Umsetzprozeß benötigt deshalb 16MB Resourcen im
Rollback-Segment.

April 2001 235


BC - ABAP Dictionary SAP AG
Ablauf einer Umsetzung

Feld 1 Feld 2 Feld 3


NUMC,6 CHAR, 8 CHAR, 30

aktive Version von TAB TAB gesperrt

Daten werden in TAB zurückgeladen

QCMTAB TAB

Feld 1 Feld 2 Feld 3 Feld 1 Feld 2 Feld 3


NUMC, 6 CHAR, 8 CHAR, 60 44 NUMC, 6 CHAR, 8 CHAR, 30

000100 1111A00 Text1... 000100 1111A00 Text1...


001200 0222B10 Text2 ... 001200 0222B10 Text2 ...
003000 0030B20 Text3 ... 003000 0030B20 Text3
TAB...

Bei Feldverkürzungen werden die überschüssigen Stellen beim Zurückladen abgeschnitten. Bei
Schlüsselverkürzungen kann von mehreren Sätzen, die sich bzgl. des neuen Schlüssels nicht
mehr unterscheiden, nur einer zurückgeladen werden. Welcher Satz dies ist, ist in der Regel
nicht vorhersehbar. Sie sollten in einem solchen Fall den Datenbestand der Tabelle vor der
Umsetzung bereinigen.

Der Datenbestand der Tabelle ist erst nach Beendigung von Schritt 4 wieder
konsistent. Während die Umsetzung läuft, dürfen daher Programme nicht auf die
Tabelle zugreifen! Sonst könnte z.B. ein Programm beim lesenden Zugriff auf die
Tabelle falsche Schlüsse ziehen, da noch nicht alle Sätze aus der temporären
Tabelle zurückkopiert wurden. Umsetzungen dürfen daher nicht während des
Produktivbetriebs laufen! Zumindest müssen alle Anwendungen deaktiviert
werden, die die umzusetzende Tabelle verwenden.

Schritt 5: Sekundärindizes zur Tabelle neu anlegen


Die im ABAP Dictionary zur Tabelle definierten Sekundärindizes werden auf der Datenbank neu
angelegt.

Schritt 6: Löschen der QCM-Tabelle


Der in der temporären Tabelle (QCM-Tabelle) vorhandene Datenbestand wird nach dem Ende
der Umsetzung nicht mehr benötigt. Die temporäre Tabelle wird deshalb gelöscht.

Schritt 7: Zurücknehmen der Sperre


Die zu Beginn der Umsetzung gesetzte Sperre wird gelöscht.

236 April 2001


SAP AG BC - ABAP Dictionary
Ablauf einer Umsetzung

Feld 1 Feld 2 Feld 3


NUMC,6 CHAR, 8 CHAR, 30

aktive Version von TAB TAB gesperrt

Sperre löschen 77

Temporäre Tabelle löschen


Anlegen der
Indizes
QCMTAB TAB
55
Feld 1 Feld 2 Feld 3
66 Feld 1 Feld 2 Feld 3
NUMC, 6 CHAR, 8 CHAR, 60 NUMC, 6 CHAR, 8 CHAR, 30 TAB_______1

000100 1111A00 Text1... 000100 1111A00 Text1...


001200 0222B10 Text2 ... 001200 0222B10 Text2 ... TAB_______A
003000 0030B20 Text3 ... 003000 0030B20 Text3 ...

Bricht die Umsetzung ab, so bleibt die Tabelle gesperrt und es wird ein Aufsetzprotokoll
geschrieben. Jeder erfolgreich durchgeführte Schritt der Umsetzung wird in diesem
Aufsetzprotokoll vermerkt. Das Aufsetzprotokoll wird nach dem erfolgreichen Ablauf der
Umsetzung zusammen mit der Sperre gelöscht. Falls der Umsetzprozeß abbricht (siehe
Probleme bei Umsetzungen [Seite 238]), kann dem Aufsetzprotokoll also die Abbruchstelle
(letzter ausgeführter Schritt) entnommen werden.
Abgebrochene Umsetzungen müssen unbedingt bereinigt werden! Programme, die auf die
Tabelle zugreifen, laufen sonst möglicherweise nicht mehr korrekt. Hierzu muß der Grund für den
Abbruch (z.B. Überlauf des entsprechenden Tablespace) ermittelt und bereinigt werden. Danach
müssen Sie die abgebrochene Umsetzung fortsetzen (siehe Abgebrochene Umsetzungen
fortsetzen [Seite 240]).

Der beschriebene Ablauf einer Umsetzung ist nur für transparente Tabellen gültig.
Bei Pool- und Clustertabellen [Seite 269] wird eine der Struktur der Pool-
/Clustertabelle entsprechende Datenbanktabelle mit Namen QCM<Tabellenname>
angelegt und die Daten werden in diese Tabelle kopiert. Dann werden die Daten aus
dem physischen Tabellenpool/Tabellencluster gelöscht. Abschließend werden die
Daten aus der QCM-Tabelle gemäß der neuen Tabellendefinition in den physischen
Tabellenpool-/Tabellencluster zurückkopiert.

Siehe auch:
Probleme bei Umsetzungen [Seite 238]
Auffinden abgebrochener Umsetzungen [Seite 242]

April 2001 237


BC - ABAP Dictionary SAP AG
Probleme bei Umsetzungen

Probleme bei Umsetzungen


Hier sind einige bei Umsetzungen gelegentlich auftretende Probleme aufgelistet. Siehe hierzu
auch Ablauf einer Umsetzung [Seite 233].

Abbruch wegen Tablespaceüberlauf


Da die Daten während der Umsetzung sowohl in der Originaltabelle als auch in der temporären
Tabelle (QCM-Tabelle) vorhanden sind, entsteht bei der Umsetzung ein erhöhter Platzbedarf. Sie
sollten deshalb vor der Umsetzung größerer Tabellen prüfen, ob im betreffenden Tablespace
genügend Platz vorhanden ist.
Falls der Tablespace beim Zurückladen der Daten aus der temporären Tabelle in die
Originaltabelle überläuft, bricht die Umsetzung an dieser Stelle ab. Sie müssen in diesem Fall
den Tablespace erweitern und die Umsetzung im Datenbank-Utility dann mit Anpassung
fortsetzen (siehe Abgebrochene Umsetzungen fortsetzen [Seite 240]) erneut starten. Das
System setzt die Umsetzung dann an der Abbruchstelle fort.

Löschen eines Mandantenfeldes


Wird das Mandantenfeld aus einer mandantenabhängigen Tabelle entfernt, so unterscheiden
sich Sätze aus unterschiedlichen Mandanten möglicherweise nicht mehr bzgl. des neuen
Schlüssels.
Falls durch das Löschen des Mandantenfeldes Sätze mit gleichem Schlüssel entstanden sind,
kann nur einer dieser Sätze in die Tabelle zurückgeladen werden. Welcher dieser Sätze dies ist,
richtet sich nach der Reihenfolge, in der die Sätze in die Tabelle zurückgeladen werden. Es ist
also nicht garantiert, daß die zurückgeladenen Sätze nur aus einem Mandanten stammen. Sie
sollten in einem solchen Fall die Tabelle vor der Umsetzung bereinigen.

Datenverlust bei Schlüsselverkürzungen


Wird der Schlüssel einer Tabelle verkürzt (z.B. durch Entfernen oder Verkürzung der Feldlänge
von Schlüsselfeldern) können vorhandene Sätze der Tabelle sich bzgl. des neuen Schlüssels
nicht mehr unterscheiden. Beim Zurückladen der Daten aus der temporären Tabelle kann nur
einer dieser Sätze (da die Datenbank keine Duplicate Records zulässt) in die Tabelle
zurückgeladen werden.
Welcher der Sätze zurückgeladen werden kann, ist nicht vorhersehbar. Falls Sie bestimmte
Sätze übernehmen wollen, müssen Sie die Tabelle vor der Umsetzung bereinigen!

Typkonvertierung nicht möglich


Bei einer Umsetzung werden die Daten mit dem ABAP Befehl MOVE-CORRESPONDING aus
der temporären Tabelle in die Datenbanktabelle zurückkopiert. Bei einer Umsetzung sind nur
solche Typänderungen möglich, die durch MOVE-CORRESPONDING durchgeführt werden
können. Falls die Typänderung eines Feldes nicht über MOVE-CORRESPONDING abgebildet
werden kann, bricht die Umsetzung beim Zurückladen der Daten in die Originaltabelle ab.
Falls die Umsetzung wegen einer nicht unterstützten Typänderung abbricht, müssen Sie den
alten Zustand vor der Umsetzung wiederherstellen.
Hierzu müssen Sie im ersten Schritt mit Datenbankmitteln die Datenbanktabelle löschen und die
QCM-Tabelle wieder auf den ursprünglichen Namen umbenennen. Im zweiten Schritt müssen
Sie im Datenbank-Utility die Sperre durch Tabelle entsperren aufheben. Im dritten Schritt müssen

238 April 2001


SAP AG BC - ABAP Dictionary
Probleme bei Umsetzungen

Sie das Laufzeitobjekt zur Tabelle mit dem Datenbank-Utiltity rekonstruieren (siehe
Datenbanktabellen und Indizes bearbeiten [Seite 255]) und die Tabellendefinition im ABAP
Dictionary wieder auf den Stand vor der Umsetzung bringen. Als letzten Schritt müssen Sie die
Tabelle im ABAP Dictionary aktivieren.
Beachten Sie bitte auch, daß Probleme bei Typkonvertierungen abhängig vom Inhalt des
betreffenden Feldes auftreten können.

Wird die Genauigkeit eines DECIMAL-Feldes (Zahl der Stellen vor dem Komma)
verringert und sind Einträge im Feld vorhanden, bei denen alle Stellen vor dem
Komma belegt sind, kommt es beim Zurückladen der Sätze in die Tabelle zu einem
Abbruch. Sind dagegen keine solchen Einträge vorhanden, kann das Zurückladen
durchgeführt werden.

Abbruch bei Umsetzungen von Pool-/Clustertabellen


Bei der Umsetzung einer Pool-/Clustertabelle (siehe Pool- und Clustertabellen [Seite 269]) wird
die QCM-Tabelle als transparente Tabelle auf der Datenbank angelegt und die Daten der Pool-
/Clustertabelle werden in diese kopiert. Es gibt je nach verwendetem Datenbanksystem eine
Obergrenze für die Feldanzahl einer Datenbanktabelle.
Deshalb ist eine Umsetzung bei Pool- und Clustertabellen nicht möglich, falls die Feldanzahl der
Pool-/Clustertabelle die maximal auf der Datenbank mögliche Feldanzahl einer Tabelle
übersteigt.

Siehe auch:
Abgebrochene Umsetzungen fortsetzen [Seite 240]
Auffinden abgebrochener Umsetzungen [Seite 242]
Das Datenbank-Utility [Seite 253]

April 2001 239


BC - ABAP Dictionary SAP AG
Abgebrochene Umsetzungen fortsetzen

Abgebrochene Umsetzungen fortsetzen


Voraussetzungen
Falls eine Umsetzung abbricht, bleibt der im ersten Schritt gesetzte Sperreintrag für die Tabelle
stehen (siehe Ablauf einer Umsetzung [Seite 233]). Die Tabelle kann damit nicht mehr mit den
Pflegewerkzeugen des ABAP Dictionary (Transaktion SE11) bearbeitet werden.
Ist die Umsetzung einer Tabelle abgebrochen, muß dies unbedingt korrigiert werden!
Anwendungen, die auf diese Tabelle zugreifen, können sonst möglicherweise keine Daten mehr
lesen und reagieren damit falsch bzw. laufen nicht.

Vorgehensweise
1. Wählen Sie im Einstiegsbild des ABAP Dictionary Hilfsmittel ® Datenbank-Utility
(Transaktion SE14).
Sie verzweigen ins Einstiegsbild des Datenbank-Utilities.
2. Markieren Sie den Objekttyp Tabellen, geben Sie den Tabellennamen ein und wählen Sie
Bearbeiten.
Sie verzweigen ins Pflegebild für Datenbanktabellen.
3. Wählen Sie Anpassung analysieren.
Im Folgebild wird aufgelistet, welche Schritte der Umsetzung korrekt abgearbeitet
werden konnten. Weiterhin wird der Zustand der an der Umsetzung beteiligten Tabellen
(Tabelle mit alter Struktur, QCM-Tabelle und Tabelle mit neuer Struktur) angezeigt. Über
dieses Bild können Sie sich auch die vorhandenen Syslog-Einträge oder vorhandene
Kurzdumps anzeigen lassen.
4. Wählen Sie Objektprotokoll.
Dem Objektprotokoll können Sie in der Regel die genaue Ursache des Abbruchs
entnehmen. Falls das Objektprotokoll keine Information über die Fehlerursache liefert,
müssen Sie den Syslog oder die vorhandenen Kurzdumps analysieren.
5. Beseitigen Sie die im Objektprotokoll bzw. im Syslog oder in Kurzdumps gefundene
Fehlerursache (siehe hierzu Probleme bei Umsetzungen [Seite 238]).
Die Umsetzung kann in der Regel erst dann fortgesetzt werden, wenn die zum Abbruch
führende Ursache beseitigt wurde!
6. Gehen Sie auf das vorhergehende Pflegebild zurück und setzen Sie dort die Umsetzung mit
Anpassung fortsetzen fort.

Ergebnis
Das System versucht nun die Umsetzung an der Abbruchstelle fortzusetzen.

Es gibt neben Anpassung fortsetzen noch die Option Tabelle entsperren. Diese
Option löscht aber lediglich den bestehenden Sperreintrag für die Tabelle. Sie sollten
für eine abgebrochene Umsetzung nie Tabelle entsperren wählen, wenn die Daten

240 April 2001


SAP AG BC - ABAP Dictionary
Abgebrochene Umsetzungen fortsetzen

nur noch in der temporären Tabelle vorhanden sind, d.h. die Umsetzung nach
Beendigung von Schritt 2 und vor Beendigung von Schritt 4 abgebrochen ist.

April 2001 241


BC - ABAP Dictionary SAP AG
Auffinden abgebrochener Umsetzungen

Auffinden abgebrochener Umsetzungen


Vorgehensweise
1. Wählen Sie im Einstiegsbild des ABAP Dictionary Hilfsmittel ® Datenbank-Utility
(Transaktion SE14).
Sie verzweigen damit ins Einstiegsbild des Datenbank-Utilities [Seite 253].
2. Wählen Sie DB-Aufträge ® Abgebrochene.
Es werden im System vorhandene abgebrochene Umsetzungen aufgelistet. Der ersten
Spalte der Liste können Sie den Tabellennamen entnehmen.
3. Über Doppelklick auf der entsprechenden Zeile verzweigen Sie für die betroffene Tabelle ins
Pflegebild des Datenbank-Utilities.
Dort können Sie die Abbruchursache analysieren und die abgebrochene Umsetzung
fortführen. Siehe hierzu Abgebrochene Umsetzungen fortsetzen [Seite 240].

Wenn eine Tabelle aufgrund einer abgebrochenen Umsetzung gesperrt ist, muß dies
unbedingt bereinigt werden! Anwendungen, die auf diese Tabelle zugreifen, können
sonst möglicherweise keine Daten mehr lesen und reagieren damit falsch bzw.
laufen nicht.

242 April 2001


SAP AG BC - ABAP Dictionary
Aktivierung

Aktivierung
Die Aktivierung von Tabellen, Typen (Datenelemente, Strukturen, Tabellentypen) und Views
bewirkt, daß diese der Laufzeitumgebung in Form von Laufzeitobjekten zur Verfügung gestellt
werden. Diese Laufzeitobjekte fassen die Informationen zum Objekt in einer für den Zugriff der
ABAP Programme oder Dynpros optimierten Form zusammen. Die Laufzeitobjekte werden
gepuffert, so daß ABAP Programme oder Dynpros schnell auf die für sie relevanten
Informationen zugreifen können.

Die Informationen zu einer Tabelle sind im ABAP Dictionary auf Domänen,


Datenelemente, Felddefinitionen und die Tabellendefinition verteilt. Das
Laufzeitobjekt der Tabelle faßt diese Informationen in einer optimierten Form
zusammen.

Tabelle
Information
zur Tabelle
Feld 1 Feld 2 Feld 3 Laufzeitobjekt
zur Tabelle

Feldinformation

Daten-
Daten- Daten-
Daten- Daten-
Daten-
element
element11 element
element22 element
element33

ABAP
Interpreter
Domäne
Domäne11 Domäne
Domäne22 Domäne
Domäne33

ABAP Programme und Dynpros ermitteln die benötigten Informationen zu ABAP Dictionary
Objekten aus deren Laufzeitobjekten. Änderungen an ABAP Dictionary Objekten werden über
Zeitstempelvergleiche (siehe Laufzeitobjekte [Seite 245]) ermittelt. Damit werden Änderungen an
ABAP Dictionary Objekten zum Zeitpunkt der Aktivierung in allen Systemkomponenten wirksam.
Bei der Aktivierung eines Objekts werden auch alle von diesem Objekt abhängigen Objekte neu
aktiviert.

Nach einer Änderung einer Domäne, z.B. einer Änderung des Datentyps oder der
Länge, müssen alle Tabellen nachaktiviert werden, in denen ein Feld auf diese

April 2001 243


BC - ABAP Dictionary SAP AG
Aktivierung

Domäne verweist. Damit ist sichergestellt, daß alle diese Tabellen an die geänderten
technischen Feldinformationen angepaßt werden.

Tabelle 1 Tabelle 2 Tabelle 3 Tabelle 4 Tabelle 5

Abhängige
Tabellen

Datenelement
Datenelement11 Datenelement
Datenelement22 Datenelement
Datenelement33

Abhängige
Datenelemente

Domäne
Domäne

Die Aktivierung eines Objekts kann sich also auf eine Vielzahl abhängiger Objekte auswirken.
Sie sollten deshalb vor der Aktivierung eines geänderten Objekts feststellen, welche
Auswirkungen diese Aktion hat. Alle von einem Objekt abhängigen Objekte können Sie sich über
den Verwendungsnachweis im Pflegebild des Objekts anzeigen lassen.
Es besteht auch die Möglichkeit, eine größere Anzahl von Objekten gleichzeitig mit dem
Massenaktivierer [Seite 246] zu aktivieren.
Wenn bei einer Aktivierung aufgrund einer großen Anzahl abhängiger Objekte mit einer langen
Laufzeit zu rechnen ist (z.B. wenn eine Domäne aktiviert werden soll, die in vielen Tabellen
verwendet wird), sollten Sie das Objekt im Hintergrund aktivieren [Seite 247].

244 April 2001


SAP AG BC - ABAP Dictionary
Laufzeitobjekte

Laufzeitobjekte
Tabellen, Views und Typen (Datenelemente, Strukturen und Tabellentypen) besitzen
Laufzeitobjekte, die die für ABAP Programme oder Dynpros relevanten Informationen zum
Objekt zusammenfassen. Das Laufzeitobjekt (Nametab) wird bei der erstmaligen Aktivierung
eines Objekts erzeugt und danach bei weiteren Aktivierungen an den neuesten Stand des
Objekts angepaßt. Die Laufzeitobjekte sind gepuffert, so daß ABAP Programme oder Dynpros
schnell auf die für sie relevanten Informationen zugreifen können.
Über Zeitstempel wird sichergestellt, daß ABAP Programme oder Dynpros stets auf die
aktuellsten Informationen zugreifen. Bei der Aktivierung eines Objekts im ABAP Dictionary wird
sowohl der Zeitstempel des Laufzeitobjekts als auch der Zeitstempel aller Programme bzw.
Dynpros angepaßt, die dieses Objekt verwenden. Die Anpassung der Zeitstempel abhängiger
Programme bzw. Dynpros erfolgt allerdings nur, wenn bei der Aktivierung eine für Programme
bzw. Dynpros relevante Änderung eintrat.
Beim nächsten Aufruf des Programms oder des Dynpros kann durch einen Vergleich der
Zeitstempel ermittelt werden, ob das Programm bzw. das Dynpro direkt ausgeführt werden kann
oder ob neu generiert werden muß. Durch diesen Mechanismus werden unnötige Generierungen
vermieden und mehrere aufeinanderfolgende Änderungen an einem Objekt können in einem
Generierungsschritt erledigt werden.

Programm-Source Aktivierung eines


verwendeten ABAP
Zeitstempel Source Zeitstempel der Dictionary Objekts
Source erhöhen

generieren

Ja
generiertes Programm
Aufruf des Programms
Zeitstempel Load

ZS Source neuer
als ZS Load

Nein

Ausführen

Im Pflegebild einer Tabelle, eines Views oder eines Typs (Datenelement, Struktur,
Tabellentyp) können Sie sich das zugehörige Laufzeitobjekt über Hilfsmittel ®
Laufzeitobjekt ® Anzeigen anzeigen lassen. Wählen Sie für Erläuterungen zu den
angezeigten Informationen.

April 2001 245


BC - ABAP Dictionary SAP AG
Massenaktivierung

Massenaktivierung
Soll eine größere Menge von Objekten gleichzeitig aktiviert werden, z.B. nach einem Import, so
besteht die Möglichkeit der Massenaktivierung mit Hilfe des Programms RADMASG0. Dieses
Programm wird im folgenden Text auch Massenaktivierer genannt.
Der Massenaktivierer wird nach dem Einspielen eines Transportauftrags in ein System
automatisch aufgerufen. Dem Massenaktivierer muß eine Liste von ABAP Dictionary Objekten
übergeben werden. Alle Objekte der Liste werden dann in einem Vorgang aktiviert.
Der Massenaktivierer hat gegenüber der Aktivierung einzelner Objekte zwei Vorteile:
· Sind abhängige Tabellen von verschiedenen Domänen- oder Datenelementänderungen
betroffen, so wird die Tabelle nur einmal neu aktiviert.
· Zusammengehörige Objekte, wie z.B. eine Domäne und ihre zugehörige Wertetabelle,
können gemeinsam aktiviert werden. Bei der Einzelaktivierung ist es dagegen erforderlich,
daß jedes der beiden Objekte einzeln und in der richtigen Reihenfolge aktiviert wird. Vor der
Aktivierung einer Tabelle müssen z.B. erst alle Domänen und Datenelemente, auf die Felder
der Tabelle verweisen, aktiviert werden.
Die zu aktivierenden Objekte des ABAP Dictionary können wie folgt an den Massenaktivierer
übergeben werden:
· Transportauftrag: Alle im Transportauftrag enthaltenen Dictionary-Objekte werden aktiviert.
· Externe Tabelle: Die externe Tabelle muß eine Pooltabelle aus dem Pool ATAB sein und in
ihrer Struktur mit der Tabelle TACOB übereinstimmen. Die Tabelle TACOB selbst kann
natürlich auch angegeben werden. Alle Objekte, die in dieser Tabelle eingetragen sind,
werden aktiviert (siehe auch Aktivieren im Hintergrund [Seite 247]).
· Direkte Objekte: Die zu aktivierenden Objekte können auch direkt beim Aufruf des
Massenaktivierers über eine Eingabemaske eingegeben werden.
Sie müssen den Massenaktivierer über das Reporting (SE38) aufrufen. Der Massenaktivierer hat
mehrere Eingabeparameter. Deren Bedeutung und die möglichen Eingabewerte können Sie der
F1- und F4-Hilfe entnehmen.

246 April 2001


SAP AG BC - ABAP Dictionary
Aktivieren im Hintergrund

Aktivieren im Hintergrund
Voraussetzungen
Hintergrund-Aktivierung ist besonders dann empfehlenswert, wenn bei der Aktivierung aufgrund
der großen Anzahl der zu aktivierenden Objekte mit einer langen Laufzeit zu rechnen ist. In
diesem Fall können Sie den Startzeitpunkt so wählen, daß die Hintergrundverarbeitung dann
abläuft, wenn das System weniger belastet ist.

Vorgehensweise
1. Wählen Sie System ® Dienste ® Tabellenpflege ® Erweit.Tab.pflege.
Sie verzweigen damit ins Eingangsbild der Erweiterten Tabellenpflege.
2. Geben Sie den Tabellennamen TACOB ein und wählen Sie Pflegen.
Im Folgebild müssen Sie die zu aktivierenden Objekte durch den Objekttyp und den
Objektnamen spezifizieren.
3. Geben Sie die Objekttypen und die Objektnamen ein.
Für das Feld Otyp gibt es eine Eingabehilfe, die die möglichen Objekttypen anzeigt.
4. Sichern Sie ihre Eingaben und verlassen Sie die Erweiterte Tabellenpflege.
Sie müssen nun noch einen Hintergrundjob für die Aktivierung der Einträge in der
Tabelle TACOB über den Massenaktivierer [Seite 246] (Aufruf des Reports RADMASG0)
einplanen.

April 2001 247


BC - ABAP Dictionary SAP AG
Datentyp im ABAP Dictionary

Datentyp im ABAP Dictionary


Der Datentyp im ABAP Dictionary ist die Sicht des Benutzers auf die Daten, d.h. das
Datenformat an der Benutzeroberfläche. Dieses Datenformat ist vom verwendeten Datenbank-
System unabhängig. Beim Anlegen einer im ABAP Dictionary definierten Tabelle auf der
Datenbank werden die im ABAP Dictionary definierten Datentypen in die Datentypen des jeweils
verwendeten Datenbank-Systems überführt.
Wird ein ABAP Dictionary Objekt (Datenelement, Struktur, Tabellentyp, Tabelle, View) in einem
ABAP Programm verwendet, so werden die Dictionary-Datentypen der Objekt-Felder in die
entsprechenden ABAP-Datentypen konvertiert.

Tabellendefinition im ABAP Dictionary


Tabelle SPFLI
CLNT CARRID CONNID ...
ABAP Programm

S_CONN_ID TYPES CONN TYPE S_CONN_ID.

Datenelement
Datentyp NUMC
Länge 4

SPFLI Legt Typ CONN mit


CLNT CARRID CONNID ... ABAP-Typ N und
Länge 4 an

Feld CONNID mit DB-


Typ VARCHAR2 (bei
ORACLE) und Länge 4

Beachten Sie, daß einige Datentypen eine vorgegebene Länge und feste Masken für die
Ausgabe besitzen.

Vorhandene Datentypen
ACCP: Buchungsperiode. Die Länge ist bei diesem Datentyp auf 6 Stellen festgelegt. Das
Format ist JJJJMM. Bei der Ein- und Ausgabe wird ein Punkt zwischen Jahr und Monat
eingefügt, d.h. die Maske dieses Datentyps hat die Form ‘____.__’.
CHAR: Character-String. Felder vom Typ CHAR dürfen in Tabellen nur die maximale Länge 255
haben. Sollen längere Character-Felder in Tabellen benutzt werden, ist der Datentyp LCHR zu
wählen. In Strukturen bestehen keine Begrenzungen bzgl. der Länge solcher Felder.
CLNT: Mandant. Mandantenfelder sind stets dreistellig.
CUKY: Währungsschlüssel. Felder dieses Typs werden von Feldern des Typs CURR referiert.
Die Länge ist bei diesem Datentyp auf 5 Stellen festgelegt.

248 April 2001


SAP AG BC - ABAP Dictionary
Datentyp im ABAP Dictionary

CURR: Währungsfeld. Entspricht einem Betragsfeld DEC. Ein Feld dieses Typs muß auf ein Feld
des Typs CUKY (Referenzfeld) zeigen. Die maximale Länge beträgt bei diesem Datentyp 31
Stellen.
DATS: Datum. Die Länge ist bei diesem Datentyp auf 8 Stellen festgelegt. Die Ausgabemaske
kann über das Benutzerprofil festgelegt werden.
DEC: Rechen- oder Betragsfeld mit Komma, Vorzeichen und Tausenderpunkten. Ein DEC Feld
darf maximal 31 Stellen lang sein.
FLTP: Gleitpunktzahl. Die Länge (inklusive Dezimalstellen) ist bei diesem Datentyp auf 16
Stellen festgelegt.
INT1: 1-Byte-Integer; Zahlbereich 0 bis 255. Die Länge ist bei diesem Datentyp auf 3 Stellen
festgelegt.
INT2: 2-Byte-Integer; Zahlbereich -32767 bis 32767. Felder dieses Typs sollten nur als
Längenfelder verwendet werden. Solche Längenfelder stehen direkt vor einem langen Feld (Typ
LCHR, LRAW). Beim INSERT oder UPDATE auf das lange Feld trägt die Datenbank-
Schnittstelle die tatsächlich verwendete Länge in das Längenfeld ein. Die Länge ist bei diesem
Datentyp auf 5 Stellen festgelegt.
INT4: 4-Byte-Integer; Zahlbereich -2177483647 bis 2177483647. Die Länge ist bei diesem
Datentyp auf 10 Stellen festgelegt.
LANG: Sprachenschlüssel. Eigenes Feldformat für Sonderfunktionen. Dieser Datentyp hat stets
die Länge 1. Der Sprachenschlüssel wird an der Benutzeroberfläche zweistellig angezeigt, ist
aber auf der Datenbank nur einstellig abgelegt. Die Konvertierung zwischen der Anzeige auf der
Benutzeroberfläche und der Datenbank erfolgt über das Konvertierungsexit ISOLA. Dieses
Konvertierungsexit wird einer Domäne mit Datentyp LANG automatisch beim Aktivieren
zugeordnet.
LCHR: Beliebig lange Zeichenketten mit mindestens 256 Zeichen. Felder dieses Typs müssen
bei transparenten Tabellen am Ende stehen und ein voranstehendes Längenfeld vom Typ INT2
besitzen. Beim INSERT oder UPDATE in ABAP Programmen muß dieses Längenfeld mit der
tatsächlich gewünschten Länge gefüllt werden. Felder dieses Typs können nicht in der WHERE-
Bedingung eines SELECT-Statements verwendet werden.
LRAW: Beliebig lange uninterpretierte Byte-Folge mit Mindestlänge 256. Felder dieses Typs
müssen bei transparenten Tabellen am Ende stehen und ein voranstehendes Längenfeld vom
Typ INT2 besitzen. Beim INSERT oder UPDATE in ABAP Programmen muß dieses Längenfeld
mit der tatsächlich gewünschten Länge gefüllt werden. Felder dieses Typs können nicht in der
WHERE-Bedingung eines SELECT-Statements verwendet werden.
NUMC: Langes Character-Feld, in das nur Ziffern eingegeben werden können. Die Länge eines
Feldes dieses Typs ist auf maximal 255 Stellen begrenzt.
PREC: Genauigkeit eines QUAN Feldes. Die Länge ist bei diesem Datentyp auf 2 Stellen
festgelegt.
QUAN: Menge. Entspricht einem Betragsfeld DEC. Ein Feld dieses Typs muß stets auf ein
Einheitenfeld mit Format UNIT (Referenzfeld) zeigen. Die maximale Länge beträgt bei diesem
Datentyp 31 Stellen.
RAW: Uninterpretierte Byte-Folge. Felder vom Typ RAW dürfen in Tabellen nur die maximale
Länge 255 haben. Sollen längere Raw-Felder in Tabellen benutzt werden, ist der Datentyp
LRAW zu wählen.

April 2001 249


BC - ABAP Dictionary SAP AG
Datentyp im ABAP Dictionary

RAWSTRING: Uninterpretierte Byte-Folge variabler Länge. Dieser Typ kann nur in Typen
(Datenelementen, Strukturen, Tabellentypen) und Domänen verwendet werden. Eine
Verwendung in Datenbanktabellen ist nicht möglich. Im ABAP ist dieser Typ als Referenz auf
einen Speicherbereich variabler Größe realisiert.
STRING: Zeichenfolge mit variabler Länge. Dieser Typ kann nur in Typen (Datenelementen,
Strukturen, Tabellentypen) und Domänen verwendet werden. Eine Verwendung in
Datenbanktabellen ist nicht möglich. Im ABAP ist dieser Typ als Referenz auf einen
Speicherbereich variabler Größe realisiert.
TIMS: Zeit. Die Länge ist bei diesem Datentyp auf 6 Stellen festgelegt. Das Format ist hhmmss.
Die Maske für die Ein- und Ausgabe hat die Form ‘__.__.__’.
UNIT: Einheitenschlüssel. Felder dieses Typs werden von Feldern des Typs QUAN referiert. Die
Länge dieses Datentyps ist auf 2 oder 3 Stellen festgelegt.
VARC: Variabel langes Characterfeld. Das Neuanlegen von Feldern dieses Datentyps wird ab
Release 3.0 nicht mehr unterstützt. Bestehende Felder mit diesem Datentyp können aber
weiterhin verwendet werden. Felder dieses Typs können nicht in der WHERE-Bedingung eines
SELECT-Statements verwendet werden.

Bei Verwendung der numerischen Datentypen CURR, DEC, FLPT, INT2, INT4 und
QUAN können Sie wählen, ob ein Vorzeichen auf Dynpros ausgegeben werden soll
oder nicht.
Bei den Datentypen CURR, DEC und QUAN werden Tausenderpunkte und
Dezimalpunkte vom System gesetzt. Die Ausgabelänge (Zahl der Stellen plus die
Zahl der notwendigen Aufbereitungszeichen wie Tausenderpunkte und
Dezimalzeichen) ist deshalb höher als die gewählte Länge.
Das System läßt Aufbereitungszeichen weg, wenn die in der Domänenpflege
angegebene Ausgabelänge zu klein ist.

Siehe auch:
Abbildung auf den ABAP-Datentyp [Seite 251]

250 April 2001


SAP AG BC - ABAP Dictionary
Abbildung auf den ABAP-Datentyp

Abbildung auf den ABAP-Datentyp


Die ABAP-Datentypen werden vom ABAP-Prozessor in den Arbeitsbereichen für Daten
verwendet.
Es gibt folgende ABAP-Datentypen:
C: Character
D: Datum, Format JJJJMMTT
F: Gleitpunktzahl in DOUBLE PRECISION (8 Byte)
I: Integer
N: Numerischer Character-String beliebiger Länge
P: Betrags- oder Rechenfeld (gepackt, maschinenabhängige Verwirklichung)
S: Timestamp JJJJMMTTHHMMSS
T: Uhrzeit HHMMSS
V: Variabler Character-String, Länge in den ersten zwei Byte
X: Hexadezimale (binäre) Abspeicherung
STRING: Zeichenfolge variabler Länge
XSTRING: Uninterpretierte Byte-Folge variabler Länge
Wird ein Datenelement bzw. ein Feld eines ABAP Dictionary Objekts (Struktur, Tabellentyp,
Tabelle, View) in einem ABAP Programm verwendet, so wird der Dictionary-Datentyp in den
entsprechenden ABAP-Datentyp konvertiert.

Abbildung der Datentypen zwischen ABAP Dictionary und


ABAP-Prozessor
ABAP Dictionary Typ ABAP-Typ
ACCP N(6)
CHAR n C(n)
CLNT C(3)
CUKY C(5)
CURR n,m P((n+1)/2) DECIMAL m
DEC n,m P((n+1)/2) DECIMAL m
DATS D(8)
FLTP F(8)
INT1 X(1)
INT2 X(2)
INT4 X(4)
LANG C(1)

April 2001 251


BC - ABAP Dictionary SAP AG
Abbildung auf den ABAP-Datentyp

NUMC n N(n)
PREC X(2)
QUAN n,m P((n+1)/2) DECIMAL m
RAW n X(n)
TIMS T(6)
UNIT C(n)
VARC n C(n)
LRAW X(n)
LCHR C(n)
STRING STRING
RAWSTRING XSTRING

Die in der Tabelle verwendeten Zeichen haben folgende Bedeutung:


n: Zahl der Stellen des Feldes im ABAP Dictionary
m: Zahl der Nachkommastellen des Feldes im ABAP Dictionary

252 April 2001


SAP AG BC - ABAP Dictionary
Das Datenbank-Utility

Das Datenbank-Utility
Das Datenbank-Utility bildet die Schnittstelle zwischen dem ABAP Dictionary und der dem SAP-
System unterliegenden relationalen Datenbank. Mit Hilfe des Datenbank-Utilities können die aus
Objekten des ABAP Dictionary abgeleitete Datenbankobjekte bearbeitet (angelegt, gelöscht und
an Änderungen ihrer Definition im ABAP Dictionary angepaßt) werden.

ABAP Dictionary

T1 T2 T3 ... Tn

DB-UTILITY

T1
Datenbank T2
T3
Tn

Bearbeiten von Datenbankobjekten


Sie können das Datenbank-Utility aus dem Einstiegsbild des ABAP Dictionary über Hilfsmittel ®
Datenbank-Utility (Transaktion SE14) aufrufen. Sie gelangen damit ins Einstiegsbild des
Datenbank-Utilties.
Mit dem Datenbank-Utility können Sie alle Datenbankobjekte bearbeiten, die aus Objekten des
ABAP Dictionary generiert werden. Dies sind Datenbanktabellen, die aus transparenten Tabellen
oder physischen Tabellenpools bzw. Tabellenclustern generiert werden, Indizes, Datenbank-
Views und Matchcode-Pooltabellen bzw. Matchcode-Views.
Da für die verschiedenen Objekttypen unterschiedliche Funktionen benötigt werden, wird pro
Objekttyp ein eigenes Pflegebild angeboten. Sie können durch Eingabe des Objektnamens und
markieren des Objekttyps im Einstiegsbild des Datenbank-Utilities in das entsprechende
Pflegebild verzeigen. Sie erreichen dieses Bild auch direkt aus dem Pflegebild des Objekts im
ABAP Dictionary über Hilfsmittel ® Datenbank-Utility.

Zur Benutzung des Datenbank-Utilities ist eine Berechtigung für das


Berechtigungsobjekt S_DDIC_OBJ erforderlich, z. B. S_DDIC_ALL.

April 2001 253


BC - ABAP Dictionary SAP AG
Das Datenbank-Utility

Informationen zu den angebotenen Funktionen finden Sie in:


· Tabellen und Indizes auf der Datenbank bearbeiten [Seite 255]
· Views auf der Datenbank bearbeiten [Seite 257]
· Matchcodes auf der Datenbank bearbeiten [Seite 258]
· Tabellenpools und Tabellencluster auf der Datenbank bearbeiten [Seite 260]

Abgebrochene Umsetzungen analysieren und fortsetzen


Falls eine Umsetzung [Seite 233] abbricht, kann über das Datenbank-Utility die Abbruchursache
analysiert werden. Die Umsetzung kann dann nach Beseitigung dieser Abbruchursache mit dem
Datenbank-Utility fortgesetzt werden. Siehe hierzu:
· Probleme bei Umsetzungen [Seite 238]
· Abgebrochene Umsetzungen fortsetzen [Seite 240]
· Auffinden abgebrochener Umsetzungen [Seite 242]

Administration von Aufträgen zu Datenbankänderungen


Das Datenbank-Utility bietet eine Reihe von Möglichkeiten zur Administration bzw. Überwachung
von Aufträgen zu Datenbankänderungen. Sie können diese Funktionen direkt im Einstiegsbild
des Datenbank-Utilities ausführen.
Es stehen folgende Möglichkeiten zur Verfügung:
· Jobs für die Massenverarbeitung einplanen [Seite 266]
· Aufträge zur Massenverarbeitung anzeigen [Seite 264]
· Protokolle der Massenverarbeitung anzeigen [Seite 267]
· Temporäre Tabellen ohne Aufsetzprotokolle anzeigen [Seite 268]

Inkrementelle Umsetzungen durchführen und überwachen


Die inkrementelle Tabellenumsetzung ermöglicht eine Reorganisation und strukturelle
Veränderung von Tabellen. Diese bleiben im Gegensatz zur Standardumsetzung während der
Zeit des Datentransfers für das System uneingeschränkt nutzbar. Auf diese Weise steht für den
Datentransfer erheblich mehr Zeit zur Verfügung, und es können weit größerer Datenmengen
umgesetzt werden als mit der Standardumsetzmethode. Lediglich während der Initialisierung der
inkrementellen Umsetzung und beim Übergang auf die neue Tabelle kommt es zu kurzen
Einschränkungen des Produktivbetriebes.
Sie erreichen den Monitor der inkrementellen Umsetzung aus dem Einstiegsbild des Datenbank-
Utilities heraus über DB-Aufträge ® Inkrementelle.
Weitere Informationen zum Ablauf einer inkrementellen Umsetzung finden Sie im Monitor der
inkrementellen Umsetzung hinter dem Info-Button. Für die Durchführung einer inkrementellen
Umsetzung steht Ihnen ein Assistent zur Verfügung.

Siehe auch:
Datenbank-Strukturen anpassen [Seite 231]
Aktivierung [Seite 243]

254 April 2001


SAP AG BC - ABAP Dictionary
Tabellen und Indizes auf der Datenbank bearbeiten

Tabellen und Indizes auf der Datenbank bearbeiten


Grundfunktionen
Für transparente Tabellen stehen die Funktionen Datenbanktabelle anlegen, Datenbanktabelle
löschen und Aktivieren und Datenbank anpassen zur Verfügung. Sie können eine solche
Funktion ausführen, indem Sie die Verarbeitungsart [Seite 261] markieren und den
entsprechenden Druckknopf betätigen.
· Datenbanktabelle anlegen: Die Tabelle wird mit ihrer aktiven Version und dem Primärindex
auf der Datenbank angelegt. Aktive Sekundärindizes werden ebenfalls auf der Datenbank
angelegt, falls dies bei der Definition des Index nicht explizit ausgeschlossen wurde (siehe
auch Sekundärindizes anlegen [Seite 80]).
· Datenbanktabelle löschen: Die Tabelle wird auf der Datenbank einschließlich aller Indizes
zur Tabelle gelöscht.
· Aktivieren und Datenbank anpassen: Die überarbeitete Version der Tabelle wird aktiviert
und die Datenbanktabelle wird an diese veränderte Tabellendefinition angepaßt [Seite 231].
Hier kann man zwischen Daten erhalten und Daten löschen wählen. Bei Daten löschen wird
die Tabelle auf der Datenbank gelöscht und mit der neuen Definition wieder angelegt. In der
Tabelle vorhandene Daten gehen dabei verloren. Bei Daten erhalten wird versucht, die
Anpassung durch ein ALTER TABLE durchzuführen. Ist dies nicht möglich, wird eine
Umsetzung [Seite 233] der Tabelle angestoßen.

Da Pool- und Clustertabellen [Seite 269] auf der Datenbank nicht als eigenständige
Tabellen vorhanden sind, entfallen bei diesen Tabellenarten die Funktionen
Datenbanktabelle anlegen bzw. Datenbanktabelle löschen. Als Ersatz wird die
Funktionen Daten löschen angeboten, die die Daten der Tabelle aus dem
zugehörigen physischen Tabellenpool bzw. Tabellencluster löscht.

Funktionen für Indizes


Sie erreichen das Pflegebild für Indizes über Springen ® Indizes. Es erscheint eine Liste aller
im ABAP Dictionary vorhandenen Indizes zur Tabelle. Wählen Sie den gewünschten Index durch
Doppelklick aus. Auf dem Folgebild stehen folgende Funktionen zur Verfügung:
· Datenbankindex anlegen: Anlegen eines Sekundärindex oder des Primärindex einer
transparenten Tabelle auf der Datenbank.
· Datenbankindex löschen: Löschen eines Sekundärindex einer transparenten Tabelle auf
der Datenbank. Der Primärindex einer auf der Datenbank angelegten transparenten Tabelle
kann nicht gelöscht werden, solange die Tabelle noch auf der Datenbank existiert.
· Aktivieren und Datenbank anpassen: Der Index wird auf der Datenbank gelöscht. Die
überarbeitete Version des Index wird aktiviert. Dann wird der Index auf der Datenbank neu
angelegt und aufgebaut.

Weitere Funktionen
Das Datenbank-Utility bietet für Tabellen noch eine Reihe von Prüf- und Reparaturfunktionen.

April 2001 255


BC - ABAP Dictionary SAP AG
Tabellen und Indizes auf der Datenbank bearbeiten

· Speicherparameter pflegen: Für transparente Tabellen können Speicherparameter [Seite


262] gepflegt werden, die Datenbankeinstellungen (z.B. Extentgrößen) zur Tabelle
beeinflussen. Sie gelangen über den Druckknopf Speicherparameter in den entsprechenden
Pflegebildschirm.
· Konsistenz prüfen: Über Zusätze ® Datenbankobjekt ® Prüfen können Sie die Definition
der Tabelle auf der Datenbank mit dem Laufzeitobjekt der Tabelle [Seite 245] vergleichen.
Weiterhin werden die Indizes zur Tabelle im ABAP Dictionary mit den Indizes auf der
Datenbank verglichen. Über Zusätze ® Laufzeitobjekt ® Prüfen können Sie das
Laufzeitobjekt der Tabelle mit den in der ABAP Dictionary Pflege eingegebenen Information
vergleichen. Beide Definitionen werden angezeigt. Die gefundenen Unterschiede werden
dabei farblich hervorgehoben. In der Anzeige der Prüfergebnisse kann in beiden Fällen
zwischen Deltadarstellung (nur Unterschiede) und Volldarstellung (alle Informationen)
umgeschaltet werden.
· Existenz von Daten prüfen: Mit Tabelle ® Daten vorhanden? können Sie prüfen, ob die
Tabelle Daten enthält. Es wird hierbei über alle Mandanten selektiert. Diese Funktion ist z.B.
nützlich, um vor einer Umsetzung zu überprüfen, ob eine Tabelle leer ist. Mit Tabelle ®
Tabelleninhalt können Sie sich die Daten im Anmeldemandanten anzeigen lassen.
· Anzeigen von Laufzeitobjekt und Datenbanktabelle: Sie können sich die Struktur der
Tabelle auf der Datenbank und die zur Tabelle definierten Indizes über Zusätze ®
Datenbankobjekt ® Anzeigen auflisten lassen. Über Zusätze ® Laufzeitobjekt ®Anzeigen
können Sie sich das Laufzeitobjekt der Tabelle anzeigen lassen. Nähere Informationen zur
Interpretation der angezeigten Daten finden Sie über den -Button.
· Umsetzung erzwingen: Sie können über Zusätze ® Umsetzung erzwingen eine
Umsetzung [Seite 233] der Tabelle anstoßen. Diese Funktion ist z.B. sinnvoll, wenn nur die
Speicherparameter [Seite 262] bzw. die technischen Einstellungen [Seite 31] der Tabelle
geändert wurden, die Struktur der Tabelle aber gleich geblieben ist. Einige der geänderten
Einstellungen können sich erst nach einer Umsetzung der Tabelle auf der Datenbank
auswirken. Über die Funktion Aktivieren und Datenbank anpassen kann in diesem Fall keine
Umsetzung der Tabelle angestoßen werden, da sich die Struktur der Tabelle nicht verändert
hat.
· Rekonstruieren: Sie können über Tabelle ® Rekonstruieren ein zur Datenbanktabelle
passendes Laufzeitobjekt [Seite 245] erzeugen. Dieses Laufzeitobjekt enthält nur die auf der
Datenbank verfügbaren Informationen zur Tabelle, z.B. Feldnamen und Datentypen. Im
ABAP Dictionary vorhandene zusätzliche Informationen zur Tabelle, wie z.B. Angaben zur
Pufferung, sind nicht enthalten. Die Berechtigung für das Ausführen dieser Funktion besitzt
nur der Benutzer DDIC. Sie sollten diese Funktion nur zum temporären Beheben von
Schiefständen (Abweichung zwischen Datenbankzustand und Laufzeitobjekt) nutzen und auf
jeden Fall die Tabelle später regulär im ABAP Dictionary anpassen und dort aktivieren.

256 April 2001


SAP AG BC - ABAP Dictionary
Views auf der Datenbank bearbeiten

Views auf der Datenbank bearbeiten


Grundfunktionen
Für die Bearbeitung von Datenbank-Views [Seite 111] stehen im Datenbank-Utility die
Funktionen Datenbank-View anlegen, Datenbank-View löschen und Aktivieren und Datenbank
anpassen zur Verfügung. Sie können eine solche Funktion ausführen, indem Sie eine
Verarbeitungsart [Seite 261] auswählen und den entsprechenden Druckknopf betätigen.
· Datenbank-View anlegen: Ein im ABAP Dictionary definierter Datenbank-View wird
physisch auf der Datenbank angelegt.
· Datenbank-View löschen: Der Datenbank-View wird auf der Datenbank gelöscht.
· Aktivieren und Datenbank anpassen: Der View wird auf der Datenbank gelöscht. Die
überarbeitete Version des Views wird aktiviert und der View wird mit dieser Version auf der
Datenbank neu angelegt.

Weitere Funktionen
Das Datenbank-Utility bietet für Datenbank-Views noch eine Reihe von Prüffunktionen:
· Konsistenz prüfen: Über Zusätze ® Datenbankobjekt ® Prüfen können Sie die
Definition des Views auf der Datenbank mit dem Laufzeitobjekt [Seite 245] des Views
vergleichen. Über Zusätze ® Laufzeitobjekt ® Prüfen können Sie das Laufzeitobjekt des
Views mit den in der ABAP Dictionary Pflege angegebenen Information zum View
vergleichen. Beide Definitionen werden angezeigt. Die gefundenen Unterschiede werden
dabei farblich hervorgehoben. In der Anzeige der Prüfergebnisse kann in beiden Fällen
zwischen Deltadarstellung (nur gefundene Unterschiede) und Volldarstellung (alle
Informationen) unterschieden werden.
· Anzeige der Viewdefinition auf der Datenbank: Sie können sich die Definition des Views
auf der Datenbank über Zusätze ® Datenbankobjekt ® Anzeigen auflisten lassen.
· Anzeigen des Laufzeitobjekts: Über Zusätze ® Laufzeitobjekt ® Anzeigen können Sie
sich die im Laufzeitobjekt zum View vorhandenen Informationen auflisten lassen. Nähere
Informationen zur Interpretation der angezeigten Daten finden Sie über den -Button.

Siehe auch:
Views [Seite 101]

April 2001 257


BC - ABAP Dictionary SAP AG
Matchcodes auf der Datenbank bearbeiten

Matchcodes auf der Datenbank bearbeiten


Funktionen für Matchcode-Objekte
Für die Bearbeitung von Matchcode-Objekten stehen im Datenbank-Utility die Funktionen
Datenbanktabelle anlegen und Datenbanktabelle löschen zur Verfügung.
Sie können eine solche Funktion ausführen, indem Sie eine Verarbeitungsart [Seite 261]
auswählen und dann den entsprechenden Druckknopf betätigen.
· Datenbanktabelle anlegen: Der physische Matchcode-Pool M_<Name des MC-Objekts>
wird auf der Datenbank angelegt.
· Datenbanktabelle löschen: Der physische Matchcode-Pool M_<Name des MC-Objekts>
wird auf der Datenbank gelöscht.

Funktionen für Matchcode-Ids


Wollen Sie einzelne Matchcode-Ids bearbeiten, so können Sie über Springen ® Matchcode-Id
die zum Matchcode-Objekt definierten Matchcode-Ids anzeigen lassen. Es erscheint eine Liste
aller Matchcode-Ids zum Matchcode-Objekt, aus der Sie dann die gewünschte Id durch
Doppelklick auswählen können.
Die angebotene Funktionalität unterscheidet sich zwischen transparenten und physisch
realisierten Matchcode-Ids.

Funktionen für physisch realisierte Matchcode-Ids


Für physisch realisierte Matchcode-Ids (Aktualisierungsarten A, S, P) werden die folgenden
Funktionen unterstützt:
· Daten aufbauen: Die Daten zur Matchcode-Id werden im Matchcode-Pool aufgebaut.
· Daten löschen: Die Daten zur Matchcode-Id werden im Matchcode-Pool gelöscht.
· Aktivieren und Datenbank anpassen: Bei physisch realisierten Matchcode-Ids kann bei
dieser Funktion zwischen den folgenden Optionen gewählt werden:
Mit Datenaufbau: Die Daten zur Matchcode-Id werden aus dem Matchcode-Pool gelöscht.
Die Matchcode-Id wird im ABAP Dictionary aktiviert. Dann werden die Daten zur
Matchcode-Id mit der neuen Struktur neu aufgebaut.
Ohne Datenaufbau: Die Daten zur Matchcode-Id werden aus dem Matchcode-Pool gelöscht.
Die Matchcode-Id wird im ABAP Dictionary aktiviert. Die Matchcode-Pooltabelle enthält
also keine Daten zur Matchcode-Id.

Funktionen für transparente Matchcode-Ids


Für transparente Matchcode-Ids (Aktualisierungsart I) werden die folgenden Funktionen
unterstützt:
· Datenbank-View anlegen: Der View M_<MC-Objekt><Id-Kennung> für die Matchcode-
Suche wird auf der Datenbank angelegt. Diese Funktion wird standardmäßig beim Aktivieren
einer transparenten Matchcode-Id im ABAP Dictionary ausgeführt.
· Datenbank-View löschen: Der für die Matchcode-Suche angelegte View M_<MC-
Objekt><Id-Kennung> wird auf der Datenbank gelöscht.

258 April 2001


SAP AG BC - ABAP Dictionary
Matchcodes auf der Datenbank bearbeiten

· Aktivieren und Datenbank anpassen: Der für die Matchcode-Suche angelegte View
M_<MC-Objekt><Id-Kennung> wird auf der Datenbank gelöscht. Die Matchcode-Id wird im
ABAP Dictionary aktiviert und der View wird gemäß der neuen aktiven Version der
Matchcode-Id wieder auf der Datenbank angelegt.

April 2001 259


BC - ABAP Dictionary SAP AG
Pools und Cluster auf der Datenbank bearbeiten

Pools und Cluster auf der Datenbank bearbeiten


Grundfunktionen
Für die Bearbeitung von Pool- und Clustertabellen [Seite 269] stehen im Datenbank-Utility die
Funktionen Datenbanktabelle anlegen und Datenbanktabelle löschen zur Verfügung. Sie können
eine solche Funktion ausführen, indem Sie eine Verarbeitungsart [Seite 261] auswählen und den
entsprechenden Druckknopf betätigen.
· Datenbanktabelle anlegen: Anlegen des physischen Pools bzw. Clusters auf der
Datenbank.
· Datenbanktabelle löschen: Löschen des physischen Pools bzw. Clusters auf der
Datenbank.

Weitere Funktionen
Das Datenbank-Utility bietet für Pool- und Clustertabellen noch eine Reihe von Prüffunktionen:
· Speicherparameter pflegen: Über Springen ® Speicherparameter können
Speicherparameter [Seite 262] zu Pool- bzw. Clustertabellen gepflegt werden, die die
Datenbank-Einstellungen der Tabelle (z.B. Extentgrößen) beeinflussen.
· Konsistenz prüfen: Über Zusätze ® Datenbankobjekt ® Prüfen können Sie die
Definition des Pools bzw. Clusters auf der Datenbank mit dem Laufzeitobjekt [Seite 245] des
Pools bzw. Clusters vergleichen. Über Zusätze ® Laufzeitobjekt ® Prüfen können Sie
das Laufzeitobjekt des Pools bzw. Clusters mit den in der ABAP Dictionary Pflege
eingegebenen Information vergleichen. In der Anzeige der Prüfergebnisse kann in beiden
Fällen zwischen Deltadarstellung (nur Unterschiede) und Volldarstellung (alle Informationen)
unterschieden werden.
· Anzeigen von Laufzeitobjekt und Definition auf der Datenbank: Sie können sich die
Struktur des Pools bzw. Clusters auf der Datenbank über Zusätze ® Datenbankobjekt ®
Anzeigen auflisten lassen. Über Zusätze ® Laufzeitobjekt ®Anzeigen können Sie sich die
im Laufzeitobjekt vorhandenen Informationen auflisten lassen. Nähere Informationen zur
Interpretation der angezeigten Daten finden Sie über den -Button.

Siehe auch:
Pool- und Clustertabellen [Seite 269]

260 April 2001


SAP AG BC - ABAP Dictionary
Verarbeitungsart

Verarbeitungsart
Die über das Datenbank-Utility durchgeführten Änderungen an Datenbankobjekten können in
mehreren Verarbeitungsarten ausgeführt werden.

Direkt
Die gewünschten Datenbankänderungen werden sofort durchgeführt.
Bei der Umsetzung großer Tabellen ist diese Verarbeitungsart ungeeignet. Erstens wird das
System durch eine Umsetzung stark belastet. Zweitens kann die Umsetzung aufgrund einer
Laufzeitbeschränkung abbrechen. Wählen Sie deshalb für die Umsetzung großer Tabellen stets
die Verarbeitungsart Hintergrund.

Hintergrund
Für die gewünschten Datenbankänderungen wird ein Hintergrundjob eingeplant.
Sie können den Zeitpunkt für die Hintergrundverarbeitung bestimmen. Es besteht insbesondere
die Möglichkeit, die Hintergrundverarbeitung sofort zu starten. Dies hat gegenüber der
Verarbeitungsart Direkt den Vorteil, daß die Operation nicht aufgrund einer
Laufzeitbeschränkung abbrechen kann.

Zur Massenverarbeitung eintragen


Bei dieser Verarbeitungsart werden Einträge mit der entsprechenden Funktion in einer
Systemtabelle (TBATG) erzeugt. Die in dieser Tabelle gesammelten Aufträge können im
Hintergrund zu festgesetzten Zeitpunkten (i.A. nachts) abgearbeitet werden. Der
Hintergrundprozeß zur Abarbeitung der Aufträge muß dabei explizit als Job eingeplant werden
(siehe Jobs für die Massenverarbeitung einplanen [Seite 266]).
Die von Ihnen bereits zur Massenverarbeitung eingeplanten Objekte können Sie sich ausgehend
vom Eingangsbild des Datenbank-Utilities durch DB-Aufträge ® Massenverarbeitung anzeigen
lassen. Die Interpretation der angezeigten Liste ist in Aufträge zur Massenverarbeitung anzeigen
[Seite 264] beschrieben.
Das Hintergrundprogramm schreibt Meldungen in eine Protokolldatei. Diese Tagesprotokolle
können Sie ausgehend vom Eingangsbild des Datenbank-Utilities mit der Funktion Zusätze ®
Protokolle anzeigen. Die Interpretation der angezeigten Liste ist beschrieben in Protokolle der
Massenverarbeitung anzeigen [Seite 267].

April 2001 261


BC - ABAP Dictionary SAP AG
Speicherparameter

Speicherparameter
Für Datenbanktabellen (transparente Tabellen, Tabellenpools, Tabellencluster) können
Speicherparameter eingestellt werden. Diese Parameter beeinflussen die Art, wie die Tabelle auf
der Datenbank behandelt wird. Über die Speicherparameter wird beispielsweise bestimmt, in
welchem Tablespace die Tabelle auf der Datenbank angelegt wird und welche Größe für die
Extents der Tabelle gewählt wird.
Die vorhandenen Speicherparameter und die jeweiligen Einstellungsmöglichkeiten sind vom
jeweils verwendeten Datenbanksystem abhängig. Welche Parameter für ein Datenbanksystem
einstellbar sind, ist aus der jeweiligen Systemdokumentation des Datenbanksystems zu
entnehmen.

Welche Speicherparameter sind für eine Tabelle wirksam?


Wird eine Tabelle erstmalig aktiviert, werden die Speicherparameter zur Tabelle aus den
technischen Einstellungen der Tabelle berechnet (falls keine technischen Einstellungen
vorhanden sind, werden die Default-Werte des Datenbanksystems verwendet) und die Tabelle
wird mit diesen Speicherparametern auf der Datenbank angelegt.
Wird die Tabelle später von der Datenbank gelöscht und neu angelegt (dies kann beispielsweise
durch eine Umsetzung [Seite 233] der Tabelle passieren), so werden die anzuwendenden
Speicherparameter in einer festen Hierarchie ermittelt.
Falls benutzerdefinierte Speicherparameter vorhanden sind, werden diese verwendet. Sind keine
benutzerdefinierte Speicherparameter vorhanden, werden die vorher auf der Datenbank gültigen
Parameter benutzt. Sind auch solche Parameter nicht vorhanden (z.B. wenn die Tabelle vorher
eine Pool- oder Clustertabelle war, die durch die Umsetzung in eine transparente Tabelle
umgewandelt wird), werden die Speicherparameter aus den technischen Einstellungen
berechnet. Sind auch keine technischen Einstellungen zur Tabelle vorhanden, werden die
Defaultwerte des Datenbanksystems verwendet.

Werden die technischen Einstellungen einer auf der Datenbank schon vorhandenen
Tabelle geändert und aktiviert, so ändern sich die auf der Datenbank für die Tabelle
gültigen Speicherparameter also nicht! Die gültigen Speicherparameter müssen in
diesem Fall manuell über das Datenbank-Utility verändert werden.

Anzeige und Pflege der Speicherparameter


Verzweigen Sie im Datenbank-Utility in die Pflege der Tabelle. Über Speicherparameter können
Sie sich die momentan für die Tabelle und deren Indizes gültigen Speicherparameter anzeigen
lassen.
Welche Parameter hier angezeigt werden, ist abhängig vom verwendeten Datenbanksystem.
Informationen zur Bedeutung der eingeblendeten Parameter finden Sie, indem Sie den
Parameter markieren und die F1-Taste betätigen.
Sie können einige Speicherparameter direkt verändern. Wählen Sie . Die änderbaren
Parameter werden nun eingabebereit. Machen Sie ihre Änderungen und wählen Sie dann
Anwenden. Damit werden die geänderten Einstellungen auf der Datenbank aktiv.

262 April 2001


SAP AG BC - ABAP Dictionary
Speicherparameter

Falls Sie zum Beispiel die Extentgröße direkt verändern, wird das nächste Extent
[Seite 33] der Tabelle mit der neuen Größe angelegt. Auf die bereits vorhandenen
Extents hat diese Änderung keinen Einfluß.
Der Tablespace, in dem die Tabelle liegt, kann nicht direkt verändert werden. Eine
solche Änderung erfordert es, die Tabelle im alten Tablespace zu löschen und im
neuen Tablespace neu anzulegen.
Über Techn. Einstellung können Sie sich anzeigen lassen, welche Speicherparameter aus den
momentanen Werten der technischen Einstellungen berechnet würden.
Sie können die Speicherparameter, die beim nächsten Anlegen der Tabelle oder eines Index der
Tabelle verwendet werden sollen, auch explizit angeben. Dies kann beispielsweise notwendig
sein, wenn Sie die technischen Einstellungen der Tabelle geändert haben und sicherstellen
wollen, daß diese geänderten Einstellungen bei einer Umsetzung [Seite 233] der Tabelle
angewendet werden.
Gehen Sie hierzu wie folgt vor:
1. Wählen Sie Für Neuanlegen.
2. Im Folgebild können Sie sich mit eine Vorlage für die Parameter erzeugen lassen. Sie
können hierbei entscheiden, ob Sie als Vorlage die aktuell auf der Datenbank gültigen
Speicherparameter, die aus den technischen Einstellungen berechneten Speicherparameter,
die Defaultwerte des Datenbanksystems oder die Parameter einer anderen Tabelle
übernehmen wollen.
3. Lassen Sie sich die Vorlage erzeugen. Alle Parameter sind nun pflegbar, so daß Sie die
gewünschten Werte eingeben können.
4. Sichern Sie danach ihre Eingaben.
Wenn die Tabelle erneut auf der Datenbank angelegt wird (z.B. im Zuge einer Umsetzung),
werden dazu die von Ihnen eingegebenen Parameter verwendet.

Siehe auch:
Technische Einstellungen [Seite 31]

April 2001 263


BC - ABAP Dictionary SAP AG
Aufträge zur Massenverarbeitung anzeigen

Aufträge zur Massenverarbeitung anzeigen


Vorgehensweise zum Anzeigen der Aufträge
Mit DB-Aufträge ® Massenverarbeitung im Einstiegsbild des Datenbank-Utilities erhalten Sie
eine Liste aller von Ihnen selbst eingeplanten und noch nicht abgearbeiteten Einträge zur
Massenverarbeitung. Hier werden nur Aufträge angezeigt, für deren Bearbeitung noch kein Job
eingeplant wurde, die noch laufen oder die abgebrochen sind.
Die Liste aller im System eingeplanten und noch nicht bearbeiteten Aufträge erhalten Sie, indem
Sie in dieser Liste den Druckknopf Alle Aufträge betätigen. Mit Eigene Aufträge können Sie dann
wieder auf die Anzeige, der von Ihnen eingeplanten Aufträge zurückschalten.
Mit DB-Aufträge ® Per Import erstellte erhalten sie eine Liste aller durch einen Import von
Objekten aus einem anderen System entstandenen Einträge zur Massenverarbeitung, welche
noch nicht erfolgreich abgearbeitet wurden.

Informationen in den Listen


Diesen Listen können Sie folgende Informationen entnehmen:
· Objekt: Objekttyp.
· Objektname: Name des ABAP Dictionary Objekts.
· Id: Falls eine Matchcode-Id bearbeitet wird, steht hier die Kennung der Id. Falls ein Index
bearbeitet wird, steht hier die Indexkennung.
· Funktion: Funktion, die für das Objekt auf der Datenbank ausgeführt werden soll. Mögliche
Einträge sind CRE (Anlegen), DEL (Löschen), DNA (Löschen des Objekts auf der Datenbank
und Löschen des Laufzeitobjekts), MDF (Löschen, neu Anlegen) und CNV (Umsetzen).
· Benutzer: Benutzer, der den Auftrag in die TBATG eingetragen hat.
· Jobstatus: Status des für die Umsetzung eingeplanten Jobs.
· Startdatum, Startzeit: Datum und Uhrzeit, an der der Job gestartet wird.
· Jobname: Name des eingeplanten Jobs. Dieser Name hat stets die Form TBATG-<Datum
der Jobeinplanung>.
· Jobcount: Kennung, mit der mehrere am gleichen Tag eingeplante Jobs unterschieden
werden können.
· Erfassungsdatum: Datum, an dem der Auftrag in die TBATG eingetragen wurde.
· Order: Falls für ein Objekt mehrere Anforderungen vorliegen, steht hier deren Reihenfolge.

Jobs einplanen

Damit die Anforderungen zur Massenverarbeitung auch abgearbeitet werden, muß


ein entsprechender Job eingeplant werden. Aufträge, bei denen im Feld Jobname
noch kein Job eingetragen ist, werden also nicht bearbeitet.
Sie können für die angezeigten Aufträge direkt einen Job einplanen, indem Sie die gewünschten
Einträge in der ersten Spalte markieren und den Druckknopf Markierte einplanen betätigen. Es

264 April 2001


SAP AG BC - ABAP Dictionary
Aufträge zur Massenverarbeitung anzeigen

erscheint in diesem Fall ein Dialogfenster, in dem Sie den Startzeitpunkt des Jobs angeben
können.

Löschen von eingeplanten Aufträgen


Sie können eingeplante Aufträge löschen, indem Sie die entsprechende Zeile markieren und den
Druckknopf Markierte betätigen.

April 2001 265


BC - ABAP Dictionary SAP AG
Jobs für die Massenverarbeitung einplanen

Jobs für die Massenverarbeitung einplanen


Voraussetzungen
Falls Sie für eine Aktion des Datenbank-Utilities die Verarbeitungsart Zur Massenverarbeitung
eintragen wählen, wird die Aktion nicht direkt ausgeführt. Es werden statt dessen Einträge mit
der entsprechenden Funktion in einer Systemtabelle (TBATG) erzeugt. Die in dieser Tabelle
gesammelten Aufträge werden im Hintergrund zu festgesetzten Zeitpunkten abgearbeitet. Der
Hintergrundprozeß muß dabei explizit als Job eingeplant werden.

Vorgehensweise
1. Sie können den Job im Einstiegsbild des Datenbank-Utilities (Transaktion SE14) einplanen.
Wählen Sie hierzu Zusätze ® Job einplanen.
Es wird ein Dialogfenster eingeblendet, in dem Sie die notwendigen Einplanungen für
den Job vornehmen können. Tragen Sie hier Datum und Uhrzeit des Jobstarts ein.
2. Der Job kann auch in Abhängigkeit von bestimmten Ereignissen, bei bestimmten
Betriebsarten oder nach Beendigung eines anderen Jobs gestartet werden.
Betätigen Sie dazu bitte die entsprechenden Drucktasten und machen Sie die benötigten
Eingaben.
3. Falls Sie den Job periodisch einplanen möchten, müssen Sie das Kennzeichen Job
periodisch ausführen markieren.
Sie müssen in diesem Fall noch die Periodenwerte wählen. Wählen Sie hierzu
Periodenwerte. Die möglichen Werte werden in einem Dialogfenster eingeblendet.
Markieren Sie hier den gewünschten Wert und wählen Sie Sichern.
4. Wählen Sie Sichern, um den Startzeitpunkt zu speichern.
Es erscheint ein Dialogfenster, in dem Sie weitere Einschränkungen bzgl. der Aufträge
eintragen können, die der Job bearbeiten soll. Der Job bearbeitet dann nur die TBATG-
Einträge, auf die angegebenen Einschränkungen passen. Die Bedeutung der einzelnen
Parameter auf diesem Bild können Sie der F1-Hilfe zu den Eingabefeldern entnehmen.
5. Wählen Sie Einplanung ® In Job einstellen.
Der Job wird damit eingeplant. Der Job bearbeitet alle zur Massenverarbeitung
eingeplanten Aufträge (TBATG-Einträge), auf die die Selektionsbedingungen passen.

Siehe auch:
Verarbeitungsart [Seite 261]

266 April 2001


SAP AG BC - ABAP Dictionary
Protokolle der Massenverarbeitung anzeigen

Protokolle der Massenverarbeitung anzeigen


Vorgehensweise
Mit Zusätze ® Protokolle im Einstiegsbild des Datenbank-Utilities erhalten Sie die Protokolle
aller im Hintergrund abgearbeiteten Aufträge zur Massenverarbeitung.

Informationen auf der Liste


Dieser Liste können Sie folgende Informationen entnehmen:
· Protokollname: Name des Hintergrundjobs.
· Severity: Maximale Fehlerschwere (' ' = kein Fehler, W = Warnung, E = Fehler) eines
Verarbeitungsschritts innerhalb des Jobs.
· Länge: Anzahl der Zeilen des Protokolls der Massenverarbeitung.
· User: Auftraggeber des Jobs.
· Datum, Zeit: Datum und Zeit des Jobstarts.

Aktionen in der Liste


Sie können aus dieser Liste heraus folgende Aktionen durchführen:
· Anzeigen eines Protokolls: Markieren Sie hierzu den Protokollnamen und wählen Sie .
· Namen des Protokolls ändern: Sie können dem Protokoll einen anderen Namen zuweisen
über Bearbeiten ® Umbenennen oder das Protokoll in ein Protokoll anderen Namens
kopieren über Bearbeiten ® Kopieren.
· Löschen eines Protokolls: Markieren Sie hierzu die zu löschenden Protokolle und wählen
Sie .

April 2001 267


BC - ABAP Dictionary SAP AG
Temporäre Tabellen ohne Aufsetzprotokolle anzeigen

Temporäre Tabellen ohne Aufsetzprotokolle anzeigen


Vorgehensweise
Mit Zusätze ® Ungültige temp. Tab. können Sie sich die in ihrem System vorhandenen
temporären Tabellen (QCM-Tabellen) anzeigen lassen, für die kein Aufsetzprotokoll vorliegt.
Tabellen für die ein Aufsetzprotokoll vorliegt, bei denen also die Umsetzung abgebrochen ist,
werden hier nicht angezeigt.
Solche temporären Tabellen entstehen während der Umsetzung (siehe Ablauf einer Umsetzung
[Seite 233]). Bei einer solchen Umsetzung werden die Daten der Tabelle in einer temporären
Tabelle gesichert. Nachdem die Tabelle mit ihrer neuen Struktur auf der Datenbank angelegt
wurde, werden die Daten in die Originaltabelle zurückgeladen. Falls die Umsetzung fehlerfrei
abläuft, wird die temporäre Tabelle also nicht mehr benötigt.
Ab Release 3.0 wird die temporäre Tabelle nach dem erfolgreichen Ablauf der Umsetzung
gelöscht. Vor Release 3.0 blieben diese Tabellen auch nach dem erfolgreichen Ablauf der
Umsetzung erhalten. Solche Tabellen können also gelöscht werden.

Beim Löschen der angezeigten temporären Tabellen sollten Sie jedoch sicherstellen,
daß eine abgebrochene Umsetzung nicht versehentlich entsperrt wurde. In diesem
Fall wird das vorhandene Aufsetzprotokoll gelöscht. Falls die Umsetzung zu einem
Zeitpunkt abgebrochen wurde, in dem die Daten nur noch in der temporären Tabelle
vorhanden waren, droht hier Datenverlust.
Falls Sie sich nicht sicher sind, ob ein solcher Fall vorliegt, sollten Sie vor dem
Löschen der temporären Tabelle prüfen, ob die Originaltabelle auf der Datenbank
vorhanden ist und das erwartete Datenvolumen enthält.

268 April 2001


SAP AG BC - ABAP Dictionary
Pool- und Clustertabellen

Pool- und Clustertabellen


Tabellenpools (Pools) und Tabellencluster (Cluster) sind spezielle Tabellentypen im ABAP
Dictionary. In einem Tabellenpool bzw. Tabellencluster können die Daten mehrerer
unterschiedlicher Tabellen gemeinsam abgelegt werden. Die einem Tabellenpool bzw.
Tabellencluster zugeordneten Tabellen werden als Pooltabellen bzw. Clustertabellen bezeichnet.
Ein Tabellenpool oder Tabellencluster sollte ausschließlich zur Ablage interner
Steuerinformationen (Dynprofolgen, Programmparameter, temporäre Daten, fortlaufende Texte
wie z.B. Dokumentation) genutzt werden. Alle betriebswirtschaftlich relevanten Daten werden
ausschließlich in transparenten Tabellen abgelegt!

Tabellenpool
Einem Tabellenpool entspricht eine Tabelle auf der Datenbank, in der alle Sätze der dem
Tabellenpool zugeordneten Pooltabellen abgelegt werden.
Die Definition eines Pools besteht im wesentlichen aus zwei Schlüsselfeldern (Tabname und
Varkey) und einem langen Argumentfeld (Vardata). Ein Pool besitzt folgende Struktur:

Feld Datentyp Bedeutung


Tabname CHAR(10) Name der Pooltabelle
Varkey CHAR (n) Enthält als String die Einträge aller Schlüsselfelder des Satzes
der Pooltabelle, max. Länge für n ist 110
Dataln INT2(5) Länge des in Vardata stehenden Strings
Vardata RAW (n) Enthält als String die Einträge aller Datenfelder des Satzes der
Pooltabelle, max. Länge n ist abhängig vom verwendeten
Datenbanksystem

Wird ein Satz einer Pooltabelle gespeichert, so wird dieser im zugeordneten Tabellenpool
abgelegt. Der Name der Pooltabelle wird dabei in das Feld Tabname geschrieben. Der Inhalt
aller Schlüsselfelder der Pooltabelle wird als String in das Feld Varkey und der Inhalt aller
Datenfelder als String in das Feld Vardata geschrieben. Die Länge des in Vardata
abgespeicherten Strings wird von der Datenbankschnittstelle im Feld Dataln eingetragen.

April 2001 269


BC - ABAP Dictionary SAP AG
Pool- und Clustertabellen

Pooltabelle TABA

A B C
Tabellenpool auf der Datenbank

Key Daten

TABA A B C

Pooltabelle TABB TABB D E F

Tabname Varkey DataLn Vardata


D E F

Key Daten

Aufgrund der Struktur eines Tabellenpools bestehen einige Restriktionen für die Pooltabellen, die
ihm zugeordnet werden. Pooltabellen dürfen nur einen höchstens 10-stelligen Namen besitzen.
Da Varkey ein Character-Feld ist, müssen alle Schlüsselfelder einer Pooltabelle Character-
Datentypen (z.B. CHAR, NUMC, CLNT) besitzen. Die Gesamtlänge aller Schlüsselfelder bzw.
die Gesamtlänge aller Datenfelder einer Pooltabelle darf die Länge des Varkey- bzw. Vardata-
Feldes des zugeordneten Pools nicht übersteigen.

Tabellencluster
In einem Tabellencluster können mehrere logische Datensätze aus mehreren verschiedenen
Clustertabellen in einem physischen Satz zusammengefaßt abgespeichert werden.
Der Schlüssel eines Clusters besteht aus einer Reihe von frei definierbaren Schlüsselfeldern und
einem Feld (Pageno) zur Unterscheidung von Fortsetzungssätzen. Weiterhin enthält ein Cluster
ein langes Feld (Vardata), das die Inhalte der Datenfelder der Clustertabellen zu diesem
Schlüssel enthält. Falls die Daten nicht in das lange Feld passen, werden Fortsetzungssätze
angelegt. An den Anfang des Vardata-Feldes werden weiterhin Steuerinformationen zur Struktur
des Datenstrings geschrieben. Ein Tabellencluster besitzt folgende Struktur:

Feld Datentyp Bedeutung


CLKEY1 * Erstes Schlüsselfeld
CLKEY2 * Zweites Schlüsselfeld
... ... ...
CLKEYn * n-tes Schlüsselfeld
Pageno INT2(5) Nummer des Fortsetzungssatzes

270 April 2001


SAP AG BC - ABAP Dictionary
Pool- und Clustertabellen

Timestmp CHAR(14) Zeitstempel


Pagelg INT2(5) Länge des in Vardata stehenden Strings
Vardata RAW (n) Enthält als String die Einträge der Datenfelder der
zugeordneten Clustertabellen, die max. Länge n ist abhängig
vom verwendeten Datenbanksystem

Die Sätze aller Clustertabellen mit gleichem Schlüssel werden unter einem Schlüssel im
zugeordneten Tabellencluster abgelegt. Die Werte der Schlüsselfelder werden in den
entsprechenden Schlüsselfeldern des Tabellenclusters abgelegt. Die Werte aller Datenfelder der
zugeordneten Clustertabellen werden als String in das Vardata-Feld des Tabellenclusters
geschrieben. Der Datenstring enthält neben den eigentlichen Datenwerten noch Informationen
dazu, welche Struktur die Daten haben und aus welcher Tabelle sie kommen. Falls der String die
maximale Länge des Vardata-Feldes überschreitet, wird mit den gleichen Schlüsselwerten ein
Fortsetzungssatz geschrieben. Die Fortsetzungssätze zu einem Schlüssel werden durch ihre
Werte im Feld Pageno unterschieden. Die tatsächliche Länge des im Vardata-Feld stehenden
Strings wird von der Datenbankschnittstelle im Feld Pagelg abgelegt.

Clustertabelle TABA

A B C D
Tabellencluster auf der Datenbank

Key Daten

A B 0 C D
D E
Clustertabelle TABB
A B 1 F G H

A B E F Key Pageno Vardata

A B G H

Key Daten

Für das korrekte Auslesen der Daten aus einer Pooltabelle bzw. Clustertabelle sind die im ABAP
Dictionary gespeicherten Strukturinformationen notwendig. Deshalb können solche Tabellen nur
mit Open SQL über die Clusterschnittstelle und nicht mit Native SQL direkt auf der Datenbank
bearbeitet werden.

Siehe auch:
Tabellenpool/Tabellencluster anlegen [Seite 273]
Tabellenpool/Tabellencluster löschen [Seite 275]
Pooltabellen/Clustertabellen anlegen [Seite 276]

April 2001 271


BC - ABAP Dictionary SAP AG
Pool- und Clustertabellen

Pool/Clustertabellen ändern [Seite 277]

272 April 2001


SAP AG BC - ABAP Dictionary
Tabellenpool/Tabellencluster anlegen

Tabellenpool/Tabellencluster anlegen
Vorgehensweise
1. Wählen Sie im ABAP Dictionary Einstiegsbild Hilfsmittel ® Weitere Dictionary
Objekte.
Es erscheint ein Dialogfenster.
2. Markieren Sie den Objekttyp Tabellenpool/-cluster und geben Sie den Objektnamen ein.
Wählen Sie dann .
Es erscheint ein Dialogfenster, in dem Sie entscheiden müssen, ob Sie einen
Tabellenpool oder einen Tabellencluster anlegen wollen.
Markieren Sie den gewünschten Objekttyp und wählen Sie .
3. Das Pflegebild für Tabellenpools/-cluster erscheint.
Im Falle eines Tabellenpools sind die notwendigen Angaben für die Felder bereits
automatisch eingetragen, da die Struktur eines Tabellenpools festliegt. Sie sollten diese
Standardeinstellungen nach Möglichkeit nicht ändern.
Auch Tabellencluster haben eine weitgehend festgelegte Struktur. Beim Anlegen werden
deshalb bereits gewisse Felder vorgeschlagen. Sie können diesen Vorschlag an ihre
Erfordernisse anpassen, z.B. indem Sie zusätzliche Schlüsselfelder aufnehmen. Halten
Sie sich dabei aber an die für einen Tabellencluster notwendige Struktur.
4. Geben Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
Wählen Sie gegebenenfalls über Hilfsmittel ® Aktivierungsart die Aktivierungsart [Seite
84] des Tabellenpools/-clusters.
5. Erfassen Sie über Springen ® Dokumentation Dokumentation zum Tabellenpool/-cluster.
Diese Dokumentation soll beschreiben für welche Zwecke der Tabellenpool/-cluster
verwendet wird. Die Dokumentation wird beim Drucken des Tabellenpool/-cluster mit
ausgegeben.
6. Über Springen ® Technische Einstellung verzweigen Sie in die Pflege der technischen
Einstellungen.
Im Gegensatz zur Tabellenpflege können Sie hier nur die Größenkategorie [Seite 33]
des Tabellenpools/-clusters angeben. Alle anderen Attribute der technischen
Einstellungen sind festgelegt.
7. Aktivieren Sie den Tabellenpool/-cluster über .

Ergebnis
Der Tabellenpool/-cluster wird aktiviert. Über Hilfsmittel ® Aktivierungsprotokoll können Sie sich
das Protokoll des Aktivierungsvorgangs ansehen. Falls bei der Aktivierung Fehler auftraten, wird
das Aktivierungsprotokoll automatisch angezeigt.
Sie müssen den Tabellenpool/-cluster nach dem Aktivieren noch auf der Datenbank anlegen.
Verzweigen Sie dazu ins Datenbank-Utility (Hilfsmittel ® Datenbank-Utility).

April 2001 273


BC - ABAP Dictionary SAP AG
Tabellenpool/Tabellencluster anlegen

Ein Tabellenpool/-cluster kann nicht mehr geändert werden, wenn er bereits Daten
enthält.

274 April 2001


SAP AG BC - ABAP Dictionary
Tabellenpool/Tabellencluster löschen

Tabellenpool/Tabellencluster löschen
Voraussetzungen
Beachten Sie bitte, daß Sie einen Tabellenpool bzw. Tabellencluster erst löschen können, wenn
er keine Pooltabellen bzw. Clustertabellen mehr enthält.

Vorgehensweise:
1. Wählen Sie im Einstiegsbild des ABAP Dictionary Hilfsmittel ® Weitere Dictionary Objekte.
Es erscheint ein Dialogfenster.
2. Markieren Sie den Objekttyp Tabellenpool/-cluster.
Geben Sie dann den Namen des Tabellenpools bzw. Tabellenclusters ein.
3. Wählen Sie .
Falls der Tabellenpool bzw. Tabellencluster noch Daten erhält, werden Sie in einem
Dialogfenster darüber informiert. Falls keine Daten vorhanden sind, erscheint ein
Dialogfenster, in welchem Sie gebeten werden, den Löschauftrag zu bestätigen.
Sind dem Tabellenpool bzw. Tabellencluster noch Pool- bzw. Clustertabellen
zugeordnet, ist ein Löschen nicht möglich.
4. Bestätigen Sie den Löschauftrag.

Ergebnis
Der Pool bzw. Cluster wird nun im ABAP Dictionary und auf der Datenbank gelöscht.

April 2001 275


BC - ABAP Dictionary SAP AG
Pooltabellen/Clustertabellen anlegen

Pooltabellen/Clustertabellen anlegen
Vorgehensweise
1. Markieren Sie im ABAP Dictionary Einstiegsbild den Objekttyp Tabelle, geben Sie einen
Tabellennamen ein und wählen Sie Anlegen.
Sie verzweigen damit in die Feldpflege der Tabelle. Standardmäßig ist der Tabellentyp
Transparente Tabelle gewählt.
2. Machen Sie auf der Registerkarte Eigenschaften die notwendigen Eingaben in den Feldern
Kurzbeschreibung und Auslieferungsklasse. Definieren Sie dann die Felder der Tabelle.
Sie können hierzu wie beim Anlegen einer transparenten Tabelle [Seite 74] vorgehen.
Sichern Sie ihre Eingaben.
3. Wählen Sie Zusätze ® Tabellenart ändern.
Ein Dialogfenster erscheint, in welchem Sie den gewünschten Tabellentyp Pool-Tabelle
bzw. Cluster-Tabelle markieren müssen.
4. Wählen Sie Auswählen.
Sie kehren damit in die Feldpflege der Tabelle zurück. Zusätzlich zu den standardmäßig
vorhandenen Feldern ist auf der Registerkarte Eigenschaften das Feld Pool-
/Clustername eingeblendet.
5. Geben Sie im Feld Pool-/Clustername den Namen des Tabellenpools bzw. Tabellenclusters
[Seite 269] ein, welchem Sie die Pooltabelle bzw. Clustertabelle zuordnen wollen.
Beachten Sie dabei, daß die Gesamtschlüssellänge einer Pooltabelle die Schlüssellänge
des zugeordneten Tabellenpools nicht überschreiten darf. Der Schlüssel einer
Clustertabelle muß mit dem Schlüssel des zugeordneten Tabellenclusters
übereinstimmen.
6. Verfahren Sie im weiteren wie beim Anlegen einer transparenten Tabelle (siehe Tabelle
anlegen [Seite 74]). Beachten Sie dabei, daß das Anlegen von Indizes für Pooltabellen bzw.
Clustertabellen nicht möglich ist.

Bei Pooltabellen und Clustertabellen sind sämtliche Attribute der Technischen


Einstellungen [Seite 31] pflegbar. Auf diese Attribute wird jedoch erst zugegriffen,
wenn die Tabelle in eine transparente Tabelle umgewandelt wird.

276 April 2001


SAP AG BC - ABAP Dictionary
Pool/Clustertabellen ändern

Pool/Clustertabellen ändern
Vorgehensweise
Um eine Pool- bzw. Clustertabelle zu ändern, können Sie wie bei transparenten Tabellen
beschrieben vorgehen (siehe Änderungen an Tabellen durchführen [Seite 86]).

Auswirkungen von Änderungen


Es gibt jedoch einige Unterschiede zu transparenten Tabellen bzgl. der Auswirkung solcher
Änderungen.
Werden neue Felder an eine Pool- bzw. Clustertabelle angehängt, ist keine Umsetzung der
Tabelle notwendig. Die neuen Felder sind automatisch als NOT NULL definiert (siehe Initialwerte
[Seite 92]). Deshalb wird beim Aktivieren der geänderten Tabelle die gesamte Tabelle
durchlaufen und das neue Feld dabei mit dem Initialwert gefüllt. Dies kann bei Pool- bzw.
Clustertabellen, die eine große Anzahl von Sätzen enthalten, sehr aufwendig sein.
Das Einfügen von neuen Feldern in eine Pool- bzw. Clustertabelle bzw. das Ändern der
Feldreihenfolge führt, anders als bei transparenten Tabellen, stets zur Umsetzung [Seite 233] der
Tabelle.
Wird eine Pool- bzw. Clustertabelle einem anderen physischen Tabellenpool bzw.
Tabellencluster zugeordnet, so führt dies zu einer Umsetzung der Tabelle.

Pool- bzw. Clustertabellen, die mehr als 250 Felder enthalten, können nicht
umgesetzt werden. Änderungen an solchen Tabellen, die eine Umsetzung
erforderlich machen (z.B. Einfügen von Feldern, Ändern der Feldreihenfolge,
Löschen von Feldern), sind deshalb nicht möglich. Neue Felder müssen bei solchen
Tabellen also immer ans Ende der Tabelle angehängt werden.

April 2001 277


BC - ABAP Dictionary SAP AG
Matchcodes

Matchcodes

Ab Release 4.0 wurden Matchcodes durch Suchhilfen [Seite 177] ersetzt.


Verwenden Sie bitte Suchhilfen, um Felder mit einer Wertehilfe zu versehen.
Vorhandene Matchcodes werden beim Upgrade auf ein Release größer 4.0
automatisch in Suchhilfen migriert [Seite 213]. Ein Matchcode-Objekt wird dabei in
eine gleichnamige Sammelsuchhilfe [Seite 183] umgewandelt. Jede Matchcode-Id
des Matchcode-Objekts wird in eine gleichnamige elementare Suchhilfe [Seite 179]
umgewandelt und der aus dem Matchcode-Objekt entstandenen Sammelsuchhilfe
zugeordnet.
Ein Matchcode ist ein Hilfsmittel, um im System abgelegte Datensätze zu suchen. Die
Matchcode-Definition im ABAP Dictionary erfolgt zweistufig:
· In einem Matchcode-Objekt werden zunächst die relevanten Tabellen und Felder für die
Suche festgelegt. Ein Matchcode-Objekt beschreibt die Menge aller möglichen Suchpfade für
einen Suchbegriff.
· Zu einem Matchcode-Objekt können dann eine oder mehrere Matchcode-Ids angelegt
werden. Eine Matchcode-Id beschreibt einen speziellen Suchpfad für einen Suchbegriff. In
der Matchcode-Id wird festgelegt, über welche Felder bzw. Feldkombinationen gesucht
werden soll.

Auf einem Bildschirmfeld wird die Eingabe einer Materialnummer verlangt. Da nicht
erwartet werden kann, daß der Benutzer diese Nummer kennt, muß eine Möglichkeit
der Suche nach dieser Nummer über Eigenschaften des entsprechenden Materials
vorhanden sein.
Für diese Suche sind mehrere Suchpfade denkbar. Die Materialnummer kann z.B.
alternativ über die Materialbezeichnung, die Materialklasse oder den Hersteller des
Materials gesucht werden.
Das entsprechende Matchcode-Objekt würde damit aus den Feldern
Materialnummer, Materialbezeichnung, Materialklasse und Hersteller bestehen.
Jedem Suchpfad entspricht dann eine Matchcode-Id. Beispielsweise könnte die Id A
die Suche nach der Materialnummer über den Hersteller des Materials beschreiben.
Diese Id würde damit nur die Felder Materialnummer und Hersteller enthalten.

Matchcode-Objekt
In ein Matchcode-Objekt werden die für die Suche relevanten Tabellen aufgenommen. Bei der
Tabellenauswahl wird von einer Primärtabelle ausgegangen. Zu dieser können weitere mit der
Primärtabelle über Fremdschlüssel verknüpfte Sekundärtabellen hinzugenommen werden. Aus
den gewählten Basistabellen können dann die Felder des Matchcode-Objekts ausgewählt
werden.
Ein Matchcode-Objekt wird nicht physisch abgespeichert, sondern beschreibt eine umfassende
logische Sicht auf eine oder mehrere Tabellen.

278 April 2001


SAP AG BC - ABAP Dictionary
Matchcodes

Matchcode-Ids
Zu einem Matchcode-Objekt können mehrere Matchcode-Ids angelegt werden. Die Matchcode-
Ids werden aus dem Matchcode-Objekt durch Projektion (Feldauswahl) und Selektion (Angabe
einer Selektionsbedingung) abgeleitet.
Eine Matchcode-Id muß innerhalb eines Matchcode-Objekts durch einen Buchstaben oder eine
Ziffer identifiziert werden, so daß maximal 36 Matchcode-Ids (26 Buchstaben und 10 Ziffern) pro
Matchcode-Objekt definierbar sind.
Für jede Matchcode-Id können Selektionsbedingungen angegeben werden, die als Filter für
den aufzubauenden Matchcode verwendet werden. In diesen Selektionsbedingungen können
Restriktionen für alle Felder aus den Basistabellen der betreffenden Matchcode-Id angegeben
werden.
Weiterhin ist eine Aktualisierungsart [Seite 280] anzugeben. Die Aktualisierungsart bestimmt, wie
der Zugriff auf die Daten erfolgt und wie sich der Matchcode an Änderungen der Daten in den im
Matchcode enthaltenen Tabellen anpaßt.

Siehe auch:
Matchcodes anlegen [Seite 283]
Matchcodes ändern [Seite 302]

April 2001 279


BC - ABAP Dictionary SAP AG
Aktualisierungsart

Aktualisierungsart
Die Aktualisierungsart einer Matchcode-Id legt fest, wie der Matchcode aufgebaut ist und wie der
Matchcode an Änderungen an den Datensätzen der Basistabellen angepaßt wird. Zu einem
Matchcode-Objekt können Ids mit unterschiedlichen Aktualisierungsarten gewählt werden.

Aufbau eines Matchcodes


Es gibt zwei Möglichkeiten, einen Matchcode aufzubauen:

Logischer Aufbau:
Die Matchcode-Daten werden temporär zum Zeitpunkt des Zugriffs auf den Matchcode
aufgebaut. Die Realisierung erfolgt in diesem Fall durch einen Datenbank-View. Man bezeichnet
dies auch als transparente Ablage von Matchcodes.

Physischer Aufbau:
Die Matchcode-Daten werden redundant als eigene Tabelle im System abgelegt. Es muß hier
festgelegt werden, wie sich die Datenbestände in dieser redundanten Tabelle an Änderungen in
den Basistabellen des Matchcode-Objekts anpassen.
Alle physisch realisierten Matchcode-Ids eines Matchcode-Objekts werden in einem Tabellenpool
(mit Namen M_<Matchcode-Objekt>) abgelegt. Dieser Matchcode-Pool wird bei der Aktivierung
der ersten physisch realisierten Id des Matchcode-Objekts automatisch im ABAP Dictionary und
auf der Datenbank angelegt. Zu jeder Matchcode-Id wird bei der Aktivierung eine Pooltabelle (mit
Namen M_<Matchcode-Objekt><Matchcode-Id>) im ABAP Dictionary erzeugt, die dem
Tabellenpool des Matchcode-Objekts zugeordnet wird.

Aktualisierungsarten
Aktualisierungsart A
Die Matchcode-Daten werden redundant als eigene Tabelle im System abgelegt. Die Matchcode-
Daten werden unabhängig von Datenänderungen nur zu bestimmten Zeitpunkten mit Hilfe des
Matchcode-Utilities aufgebaut. Der unter Umständen aufwendige Aufbau der Matchcode-Daten
kann damit in Zeiten geringer Systembelastung erfolgen, beispielsweise im Laufe der Nacht.
Bei der Matchcode-Suche kann damit nicht immer auf aktuelle Daten zugegriffen werden. Im
Zusammenhang mit der Online-Suchhilfe kann diese Ungenauigkeit aber in der Regel in Kauf
genommen werden.

Aktualisierungsart S
Die Matchcode-Daten werden redundant als eigene Tabelle im System abgelegt. Die Matchcode-
Daten werden an jede mit ABAP Open SQL durchgeführte Modifikationsoperation (INSERT,
DELETE oder UPDATE) auf den Basistabellen der Id angepaßt.
Die von der Änderung einer Tabelle betroffenen Matchcode-Daten werden also automatisch
aktualisiert, ohne daß dies von der Anwendung explizit veranlaßt werden muß. Allerdings kostet
die automatische Aktualisierung auch Performance.

Aktualisierungsart P
Die Matchcode-Daten werden redundant als eigene Tabelle im System abgelegt. Die Matchcode-
Daten werden vom Anwendungsprogramm selbst aktualisiert, so daß dieses

280 April 2001


SAP AG BC - ABAP Dictionary
Aktualisierungsart

Anwendungsprogramm und auch andere Programme stets auf aktuelle Matchcode-Daten


zugreifen können.
Hierzu wird bei der Aktivierung einer Matchcode-Id ein Funktionsbaustein mit dem Namen
MC_UPDATE_<Matchcode-Objekt-Name> generiert. Beim Aufruf dieses Funktionsbausteins
durch das Anwendungsprogramm werden die Matchcode-Daten aktualisiert.

Aktualisierungsart I
Die Matchcode-Daten werden logisch als Datenbank-View realisiert. In transparente Matchcodes
dürfen nur transparente Tabellen eingehen. Bei der Aktivierung einer transparenten Matchcode-
Id wird automatisch eine Viewdefinition im ABAP Dictionary angelegt, die die in der Matchcode-Id
Definition angegebenen Felder (in genau derselben Reihenfolge) sowie die eventuell definierte
Matchcode-Selektionsbedingung als View-Selektionsbedingung enthält. Bei kundendefinierten
Matchcode-Ids sollte zur Unterstützung des Viewzugriffs ein entsprechender Datenbank-Index
angelegt werden.
Die transparenten Matchcodes sind insbesondere bei Modifikationsoperationen wesentlich
effizienter als z.B. die synchron gepflegten, da keinerlei zusätzliche Datenbankzugriffe anfallen
und in einer Client/Server-Umgebung damit der Kommunikationsaufwand mit einem entfernten
Datenbankserver reduziert wird. Die Matchcodeselektion selbst ist vergleichbar mit dem
Selektionsverhalten der physisch abgelegten Matchcodes, sofern geeignete Indizes auf der
Datenbank existieren.

Aktualisierungsart K
Klassifikationsmatchcodes sind anwendungsspezifische Suchpfade, die wie alle anderen
Matchcodes auch über die Eingabehilfe F4 angesprochen werden können, für die jedoch keine
eigenen Matchcode-Daten fortgeschrieben werden (logischer Aufbau). Die Datenbeschaffung
erfolgt über einen Funktionsbaustein. Dieser muß bei der Matchcode-Id Definition angegeben
werden und wird bei der Matchcodeselektion aufgerufen.

April 2001 281


BC - ABAP Dictionary SAP AG
Besonderheiten bei programmgesteuerten Matchcodes

Besonderheiten bei programmgesteuerten Matchcodes


Ein programmgesteuerter Matchcode (Aktualisierungsart P) wird physisch realisiert, d.h. die
Matchcode-Daten werden redundant als eigene Tabelle im System abgelegt. Die Matchcode-
Daten werden vom Anwendungsprogramm selbst aktualisiert, so daß dieses
Anwendungsprogramm und auch andere Programme stets auf aktuelle Matchcode-Daten
zugreifen können.
Hierzu wird bei der Aktivierung einer Matchcode-Id ein Funktionsbaustein mit dem Namen
MC_UPDATE_<Matchcode-Objekt-Name> generiert. Beim Aufruf dieses Funktionsbausteins
durch das Anwendungsprogramm werden die Matchcode-Daten aktualisiert.
Eine Umstellung eines programmgesteuerten Matchcodes auf transparente Ablage erfordert
deshalb eine Änderung der Anwendungsprogramme, die diesen Funktionsbaustein verwenden.
Es genügt dabei, den Aufruf des Funktionsbausteins auszukommentieren.
Ein Hinzufügen von Tabellen in ein Matchcode-Objekt, das eine programmgesteuerte
Matchcode-Id enthält, kann zu Problemen führen. Denn es existiert nur ein Funktionsbaustein für
alle programmgesteuerten Ids des Objekts. Dieser zieht seine Informationen direkt aus dem
Matchcode-Objekt. Deshalb muß bei einer Änderung der Basistabellen des Objekts die
Schnittstelle zu diesem Funktionsbaustein angepaßt werden, auch wenn die Änderung die
programmgesteuerte Id nicht direkt betrifft.

282 April 2001


SAP AG BC - ABAP Dictionary
Matchcodes anlegen

Matchcodes anlegen
Vorgehensweise
1. In die Matchcode-Pflege gelangen Sie über das Einstiegsbild des ABAP Dictionary. Wählen
Sie dort Hilfsmittel ® Weitere Dictionary-Objekte.
Es erscheint ein Dialogfenster.
2. Markieren Sie den Objekttyp Matchcode-Objekt und geben Sie einen vierstelligen
Objektnamen ein. Wählen Sie dann Anlegen.
Sie verzweigen ins Pflegebild für Matchcode-Objekte. Alle weiteren Schritte sind
ausgehend von diesem Pflegebild beschrieben.
Um einen Matchcode anzulegen, müssen Sie zuerst ein Matchcode-Objekt und zu diesem dann
ein oder mehrere Matchcode-Ids anlegen.

Vorgehensweise zum Anlegen eines Matchcode-Objekts


1. Eigenschaften des Matchcode-Objekts angeben [Seite 284]
2. Sekundärtabellen des Matchcode-Objekts auswählen [Seite 285]
3. Felder des Matchcode-Objekts auswählen [Seite 286]
4. Matchcode-Objekt aktivieren [Seite 287]

Vorgehensweise zum Anlegen einer Matchcode-Id


1. Eigenschaften der Matchcode-Id angeben [Seite 288]
2. Sekundärtabellen einer Matchcode-Id auswählen [Seite 290]
3. Felder einer Matchcode-Id auswählen [Seite 291]
4. Selektionsbedingungen einer Matchcode-Id angeben [Seite 294] (optional)
5. Matchcode-Id aktivieren [Seite 296]
In Abhängigkeit von der gewählten Aktualisierungsart der Matchcode-Ids eines Matchcode-
Objekts müssen Sie weitere Strukturen anlegen bzw. bestimmte Aktionen durchführen:
· Aktualisierungsarten A, S oder P: Matchcode-Daten aufbauen [Seite 297]
· Aktualisierungsart I: Matchcode-Index anlegen [Seite 299]
· Aktualisierungsart K: Funktionsbaustein für Matchcode-Id [Seite 301] anlegen

Siehe auch:
Aktualisierungsart [Seite 280]

April 2001 283


BC - ABAP Dictionary SAP AG
Eigenschaften des Matchcode-Objekts angeben

Eigenschaften des Matchcode-Objekts angeben


Vorgehensweise
1. Verzweigen Sie ins Pflegebild für Matchcode-Objekte.
2. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
3. Wählen Sie die Primärtabelle des Matchcode-Objekts aus. Tragen Sie den Namen dieser
Tabelle im Feld Primärtabelle ein.
4. Sichern Sie Ihre Eingaben.
5. Es erscheint ein Dialogfenster, in dem Sie dem Matchcode-Objekt eine Entwicklungsklasse
zuordnen müssen.

Weitere Informationen
Im Bild Matchcode-Objekt pflegen (Eigenschaften) sind zusätzlich folgende Informationen
angezeigt:

Sekundärtabellen
Mit der Primärtabelle über Fremdschlüssel verbundene Tabellen.

Matchcode-Pool
Hier wird der automatisch bestimmte Name des zum Matchcode-Objekt gehörenden
Tabellenpools (siehe Pool- und Clustertabellen [Seite 269]) angezeigt, nachdem Sie die erste
physisch realisierte Id (siehe Aktualisierungsart [Seite 280]) des Matchcode-Objekts aktiviert
haben.
Die Definition des Tabellenpools wird bei der Aktivierung der ersten physisch realisierten Id des
Matchcode-Objekts automatisch im ABAP Dictionary und auf der Datenbank angelegt. Der Name
des Tabellenpools setzt sich zusammen aus dem Präfix M_ und dem Namen des Matchcode-
Objekts. Der Name des Tabellenpools für das Matchcode-Objekt TEST wäre zum Beispiel
M_TEST.

Nächste Aktion beim Anlegen eines Matchcodes:


Sekundärtabellen des Matchcode-Objekts auswählen [Seite 285]

284 April 2001


SAP AG BC - ABAP Dictionary
Sekundärtabellen des Matchcode-Objekts auswählen

Sekundärtabellen des Matchcode-Objekts auswählen


Vorgehensweise
1. Wählen Sie im Pflegebild für die Eigenschaften eines Matchcode-Objekts Springen ®
Tabellen.
Das Pflegebild für die Tabellenauswahl des Matchcode-Objekts wird angezeigt. Im
oberen Teil des Bildes werden alle bereits in das Objekt übernommenen Tabellen
aufgelistet.
Wurden bereits Sekundärtabellen angegeben, sind die zwischen den Tabellen
bestehenden Fremdschlüssel [Seite 20] in tabellarischer Form in der unteren Bildhälfte
aufgelistet. Sie erhalten dort Informationen zu referierter Tabelle, abhängiger Tabelle und
verwendetem Prüffeld.
Sie können sich die Definition des Fremdschlüssels anzeigen lassen, indem Sie den
Cursor auf die entsprechende Zeile positionieren und Bearbeiten ® Fremdschlüssel
wählen.
2. Wollen Sie weitere Sekundärtabellen aufnehmen, stellen Sie den Cursor auf einen
Tabellennamen (Primär- oder eine der bereits aufgenommenen Sekundärtabellen) und
wählen Sie Bearbeiten ® SekTab auswählen.
Sie erhalten in einem Dialogfenster eine Liste aller mit der ausgewählten Tabelle über
Fremdschlüssel verbundenen Tabellen.
3. Stellen Sie den Cursor auf eine Tabelle, die Sie als Sekundärtabelle übernehmen möchten
und wählen Sie Auswählen. Die Tabelle wird farbig unterlegt. Wiederholen Sie dies für alle
Tabellen, die Sie in das Matchcode-Objekt übernehmen möchten. Wählen Sie Übernehmen.
Sie kehren damit zum Pflegebild zurück. Die ausgewählten Tabellen werden als
Sekundärtabellen übernommen und die betreffenden Fremdschlüssel angezeigt.
Fehlerhaft aufgenommene Sekundärtabellen können Sie löschen, indem Sie den Cursor
auf die Tabelle stellen und Bearbeiten -> SekTab löschen wählen.
4. Sichern Sie die Tabellenauswahl, falls Sie alle benötigten Tabellen aufgenommen haben.

Nächste Aktion beim Anlegen eines Matchcodes:


Felder des Matchcode-Objekts auswählen [Seite 286]

April 2001 285


BC - ABAP Dictionary SAP AG
Felder des Matchcode-Objekts auswählen

Felder des Matchcode-Objekts auswählen


Vorgehensweise
1. Wählen Sie im Pflegebild der Eigenschaften des Matchcode-Objekts oder im Pflegebild der
Tabellenauswahl Springen ® Felder.
Das Pflegebild für die Feldauswahl bei Matchcode-Objekten wird angezeigt. Die
Schlüsselfelder aller für das Matchcode-Objekt relevanten Tabellen werden automatisch
übernommen. Diese Felder sind in der Spalte Key entsprechend gekennzeichnet.
2. Falls Sie weitere Felder in das Matchcode-Objekt aufnehmen wollen, stellen Sie den Cursor
auf den Namen der gewünschten Tabelle und wählen Sie Bearbeiten ® Felder auswählen.
Die Felder der betreffenden Tabelle werden in einem Dialogfenster angezeigt.
3. Sie können ein Feld in das Matchcode-Objekt übernehmen, indem Sie den entsprechenden
Eintrag anklicken und Auswählen betätigen.
Der Eintrag wird farbig unterlegt. Fehlerhaft markierte Felder können Sie wieder
entfernen, indem Sie den Cursor auf das Feld stellen und Auswahl löschen wählen.
4. Wählen Sie Übernehmen, nachdem Sie alle benötigten Felder auf diese Weise markiert
haben.
Die ausgewählten Felder werden damit in das Matchcode-Objekt übernommen.
Die Reihenfolge der Felder im Matchcode-Objekt ist bedeutungslos. Haben zwei Felder
aus unterschiedlichen Tabellen den gleichen Namen, so muß in der Spalte MC-Feld
zumindest für ein Feld ein neuer Name eingetragen werden.
5. Verbinden Sie Dynprofeld und Matchcode-Objekt-Feld.
Um Matchcodes als Online-Hilfe einsetzen zu können, muß eine Verbindung zwischen
einem Feld auf einem Bild und einem Matchcodefeld hergestellt werden. Diese
Verbindung wird über das Suchfeld hergestellt, das standardmäßig an das erste
Schlüsselfeld der Primärtabelle vergeben wird.
Bei einer Matchcodeselektion im Rahmen der Online-Hilfe wird der Wert des Suchfeldes
in das Dynpro übernommen. Wollen Sie ein anderes Suchfeld wählen, so genügt es,
dieses in der entsprechenden Spalte zu markieren.
6. Sichern Sie die Feldauswahl.

Alle Felder in Matchcodes müssen Character-Datentypen besitzen (CHAR, NUMC,


ACCP, CLNT, CUKY, DATS, TIMS, LANG, UNIT).

Nächste Aktion beim Anlegen eines Matchcodes:


Matchcode-Objekt aktivieren [Seite 287]

286 April 2001


SAP AG BC - ABAP Dictionary
Matchcode-Objekt aktivieren

Matchcode-Objekt aktivieren
Bevor Sie Matchcode-Ids anlegen können, müssen Sie das Matchcode-Objekt aktivieren.
Wählen Sie hierzu im Pflegebild der Eigenschaften eines Matchcode-Objekts MC-Objekt ®
Aktivieren.
Informationen zum Ablauf der Aktivierung können Sie dem Aktivierungsprotokoll entnehmen. Sie
können sich das Aktivierungsprotokoll über Hilfsmittel ® Protokoll anzeigen ® Aktivieren
anzeigen lassen. Falls Fehler bei der Aktivierung auftraten, wird das Aktivierungsprotokoll
automatisch angezeigt.

Nächste Aktion beim Anlegen eines Matchcodes:


Matchcode-Ids anlegen [Extern]

April 2001 287


BC - ABAP Dictionary SAP AG
Eigenschaften der Matchcode-Id angeben

Eigenschaften der Matchcode-Id angeben


Vorgehensweise
1. In die Pflege einer Matchcode-Id gelangen Sie vom Pflegebild für die Eigenschaften eines
Matchcode-Objekts, indem Sie Springen ® Matchcode-Ids wählen.
Es erscheint eine Liste aller bereits für das Objekt angelegten Ids.
2. Wählen Sie Anlegen, falls Sie eine neue Id anlegen wollen.
Es erscheint ein Dialogfenster, in dem Sie ein beliebiges alphanumerisches Zeichen als
Kennung der Matchcode-Id eingeben können. Für Kunden sind die Ziffern von 0 bis 9 für
diese Zwecke vorgesehen.
3. Wählen Sie Weiter.
Nachfolgend erscheint das Pflegebild für die Eigenschaften einer Matchcode-Id.
4. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.
5. Wählen Sie eine Aktualisierungsart [Seite 280] für die Matchcode-Id aus.
Standardmäßig ist Aktualisierungsart I (transparente Id) eingetragen. Falls Sie eine
andere Aktualisierungsart wählen möchten, können Sie diesen Eintrag einfach
überschreiben. Sie sollten aber in der Regel alle Ids als transparente Ids anlegen.
6. Sichern Sie Ihre Eingaben, falls Sie keine der unten beschriebenen optionalen Einstellungen
vornehmen wollen.

Weitere Möglichkeiten
System-Matchcode
Ist dieses Kennzeichen angekreuzt, so nutzt die SAP-Software diesen Matchcode. Er darf vom
Kunden nicht geändert werden.

Berechtig.Prüf.
Ist dieses Kennzeichen angekreuzt, so werden Berechtigungsprüfungen durchgeführt, die
eventuell an einzelne Matchcodesätze geknüpft sind. Dabei wird bei der Matchcode-Anzeige vor
der Ausgabe eines gelesenen Matchcode-Satzes ein User-Exit aufgerufen, in dem eine
anwendungsspezifische Berechtigungsprüfung programmiert werden kann.
Der User-Exit heißt CHECK_AUTHORITY_<mcid> und liegt im Include MC_<obj>&, wobei <obj>
den Namen des Matchcode-Objekts bezeichnet.

Weitere Informationen abhängig von der Aktualisierungsart


Aktualisierungsart A, S oder P (physische Matchcodes):
· MC-Pooltabelle: Falls die Matchcode-Id bereits aktiviert wurde, ist hier die entsprechende
Pooltabelle aufgeführt. Der Name der Pooltabelle setzt sich zusammen aus dem Präfix M_,
dem Namen des Matchcode-Objekts und der Matchcode-Id Kennung. Für die Id 1 des
Matchcode-Objekts TEST wäre der entsprechende Name also M_TEST1.
· Löschvormerkung: Markieren Sie dieses Flag, wenn beim Löschen eines Satzes einer
Basistabelle die betroffenen Matchcode-Sätze nicht direkt physisch gelöscht, sondern nur mit

288 April 2001


SAP AG BC - ABAP Dictionary
Eigenschaften der Matchcode-Id angeben

einem Löschkennzeichen versehen werden sollen. Bei einem späteren generellen


Löschvorgang werden alle so gekennzeichneten Sätze auch physisch gelöscht. Beachten
Sie bitte, daß mit einem Löschkennzeichen versehene Sätze bis zum Ablauf dieses
generellen Löschvorgangs bei der Matchcode-Anzeige noch erscheinen.

Für Matchcode-Ids der Aktualisierungsart P darf das Löschkennzeichen nicht gesetzt


werden.

Aktualisierungsart I:
· MC-Viewname: Falls die Matchcode-Id bereits aktiviert wurde, ist hier der entsprechende
Viewname aufgeführt. Der Viewname setzt sich zusammen aus dem Präfix M_, dem Namen
des Matchcode-Objekts und der Matchcode-Id Kennung. Für die Id 1 des Matchcode-Objekts
TEST wäre der entsprechende Name also M_TEST1.
· Tabellenname, Indexkennung: Sie können hier die Tabelle und die Indexkennung des von
Ihnen zur Unterstützung der Viewselektion angelegten Index angeben. Diese Felder haben
im Augenblick rein dokumentarische Funktion.

Aktualisierungart K:
· Funktion: Bei Matchcode-Ids der Aktualisierungsart K erfolgt die Suche über einen
Funktionsbaustein, der bei der Auswahl der Id angestoßen wird. Dieser Eintrag zeigt den
Namen des verwendeten Funktionsbausteines, falls ein solcher bereits angelegt wurde.

Nächste Aktion beim Anlegen eines Matchcodes:


Sekundärtabellen einer Matchcode-Id auswählen [Seite 290]

April 2001 289


BC - ABAP Dictionary SAP AG
Sekundärtabellen einer Matchcode-Id auswählen

Sekundärtabellen einer Matchcode-Id auswählen


Vorgehensweise
1. Stellen Sie im Pflegebild der Matchcode-Id den Cursor auf eine der Basistabellen der Id und
wählen Sie Bearbeiten ® Sektab.auswählen.
Es erscheint ein Dialogfenster, in dem die Tabellen des Matchcode-Objekts aufgelistet
sind, die mit der gewählten Tabelle über Fremdschlüssel verbunden sind.
2. Markieren Sie im Dialogfenster die gewünschten Sekundärtabellen. Fehlerhaft markierte
Tabellen können Sie durch erneutes Markieren wieder entfernen.
Für transparente Matchcodes (Aktualisierungsart I) dürfen nur transparente Tabellen
selektiert werden.
Aus Performance-Gründen gelten für Matchcodes der Aktualisierungsart S (synchrone
Aktualisierung) einige Einschränkungen bei der Tabellenauswahl.
Bei den abhängigen Tabellen sind für synchrone Matchcode-Ids ausschließlich
Schlüsselerweiterungen erlaubt. Die ausgewählten Tabellen müssen also in
hierarchischen Beziehungen zueinander stehen.

Die Tabelle T2 ist von Tabelle T1 abhängig und eine weitere Tabelle T3 ist wiederum
von T2 abhängig. Dann stehen die Tabellen genau dann in hierarchischer
Beziehung, wenn der Schlüssel von T2 den Schlüssel von T1 an erster Stelle enthält
und der Schlüssel von T3 den Schlüssel von T2 an erster Stelle enthält. Nur bei
dieser Art der Beziehung könnten T2 und T3 als Sekundärtabellen zur Primärtabelle
T1 für einen synchron zu aktualisierenden Matchcode aufgenommen werden.
Sind zwei Tabellen T2 und T4 von einer Tabelle T1 abhängig, darf neben der Tabelle T1
nur eine der Tabellen in eine synchrone Matchcode-Id aufgenommen werden. Eine
Ausnahme von dieser Regel bilden Texttabellen. Handelt es sich bei T2 oder T4 um eine
Texttabelle [Seite 28] zu T1, so können beide in die Matchcode-Id aufgenommen
werden.
3. Wählen Sie Weiter.
Sie kehren ins Pflegebild zurück. Die ausgewählten Sekundärtabellen werden damit in
die Id übernommen.
4. Sichern Sie die Auswahl der Sekundärtabellen.

Nächste Aktion beim Anlegen eines Matchcodes:


Felder einer Matchcode-Id auswählen [Seite 291]

290 April 2001


SAP AG BC - ABAP Dictionary
Felder einer Matchcode-Id auswählen

Felder einer Matchcode-Id auswählen


Vorgehensweise
1. Wählen Sie im Pflegebild der Eigenschaften der Matchcode-Id Springen ® Felder.
Das Feldpflegebild der Matchcode-Id wird angezeigt.
2. Stellen Sie den Cursor auf einen Tabellennamen und wählen Sie Bearbeiten ® Felder
auswählen.
Die Felder der betreffenden Tabelle werden in einem Dialogfenster angezeigt.
3. Sie können ein Feld in die Matchcode-Id übernehmen, indem Sie den entsprechenden
Eintrag anklicken und Auswählen betätigen. Der Eintrag wird farblich unterlegt. Fehlerhaft
markierte Felder können Sie wieder entfernen, indem Sie den Cursor auf das betreffende
Feld stellen und Feld Löschen wählen.
Wählen Sie Übernehmen, nachdem Sie alle benötigten Felder auf diese Weise markiert
haben. Die ausgewählten Felder werden damit in die Matchcode-Id übernommen.
Die Selektionsreihenfolge entspricht genau der Reihenfolge, in der die Felder in der
Matchcode-Id aufgeführt werden. Die Feldreihenfolge in der Matchcode-Id ist für das
spätere Zugriffsverhalten, z.B. im Zusammenhang mit der Eingabehilfe F4, von
entscheidender Bedeutung. An erster Stelle sollten die Felder stehen, über die am
häufigsten zugegriffen wird.
4. Sichern Sie die Feldauswahl, falls Sie keine der unten beschriebenen optionalen
Einstellungen vornehmen wollen.

Einschränkungen
In einer Matchcode-Id dürfen aus Konsistenzgründen nur Felder aus Tabellen vorkommen, die
über einen Fremdschlüssel miteinander verbunden sind. Es ist z.B. nicht möglich, Felder aus
zwei Tabellen aufzunehmen, die nur über eine nicht in der Matchcode-Id enthaltene dritte Tabelle
verbunden sind. In einem solchen Fall muß diese verbindende Tabelle über ein Schlüsselfeld in
die Matchcode-Id einfließen.
Die Daten einer Matchcode-Id der Aktualisierungsart A, S und P werden in Pooltabellen
abgespeichert. Es wird versucht, alle Felder der Matchcode-Id im Schlüssel der entsprechenden
Pooltabelle unterzubringen. Der Schlüssel einer Pooltabelle darf jedoch nicht beliebig lang sein.
Deshalb kann der Fall eintreten, daß nicht alle Felder der Matchcode-Id im Schlüssel der
Pooltabelle untergebracht werden können. Um die Eindeutigkeit der Sätze einer Matchcode-Id
gewährleisten zu können, müssen jedoch zumindest alle Schlüsselfelder der Matchcode-Id (d.h.
alle zur eindeutigen Identifikation eines Matchcode-Satzes notwendigen Felder) innerhalb der
ersten 110 Bytes liegen.
Bei Matchcode-Ids der Aktualisierungsart S müssen die Felder der Id jeden Satz eindeutig
identifizieren. Es müssen jedoch nicht alle Schlüsselfelder der an der Id beteiligten Tabellen
aufgenommen werden. Als weitere Einschränkung gilt, daß zumindest ein Schlüsselfeld einer an
der Id beteiligten Tabelle in der Id enthalten sein muß, auch wenn die restlichen Felder jeden
Satz schon eindeutig bestimmen.

April 2001 291


BC - ABAP Dictionary SAP AG
Felder einer Matchcode-Id auswählen

Weitere Möglichkeiten
Speicherung
Hier können Sie festlegen, wie die Matchcode-Sätze gespeichert werden.
· Länge, Offs: Sie können ein Feld durch Offset- und Längenangabe als Teilfeld definieren. In
diesem Fall müssen Sie in der Spalte Datenelement ein passendes Datenelement (die
referierte Domäne stimmt in Typ und Länge mit dem Teilfeld überein) angeben.
Schlüsselfelder dürfen keine Teilfelder sein. Bei transparenten Matchcode-Ids
(Aktualisierungsart I) können keine Teilfelder angegeben werden.
· G/K: Dieses Flag bestimmt, ob beim Aufbau der Matchcode-Sätze die Groß/Kleinschreibung
berücksichtigt werden soll. Wird hier keine Angabe gemacht, so erfolgt bei Matchcode-Ids
der Aktualisierungsart [Seite 280] A, S oder P der Aufbau und damit auch die Ausgabe der
Matchcode-Sätze in Großbuchstaben. Die Suche ist damit nicht Case Sensitive. Bei
Matchcode-Ids der Aktualisierungsart I ist dieses Feld nicht relevant, da keine eigenen
Matchcode-Sätze geschrieben werden (Suche erfolgt über einen View).

Anzeige
Hier können Sie die Ausgabegestaltung der selektierten Matchcode-Sätze beeinflussen.
Folgende Einstellungen sind möglich:
· Zl: Zeile, in der das betreffende Feld bei der Matchcode-Ausgabe erscheinen soll. Es ist
maximal eine dreizeilige Ausgabe möglich.
· Sp: Spalte, in der das betreffende Feld bei der Matchcode-Ausgabe erscheinen soll. Spalte +
Feldlänge darf die bei der Matchcode-Ausgabe unterstellte Seitengröße von 80 Zeichen nicht
überschreiten.
· Mod: Dieses Flag wird automatisch markiert, wenn Sie die Einträge in den Spalten Zl und Sp
ändern.
· kS: Ist dieses Flag gesetzt, so wird das betreffende Feld nicht zur Matchcode-Selektion
verwendet. Es erscheint damit nicht in der Feldeingabeliste bei der F4-Hilfe und wird nicht im
Matchcode-Suchstring ausgewertet.

Parameter
Hier steuern Sie, ob Werte aus Matchcodesätzen, die über die Online-Hilfe selektiert wurden, in
das globale SAP-Memory gestellt werden bzw. ob Werte für die Matchcodeselektion aus dem
Memory geholt werden.
· PId: Parameteridentifikation, über die im Benutzerstammsatz Vorschlagswerte für ein Feld
festgelegt werden können.
· SP: Markieren Sie das Flag SP, wenn der aus dem selektierten Matchcode-Satz gelesene
Feldwert in das Memory gestellt werden soll.
· GP: Markieren Sie das Flag GP, wenn der Feldwert für die Matchcode-Auswertung aus dem
Memory geholt werden soll. Der Vorteil dieses Verfahrens für den Benutzer besteht darin,
daß er einen Feldwert,der dem Memory entnommen wurde, nicht mehr eigens auf dem
Bildschirm eingeben muß.

292 April 2001


SAP AG BC - ABAP Dictionary
Felder einer Matchcode-Id auswählen

Datenelement ändern
Dem Matchcode-Feld wird vom System das Datenelement des entsprechenden Tabellenfeldes
zugeordnet. Sie können dieses Datenelement ändern. Dies kann z.B. notwendig sein, wenn Sie
das Matchcode-Feld mit einer anderen Dokumentation versehen wollen.
Überschreiben Sie einfach den Namen des Datenelements im Feld Datenelem. Das neue
Datenelement muß auf eine Domäne mit gleichem Datentyp und gleicher Länge wie das
ursprüngliche Datenelement verweisen.

Nächste Aktion beim Anlegen eines Matchcodes (optional):


Selektionsbedingungen einer Matchcode-Id angeben [Seite 294]

April 2001 293


BC - ABAP Dictionary SAP AG
Selektionsbedingungen einer Matchcode-Id angeben

Selektionsbedingungen einer Matchcode-Id angeben


Voraussetzungen
Nachdem Sie die Struktur der Matchcode-Id festgelegt und die zur Id gehörigen Felder
angegeben haben, können Sie über die Angabe einer Selektionsbedingung die Ergebnismenge
der Matchcode-Suche einschränken. Bei dem Aufbau der Matchcode-Sätze werden dann nur die
Einträge übernommen, die diese Bedingung erfüllen.

Vorgehensweise
1. Wählen Sie in der Feldpflege der Matchcode-Id Springen ® Selektionsbedingung.
Das Pflegebild für die Selektionsbedingungen der Matchcode-Id erscheint.
2. In jeder Zeile können Sie eine Selektionsbedingung der Form NOT MC-Feld Länge Offs
Op Konstante AND/OR eingeben.
3. Eine Liste aller möglichen Felder erhalten Sie durch Auswahl von Bearbeiten ® Felder
auswählen.
Sie können aus dieser Liste Felder auswählen und für die Angabe der Feldbedingungen
übernehmen, indem Sie den Cursor auf den Feldnamen stellen und Auswählen
betätigen.
4. Sichern Sie die Angaben der Selektionsbedingung(en).
Die Einträge in den Selektionsbedingungen haben folgende Bedeutung:
· NOT: Die Eingabe von NOT negiert die entsprechende Zeile der Selektionsbedingung.
· MC-Feld: Name des Matchcode-Feldes, für das die Bedingung formuliert wird.
· Länge, Offs: Ist das Feld durch Offset- und Längenangabe als Teilfeld definiert, so werden
hier die entsprechenden Werte eingetragen.
· Op: Vergleichsoperator für die Selektionsbedingung. Folgende Operatoren sind zulässig: LK
(Like), GT (größer), GE (größer gleich), NE (ungleich), EQ (gleich), LT (kleiner) und LE
(kleiner gleich).
· Konstante: Konstanter Wert mit dem der Feldwert verglichen wird. Als Vergleichswerte sind
Text-Literale, die in Hochkommata eingeschlossen werden müssen, und Zahlen erlaubt.
· AND/OR: Verknüpfung zweier Zeilen der Selektionsbedingung. Beachten Sie, daß hier OR
stärker bindet als AND. Die Bedingung <BED1> AND <BED2> OR <BED3> wird also als
<BED1> AND (<BED2> OR <BED3>) interpretiert. Weiter sind OR Verknüpfungen nur
zwischen Zeilen zulässig, die sich auf dasselbe Feld beziehen.

Die Feldbedingungen müssen sich nicht notwendigerweise nur auf die zur
Matchcode-Id gehörenden Felder beziehen, sondern sie können für beliebige Felder
aus dem Matchcode-Objekt angegeben werden. Sie können also beliebige Felder
aus dem Matchcode-Objekt in die Selektionsbedingung aufnehmen, ohne Sie als
Felder in die Id zu übernehmen.

294 April 2001


SAP AG BC - ABAP Dictionary
Selektionsbedingungen einer Matchcode-Id angeben

Nächste Aktion beim Anlegen eines Matchcodes:


Matchcode-Id aktivieren [Seite 296]

April 2001 295


BC - ABAP Dictionary SAP AG
Matchcode-Id aktivieren

Matchcode-Id aktivieren
Die Matchcode-ID aktivieren Sie ausgehend vom Pflegebild der Eigenschaften der Matchcode-Id
durch MC-Id ® Aktivieren.
Bei Matchcode-Ids der Aktualisierungsart I wird der zugehörige Datenbank-View beim Aktivieren
auf der Datenbank angelegt. Weiterhin wird beim Aktivieren geprüft, ob ein entsprechender Index
zur Unterstützung der Viewselektion auf der Datenbank existiert. Ist dies nicht der Fall, wird eine
entsprechende Warnung ausgegeben.
Informationen zum Ablauf der Aktivierung können Sie dem Aktivierungsprotokoll entnehmen. Sie
können sich das Aktivierungsprotokoll über Hilfsmittel ® Protokoll anzeigen ® Aktivieren
anzeigen lassen. Falls Fehler oder Warnungen bei der Aktivierung auftraten, wird das
Aktivierungsprotokoll direkt angezeigt.

Nächste Aktion beim Anlegen eines Matchcodes:


Für Ids der Aktualisierungsarten A, S, P: Matchcode-Daten aufbauen [Seite 297]
Für Ids der Aktualisierungsart I: Matchcode-Index anlegen [Seite 299]
Für Ids der Aktualisierungsart K: Funktionsbaustein für Matchcode-Id [Seite 301]

296 April 2001


SAP AG BC - ABAP Dictionary
Matchcode-Daten aufbauen

Matchcode-Daten aufbauen
Voraussetzungen
Bei physischen Matchcodes (Aktualisierungsart A, S oder P) werden die Matchcode-Daten
redundant als eigene Tabellen im System abgelegt. Diese Tabellen müssen aufgebaut werden,
nachdem Sie das Matchcode-Objekt und die Matchcode-Ids angelegt und aktiviert haben. Der
Aufbau bzw. das Löschen dieser Tabellen erfolgt mit Hilfe des Matchcode Utilities (Report
SAPMACO). Der Aufbau der Tabellen erfolgt für alle physischen Aktualisierungsarten (A, S oder
P) auf die gleiche Weise.
Das Matchcode Utility arbeitet mandantenübergreifend. Ein Parameter steuert, ob Matchcodes
für einen spezifischen Mandanten oder für alle Mandanten aufgebaut bzw. gelöscht werden
sollen. Zusätzlich bietet das Utility die Möglichkeit, Matchcodes für alle Matchcodeobjekte in
einem Lauf aufbauen zu lassen.

Vorgehensweise
1. Wählen Sie Hilfsmittel ® Matchcode-Daten ® Aufbauen im Pflegebild des Matchcode-
Objekts. Alternativ können Sie auch den Report SAPMACO direkt aufrufen.
2. Folgen Sie den Anweisungen in der F1-Hilfe. Dort wird ausführlich beschrieben, wie Sie die
Eingabemaske ausfüllen müssen. Führen Sie den Report aus.
3. Prüfen Sie, ob die Matchcode-Daten korrekt aufgebaut wurden. Siehe hierzu Anzeigen der
aufgebauten Matchcode-Daten [Seite 298].

Transparente Matchcode-Ids (Aktualisierungsart I) und Klassifikations-Matchcode-


Ids (Aktualisierungsart K) werden nicht physisch gespeichert. Deshalb macht es
keinen Sinn, solche Ids mit dem Matchcode-Utility aufzubauen.

April 2001 297


BC - ABAP Dictionary SAP AG
Anzeigen der aufgebauten Matchcode-Daten

Anzeigen der aufgebauten Matchcode-Daten


Vorgehensweise
1. Verzweigen Sie ins Pflegebild der Eigenschaften des Matchcode-Objekts.
2. Wählen Sie Hilfsmittel ® Matchcode-Daten ® Anzeigen.
Ein Dialogfenster erscheint, in welchem alle Ids des Matchcode-Objekts aufgelistet sind.
3. Markieren Sie eine der Ids, indem Sie die entsprechende Zeile anklicken und Auswählen
betätigen.
Es erscheint das Dialogfenster Wertebereich einschränken, in welchem Sie den
Wertebereich der auszugebenden Sätze durch Eingabe von Selektionsbedingungen für
die Felder der Id einschränken können.
4. Wählen Sie Weiter.
Alle Sätze, die der angegebenen Einschränkung entsprechen, werden ausgegeben.

Sie können sich die Matchcode-Daten einer Id auch direkt aus dem Pflegebild der Id
anzeigen lassen. Wählen Sie hierzu Hilfsmittel ® MC-Daten anzeigen. Es erscheint
direkt das Dialogfenster Wertebereich einschränken. Verfahren Sie weiter wie oben
beschrieben wurde.

298 April 2001


SAP AG BC - ABAP Dictionary
Matchcode-Index anlegen

Matchcode-Index anlegen
Bei der Aktivierung einer transparenten Matchcode-Id wird überprüft, ob für diese Id ein
passender Datenbankindex existiert. Ein solcher Index ist in aller Regel erforderlich, um die
Matchcodeselektion zu unterstützen. Falls kein entsprechender Index existiert, kann es zu
erheblichen Performanceproblemen bei der Matchcodeselektion kommen.
Das System geht davon aus, daß das erste Feld in der Matchcode-Definition (bei
mandantenabhängigen Matchcodes das erste Feld nach dem Mandantenfeld) das für diesen
Matchcode relevante Suchfeld ist, d.h. daß dieses Feld bei der Matchcode-Suche vom Benutzer
durch die Eingabe eines Selektionswertes eingeschränkt wird. Als passender Index wird deshalb
ein Index angesehen, der das relevante Matchcodesuchfeld (eventuell nach einem
Mandantenfeld) enthält.
Falls kein solcher passender Datenbankindex existiert, wird bei der Aktivierung der Matchcode-Id
eine entsprechende Warnung ausgegeben. Für das weitere Vorgehen werden zwei Fälle
unterschieden:
· Falls der Matchcode-View auf der Datenbank (unter Berücksichtigung der
Selektionsbedingung) weniger als 1000 Datensätze enthält, ist das Anlegen eines Index in
der Regel nicht notwendig.
· Falls deutlich mehr als 1000 Sätze im Matchcode-View auf der Datenbank enthalten sind,
sollten Sie in der Regel einen Index anlegen.
In einem Index zur Unterstützung der Matchcodeselektion sollten an erster Stelle die Felder
stehen, über die mit Gleichheit gesucht wird (Mandant, Sprache oder allgemeiner alle Felder für
die das Get-Parameter Kennzeichen, d.h. das Flag GP auf dem Screen Matchcode-Id pflegen
(Felder), gesetzt ist).
Der Index sollte also folgenden Aufbau haben:
· Mandantenfeld
· Felder für die das Get-Parameter Kennzeichen gesetzt ist
· Feld über das gesucht wird
Dieser Indexaufbau stellt jedoch nicht in allen Fällen sicher, daß der angelegte Index auch vom
unterliegenden Datenbanksystem zur Datenselektion verwendet wird. Welcher Index konkret
verwendet wird, hängt vom Optimizer des Datenbanksystems ab. Sie müssen also sicherstellen,
daß der von Ihnen angelegte Sekundärindex besser ist, als der standardmäßig angelegte
Primärindex der entsprechenden Tabelle.
Sie können wie folgt überprüfen, ob der von Ihnen angelegte Index zur Unterstützung der
Matchcodeselektion verwendet wird:
1. Wählen Sie im Pflegebild für die Eigenschaften der Matchcode-Id Hilfsmittel ® Explain-Plan.
Es erscheint ein Dialogfenster, in dem Sie eine Sucheingabe über diese Id absetzen
können.
2. Wählen Sie Weiter. Sie schicken damit die Sucheingabe ab.
Es erscheint nun der Explain-Plan für die abgeschickte Sucheingabe. Sie können diesem
Explain-Plan entnehmen, wie das für die Sucheingabe verwendete SELECT-Statement
aufgebaut ist und wie es in der Datenbank abgearbeitet wird. Insbesondere kann dem

April 2001 299


BC - ABAP Dictionary SAP AG
Matchcode-Index anlegen

Explain-Plan entnommen werden, welche Indizes beim Lesen der Daten aus den
Basistabellen der Matchcode-Id verwendet werden.
3. Analysieren Sie den Explain-Plan und legen Sie falls notwendig Indizes für die Tabellen an,
bei denen für den Zugriff kein geeigneter Index zur Verfügung stand.
Der Aufbau des Explain-Plans ist vom jeweils verwendeten Datenbank-System
abhängig. Genauere Informationen zum Explain-Plan finden Sie in der Dokumentation
des von Ihnen verwendeten Datenbank-Systems.

300 April 2001


SAP AG BC - ABAP Dictionary
Funktionsbaustein für Matchcode-Id

Funktionsbaustein für Matchcode-Id


Für Matchcodes der Aktualisierungsart K erfolgt die Suche bei der F4-Hilfe über einen
Funktionsbaustein, der bei der Matchcode-Id Definition angegeben werden muß und der bei der
Matchcodeselektion aufgerufen wird. Dieser Funktionsbaustein muß folgende Schnittstelle
aufweisen:

CALL FUNCTION fname


EXPORTING MCONAME = mcname "Name des Matchcodeobjekts”
SELSTR = 'M.....' "Matchcodeeingabe”

Die VALUES-Tabelle hat die Dictionary-Struktur RSMVA mit den Feldern:


FLDID(3) TYPE C = Field-Id des ins Dynpro zu transportierenden Feldes
FLDLG(6) TYPE N = die Länge des zu transportierenden Feldes
VALUE(79) TYPE C = der anzugebende Wert

In der aktuellen Realisierung wird nach der Rückkehr aus dem Funktionsbaustein nur eine Zeile
der VALUES-Tabelle ausgewertet. Es wird prinzipiell immer nur das in der Definition des
Matchcode-Objekts angegebene Suchfeld (auf dem die Matchcodeselektion ausgelöst wurde) in
das Dynpro transportiert. Der zurückgegebene Wert muß bereits in das externe Format
konvertiert sein.

April 2001 301


BC - ABAP Dictionary SAP AG
Matchcodes ändern

Matchcodes ändern
Vorgehensweise
1. In die Matchcode-Pflege gelangen Sie über das Einstiegsbild des ABAP Dictionary. Wählen
Sie dort Hilfsmittel ® Weitere Dictionary-Objekte.
Es erscheint ein Dialogfenster.
2. Markieren Sie den Objekttyp Matchcode-Objekt und geben Sie den vierstelligen
Objektnamen ein. Wählen Sie dann Ändern.
Sie können folgende Änderungen vornehmen.
· Matchcode-Objekt ändern [Seite 303]
· Matchcode-Id ändern [Seite 305]
· Umstellung auf transparente Matchcodes [Seite 307]
· Auswirkungen der Umstellung auf transparente Matchcodes [Seite 308]
· Matchcode-Id deaktivieren [Seite 309]
· Matchcode-Objekt löschen [Seite 311]
· Matchcode-Id löschen [Seite 310]

302 April 2001


SAP AG BC - ABAP Dictionary
Matchcode-Objekt ändern

Matchcode-Objekt ändern
Im folgenden wird beschrieben, was Sie bei Änderungen an einem vorhandenen Matchcode-
Objekt beachten sollten.

Primärtabelle ändern
Sie können die Primärtabelle einfach durch Eintragen eines neuen Tabellennamens im Feld
Primärtabelle ändern.

Haben Sie schon Sekundärtabellen bzw. Felder ausgewählt, wird eine Warnung
ausgegeben. Falls Sie die Änderung der Primärtabelle durch Datenfreigabe
bestätigen, werden alle abhängigen Objekte (Sekundärtabellen und Felder) gelöscht!

Existieren schon Ids zum Matchcode-Objekt, ist eine Änderung der Primärtabelle nicht möglich.
In diesem Fall müssen die schon existierenden Ids vorher gelöscht werden.

Sekundärtabellen entfernen
Um eine Sekundärtabelle aus dem Matchcode-Objekt zu entfernen, stellen Sie den Cursor auf
die Tabelle und wählen Bearbeiten -> SekTab löschen.

Das Löschen einer Tabelle aus dem Matchcode-Objekt entfernt gleichzeitig auch alle
Tabellen, die über die gelöschte Tabelle mit der Primärtabelle verbunden sind.

Weitere Sekundärtabellen aufnehmen


Wollen Sie weitere Sekundärtabellen aufnehmen, stellen Sie den Cursor auf einen
Tabellennamen und wählen Sie Bearbeiten ® SekTab auswählen. Sie erhalten eine Liste aller
mit der ausgewählten Tabelle über Fremdschlüssel verbundenen Tabellen.
Stellen Sie den Cursor auf eine Tabelle, die Sie als Sekundärtabelle übernehmen möchten und
wählen Sie Auswählen. Die Tabelle wird farblich unterlegt. Wiederholen Sie dies für alle
Tabellen, die Sie in das Matchcode-Objekt übernehmen möchten. Wählen Sie Übernehmen.
Sie kehren damit zum Pflegebild zurück. Die ausgewählten Tabellen werden als
Sekundärtabellen übernommen und die betreffenden Fremdschlüssel angezeigt. Sichern Sie die
Tabellenauswahl, falls Sie alle benötigten Tabellen aufgenommen haben.

Felder löschen
Um ein Feld zu löschen, positionieren Sie den Cursor auf das betreffende Feld und wählen
Bearbeiten ® Feld löschen. Schlüsselfelder können nicht gelöscht werden.

Bevor Sie ein Feld aus einem Matchcode-Objekt löschen, müssen Sie sicherstellen,
daß dieses Feld in keiner der Matchcode-Ids zu diesem Objekt verwendet wird.
Andernfalls kommt es beim Versuch, das Matchcode-Objekt zu aktivieren, zu einem
Fehler! Sie können diesen beheben, indem Sie das betreffende Feld aus allen Ids

April 2001 303


BC - ABAP Dictionary SAP AG
Matchcode-Objekt ändern

des Matchcode-Objekts löschen oder indem Sie das Feld einfach wieder in das
Matchcode-Objekt aufnehmen.

Felder einfügen
Um ein Feld einzufügen, positionieren Sie den Cursor auf ein schon eingetragenes Feld und
wählen Bearbeiten ® Feld einfügen. Direkt über der Zeile, in der der Cursor steht, wird dann
eine neue Zeile eröffnet, in der Sie die notwendigen Eingaben machen können.

Suchfeld ändern
Um Matchcodes als Online-Hilfe einsetzen zu können, muß eine Verbindung zwischen einem
Feld auf einem Bild und einem Matchcodefeld hergestellt werden. Diese Verbindung wird über
das Suchfeld hergestellt, das standardmäßig an das erste Schlüsselfeld der Primärtabelle
vergeben wird.
Bei einer Matchcodeselektion im Rahmen der Online-Hilfe wird der Wert des Suchfeldes in das
Dynpro übernommen. Wollen Sie ein anderes Suchfeld wählen, so genügt es, dieses in der
entsprechenden Spalte zu markieren.

Es darf nur ein Feld als Suchfeld markiert sein!

304 April 2001


SAP AG BC - ABAP Dictionary
Matchcode-Id ändern

Matchcode-Id ändern
Im folgenden wird beschrieben, was Sie bei Änderungen an einer vorhandenen Matchcode-Id
beachten sollten.

Ändern der Aktualisierungsart


Sie können die Aktualisierungsart [Seite 280] ändern, indem Sie den bestehenden Eintrag im
Feld Aktualisierungsart überschreiben. Falls Sie physisch abgelegte Matchcode-Ids auf
transparente Matchcode-Ids umstellen wollen, beachten Sie bitte die Informationen in Umstellung
auf transparente Matchcodes [Seite 307].

Beachten Sie, daß Sie vor einer Änderung der Aktualisierungsart alle abhängigen
Objekte der bestehenden Id löschen müssen. Wollen Sie z.B. die Aktualisierungsart
von I nach A ändern, müssen Sie erst den auf der Datenbank angelegten
Matchcode-View löschen.

Sekundärtabellen entfernen
Das Entfernen einer bereits für die Matchcode-Id selektierten Tabelle erfolgt durch nochmalige
Selektion der betreffenden Tabelle.
Stellen Sie den Cursor auf die Tabelle, über welche die zu entfernende Tabelle mit der
Primärtabelle verbunden ist. Wählen Sie Bearbeiten ® Sektab.auswählen. Es erscheint ein
Dialogfenster, in dem die mit der Tabelle über Fremdschlüssel verbundenen Tabellen aufgelistet
sind. Streichen Sie im Dialogfenster die Markierung der zu entfernenden Sekundärtabellen.
Wählen Sie Weiter. Sie kehren ins Pflegebild zurück. Die ausgewählten Sekundärtabellen
werden damit aus der Id gelöscht. Sichern Sie die Auswahl der Sekundärtabellen.

Die bereits in die Matchcode-Id übernommenen Felder dieser Tabelle werden dabei
nicht automatisch entfernt, sondern müssen in der Feldpflege der Matchcode-Id
gelöscht werden! Das Entfernen einer Sekundärtabelle aus der Id entfernt
gleichzeitig alle über diese Tabelle mit der Primärtabelle verbundenen Tabellen aus
der Matchcode-Id.

Sekundärtabellen aufnehmen
Stellen Sie den Cursor auf eine Basistabelle. Wählen Sie Bearbeiten ® Sektab.auswählen. Es
erscheint ein Dialogfenster, in dem die mit der Tabelle über Fremdschlüssel verbundenen
Tabellen aufgelistet sind. Markieren Sie im Dialogfenster die gewünschten Sekundärtabellen.
Wählen Sie Weiter. Sie kehren ins Pflegebild zurück. Die ausgewählten Sekundärtabellen
werden damit in die Id übernommen. Sichern Sie die Auswahl der Sekundärtabellen.

Beachten Sie, daß für transparente Ids nur transparente Tabellen selektiert werden
dürfen. Weiterhin sind aus Performancegründen bei den abhängigen Tabellen
synchroner Matchcodes (Aktualisierungsart S) ausschließlich hierarchische
Beziehungen erlaubt.

April 2001 305


BC - ABAP Dictionary SAP AG
Matchcode-Id ändern

Felder löschen
Um ein Feld zu löschen, positionieren Sie den Cursor auf das betreffende Feld und wählen
Bearbeiten ® Feld löschen.

Bei synchronen Matchcode-Ids (Aktualisierungsart S) sollten Schlüsselfelder nur


dann gelöscht werden, wenn die restlichen Felder den Satz noch eindeutig
identifizieren. Andernfalls funktioniert die synchrone Matchcode-Pflege nicht mehr
korrekt. Gelöschte Sätze können in diesem Fall nicht mehr aus den Matchcode-
Daten entfernt werden und für geänderte Sätze bleibt die ursprüngliche Version
neben der geänderten erhalten. Sie müssen in diesem Fall die Matchcode-Sätze
erneut mit Hilfe des Matchcode-Utilities aufbauen.

Felder einfügen
Um ein Feld einzufügen, positionieren Sie den Cursor auf ein schon eingetragenes Feld und
wählen Bearbeiten ® Feld einfügen. Direkt über der Zeile, in der der Cursor steht, wird dann
eine neue Zeile eröffnet, in der Sie die notwendigen Eingaben machen können.
Nach einer Veränderung der Felder einer Matchcode-Id der Aktualisierungsart A, S oder P
müssen die Matchcode-Daten umgesetzt werden. Die vorhandenen Matchcode-Daten werden
hierbei gelöscht und anschließend wieder neu aufgebaut. Werden die Felder einer Matchcode-Id
der Aktualisierungsart I geändert, wird der auf der Datenbank vorhandene Matchcode-View beim
Aktivieren der Id automatisch gelöscht und mit der neuen Struktur wieder angelegt.
Haben Sie Felder in eine von SAP ausgelieferte Matchcode-Id eingefügt, so bleibt diese
Änderung beim Upgrade erhalten. Die Matchcode-Id enthält nach dem Upgrade alle Felder der
geänderten Version sowie alle Felder der neu eingespielten Version, d.h. beim Upgrade wird die
Vereinigungsmenge der Felder beider Versionen der Id gebildet.

Datenelement ändern
Dem Matchcode-Feld wird vom System das Datenelement des entsprechenden Tabellenfeldes
zugeordnet. Sie können dieses Datenelement ändern. Dies kann z.B. notwendig sein, wenn Sie
das Matchcode-Feld mit einer anderen Dokumentation versehen wollen.
Überschreiben Sie einfach den Namen des Datenelements im Feld Datenelem. Das neue
Datenelement muß auf eine Domäne mit gleichem Datentyp und gleicher Länge wie das
ursprüngliche Datenelement verweisen.

Selektionsbedingung ändern
Bei einer Änderung der Selektionsbedingung einer Matchcode-Id der Aktualisierungsart A, S
oder P müssen die Matchcode-Daten erneut mit Hilfe des Matchcode-Utilities aufgebaut werden.

306 April 2001


SAP AG BC - ABAP Dictionary
Umstellung auf transparente Matchcodes

Umstellung auf transparente Matchcodes


Voraussetzungen
Damit eine physisch abgelegte Id (Aktualisierungsart A,S bzw. P) auf transparente Ablage
(Aktualisierungsart I) umgestellt werden kann, müssen folgende Voraussetzungen erfüllt sein:
· Alle Basistabellen der Id müssen transparente Tabellen sein.
· Es dürfen keine Teilfelder definiert sein.
Beachten Sie bei der Umstellung einer programmgesteuerten Id bitte, daß in diesem Fall
möglicherweise Anwendungsprogramme angepaßt werden müssen (siehe Besonderheiten bei
programmgesteuerten Matchcodes [Seite 282]).

Vorgehensweise
1. Sie müssen zuerst die auf der Datenbank vorhandenen Matchcode-Daten löschen.
Falls Sie alle physisch realisierten Matchcode-Ids eines Matchcode-Objekts auf
transparente Ablage umstellen wollen, sollten Sie den Matchcode-Pool auf der
Datenbank löschen. Verzweigen Sie hierzu aus der Pflege des Matchcode-Objekts über
Hilfsmittel ® Datenbank-Utility ins Datenbank-Utility. Wählen Sie dann
Datenbanktabelle ® Löschen. Der Matchcode-Pool wird nun auf der Datenbank
gelöscht.
Falls Sie nur eine physisch realisierte Matchcode-Id eines Matchcode-Objekts auf
transparente Ablage umstellen wollen, müssen Sie die für diese Id auf der Datenbank
vorhanden Matchcode-Daten löschen. Sie können dies erreichen, indem Sie das
Matchcode-Utility mit der Funktion DEL aufrufen. Wählen Sie hierzu im Bild Matchcode-
Objekt pflegen (Eigenschaften) die Funktion Hilfsmittel ® Matchcode-Daten ®
Löschen. Es erscheint das Bild Matchcode Utility. Wählen Sie Programm ® Ausführen.
Es erscheint eine Liste aller Matchcode-Ids des Matchcode-Objekts. Markieren Sie in
dieser Liste die gewünschte Id und wählen Sie Ausführen. Die Matchcode-Daten werden
nun gelöscht.
2. Verzweigen Sie in die Pflege der Matchcode-Id, d.h. ins Bild Matchcode-Id pflegen
(Eigenschaften).
3. Ändern Sie im Feld Aktualisierungsart den vorhandenen Eintrag auf I (transparente Ablage).
4. Aktivieren Sie die Matchcode-Id. Der Matchcode-View wird dabei automatisch auf der
Datenbank angelegt. Die noch vorhandene Pooltabelle wird dabei automatisch gelöscht.
5. Zur Unterstützung der Matchcode-Selektion sollten Sie gegebenenfalls einen Index anlegen.
In welchen Fällen dies sinnvoll ist und wie Sie dazu vorgehen müssen, ist in Matchcode-
Index anlegen [Seite 299] beschrieben.

Siehe auch:
Auswirkungen der Umstellung auf transparente Matchcodes [Seite 308]

April 2001 307


BC - ABAP Dictionary SAP AG
Auswirkungen der Umstellung auf transparente Ids

Auswirkungen der Umstellung auf transparente Ids


Nach der Umstellung einer physisch realisierten Matchcode-Id auf transparente Ablage ergeben
sich folgende Änderungen:

Suche wird Case-Sensitive


Die Suche über eine transparente Id ist Case-Sensitive, d.h. bei Eingeben einer Suchbedingung
wird in Textfeldern Groß-/Kleinschreibung berücksichtigt.

Treffermenge bei einer Suche kann kleiner werden


Die Treffermenge einer Suche über eine transparente Id kann eine echte Teilmenge der
Treffermenge der äquivalenten Suche über eine physisch realisierte Id sein. Dies liegt daran, daß
der Zugriff bei transparenten Ids über einen Inner Join realisiert wird, während bei physisch
realisierten Ids ein Outer Join gebildet wird.
Bei der Suche über eine transparente Id werden Sätze der Primärtabelle, zu denen kein
entsprechender Eintrag in den Fremdschlüsselfeldern einer Sekundärtabelle existiert, nicht
gefunden.

Eine Id realisiert die Suche nach der Personalnummer eines Mitarbeiters über
dessen Namen und Abteilung. Die Basistabelle enthält Angaben zur Nummer und
zum Namen. Die Sekundärtabelle enthält die Abteilungen und deren Mitarbeiter. Für
Mitarbeiter, die keiner Abteilung zugeordnet sind, existiert also kein Eintrag in der
Sekundärtabelle. Solche Mitarbeiter können beim Zugriff über eine transparente Id
mit den Feldern Nummer, Name und Abteilung nicht ermittelt werden. Dagegen
werden beim Zugriff über eine physisch realisierte Id gleicher Struktur solche
Mitarbeiter gefunden.

Anpassung bei Teilfeldern


Falls für die Id Teilfelder definiert waren, mußten diese Definitionen bei der Umstellung auf
transparente Ablage zurückgenommen werden. Sie können über die Ausgabegestaltung das
vorherige Format der Ausgabeliste wiederherstellen.

308 April 2001


SAP AG BC - ABAP Dictionary
Matchcode-Id deaktivieren

Matchcode-Id deaktivieren
In Anwendungen werden standardmäßig viele Matchcode-Ids angelegt, die aber in einigen
Bereichen nur selten genutzt werden. Diese unnötigen Ids belasten unter Umständen das
System.
Die Funktion Deaktivieren im Menü MC-Id des Pflegebildes der Eigenschaften der Matchcode-Id
erlaubt es, diese Belastung zu reduzieren. Im Gegensatz zum Löschen bleibt beim Deaktivieren
die Definition der Id im ABAP Dictionary erhalten. Wird die Id später erneut benötigt, kann sie
einfach erneut aktiviert werden.
Die Funktion Deaktivieren kann nur für aktive Matchcode-Ids ausgeführt werden. Bevor eine
Matchcode-Id deaktiviert werden kann, müssen die zur Id gehörigen Objekte auf der Datenbank
(z.B. View und Index bei Ids der Aktualisierungsart I) gelöscht werden.
Beachten Sie bei Matchcode-Ids der Aktualisierungsart S, daß die Matchcode-Sätze einer
deaktiven Id nicht automatisch an Änderungen der Daten angepaßt werden. Nach dem erneuten
Aktivieren müssen die Matchcode-Sätze mit Hilfe des Matchcode Utilities neu aufgebaut werden.

Beachten Sie weiterhin, daß deaktive Matchcode-Ids bei der F4-Hilfe nicht zur Auswahl
angeboten werden.

Das Deaktivieren ist eine reine Customizingfunktion, d.h. keine transportierbare


Eigenschaft. Falls eine deaktivierte Matchcode-Id beim Upgrade erneut ausgeliefert
wird, ist sie nach dem Upgrade wieder aktiv.

April 2001 309


BC - ABAP Dictionary SAP AG
Matchcode-Id löschen

Matchcode-Id löschen
Voraussetzungen
Beachten Sie bitte, daß Sie eine Matchcode-Id erst löschen können, nachdem alle zugehörigen
Datenbank-Objekte zu dieser Id gelöscht wurden. Sie müssen also folgende Aktionen
durchführen, bevor Sie eine Matchcode-Id löschen können:
· Bei Matchcode-Ids der Aktualisierungsart I: Matchcode-View auf der Datenbank löschen.
Verzweigen Sie hierzu im Bild Matchcode-Id pflegen (Eigenschaften) über Hilfsmittel ®
Datenbank-Utility ins Datenbank-Utility.
· Bei Matchcode-Ids der Aktualisierungsarten A, S und P: Die mit dem Matchcode-Utility
aufgebauten Matchcode-Daten löschen. Hierzu genügt es, den Matchcode-Pool mit Hilfe des
Datenbank-Utilities auf der Datenbank zu löschen.

Vorgehensweise
1. Verzweigen Sie ins Pflegebild der Eigenschaften der Matchcode-Id.
Wählen Sie in diesem Bild MC-Id ® Löschen.
2. Es erscheint ein Dialogfenster, in dem Sie aufgefordert werden, den Löschauftrag zu
bestätigen.
Bestätigen Sie den Löschauftrag.
3. Falls keine abhängigen Objekte zur Matchcode-Id mehr existieren, wird diese gelöscht.
Der Ablauf des Löschvorgangs und eventuell dabei aufgetretene Fehler sind im
Löschprotokoll aufgezeichnet. Sie können sich dieses über Hilfsmittel ® Protokolle
anzeigen ® Löschen anzeigen lassen.

Beachten Sie bitte, daß es in vielen Fällen günstiger ist, eine Matchcode-Id nur zu
deaktivieren. Im Gegensatz zum Löschen bleibt beim Deaktivieren [Seite 309] die
Definition der Id im ABAP Dictionary erhalten. Wird die Id später erneut benötigt,
kann sie einfach erneut aktiviert werden.

310 April 2001


SAP AG BC - ABAP Dictionary
Matchcode-Objekt löschen

Matchcode-Objekt löschen
Voraussetzungen
Beachten Sie bitte, daß beim Löschen eines Matchcode-Objekts alle Ids zu diesem Objekt
mitgelöscht werden. Deshalb ist das Löschen eines Matchcode-Objekts erst möglich, falls alle
Ids zum Objekt auch gelöscht werden können, d.h. für diese Ids keine zugehörigen Datenbank-
Objekte mehr existieren. Zum Beispiel dürfen für transparente Ids des Objekts keine zugehörigen
Matchcode-Views mehr auf der Datenbank existieren.

Vorgehensweise
1. Verzweigen Sie ins Einstiegsbild des ABAP Dictionary und wählen Sie Hilfsmittel ® Weitere
Dictionary-Objekte.
Es erscheint ein Dialogfenster.
2. Markieren Sie den Objekttyp Matchcode-Objekt und geben Sie den Namen des Matchcode-
Objekts ein.
Prüfen Sie vor dem Löschen, ob für die Matchcode-Ids des Objekts noch Datenbank-
Objekte vorhanden sind.
3. Wählen Sie Löschen.
Das Matchcode-Objekt und die zugehörigen Matchcode-Ids werden nun gelöscht, falls
für die zum Matchcode-Objekt gehörenden Matchcode-Ids keine abhängigen Objekte
mehr existieren.

April 2001 311


BC - ABAP Dictionary SAP AG
Flugmodell

Flugmodell
Das Flugmodell ist Grundlage aller Beispiele in dieser Dokumentation. Alle in den Beispielen
erwähnten Tabellen des Flugmodells sind in ihrem System vorhanden, so daß Sie die Beispiele
direkt im System nachvollziehen können.
Dem Flugmodell liegt das Datenmodell BC_TRAVEL zugrunde, daß Sie sich in Ihrem System mit
dem Data Modeler ansehen können.

Vorgehensweise zum Anzeigen des Flugmodells


1. Verzweigen Sie ins Einstiegsbild der ABAP Workbench und wählen Sie dann Entwicklung ®
Data Modeler.
Sie verzweigen damit ins Einstiegsbild des Data Modeler.
2. Geben Sie im Feld Modellierungsobjekt BC_TRAVEL ein und wählen Sie Anzeigen.
Sie verzweigen in die Beschreibung des Flugmodells.
3. Über Hilfsmittel ® Grafik können Sie sich das Datenmodell auch als Grafik anzeigen lassen.
Weitere Hinweise zur Datenmodellierung und zur Bedienung des Data Modeler finden Sie in der
Dokumentation zum Data Modeler [Extern].

Flugmodell (vereinfachte Darstellung)

Mandant

Währung
Geschäfts-
partner

Reisebüro

Kunde

Fluggesell-
Verkaufsstelle
schaft

Flugplan Flug Buchung

Das Flugmodell beschreibt auf vereinfachte Weise die Buchung von Platz in
Passagierflugzeugen durch Flugkunden. Die Buchung erfolgt entweder über eine Verkaufsstelle
einer Fluggesellschaft oder über ein Reisebüro.

312 April 2001


SAP AG BC - ABAP Dictionary
Flugmodell

Grundlage einer Flugbuchung sind einzelne Flugverbindungen, die im Flugplan genau


beschrieben sind. Zu jeder Flugverbindung gibt es konkrete Flüge.

Zugeordnete Tabellen im ABAP Dictionary


Zu jedem Entitätstyp des Flugmodells gehört eine Tabelle im ABAP Dictionary, in der die Daten
der zugehörigen Entitäten (Ausprägungen des Entitätstyps) erfaßt werden.
Die wichtigsten Tabellen des Flugmodells sind:
· T000: Mandantentabelle
· SCURX: Währungen (Schlüssel: Währungsschlüssel)
· SBUSPART: Geschäftspartner (Schlüssel: Mandant, Nummer des Partners)
· STRAVELAG: Reisebüros (Schlüssel: Mandant, Nummer des Reisebüros)
· SCUSTOM: Kunden (Schlüssel: Mandant, Kundennummer)
· SCARR: Fluggesellschaften (Schlüssel: Mandant, Kennung der Fluggesellschaft)
· SCOUNTER: Verkaufsstellen (Schlüssel: Mandant, Kennung der Fluggesellschaft, Nummer
der Verkaufsstelle)
· SPFLI: Flugplan (Schlüssel: Mandant, Kennung der Fluggesellschaft, Verbindungsnummer)
· SFLIGHT: Flüge (Schlüssel: Mandant, Kennung der Fluggesellschaft, Verbindungsnummer,
Flugdatum)
· SBOOK: Flugbuchungen (Schlüssel: Mandant, Kennung der Fluggesellschaft,
Verbindungsnummer, Flugdatum, Buchungsnummer, Kundennummer)

Zusammenhänge zwischen den Tabellen


Die Tabelle SBUSPART enthält alle Geschäftspartner zu einer Fluggesellschaft. In dieser
Tabelle ist ein Geschäftspartner über seine Nummer identifiziert. Weiter sind noch die Daten des
Ansprechpartners bei diesem Geschäftspartner hinterlegt. Ein Geschäftspartner kann ein
Reisebüro oder ein Kunde (z.B. Firma, die häufig direkt bei der Fluggesellschaft Flüge bucht)
sein. Für diese beiden Typen von Geschäftspartnern werden unterschiedliche Daten benötigt.
Die Daten eines Reisebüros werden in der Tabelle STRAVELAG und die Daten eines Kunden in
der Tabelle SCUSTOM abgelegt. Zu jedem Eintrag in der Tabelle SBUSPART existiert also ein
Eintrag mit gleichem Schlüssel entweder in der Tabelle STRAVELAG oder in der Tabelle
SCUSTOM.
Die Tabelle SCARR enthält die Kennungen und Bezeichnungen der Fluggesellschaften. Jede
Fluggesellschaft bedient eine Reihe von Flugverbindungen. Diese Flugverbindungen sind in der
Tabelle SPFLI hinterlegt. Die konkreten Flugdaten für jede Flugverbindung stehen in der Tabelle
SFLIGHT. Für jeden Flug in der Tabelle SFLIGHT können Buchungen vorgenommen werden.
Die vorgenommenen Buchungen pro Flug sind in der Tabelle SBOOK verzeichnet.
Die Fluggesellschaften unterhalten Verkaufsschalter an den Flughäfen. Diese Verkaufsschalter
sind in der Tabelle SCOUNTER verzeichnet. Die Nummer des Kunden bzw. des Reisebüros, für
das die Buchung vorgenommen wurde, sind in der Tabelle SBOOK bei jeder Buchung hinterlegt.
Falls direkt an einem Schalter gebucht wurde, ist die Nummer des Verkaufsschalters zusätzlich
bei den Buchungsdaten in der Tabelle SBOOK eingetragen.

April 2001 313