313
BC - ABAP Dictionary Release 4.6C HELP.BCDWBDIC

BC - ABAP Dictionary (v4.6c)

Embed Size (px)

Citation preview

Page 1: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary

Release 4 .6C

HE

LP

.BC

DW

BD

IC

Page 2: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

2 April 2001

Copyright

© Copyright 2001 SAP AG. Alle Rechte vorbehalten.

Weitergabe und Vervielfältigung dieser Publikation oder von Teilen daraus sind, zu welchemZweck und in welcher Formauch immer, ohne die ausdrückliche schriftliche Genehmigung durch SAP AG nicht gestattet. Indieser Publikation enthaltene Informationen können ohne vorherige Ankündigung geändertwerden.

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 eingetrageneMarken derMicrosoft Corporation.

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

ORACLE® ist eine eingetragene Marke der ORACLE Corporation.

INFORMIX®-OnLine for SAP und Informix® Dynamic ServerTM

sind eingetragene Marken derInformix 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 WideWeb 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 derLizenz 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.comsind Marken oder eingetragene Marken der SAP AG in Deutschland und vielen anderen Ländernweltweit. Alle anderen Produkte sind Marken oder eingetragene Marken der jeweiligen Firmen.

Page 3: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

April 2001 3

Symbole

Symbol Bedeutung

Achtung

Beispiel

Empfehlung

Hinweis

Syntax

Tip

Page 4: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

4 April 2001

Inhalt

BC - ABAP Dictionary.................................................................................................... 9ABAP Dictionary.........................................................................................................................................10Tabellen .......................................................................................................................................................13Tabellenfelder ............................................................................................................................ 15

Referenzfeld und Referenztabelle ..........................................................................................................16Includes ...................................................................................................................................................17Benannte Includes ..................................................................................................................................19

Fremdschlüssel ......................................................................................................................... 20Generische und konstante Fremdschlüssel............................................................................................23Semantische Eigenschaften eines Fremdschlüssels..............................................................................25

Kardinalität .........................................................................................................................................26Art der Fremdschlüsselfelder .............................................................................................................27

Texttabelle...............................................................................................................................................28Strukturübergreifende Fremdschlüssel ...................................................................................................30

Technische Einstellungen ........................................................................................................ 31Datenart...................................................................................................................................................32Größenkategorie .....................................................................................................................................33Pufferungserlaubnis ................................................................................................................................34Pufferungsart...........................................................................................................................................35

Vollständige Pufferung.......................................................................................................................36Generische Pufferung ........................................................................................................................38Pufferung von Einzelsätzen ...............................................................................................................40

Protokollierung ........................................................................................................................................42Pooltabelle in transparente Tabelle umwandeln .....................................................................................44

Datenbanktabellen puffern ....................................................................................................... 45Synchronisation der lokalen Puffer .........................................................................................................48

Beispiel zur Puffersynchronisation.....................................................................................................50Welche Tabellen sollten gepuffert werden?............................................................................................55Welche Zugriffe gehen direkt auf die Datenbank....................................................................................56Wie sind die Tabellenpuffer technisch realisiert?....................................................................................57

Partieller Tabellenpuffer.....................................................................................................................58Generischer und vollständiger Tabellenpuffer...................................................................................60

Wie kann man die Pufferqualität analysieren?........................................................................................62Indizes ........................................................................................................................................ 63

Was sollten Sie bei Sekundärindizes beachten?....................................................................................65Wie prüft man, ob ein Index verwendet wird?.........................................................................................67Unique-Index...........................................................................................................................................68Index-Kennung........................................................................................................................................69

Customizing-Includes ............................................................................................................... 70Append-Strukturen.................................................................................................................... 71Tabelle anlegen.......................................................................................................................... 74

Fremdschlüssel anlegen .........................................................................................................................77Technische Einstellungen pflegen ..........................................................................................................79Sekundärindizes anlegen........................................................................................................................80Auslieferungsklasse ................................................................................................................................82

Page 5: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

April 2001 5

Aktivierungsart.........................................................................................................................................84Fehlernachricht in der Fremdschlüsselprüfung.......................................................................................85

Änderungen an Tabellen durchführen .................................................................................... 86Append-Struktur anhängen.....................................................................................................................87Include einfügen......................................................................................................................................89Neue Felder einfügen..............................................................................................................................91

Initialwerte ..........................................................................................................................................92Vorhandene Felder löschen....................................................................................................................94Datentyp und Länge vorhandener Felder verändern..............................................................................95Tabellenart ändern ..................................................................................................................................96Felder verschieben..................................................................................................................................97Felder aus einer anderen Tabelle übernehmen......................................................................................98Felder aus einem Entitätstyp übernehmen .............................................................................................99Tabelle löschen .....................................................................................................................................100

Views .........................................................................................................................................................101Join, Projektion und Selektion............................................................................................... 103

Inner Join und Outer Join......................................................................................................................106Fremdschlüsselbeziehung und Join-Bedingung ...................................................................................107

Pflegestatus ............................................................................................................................. 108Zeitabhängige Schlüsselteile ................................................................................................................109Inserts über Datenbank-Views ..............................................................................................................110

Datenbank-Views..................................................................................................................... 111Includes in Datenbank-Views................................................................................................................113Technische Einstellungen eines Datenbank-Views ..............................................................................114Append-Views .......................................................................................................................................115

Projektions-Views ................................................................................................................... 117Help-Views ............................................................................................................................... 118Pflege-Views ............................................................................................................................ 120

Einschränkungen für Pflege- und Help-Views ......................................................................................122Views anlegen.......................................................................................................................... 123

Datenbank-View anlegen ......................................................................................................................124Help-View anlegen ................................................................................................................................127Projektions-View anlegen......................................................................................................................129Pflege-View anlegen .............................................................................................................................131

Pflegemerkmal eines Viewfeldes.....................................................................................................133Auslieferungsklasse eines Pflege-Views .........................................................................................134

Selektionsbedingung des Views pflegen ..............................................................................................135Append-View anlegen ...........................................................................................................................136

Views löschen.......................................................................................................................... 137Beispiel zu Views .................................................................................................................... 138Typen .........................................................................................................................................................141Datenelemente......................................................................................................................... 143

Datenelement anlegen ..........................................................................................................................145Dokumentation und Doku-Status ..........................................................................................................147Feldbezeichner......................................................................................................................................148

Strukturen ................................................................................................................................ 149Struktur anlegen....................................................................................................................................151Benannte Includes ................................................................................................................................153

Tabellentypen .......................................................................................................................... 154

Page 6: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

6 April 2001

Tabellentyp anlegen..............................................................................................................................156Schlüsseldefinition eines Tabellentyps .................................................................................................158Zugriffsart ..............................................................................................................................................159Schlüsselart...........................................................................................................................................160Generische Tabellentypen ....................................................................................................................161Ranges-Tabellentypen ..........................................................................................................................162Ranges-Tabellentyp anlegen ................................................................................................................163

Typ löschen.............................................................................................................................. 165Domänen ...................................................................................................................................................166Festwerte.................................................................................................................................. 168Wertetabelle ............................................................................................................................. 169Eingabe- und Ausgabekonvertierungen ............................................................................... 170Domäne anlegen...................................................................................................................... 173Domäne verändern.................................................................................................................. 175Domäne löschen...................................................................................................................... 176Suchhilfen .................................................................................................................................................177Struktur einer elementaren Suchhilfe ................................................................................... 179Struktur einer Sammelsuchhilfe ............................................................................................ 183Append-Suchhilfen ................................................................................................................. 185Suchhilfen mit einem Bildschirmfeld verbinden.................................................................. 187

Anbindung an ein Datenelement...........................................................................................................188Anbindung an die Prüftabelle ................................................................................................................190Anbindung an ein Tabellen- oder Strukturfeld ......................................................................................192Anbindung an ein Dynprofeld................................................................................................................194Hierarchie des Suchhilfeaufrufs ............................................................................................................195Wertetransport bei der Eingabehilfe .....................................................................................................196

Anlegen einer elementaren Suchhilfe ................................................................................... 198Dialogtyp ...............................................................................................................................................201Kurzanwahl............................................................................................................................................202Default-Werte für Suchhilfeparameter ..................................................................................................203

Anlegen einer Sammelsuchhilfe............................................................................................ 204Append-Suchhilfe anlegen ..................................................................................................... 206Suchhilfe-Exit........................................................................................................................... 207Beispiel zu Suchhilfen ............................................................................................................ 209Migration von Help-Views und Matchcodes zu Suchhilfen ................................................ 213Sperrobjekte..............................................................................................................................................214Sperrmodus ............................................................................................................................. 217Funktionsbausteine für Sperranforderungen....................................................................... 218Bedingungen an die Fremdschlüssel ................................................................................... 221Sperrmechanismus ................................................................................................................. 222

Lokaler Sperrcontainer..........................................................................................................................224Sperrobjekt anlegen................................................................................................................ 225Sperrobjekte löschen.............................................................................................................. 227Beispiel zu Sperrobjekten ...................................................................................................... 228Datenbank-Strukturen anpassen............................................................................................................231Ablauf einer Umsetzung ......................................................................................................... 233Probleme bei Umsetzungen ................................................................................................... 238

Page 7: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

April 2001 7

Abgebrochene Umsetzungen fortsetzen .............................................................................. 240Auffinden abgebrochener Umsetzungen.............................................................................. 242Aktivierung................................................................................................................................................243Laufzeitobjekte ........................................................................................................................ 245Massenaktivierung .................................................................................................................. 246Aktivieren im Hintergrund ...................................................................................................... 247Datentyp im ABAP Dictionary.................................................................................................................248Abbildung auf den ABAP-Datentyp....................................................................................... 251Das Datenbank-Utility ..............................................................................................................................253Tabellen und Indizes auf der Datenbank bearbeiten ........................................................... 255Views auf der Datenbank bearbeiten .................................................................................... 257Matchcodes auf der Datenbank bearbeiten.......................................................................... 258Pools und Cluster auf der Datenbank bearbeiten................................................................ 260Verarbeitungsart...................................................................................................................... 261Speicherparameter.................................................................................................................. 262Aufträge zur Massenverarbeitung anzeigen......................................................................... 264Jobs für die Massenverarbeitung einplanen ........................................................................ 266Protokolle der Massenverarbeitung anzeigen...................................................................... 267Temporäre Tabellen ohne Aufsetzprotokolle anzeigen ...................................................... 268Pool- und Clustertabellen........................................................................................................................269Tabellenpool/Tabellencluster anlegen .................................................................................. 273Tabellenpool/Tabellencluster löschen .................................................................................. 275Pooltabellen/Clustertabellen anlegen ................................................................................... 276Pool/Clustertabellen ändern................................................................................................... 277Matchcodes...............................................................................................................................................278Aktualisierungsart................................................................................................................... 280Besonderheiten bei programmgesteuerten Matchcodes.................................................... 282Matchcodes anlegen ............................................................................................................... 283

Eigenschaften des Matchcode-Objekts angeben .................................................................................284Sekundärtabellen des Matchcode-Objekts auswählen.........................................................................285Felder des Matchcode-Objekts auswählen...........................................................................................286Matchcode-Objekt aktivieren.................................................................................................................287Eigenschaften der Matchcode-Id angeben ...........................................................................................288Sekundärtabellen einer Matchcode-Id auswählen................................................................................290Felder einer Matchcode-Id auswählen..................................................................................................291Selektionsbedingungen einer Matchcode-Id angeben..........................................................................294Matchcode-Id aktivieren ........................................................................................................................296Matchcode-Daten aufbauen..................................................................................................................297Anzeigen der aufgebauten Matchcode-Daten ......................................................................................298Matchcode-Index anlegen.....................................................................................................................299Funktionsbaustein für Matchcode-Id.....................................................................................................301

Matchcodes ändern................................................................................................................. 302Matchcode-Objekt ändern.....................................................................................................................303Matchcode-Id ändern ............................................................................................................................305Umstellung auf transparente Matchcodes ............................................................................................307Auswirkungen der Umstellung auf transparente Ids .............................................................................308Matchcode-Id deaktivieren ....................................................................................................................309Matchcode-Id löschen ...........................................................................................................................310

Page 8: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

8 April 2001

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

Page 9: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

BC - ABAP Dictionary

April 2001 9

BC - ABAP DictionaryDas ABAP Dictionary ermöglicht eine zentrale Beschreibung und Verwaltung aller im Systemverwendeten Datendefinitionen. Das ABAP Dictionary ist vollständig in die ABAP DevelopmentWorkbench integriert. Alle anderen Komponenten der Workbench können aktiv auf die im ABAPDictionary 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 derDatenbank (Tabellen, Indizes und Views) definiert werden. Diese Objekte können dann mitdieser Definition automatisch auf der Datenbank erzeugt werden. Weiterhin stellt das ABAPDictionary noch Werkzeuge zur Aufbereitung von Dynprofeldern zur Verfügung, beispielsweisedie Möglichkeit ein Feld mit einer Eingabehilfe (F4-Hilfe) auszustatten.

Datenbank-Objekte

Tabelle

DB-Tabelle

Tools

Dynpro

Mögl. Werte

F4

Typdefinitionen

Struktur

TabellentypDatenelement

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

Page 10: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

ABAP Dictionary

10 April 2001

ABAP DictionaryEinsatzmöglichkeitenIm ABAP Dictionary werden Datendefinitionen (Metadaten) erfaßt und verwaltet. Es ermöglichteine zentrale, redundanzfreie Beschreibung aller im System vorhandenen Datenstrukturen. Neuerfaßte oder geänderte Informationen werden allen Systemkomponenten automatisch zurVerfü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 ABAPDictionary beschreibt also die Struktur der Objekte der Anwendungsentwicklung und derenAbbildung in Tabellen bzw. Views auf der unterliegenden relationalen Datenbank.

Weiterhin stellt das ABAP Dictionary noch Standardfunktionen zur Aufbereitung von Feldern aufDynpros 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 dieserTabellendefinition wird dann eine Tabelle mit gleicher Struktur in der unterliegenden Datenbankangelegt.

Views [Seite 101] sind logische Sichten auf mehrere Tabellen. Die Struktur des Views wird imABAP Dictionary definiert. Aus dieser Struktur kann dann ein View auf der Datenbank erzeugtwerden.

Typen [Seite 141] werden in ABAP Programmen verwendet. Die Struktur eines Typs kann globalim ABAP Dictionary definiert werden. Änderungen an einem Typ sind automatisch in allenProgrammen wirksam, die den Typ verwenden.

Sperrobjekte [Seite 214] dienen zur Synchronisation des Zugriffs mehrerer Benutzer auf denselben Datenbestand. Aus der Definition eines Sperrobjekts im ABAP Dictionary werdenFunktionsbausteine generiert, die in Anwendungsprogrammen verwendet werden können.

Über Domänen [Seite 166] können verschiedene technisch gleichartige Felder zusammengefaßtwerden. Eine Domäne beschreibt den Wertebereich aller Tabellenfelder undStrukturkomponenten, die sich auf diese Domäne beziehen.

Auch die Dokumentation (F1-Hilfe) und die Eingabehilfe (F4-Hilfe) zu einem Feld auf einerEingabemaske stammen aus dem ABAP Dictionary. Der Dokumentation zum Feld wird dabei zueinem Datenelement [Seite 143] angelegt, das die inhaltliche Bedeutung eines Tabellenfeldesbeschreibt. Die bei der Eingabehilfe erscheinende Liste der möglichen Eingabewerte wird durcheinen Fremdschlüssel [Seite 20] oder eine Suchhilfe [Seite 177] erzeugt.

Integration in die ABAP Development WorkbenchDas ABAP Dictionary ist vollständig in die ABAP Development Workbench integriert. Grundlagefür die aktive Integration des ABAP Dictionary in die Entwicklungsumgebung ist die interpretativeArbeitsweise des R/3-Systems. Die Interpreter sehen nicht die Originalobjekte, sondern nurinterne Repräsentationen dieser Objekte.

Page 11: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

ABAP Dictionary

April 2001 11

Diese internen Repräsentationen werden automatisch angepaßt, sobald das SystemVeränderungen im ABAP Dictionary feststellt. Damit ist sichergestellt, daß Dynpro- und ABAP-Interpreter, Eingabehilfe, Datenbankschnittstelle und Entwicklungswerkzeuge stets auf aktuelleInformationen zugreifen.

Das folgende ABAP Programm listet die in der Tabelle SCARR enthaltenenFluggesellschaften (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 zudieser Struktur, z.B. Feldnamen, Datentypen und Feldlängen, werden aus der imABAP Dictionary definierten Tabelle SCARR übernommen. Diese Informationen zurTabelle SCARR werden beim Generieren des Programms aus dem ABAP Dictionaryabgerufen.

Damit muß bei einer Änderung der Tabelle SCARR, zum Beispiel bei derVeränderung der Länge eines Tabellenfeldes, der Quelltext des Programms nichtangepaßt werden. Beim nächsten Aufruf des Programms wird in diesem Fallautomatisch festgestellt, daß sich die Struktur der Tabelle SCARR verändert hat.Das Programm wird dann einfach neu generiert und ruft damit die aktuellenInformationen zur Tabelle SCARR aus dem ABAP Dictionary ab.

Entwicklungsumgebung Entwicklungsumgebung

Laufzeitumgebung der Anwendung Laufzeitumgebung der Anwendung

ABAPInterpreter

DialogSteuerung

Schnitt-stellen

Dynpro-Interpreter

ABAPWerkzeuge

DataModeler

ScreenPainter

ABAPDictionary

Page 12: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

ABAP Dictionary

12 April 2001

Während der Arbeit an Entwicklungsprojekten können Objekte des ABAP Dictionary mehrfachverändert werden, bevor sie aktiviert [Seite 243] und damit den operativen Komponenten desSystems zur Verfügung gestellt werden. Objekte können also zum gleichen Zeitpunkt in eineraktiven 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 Objektendurchgeführt werden, ohne die Lauffähigkeit des Systems zu beeinflussen. Erst wenn alleObjekte geändert sind, können diese gemeinsam aktiviert werden.

Page 13: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Tabellen

April 2001 13

Tabellen Im ABAP Dictionary können Tabellen datenbankunabhängig definiert werden. Hierzu werden dieFelder der Tabelle mit ihren (datenbankunabhängigen) Datentypen und Längen definiert.

Zu der im ABAP Dictionary abgelegten Tabellendefinition wird beim Aktivieren der Tabelle einephysische Tabellendefinition auf der Datenbank angelegt. Dabei wird die Tabellendefinition ausdem ABAP Dictionary in eine Definition der jeweiligen Datenbank übersetzt.

Aktivierer und

DB-UTILITY

...T3T2 T1 Tn

T1T2

T3Tn

DB

Datenbank unabhängige Definition derTabellen im ABAP Dictionary

Definition der Tabellenin der Datenbank

Eine Tabellendefinition im ABAP Dictionary besteht aus folgenden Bestandteilen:

� Tabellenfelder [Seite 15]: Hier werden die Feldnamen und die Datentypen der in der Tabelleenthaltenen Felder angegeben.

� Fremdschlüssel [Seite 20]: Über Fremdschlüssel werden die Beziehungen der Tabelle zuanderen Tabellen definiert.

� Technische Einstellungen [Seite 31]: Die technischen Einstellungen steuern, wie die Tabelleauf der Datenbank angelegt wird.

� Indizes [Seite 63]: Zur Beschleunigung der Datenselektion können Sekundärindizes für dieTabelle 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 Modifikationsichergestellt, daß die Kundenerweiterungen automatisch mit den neuen Versionen der SAP-Tabellen abgemischt werden.

Siehe auch:Tabelle anlegen [Seite 74]

Page 14: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Tabellen

14 April 2001

Änderungen an Tabellen durchführen [Seite 86]

Page 15: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Tabellenfelder

April 2001 15

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, Zahlenund Unterstrichen bestehen. Der Feldname muß mit einem Buchstaben beginnen.

� Schlüsselkennzeichen: Hier muß entschieden werden, ob das Feld zum Schlüssel derTabelle 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 Nachkommastellenangegeben 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 KurztextDie Zuordnung von Datentyp [Seite 248], Länge und Kurztext kann auf verschiedene Artenerfolgen:

� Dem Feld kann in der Tabellendefinition direkt Datentyp, Feldlänge (und falls notwendigDezimalstellen) und Kurztext zugeordnet werden.

� Dem Feld kann ein Datenelement [Seite 143] zugeordnet werden. Datentyp, Feldlänge (undDezimalstellen) werden dann aus der Domäne des Datenelements ermittelt. Als Kurztextwird 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 denendas 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 Feldverwendet wird.

� Referenzfeld und Referenztabelle [Seite 16]: Für Felder, die Währungsbeträge (DatentypCURR) bzw. Mengenangaben (Datentyp QUAN) enthalten, muß das Tabellenfeldangegeben werden, in dem die zugehörige Währung oder Mengeneinheit zu finden ist.

Siehe auch:Tabelle anlegen [Seite 74]

Page 16: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Referenzfeld und Referenztabelle

16 April 2001

Referenzfeld und ReferenztabelleFü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 Referenzfelddes Ausgangsfeldes bezeichnet. Das Referenzfeld kann auch in der Tabelle selbst liegen.

Die Zuordnung eines Feldes zum Referenzfeld wird erst zur Laufzeit eines Programmshergestellt. Ist z.B. ein Feld mit Währungsbeträgen gefüllt, wird die zugehörige Währung ausdem zugeordneten Referenzfeld ermittelt, d.h. der zu diesem Zeitpunkt in diesem Feldeingetragene 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

LaufzeitT1-Feld 2

T2-Feld 5

1.500.00

DEM

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

Page 17: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Includes

April 2001 17

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

Datenbank

F2 F3 F4 F5F1

F2 F5F1 F4F3

F4F3

Tabelle

Struktur

inkludiert

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

Eine Struktur A ist in einer Tabelle B inkludiert worden. In die Struktur A wird einneues Feld eingefügt. Beim Aktivieren der Struktur A wird dann die Tabelle B andiese Ä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 derFelder 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, dieihrerseits eine andere Struktur C inkludiert, usw. Die maximale Schachtelungstiefe ist auf neunbegrenzt. Ein Pfad von geschachtelten Includes in einer Tabelle bzw. Struktur kann alsohöchstens die Länge neun haben (die Tabelle/Struktur selbst ist dabei ausgenommen).

Page 18: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Includes

18 April 2001

Tabelle/Struktur

Include U1

Include U2

Include U8

Include U9

U1

U2

U3

U9

MaximaleTiefe = 9

Es können nur flache Strukturen [Seite 149] inkludiert werden. In einer flachen Struktur verweistjedes Feld entweder auf ein Datenelement oder ist direkt mit Datentyp, Länge undgegebenenfalls 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 inStrukturen. 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 kanneine Struktur nur dann in eine Tabelle inkludiert werden, wenn alle Feldnamen derStruktur 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 eineStruktur STRUKT2 inkludiert. Hier liegt nur die Tabelle TAB1 auf dem Pfad dergeschachtelten Includes. Es wäre auch möglich TAB1 in eine weitere StrukturSTRUKT0 zu inkludieren.

Dagegen kann in TAB1 keine andere Tabelle TAB2 inkludiert werden, da in diesemFall zwei Tabellen (TAB1 und TAB2) auf einem Pfad von geschachtelten Includesliegen würden.

Siehe auch:Include einfügen [Seite 89]

Page 19: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Benannte Includes

April 2001 19

Benannte IncludesWird zur Definition einer Datenbanktabelle oder Struktur ein Include [Seite 17] verwendet, kannder inkludierten Teilstruktur ein Name zugeordnet werden. Über diesen Namen kann die Gruppeder 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 derStruktur ADDRESS ansprechen. Das inkludierte Feld CITY kann dann alternativ überPERSON-CITY oder PERSON-ADR-CITY angesprochen werden.

Es ist möglich, eine Struktur mehrfach zu inkludieren (z.B. in Periodengruppen). Da hierbei derdirekte Zugriff über Feldnamen zulässig bleiben soll, müssen die inkludierten Feldnamen ausEindeutigkeitsgründen umbenannt werden.

Hierfür läßt sich jeder Gruppe ein Suffix zuordnen, um den die Namen der Gruppenfeldererweitert 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 istdie Privatadresse mit Suffix H und Namen ADRH. Die andere Adresse ist dieGeschäftsadresse mit Suffix W und Namen ADRW. Auf das Feld CITY in derPrivatadresse kann dann über PERSON-CITYH oder PERSON-ADRH-CITYzugegriffen werden.

Die Funktionalität der benannten Includes im ABAP Dictionary entspricht dem ABAP-KonstruktINCLUDE TYPE ... AS ... RENAMING ... .

Page 20: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Fremdschlüssel

20 April 2001

Fremdschlüssel Beziehungen zwischen Tabellen können im ABAP Dictionary durch das Anlegen vonFremdschlüsseln abgebildet werden.

Über Fremdschlüssel können auf einfache Art Werteprüfungen auf Eingabefeldern angelegtwerden. Weiterhin können Fremdschlüssel verwendet werden, um mehrere Tabellen in einemView [Seite 101] oder einem Sperrobjekt [Seite 214] zu verknüpfen.

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

Primärschlüssel

Prüftabelle T2

Feld 5 Feld 6 Feld 7

Primärschlüssel

Fremdschlüsseltabelle T1

Feld 1 Feld 2 Feld 3 Feld 4

Fremdschlüsselfelder

Die Tabelle T1 heißt in diesem Fall Fremdschlüsseltabelle (abhängige Tabelle) und die TabelleT2 Prüftabelle (referierte Tabelle). Die einander zugeordneten Feldpaare müssen den gleichenDatentyp und die gleiche Länge besitzen. Jedem Schlüsselfeld der Prüftabelle entspricht also einFeld der Fremdschlüsseltabelle. Ein solches Feld heißt Fremdschlüsselfeld.

Ein Fremdschlüssel erlaubt eine Zuordnung von Datensätzen in Fremdschlüsseltabelle undPrüftabelle. Durch die Einträge in den Fremdschlüsselfeldern spezifiziert ein Satz derFremdschlüsseltabelle eindeutig einen Satz der Prüftabelle.

Prüffeld und WerteprüfungEines der Fremdschlüsselfelder ist als Prüffeld ausgezeichnet, d.h. für dieses Feld wird dieFremdschlüsselbeziehung gepflegt.

Bei einer Eingabe in das Prüffeld wird geprüft, ob in der Prüftabelle ein Satz mit dem durch dieWerte in den Fremdschlüsselfeldern vorgegebenen Schlüssel existiert. Ist dies der Fall, ist dieEingabe zulässig, andernfalls wird die Eingabe vom System zurückgewiesen.

Page 21: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Fremdschlüssel

April 2001 21

Feld 1

Feld 2 3

Feld 3

Feld 4 1

Eingabemaske für dieFremdschlüsseltabelle T1

Eingabe ist zulässig, da einentsprechender Satz in derPrüftabelle vorhanden ist

Feld 5 Feld 6 Feld 7

Prüftabelle T2

11233344

13112312

Text 1Text 2Text 3Text 4Text 5Text 6Text 7Text 8

In diesem Beispiel würde eine Eingabe Feld2 = 2 und Feld4 = 2 zurückgewiesen, da in T2 keinSatz 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 übergenerische und konstante Fremdschlüssel [Seite 23] Felder der Fremdschlüsseltabelle aus derZuordnung zu den Feldern der Prüftabelle herausnehmen.

Funktionsweise der WerteprüfungAus der Definition des Fremdschlüssels wird ein SELECT-Statement generiert. Wird eineEingabe in das Prüffeld gemacht, so wird dieses SELECT-Statement abgeschickt. Wird dabei einpassender Satz der Prüftabelle gefunden, so ist die Eingabe zulässig. Andernfalls wird dieEingabe zurückgewiesen.

Für die in der obenstehenden Grafik dargestellte Fremdschlüsseltabelle würde dasentsprechende 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 derPrüftabelle ein Satz mit den auf dem Dynpro für Feld2 und Feld4 gemachten Eingaben alsSchlüssel existiert.

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

Page 22: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Fremdschlüssel

22 April 2001

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

Schlüsselfelder

Prüftabelle SCOUNTER

MANDT CARRID COUNTNUM AIRPORT

Fremdschlüsseltabelle SBOOK

MANDT CARRID CONNID FLDATE CUSTOMID CANCELLED

Fremdschlüsselfelder

Prüffeld

... COUNTER ...

Siehe auch:Strukturübergreifende Fremdschlüssel [Seite 30]

Semantische Eigenschaften eines Fremdschlüssels [Seite 25]

Fremdschlüssel anlegen [Seite 77]

Page 23: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Generische und konstante Fremdschlüssel

April 2001 23

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 alsSchlüsselbestandteil.

In diesen Fällen können generische Fremdschlüssel verwendet werden. Hierbei werden Felderaus der Zuordnung zu den Schlüsselfeldern der Prüftabelle herausgenommen. Die Prüfungerfolgt damit nur gegen die verbliebenen Schlüsselfelder.

Es ist auch möglich einem Schlüsselfeld der Prüftabelle einen konstanten Wert zuzuweisen. DiePrüfung erfolgt für dieses Feld dann nur gegen die angegebene Konstante. Diese Möglichkeitkönnen Sie verwenden, wenn nur Sätze der Prüftabelle zulässig sind, die in diesemSchlüsselfeld einen konstanten Wert enthalten.

Prüftabelle PTAB

Feld 1 Feld 2 Feld 3

Primärschlüssel

Fremdschlüsseltabelle FTAB

Feld 6 Feld 7 Feld 8 Feld 9

Feld 4 Feld 5

Generisch *

Konstant K

Für die Fremdschlüsseldefinition in der Abbildung hätte das zugehörige SELECT-Statement fürdie 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üftabellePTAB existiert, der den Eingabewert für Feld6 in PTAB-Feld1, den Eingabewert für Feld8 inPTAB-Feld3 und in PTAB-Feld4 die Konstante K enthält.

Page 24: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Generische und konstante Fremdschlüssel

24 April 2001

Feld 6Feld 7 30

Feld 8

Feld 9 B

Eingabemaske für dieFremdschlüsseltabelle FTAB

Eingabe ist zulässig, da Feld 7und Feld 9 aus der Zuordnungherausgenommen wurden

Feld 1 Feld 2 Feld 3

Prüftabelle PTAB3

1 Feld 4 Feld 5

11233344

11121212

13112334

ABAKAACC

Text 1Text 2Text 3Text 4Text 5Text 6Text 7Text 8

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

Page 25: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Semantische Eigenschaften eines Fremdschlüssels

April 2001 25

Semantische Eigenschaften eines FremdschlüsselsEin Fremdschlüssel beschreibt eine Beziehung zwischen zwei Tabellen. Durch die Angabe vonKardinalität [Seite 26] und der Art der Fremdschlüsselfelder [Seite 27] kann die inhaltlicheBedeutung 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 derWerteprü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 dieFremdschlüsseltabelle als Texttabelle [Seite 28] zur Prüftabelle aufgefaßt. Wird einDynprofeld gegen eine Tabelle geprüft, so werden bei der Eingabehilfe (F4-Hilfe) zu diesemFeld standardmäßig die Schlüsseleinträge der Prüftabelle angezeigt. Ist eine Texttabelle zurPrüftabelle vorhanden, wird jeder angezeigte Schlüsseleintrag noch mit einem erläuterndenText (Inhalt des ersten characterartigen Feldes der Texttabelle) in der Anmeldesprache desBenutzers 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 einessolchen Help- oder Pflege-Views ist nur dann sinnvoll, wenn zu jedem Satz in derPrimärtabelle des Views höchstens ein zugehöriger Satz in jeder der Sekundärtabellen desViews enthalten ist. Beim Anlegen eines Pflege- bzw. Help-Views wird daher überprüft, obdie Fremdschlüssel, über die die Tabellen im View verknüpft wurden, geeigneteKardinalitä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) nurvorhandene Schalter eingetragen werden können (siehe hierzu das Beispiel inFremdschlüssel [Seite 20]).

Eine Buchung kann entweder über ein Reisebüro oder einen Schalter derFluggesellschaft erfolgen. Falls über ein Reisebüro gebucht wurde, bleibt das FeldCOUNTER der Tabelle SBOOK leer. Die Fremdschlüsselfelder müssen also nichtimmer gefüllt sein, d.h. die linke Seite der Kardinalität ist C. Für jeden Schalterkönnen natürlich beliebig viele Buchungen vorliegen. Damit können für jeden Satzder Prüftabelle SCOUNTER (Schalter) beliebig viele Einträge (Buchungen) in derFremdschlüsseltabelle SBOOK vorliegen. Die rechte Seite der Kardinalität ist alsoCN.

Über einen Schalter können natürlich mehrere Buchungen für die gleicheFluggesellschaft vorgenommen werden. Diese Buchungen unterscheiden sich damitnicht bzgl. der Fremdschlüsselfelder (MANDT, CARRID, COUNTER). Die Einträge inden Fremdschlüsselfeldern identifizieren einen Eintrag in der FremdschlüsseltabelleSBOOK (eine Buchung) damit nicht eindeutig. Die Art der Fremdschlüsselfelder istdamit keine Schlüsselfelder/-kandidaten.

Page 26: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Kardinalität

26 April 2001

KardinalitätDie Kardinalität (n:m) beschreibt die Fremdschlüsselbeziehung im Hinblick auf die Anzahl dermöglichen abhängigen Sätze (Sätze der Fremdschlüsseltabelle) bzw. referierten Sätze (Sätzeder 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 derPrüftabelle.

� n=C: Es kann Sätze in der Fremdschlüsseltabelle geben, die über die Fremdschlüsselfelderkeinem Satz der Prüftabelle entsprechen. Dieser Fall kann z.B. vorliegen, wenn das Feld derFremdschlü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.

Page 27: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Art der Fremdschlüsselfelder

April 2001 27

Art der FremdschlüsselfelderDie Art der Fremdschlüsselfelder beschreibt die Bedeutung der Fremdschlüsselfelder in derFremdschlüsseltabelle.

Es sind folgende Angaben zur Art der Fremdschlüsselfelder möglich:

� keine Schlüsselfelder/-kandidaten: Die Fremdschlüsselfelder sind wederPrimärschlüsselfelder der Fremdschlüsseltabelle noch identifizieren sie einen Satz derFremdschlüsseltabelle eindeutig (Schlüsselkandidaten). Die Fremdschlüsselfelder sind damitnicht (teil)identifizierend für die Fremdschlüsseltabelle.

� Schlüsselfelder/-kandidaten: Die Fremdschlüsselfelder sind entweder Primärschlüsselfelderder Fremdschlüsseltabelle oder identifizieren einen Satz der Fremdschlüsseltabelle bereitseindeutig (Schlüsselkandidaten). Die Fremdschlüsselfelder sind damit (teil)identifizierend fürdie 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 einemzusätzlichen Sprachschlüsselfeld vom Schlüssel der Prüftabelle. Dieser Fall ist ein Spezialfallder Art Schlüsselfelder/-kandidaten.

Page 28: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Texttabelle

28 April 2001

TexttabelleEine Tabelle A ist eine Texttabelle zu einer Tabelle B, falls sich der Schlüssel von A aus demSchlü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 Textein 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ürdie Art der Fremdschlüsselfelder gewählt werden (siehe Semantische Eigenschaften einesFremdschlüssels [Seite 25]).

K1 K2 F1 F2

1 11 2

YYXXXXYY

Tabelle BSchlüsselfelder K1 und K2

K1 K2 L TEXT

1 11 1

Text 1 (deutsch)Text 1 (englisch)

DE

Text 2 (deutsch)Text 2 (englisch)

EN

Texttabelle A zu BSchlüsselfelder K1, K2 und L (Typ LANG)

...

...

... ... ...

... ... ...

11

22

DEEN

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

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

Textfremdschlüssel

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

Page 29: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Texttabelle

April 2001 29

Feld 1

Feld 2

Pflegebildschirm

Feld wird gegen dieTabelle B geprüft

K1 K2 Text

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

11 11 Text1 (englisch)Text1 (englisch)

11 22 Text2 (englisch)Text2 (englisch)

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

Trefferliste bei englischerAnmeldung des Benutzers

Aufruf der Eingabehilfe

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

Page 30: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Strukturübergreifende Fremdschlüssel

30 April 2001

Strukturübergreifende FremdschlüsselBei der Definition eines Fremdschlüssels kann einem Feld der Prüftabelle auch ein nicht in derFremdschlü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üffeldesmöglich.

Die Tabelle T2 ist Prüftabelle der Fremdschlüsseltabelle T1. Dem SchlüsselfeldFeld6 der Prüftabelle T2 wird ein Feld F der Workarea zugeordnet.

Primärschlüssel

Prüftabelle T2

Feld 5 Feld 6 Feld 7

Primärschlüssel

Fremdschlüsseltabelle T1

Feld 1 Feld 2 Feld 3 Feld 4

Feld F derWorkarea

Das entsprechende SELECT-Statement für die Eingabeprüfung sieht dannfolgendermaß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 Eingabezulässig, andernfalls wird sie zurückgewiesen.

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

Page 31: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Technische Einstellungen

April 2001 31

Technische Einstellungen Die technischen Einstellungen einer Tabelle bestimmen, wie die Tabelle beim Anlegen auf derDatenbank behandelt wird, ob die Tabelle gepuffert wird und ob Änderungen an Datensätzen derTabelle protokolliert werden.

Die wichtigsten Parameter in den technischen Einstellungen sind:

� Datenart: Über die Datenart [Seite 32] können Sie bestimmen, in welchem physischenBereich 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 dieTabelle angelegten Extents beeinflussen.

Beim Anlegen der Tabelle auf der Datenbank werden die notwendigen Informationen über denzu wählenden Speicherbereich und die Extentgröße aus den technischen Einstellungen ermittelt.

� Pufferungserlaubnis: Hier können Sie festlegen, ob die Tabelle gepuffert werden darf (siehePufferungserlaubnis [Seite 34]).

� Pufferungsart: Falls die Tabelle gepuffert werden darf, müssen Sie eine Pufferungsartangeben (vollständig, partiell, generisch). Die Pufferungsart [Seite 35] bestimmt, wievieleSä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 denTabelleneinträgen protokolliert werden sollen. Falls die Protokollierung [Seite 42]eingeschaltet ist, wird jede Änderung an einem Satz der Tabelle in einer Protokolltabellefestgehalten.

Für Pooltabellen oder Tabellen, die über dieses Kennzeichen zu einem früheren Zeitpunkt intransparente Tabellen umgewandelt wurden, wird noch das Kennzeichen In transparente Tabelleumwandeln (Transparent-Flag [Seite 44]) angezeigt.

Siehe auch:Technische Einstellungen pflegen [Seite 79]

Datenbanktabellen puffern [Seite 45]

Page 32: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Datenart

32 April 2001

DatenartMit der korrekten Wahl der Datenart wird Ihre Tabelle beim Anlegen auf der Datenbankautomatisch dem richtigen Bereich (Tablespace bzw. DBSpace) der Datenbank zugeordnet.Jeder Datenart entspricht ein physischer Bereich, in dem alle dieser Datenart zugeordnetenTabellen abgelegt werden. Es sind folgende Datenarten möglich:

� APPL0 (Stammdaten): Daten, die nur selten geändert werden. Ein Beispiel für Stammdatensind die in einer Adressendatei enthaltenen Daten, wie z.B. Name, Anschrift undTelefonnummer.

� APPL1 (Bewegungsdaten): Daten, die oft geändert werden. Ein Beispiel fürBewegungsdaten sind die in einem Lager vorhandenen Warenbestände, die sich nach jederBestellung ändern.

� APPL2 (Organisationsdaten): Customizingdaten, die bei der Einstellung des Systemsangegeben und danach nur selten verändert werden. Ein Beispiel ist die Tabelle mitLänderschlüsseln.

Für den Kunden stehen zwei weitere Datenarten USR und USR1 zur Verfügung. Diese sind fürkundeneigene Entwicklungen vorgesehen. Die diesen Datenarten zugeordneten Tabellenwerden in einem Tablespace für Kundenentwicklungen abgelegt.

Datenbank

Tabellen im ABAP Dictionary

Stammdaten BewegungsdatenOrganisationsdaten Systemdaten

TablespaceOrg.daten

TablespaceStammdaten

TablespaceBeweg.daten

TablespaceSystemdaten

Tabelle 1

Tabelle 3

Tabelle 2 Tabelle 5Tabelle 4

Tabelle 6

Tabelle 1

Tabelle 3Tabelle 2 Tabelle 5

Tabelle 6

Tabelle 7

Tabelle 4

Tabelle 7

Page 33: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Größenkategorie

April 2001 33

GrößenkategorieDie Größenkategorie beschreibt den vermuteten Platzbedarf der Tabelle auf der Datenbank. Siekönnen für Ihre Tabelle eine Größenkategorie zwischen 0 und 4 wählen. Jeder Kategorie istdabei, abhängig vom verwendeten Datenbanksystem, eine bestimmte feste Größe einesSpeicherbereiches (Extents) der Datenbank zugeordnet.

Beim Anlegen einer Tabelle wird für diese ein initialer Platz (Initial Extent) auf der Datenbankreserviert. Benötigt sie später durch Erfassen von Daten mehr Platz, so wird Speicherplatzentsprechend der gewählten Größenkategorie hinzugefügt.

InitialExtent

FirstExtent

SecondExtent

Technische Einstellungen

GrößenkategorieTABATABBTABC

TABA

TABB

TABC

Datenbank

134

......

...

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

Page 34: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Pufferungserlaubnis

34 April 2001

PufferungserlaubnisOb und wie eine Tabelle gepuffert wird, muß in den technischen Einstellungen zur Tabellefestgelegt werden. Dabei gibt es drei Möglichkeiten:

� Pufferung nicht erlaubt: Die Pufferung der Tabelle ist nicht erlaubt, z.B. weilAnwendungsprogramme immer die aktuellsten Daten aus der Tabelle benötigen oder dieTabelle zu häufig geändert wird.

� Pufferung erlaubt, aber ausgeschaltet: Betriebswirtschaftlich und technisch steht derPufferung der Tabelle nichts im Wege. Anwendungen, die auf die Tabelle zugreifen, laufenmit und ohne Pufferung der Tabelle korrekt. Ob die Pufferung einer Tabelle einenPerformance-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 absehbarist, wie diese Werte im Kundensystem aussehen, ist die Pufferung der Tabelleausgeschaltet. Falls die Tabellengröße und das Zugriffsprofil der Tabelle für die Pufferungder Tabelle sprechen, kann diese im Kundensystem jederzeit eingeschaltet werden.

� Pufferung eingeschaltet: Die Tabelle soll gepuffert werden. In diesem Fall muß einePufferungsart [Seite 35] angegeben werden.

Siehe auch:Datenbanktabellen puffern [Seite 45]

Welche Tabellen sollten gepuffert werden? [Seite 55]

Page 35: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Pufferungsart

April 2001 35

Pufferungsart Die Pufferungsart bestimmt, welche Sätze einer Tabelle beim Zugriff auf einen Satz der Tabellein den Puffer des Applikationsservers geladen werden. Man unterscheidet die folgendenPufferungsarten:

� Vollständige Pufferung [Seite 36]: Beim Zugriff auf einen Satz der Tabelle werden sämtlicheSätze der Tabelle in den Puffer geladen.

� Generische Pufferung [Seite 38]: Beim Zugriff auf einen Satz der Tabelle werden alle mitdiesem 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 denPuffer geladen, auf die tatsächlich zugegriffen wird.

Siehe auch:Datenbanktabellen puffern [Seite 45]

Page 36: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Vollständige Pufferung

36 April 2001

Vollständige PufferungBei 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 Puffergeladen.

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

ApplikationsserverSELECT * FROM SCOUNTER WHEREMANDT = ‘001’ AND CARRID = ‘LH’AND COUNTNUM = '00000004'.

Pufferinhalt0000000100000001000000020000000300000004 000000010000000200000003000000040000000500000006000000070000000800000001

AABABABABALHLHLHLHLHLHLHLHUA

001001001001001001001001001001001001001001

ACAACEBERLCYLHRBERDENFRALCYLGWLHRMUCRTMHAM

Datenbanktabelle SCOUNTERAIRPORTMANDT CARRID COUNTNUM

0000000100000001000000020000000300000004 000000010000000200000003000000040000000500000006000000070000000800000001

AABABABABALHLHLHLHLHLHLHLHUA

001001001001001001001001001001001001001001

ACAACEBERLCYLHRBERDENFRALCYLGWLHRMUCRTMHAM

Die gepufferten Datensätze werden im Puffer nach dem Schlüssel der Tabellesortiert. Zugriffe auf die gepufferten Daten können damit nur Feldinhalte bis zumletzten spezifizierten Schlüsselfeld zur Einschränkung der zu durchsuchendenDatenmenge auswerten.

Bei solchen Zugriffen sollte also ein möglichst großer linksbündiger Teil desSchlüssels verwendet werden. Ist beispielsweise das erste Schlüsselfeld nichtversorgt, so erfolgt ein Full-Table-Scan im Puffer. Unter diesen Umständen kann eindirekter Zugriff auf die Datenbank effizienter sein, falls dort geeigneteSekundärindizes [Seite 63] vorhanden sind.

Wann ist vollständige Pufferung sinnvoll?Bei der Entscheidung, ob eine Tabelle vollständig gepuffert werden soll, müssen dieTabellengröße, die Anzahl der lesenden Zugriffe und die Anzahl der schreibenden Zugriffe

Page 37: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Vollständige Pufferung

April 2001 37

berücksichtigt werden. Je kleiner eine Tabelle ist, je häufiger sie gelesen und je seltener in siegeschrieben 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ßlichlesend zugegriffen, kann diese Größe auch überschritten werden. Die Auslastung desPuffers 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 sichalle Sätze der Tabelle im Puffer befinden, kann direkt im Puffer entschieden werden, ob einSatz vorhanden ist oder nicht.

Page 38: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Generische Pufferung

38 April 2001

Generische PufferungBei generischer Pufferung werden beim Zugriff auf einen Satz der Tabelle alle mit diesem Satz inden generischen Schlüsselfeldern übereinstimmenden Sätze in den Puffer geladen. Dergenerische 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 voneinem Programm gelesen. Falls die Tabelle generisch gepuffert ist, werden dabeialle mit dem gelesenen Satz in den generischen Schlüsselfeldern (MANDT undCARRID) übereinstimmenden Sätze in den Puffer geladen.

Applikationsserver

Pufferinhalt

0000000100000002000000030000000400000005000000060000000700000008

LHLHLHLHLHLHLHLH

001001001001001001001001

BERDENFRALCYLGWLHRMUCRTM

generischer Schlüssel

Datenbanktabelle SCOUNTERMANDT CARRID COUNTNUM

0000000100000001000000020000000300000004 000000010000000200000003000000040000000500000006000000070000000800000001

AABABABABALHLHLHLHLHLHLHLHUA

001001001001001001001001001001001001001001

ACAACEBERLCYLHRBERDENFRALCYLGWLHRMUCRTMHAM

AIRPORT

SELECT * FROM SCOUNTER WHEREMANDT = ‘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 nurbestimmte 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 gearbeitetwird. Das Mandantenfeld ist der generische Schlüssel.

Sprachabhängige Tabellen sind ein weiteres Beispiel für den sinnvollen Einsatz generischerPufferung. 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 desSprachfeldes.

Page 39: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Generische Pufferung

April 2001 39

Wie sollte der generische Schlüssel gewählt werden?Bei generischer Pufferung ist die geeignete Wahl des generischen Schlüssels vonentscheidender Bedeutung.

Wird der generische Schlüssel zu klein gewählt, so werden sehr wenige große Bereiche imPuffer 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 kleinegenerische Bereiche im Puffer. Diese können die Pufferverwaltung belasten, da dort für jedengepufferten 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üsselder Tabelle nicht voll angeben.Gibt es pro generischem Bereich nur einige wenige Sätze, so istes 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ängerengenerischen Schlüssels ist möglich, die über den Wert von 64 Bytes hinausgehenden Teilewerden aber zur Bildung der generischen Bereiche nicht herangezogen.

Zugriff auf die gepufferten DatenGenerisches Puffern einer Tabelle ist nur dann sinnvoll, wenn auf die Tabelle mit vollspezifizierten generischen Schlüsselfeldern zugegriffen wird. Ist bei einem SELECT-Statementein Feld des generischen Schlüssels nicht mit einem Wert versorgt, so wird am Puffer vorbeidirekt von der Datenbank gelesen!

Wird mit voll spezifiziertem generischen Schlüssel auf einen nicht im Puffer enthaltenengenerischen Bereich zugegriffen, erfolgt ein Datenbankzugriff, um den Bereich zu laden. Wenndie Tabelle keine Sätze im angegebenen Bereich enthält ("No Record Found"), wird dieserBereich im Puffer als nicht existent vorgemerkt. So kann bei einem späteren Zugriffsversuch aufdiesen Bereich ein erneuter Datenbankzugriff vermieden werden.

Page 40: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Pufferung von Einzelsätzen

40 April 2001

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

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

Pufferinhalt

00000004 LH001 LCY

Datenbanktabelle SCOUNTERMANDT CARRID COUNTNUM

0000000100000001000000020000000300000004 000000010000000200000003000000040000000500000006000000070000000800000001

AABABABABALHLHLHLHLHLHLHLHUA

001001001001001001001001001001001001001001

ACAACEBERLCYLHRBERDENFRALCYLGWLHRMUCRTMHAM

AIRPORT

ApplikationsserverSELECT SINGLE FROM SCOUNTER WHEREMANDT = ‘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 aufwenige Sätze durch SELECT SINGLE zugegriffen wird. Der Umfang der Sätze, auf diezugegriffen wird, sollte zwischen 100-200 kB liegen.

Bei kleinen Tabellen, auf die oft zugegriffen wird, ist vollständige Pufferung in der Regelgünstiger. Denn zum Laden einer solchen Tabelle ist bei vollständiger Pufferung nur einDatenbank-Zugriff erforderlich, während bei Pufferung von Einzelsätzen viele Datenbank-Zugriffeanfallen.

Page 41: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Pufferung von Einzelsätzen

April 2001 41

Zugriff auf die gepufferten DatenAlle Zugriffe, die nicht über SELECT SINGLE abgesetzt werden, gehen am Puffer vorbei direktauf die Datenbank. Dies gilt auch, wenn im SELECT-Statement der vollständige Schlüsselspezifiziert ist.

Wird mit SELECT SINGLE auf einen noch nicht gepufferten Satz zugegriffen, erfolgt einDatenbank-Zugriff, um den Satz zu laden. Enthält die Tabelle keinen Satz zum angegebenenSchlüssel, so wird dieser Satz im Puffer als nicht existent vermerkt. Bei einem späteren Zugriffmit demselben Schlüssel kann damit ein erneuter Datenbank-Zugriff vermieden werden.

Page 42: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Protokollierung

42 April 2001

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

Anwendungs-transaktion

Verändern eines Satzes

System-Profile

rec/client =ALL...

...

Datenbank

ABAP Dictionary

TAB protokollieren

TAB

Feld 1 Feld 2 Feld 3

TAB Protokolltabelle Feld 1 Feld 2 Feld 3

Um die Protokollierung tatsächlich anzustoßen, muß das SAP-System mit einem Profile gestartetwerden, das den Parameter rec/client enthält. Über diesen kann gesteuert werden, ob dieProtokollierung 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. Dadurchkönnen Sperrsituationen entstehen, obwohl die Benutzer auf verschiedenenAnwendungstabellen arbeiten.

Die Protokollierung wird unabhängig von der Verbuchung durchgeführt.

Page 43: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Protokollierung

April 2001 43

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

Page 44: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Pooltabelle in transparente Tabelle umwandeln

44 April 2001

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

Vorgehensweise1. 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 nurdie technischen Einstellungen in Korrektur und nicht die Tabellendefinition.

3. Pflegen Sie die übrigen Attribute der technischen Einstellungen.

4. Aktivieren Sie die technischen Einstellungen.

ErgebnisDie Pooltabelle wird durch eine Umsetzung (siehe Datenbank-Strukturen anpassen [Seite 231])in eine transparente Tabelle umgewandelt. Sie können in einem Dialogfenster entscheiden, obdie 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-Flagwieder in eine Pooltabelle umgewandelt werden, so muß zuerst das Transparent-Flagzurückgenommen werden. Danach müssen die technischen Einstellungen aktiviert werden. Erstnach diesen Aktionen können Sie die Tabellenart ändern [Seite 96].

Ist eine überarbeitete Version einer Pooltabelle vorhanden, so kann diese über dasTransparent-Flag nicht in eine transparente Tabelle umgewandelt werden. Dietechnischen Einstellungen der Tabelle lassen sich in diesem Fall bei gesetztemTransparent-Flag nicht aktivieren.

Für transparente Tabellen existieren einige Einschränkungen (Anzahl derSchlüsselfelder, Schlüssellänge, Tabellenlänge), die für Pooltabellen nicht gelten. Eskö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 demAktivierungsprotokoll in diesem Fall die Fehlerursache entnehmen.

Siehe auch:Pool- und Clustertabellen [Seite 269]

Page 45: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Datenbanktabellen puffern

April 2001 45

Datenbanktabellen puffern Die Pufferung einer Tabelle erhöht die Performance beim Zugriff auf die in der Tabelleenthaltenen Datensätze.

Die Tabellenpuffer befinden sich lokal auf jedem Applikationsserver des Systems. Zugriffe auf dieDaten gepufferter Tabellen können damit direkt aus dem Puffer des Applikationsserversbefriedigt werden. Zeitaufwendige Zugriffe auf die Datenbank werden dadurch eingespart.

Datenbank-Schnittstelle

SELECT * FROM SBOOKWHERE ...

ABAP Programm

Kommunikationssystem

R/3 Tabellenpuffer

Datenbank

Applikationsserver

DatenbankProzesse

DatenbankPuffer

Applikationsserver

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 nachNetzwerkbelastung beträgt dieser Faktor 10-100.

Diese Performancedifferenz ist in zentralen Systemen (Systemen mit nur einemAnwendungsserver) etwas geringer als in lokalen Systemen (Systemen mit mehrerenAnwendungsservern), jedoch wirkt sich auch in zentralen Systemen die Einsparung vonProzeßwechseln und die gegenüber dem Datenbanksystem gezieltere Pufferung merklich auf diePerformance 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 diesder Fall, so werden die Daten direkt aus dem Puffer gelesen. Sind die Daten nicht im Puffer desApplikationsservers enthalten, so werden die Daten von der Datenbank gelesen und dabei in denPuffer geladen. Der nächste Zugriff auf diese Daten kann damit aus dem Puffer befriedigtwerden.

Page 46: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Datenbanktabellen puffern

46 April 2001

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

Programm liest Datenaus einer gepuffertenTabelle, die sich nochnicht im Puffer befindet

Daten werden inden Puffer geladen

Tabellenpuffer

Programm

Datenbank

Applikationsserver

Wie werden die lokalen Puffer synchronisiert?Eine gepufferte Tabelle wird in der Regel auf allen Applikationsservern gelesen und dort imPuffer gehalten. Ändert ein Programm auf einem der Applikationsserver die in der Tabelleenthaltenen Daten, so wird dies durch die Datenbank-Schnittstelle in einer Protokolltabellevermerkt. Auf allen anderen Applikationsservern haben die Puffer noch den alten Stand und dieProgramme lesen damit unter Umständen veraltete Daten.

In einem festen Zeitintervall, in der Regel alle 1-2 Minuten, läuft einSynchronisationsmechanismus [Seite 48]. Dabei wird die Protokolltabelle gelesen und diePufferinhalte, die von anderen Servern verändert wurden, werden invalidiert. Beim nächstenZugriff werden die Daten invalidierter Tabellen dann direkt von der Datenbank gelesen und imPuffer aktualisiert.

VerdrängungWenn durch Einlagern neuer Daten Platzbedarf im Puffer entsteht, werden diejenigen Datenverdrängt, auf die am längsten nicht zugegriffen wurde. Die Verdrängung findet asynchron zubestimmten Zeitpunkten statt, die dynamisch anhand der Zugriffe auf den Puffer bestimmtwerden. Verdrängung findet nur statt, wenn zu diesem Zeitpunkt der freie Platz im Puffer einenvoreingestellten 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 dementsprechenden Applikationsserver zurückgesetzt werden. Dabei werden alle Daten im Pufferinvalidiert.

Page 47: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Datenbanktabellen puffern

April 2001 47

Verwenden Sie dieses Kommando nur, wenn Inkonsistenzen im Puffer entstanden sind! DasFüllen der Puffer kann in großen Systemen mehrere Stunden dauern. Während dieser Zeit ist diePerformance 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]

Page 48: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Synchronisation der lokalen Puffer

48 April 2001

Synchronisation der lokalen PufferDie Tabellenpuffer befinden sich lokal auf jedem Applikationsserver des Systems. Damit entstehtdas Problem, daß die Pufferverwaltung Änderungen an gepufferten Objekten auf allenApplikationsservern des Systems nachziehen muß.

Applikationsserver

Tabellenpuffer

Programm

Datenbank

Applikationsserver

Tabellenpuffer

Programm

Wird eine gepufferte Tabelle modifiziert, so wird sie im Puffer des Applikationsservers, von demaus die Änderung durchgeführt wurde, synchron aktualisiert. Die netzweitePuffersynchronisation, 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 einezentrale Datenbanktabelle (DDLOG) geschrieben. Diese Einträge werden von jedemApplikationsserver in festen Zeitabständen gelesen.

Werden Einträge gefunden, die eine Änderung der von diesem Server gepufferten Datenanzeigen, so werden diese Daten invalidiert. Bei einem neuen Zugriff auf die Daten, werdendiese dann direkt von der Datenbank gelesen. Bei einem solchen Zugriff kann die Tabelle dannerneut in den Puffer geladen werden.

Um zu verhindern, daß eine Tabelle permanent in den Puffer geladen und dort sofort wiederinvalidiert wird, kann die Tabelle nach dem Invalidieren erst nach Ablauf einer Wartezeit wiederin den Puffer geladen werden.

Dieses Verfahren hat gegenüber einem synchronen Verfahren (jede Änderung an gepuffertenDaten eines Servers wird sofort allen anderen Servern über das Netz bekanntgegeben) dengroß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 allenanderen Servern über das Netz mitteilen. Dies würde sich negativ auf die Performanceauswirken.

Page 49: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Synchronisation der lokalen Puffer

April 2001 49

Der Nachteil des Verfahrens gegenüber der synchronen Aktualisierung besteht darin, daß dieDaten während der Zeitspanne zwischen zwei Synchronisationen nicht mehr aktuell sein können.

Aufgrund des asynchronen Verfahrens zur Puffersynchronisation sollten Sie bei der Einstellungder Pufferung für eine Tabelle folgende Punkte beachten:

� Es dürfen nur solche Tabellen gepuffert werden, auf die sehr selten schreibend zugegriffenwird (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 einständiges Invalidieren und Neuladen statt, was sich negativ auf die Performance auswirkt.

Standardmäßig ist die Puffersynchronisation im Systemprofil eingeschaltet. Inzentralen Systemen, die nur einen Applikationsserver besitzen, ist diePuffersynchronisation nicht nötig und sollte unbedingt ausgeschaltet werden.

Siehe auch:Beispiel zur Puffersynchronisation [Seite 50]

Page 50: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Beispiel zur Puffersynchronisation

50 April 2001

Beispiel zur PuffersynchronisationDas folgende Beispiel zeigt, wie die lokalen Puffer des Systems synchronisiert werden. Wirgehen von einem System mit zwei Applikationsservern aus, die wir im folgenden als Server1 undServer2 bezeichnen.

Ausgangssituation: Beide Server haben bisher noch nicht auf Sätze der vollständig gepuffertenTabelle TAB zugegriffen. Die Sätze der Tabelle sind deshalb noch nicht in den lokalen Puffernder 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 diesesServers.

Zeitpunkt 3: Server 2 greift auf Sätze der Tabelle zu. Da sich die Tabelle noch nicht im lokalenPuffer 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 auchServer 2 beim nächsten Lesen über seinen lokalen Puffer auf Daten aus TAB zu.

Server 2

Puffer

TAB

SELECT * FROM TABWHERE FIELD = ‘X’.

Server 1

Puffer

Synchronisationstabelle

11

22

TAB

SELECT * FROM TABWHERE FIELD = ‘Y’.

33

44

TAB

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.

Page 51: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Beispiel zur Puffersynchronisation

April 2001 51

Server 2

Puffer

TAB

DELETE * FROM TABWHERE FIELD = ‘X’.

Server 1

Puffer

Synchronisationstabelle

TAB TAB

TAB von Server1 modifiziert

55 66

77

Zeitpunkt 8: Server 2 greift auf die gelöschten Datensätze zu. Da sich die Tabelle TAB inseinem 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ürdedieses Programm erkennen, daß die Sätze nicht mehr vorhanden sind. Zu diesem Zeitpunkthängt das Verhalten eines Anwendungsprogramms also davon ab, auf welchem Server es läuft!

Page 52: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Beispiel zur Puffersynchronisation

52 April 2001

TABSynchronisationstabelle

TAB von Server1 modifiziert

SELECT * FROM TABWHERE FIELD = ‘X’.

Server 2

Puffer

Server 1

Puffer

TAB TAB88

Zeitpunkt 9: Der Synchronisationszeitpunkt ist erreicht. Beide Server sehen in derSynchronisationstabelle nach, ob eine der Tabellen in ihrem lokalen Puffer inzwischen von einemanderen Server verändert wurde.

Zeitpunkt 10: Server 2 stellt fest, daß die Tabelle TAB in der Zwischenzeit von Server 1verändert wurde. Server 2 invalidiert deshalb die Tabelle in seinem lokalen Puffer. Der nächsteZugriff 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 TABist. Server 1 greift also beim nächsten Zugriff auf Sätze der Tabelle TAB erneut über seinenlokalen Puffer zu.

Page 53: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Beispiel zur Puffersynchronisation

April 2001 53

Server 2

Puffer

TAB

Server 1

Puffer

Synchronisationstabelle

TAB TAB

TAB von Server1 modifiziert

9999

1010

Synchronisation

Zeitpunkt 11: Server 2 greift erneut auf Sätze der Tabelle TAB zu. Da TAB im lokalen Puffer vonServer 2 invalidiert ist, erfolgt der Zugriff über die Datenbank.

Zeitpunkt 12: Die Tabelle wird erneut in den lokalen Puffer von Server 2 geladen. Die beidenServer und die Datenbank sind nun wieder konsistent bzgl. ihrer Informationen zur Tabelle TAB.

TABSynchronisationstabelle

SELECT * FROM TABWHERE FIELD = ‘Y’.

Server 2

Puffer

Server 1

Puffer

TAB TAB

1111

1212

Page 54: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Beispiel zur Puffersynchronisation

54 April 2001

Page 55: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Welche Tabellen sollten gepuffert werden?

April 2001 55

Welche Tabellen sollten gepuffert werden?Grundsätzlich können nur transparente Tabellen und Pooltabellen gepuffert werden. FürClustertabellen 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. DieVerzögerungen durch den Synchronisationsmechanismus (siehe Synchronisation der lokalenPuffer [Seite 48]) können nicht hingenommen werden.

� Die Daten der Tabelle werden oft geändert. In diesem Fall kann der Aufwand für dieSynchronisation größer werden als der Performancegewinn durch die Pufferung. Als grobeRichtschnur kann gelten, daß die Pufferung einer Tabelle nicht sinnvoll ist, falls mehr als einProzent der Zugriffe auf die Tabelle ändernde Operationen sind.

Die Tabelle, die die Währungen enthält, wird nur einmal täglich aktualisiert, währenddie Zahl der lesenden Zugriffe sehr hoch ist. In diesem Fall ist die Pufferungempfehlenswert.

Typische Kandidaten für die Pufferung sind Customizing- und Systemtabellen. In bestimmtenFällen sind auch Stammdaten mit Customizing-Charakter pufferbar.

Die Inhalte gepufferter Tabellen sind in einem verteilten System nicht immer auf dem aktuellstenStand. Mit Hilfe des ABAP-Kommandos "SELECT SINGLE... BYPASSING BUFFER" kann derPuffer umgangen und die Daten können direkt aus der Datenbanktabelle gelesen werden. Wirdauf eine gepufferte Tabelle häufig mit diesem Kommando zugegriffen, sollte geprüft werden, obdiese Tabelle unbedingt gepuffert werden muß bzw. ob der aktuelle Datenbankstand wirklichunverzichtbar ist.

Ob und wie eine Tabelle gepuffert wird, muß in den technischen Einstellungen (siehe TechnischeEinstellungen [Seite 31]) zur Tabelle festgelegt werden.

Page 56: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Welche Zugriffe gehen direkt auf die Datenbank

56 April 2001

Welche Zugriffe gehen direkt auf die DatenbankFür das Programmieren von Zugriffen auf gepufferte Tabellen ist es wichtig zu wissen, welcheZugriffe 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 Angabedes generischen Schlüssels direkt auf die Datenbank. Bei generischer Pufferung können also nurZugriffe unter Angabe des vollständigen generischen Schlüssels aus dem Puffer befriedigtwerden.

Bei Pufferung von Einzelsätzen geht zusätzlich jedes SELECT-Statement ohne den ZusatzSINGLE direkt auf die Datenbank. Dies gilt auch, wenn im SELECT-Statement der vollständigeSchlüssel spezifiziert ist. Bei Pufferung von Einzelsätzen können also nur Zugriffe mit SELECTSINGLE aus dem Puffer befriedigt werden.

Natürlich gehen auch alle Zugriffe mit Native SQL (EXEC SQL) am Puffer vorbei direkt auf dieDatenbank. 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 dieSynchronisationstabelle gemacht werden (siehe Synchronisation der lokalen Puffer [Seite 48]).Damit können Inkonsistenzen zwischen dem Datenbestand in den Puffern der Applikationsserverund auf der Datenbank entstehen.

Page 57: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Wie sind die Tabellenpuffer technisch realisiert?

April 2001 57

Wie sind die Tabellenpuffer technisch realisiert?Die Tabellenpuffer liegen im Shared Memory. Man unterscheidet zwischen dem partiellenTabellenpuffer TABLP und dem generischen/vollständigen Tabellenpuffer TABL. Die beidenTabellenpuffer unterscheiden sich im wesentlichen in ihrer Verwaltung freier Speicherbereicheund in ihren Verdrängungsmechanismen.

Genauere Informationen zum technischen Aufbau der Puffer, insbesondere zu Aufbau,Zugriffsmechanismus, Verdrängungsverhalten und globaler Synchronisation in verteiltenSystemen finden Sie in:

� Partieller Tabellenpuffer [Seite 58]

� Generischer und vollständiger Tabellenpuffer [Seite 60]

Page 58: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Partieller Tabellenpuffer

58 April 2001

Partieller TabellenpufferIm partiellen Tabellenpuffer TABLP werden einzelne Sätze von satzweise gepufferten Tabellenverwaltet.

Technische Realisierung und PufferzugriffDer partielle Tabellenpuffer besteht aus einer zentralen Verwaltungsstruktur, einemTabellenverzeichnis 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 desRahmens ermittelt.

Wenn neue Daten unter Beibehaltung der Sortierreihenfolge eingefügt werden, können Rahmenim Datenbereich überlaufen. Solche überlaufenden Rahmen müssen geteilt und ihreVerwaltungsstruktur muß aktualisiert werden. Hieraus erklärt sich auch, daß der partielleTabellenpuffer etwas weniger effizient als der generische/vollständige Tabellenpuffer arbeitet. Impartiellen Tabellenpuffer müssen die Datensätze nach und nach unter Reorganisation derRahmenstruktur eingebaut werden. Im generischen/vollständigen Puffer werden dagegen alleDaten einer Tabelle in einem Schritt - von der Datenbank bereits sortiert - eingelagert.

Verwaltung nicht vorhandener SätzeDer 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 Datenbankvorhanden ist, so wird diese Information im Puffer gespeichert.

Dies geschieht über ein Flag, daß an jeden gespeicherten Satz im Puffer angehängt ist. Das Flagzeigt an, ob dieser Satz in der Tabelle existiert oder nicht. Wird versucht auf einen nichtvorhandenen Satz zuzugreiffen, so wird ein leerer Satz mit dem entsprechenden Schlüssel imPuffer abgespeichert und das Flag wird auf den Wert für Nichtexistenz gesetzt. Wird erneutversucht auf diesen Satz zuzugreifen, so kann direkt im Puffer festgestellt werden, daß dieserSatz nicht auf der Datenbank existiert.

Satzweise Pufferung ist also auch dann empfehlenswert, wenn oft wiederholt versucht wird, aufnicht existente Sätze einer Tabelle zuzugreifen.

VerdrängungWenn 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 zuentfernen. In diesem Fall werden diejenigen Sätze der Tabelle aus dem Puffer entfernt, auf dieam längsten nicht mehr zugegriffen wurde.

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

Page 59: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Partieller Tabellenpuffer

April 2001 59

Im folgenden werden die Auswirkungen verschiedener ABAP Befehle auf die lokale und globaleSynchronisation 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 zumSynchronisationszeitpunkt sowohl im Puffer des lokalen Servers (Server auf dem der Befehlabgesetzt wurde) als auch auf allen anderen Servern invalidiert.

Bei Veränderungen ohne WHERE-Bedingungen (UPDATE dbtab, INSERT dbtab, DELETEdbtab) werden zum Synchronisationszeitpunkt die betroffenen Sätze im Puffer des lokalenServers geändert und in den Puffern aller anderen Server gelöscht.

Aus diesem Grunde belasten Veränderungen mit WHERE-Bedingung die Puffer-Verwaltungerheblich mehr als solche ohne eine WHERE-Bedingung.

Page 60: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Generischer und vollständiger Tabellenpuffer

60 April 2001

Generischer und vollständiger TabellenpufferIm generischen/vollständigen Tabellenpuffer TABL werden generische Tabellenbereiche bzw.vollständige Tabellen verwaltet. Die einzelnen generischen Bereiche werden im Puffer wieeigenständige, vollständig gepufferte Tabellen verwaltet.

Technische Realisierung und PufferzugriffDer generische/vollständige Tabellenpuffer besteht, wie auch der partielle Puffer, aus einerzentralen Verwaltungsstruktur, einem Tabellenverzeichnis und dem Datenbereich.

Der Hauptunterschied zum partiellen Puffer liegt in der Verwaltung des Datenbereichs. Dergenerische/vollständige Puffer teilt seinen Speicher in Bereiche (Extents) variabler Länge. DieLänge eines Bereichs beträgt ein vielfaches einer festen Blockgröße (256 Byte). DiePufferverwaltung versucht, den Inhalt eines generischen Tabellenbereichs bzw. eine ganzeTabelle in einem Extent zu plazieren. Dies ermöglicht eine Reduzierung des Platzbedarfsgepufferter Daten im Vergleich zur satzweisen Pufferung.

Die Tabellennamen sind im Tabellenverzeichnis alphabetisch sortiert. Die Datensätze werden ineinem Schritt - von der Datenbank bereits sortiert - in das entsprechende Extent eingelagert.Beim Pufferzugriff wird zunächst mittels binärer Suche der entsprechende Tabellenname imTabellenverzeichnis gesucht. Dann wird ebenfalls mittels binärer Suche der entsprechendeDatensatz im Extent gesucht.

VerdrängungIm Gegensatz zum partiellen Puffer wird die Verdrängung beim generischen/vollständigen Pufferasynchron zu bestimmten Zeitpunkten durchgeführt. Diese Zeitpunkte werden dynamischanhand der Anzahl der Zugriffe auf den Puffer bestimmt. Die Zeit zwischen zwei Verdrängungenhängt also von der Auslastung des Puffers ab.

Eine Verdrängung findet nur statt, wenn zum entsprechenden Zeitpunkt der freie Platz im Puffereinen 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, einenbestimmten Platz im Puffer freizumachen. Es wird also zu bestimmten Zeitpunkten eine größereMenge von Tabellen verdrängt.

Hierbei werden die Tabellen verdrängt, auf die am seltensten zugegriffen wurde. Die Zugriffe aufeine Tabelle werden dabei, in Abhängigkeit vom Zeitpunkt an dem Sie erfolgten, verschiedengewichtet. 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 bestimmtenZeitpunkt sehr häufig zugegriffen wird, die aber danach nicht mehr benutzt werden, nach einigerZeit aus dem Puffer verdrängt werden können.

Bei generisch gepufferten Tabellen ist zu beachten, daß einzelne generische Bereiche im Pufferwie eigenständige Tabellen behandelt werden. Es können also einzelne generische Bereicheeiner Tabelle verdrängt werden, während andere generische Bereiche der Tabelle im Puffererhalten bleiben.

Nach dem Verdrängen von Tabellen findet in bestimmten Zeitintervallen eine Reorganisation desPuffers statt, um die Fragmentierung des Puffers zu vermindern.

Page 61: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Generischer und vollständiger Tabellenpuffer

April 2001 61

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

Im folgenden werden die Auswirkungen verschiedener ABAP Befehle auf die lokale und globaleSynchronisation 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 gesamtebetroffene 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, DELETEdbtab) werden zum Synchronisationszeitpunkt die betroffenen Sätze im Puffer des lokalenServers geändert. In den Puffern aller anderen Server wird aber der gesamte betroffenegenerische Bereich bzw. die gesamte Tabelle invalidiert.

Aus diesem Grunde belasten Veränderungen mit WHERE-Bedingung die Puffer-Verwaltungerheblich mehr als solche ohne eine WHERE-Bedingung.

Page 62: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Wie kann man die Pufferqualität analysieren?

62 April 2001

Wie kann man die Pufferqualität analysieren?Der Puffermonitor [Extern] bietet unter anderem die Möglichkeit, statistische Daten über dieTabellenpuffer und über einzelne Tabellen einzusehen. Der Puffermonitor kann vom R/3Eingangsbild aus über folgende Menüpunkte gestartet werden:

Werkzeuge � AdministrationMonitor � PerformanceSetup/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 letztenTagen 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 zumgenerischen/vollständigen Tabellenpuffer. Doppelklick auf die Zeile Single record liefertausführliche Informationen über den partiellen Tabellenpuffer. Sie können dieseDetailinformationen auch über Goto � Detail analysis menu und im Folgebild durch Betätigender Drucktaste Generic key bzw Single record erreichen.

Über die Drucktaste Buffered objects gelangen Sie aus der Detailanzeige zumgenerisch/vollständigen bzw. partiellen Tabellenpuffer heraus zu einer Aufrufstatistik derbenutzten Tabellen. Die angezeigten Werte helfen bei der Optimierung der Pufferparameter imSystemprofil und bei der Suche nach ungünstig gepufferten Tabellen. Rufen Sie dieAufrufstatistik aus der Information zum generischen/vollständigen Puffer auf, so erscheint dieStatistik der generisch bzw. vollständig gepufferten Tabellen. Erfolgt der Aufruf aus derInformation zum partiellen Puffer, so erscheint die Statistik der partiell gepufferten Tabellen.

Siehe auch:BC Computing Center Management System [Extern]

Page 63: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Indizes

April 2001 63

IndizesÜber einen Index kann das Durchsuchen einer Tabelle nach Datensätzen, die bestimmtenSuchkriterien genügen, beschleunigt werden.

Ein Index kann als eine auf bestimmte Felder reduzierte Kopie einer Datenbanktabelle aufgefaßtwerden. Diese Kopie liegt stets in sortierter Form vor. Die Sortierung ermöglicht einen schnellenZugriff auf die Datensätze der Tabelle, z.B. über binäre Suche. Damit auch die nicht im Indexenthaltenen Felder gelesen werden können, ist in einem Index noch ein Zeiger auf denzugehörigen Satz der eigentlichen Tabelle enthalten.

Man unterscheidet zwischen dem Primärindex und Sekundärindizes einer Tabelle. DerPrimärindex besteht aus den Schlüsselfeldern der Tabelle sowie einem Zeiger auf dieNichtschlüsselfelder der Tabelle. Der Primärindex wird beim Anlegen der Tabelle auf derDatenbank automatisch mitangelegt.

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

Tabelle SCOUNTERMANDT CARRID COUNTNUM

000000050000000400000001000000020000000300000007000000010000000300000001 0000000100000004000000020000000600000008

LHBAUALHBALHAALHBALHLHBALHLH

001001001001001001001001001001001001001001

ACAACEBERLCYLHRBERDENFRALCYLGWLHRMUCRTMHAM

AIRPORT001001001001001001001001001001001001001001

MANDT CARRID COUNTNUMAABABABABALHLHLHLHLHLHLHLHUA

0000000100000001000000020000000300000004 000000010000000200000003000000040000000500000006000000070000000800000001

Primärindex zu SCOUNTER

7912521048111136143

P

Schlüsselfelder

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

Page 64: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Indizes

64 April 2001

Für Flugbuchungen werden oft alle Verkaufsschalter von Fluggesellschaftengesucht, die sich an einem bestimmten Flughafen befinden. Bei einem solchenZugriff wird also über die Kennung des Flughafens nach Verkaufsschaltern gesucht.Die Sortierung des Primärindex ist zur Beschleunigung dieses Zugriffs nutzlos. Dadie Tabelle SCOUNTER sehr viele Einträge besitzt, muß zur Unterstützung desZugriffs über die Flughafenkennung ein Sekundärindex über das Feld AIRPORT(Kennung des Flughafens) angelegt werden.

Tabelle SCOUNTER

Sekundärindexüber AIRPORT

MANDT CARRIDCOUNTNUM AIRPORT001001001001001001001001001001001001001001

LHBAUALHBALHAALHBALHLHBALHLH

000000050000000400000001000000020000000300000007000000010000000300000001 0000000100000004000000020000000600000008

ACAACEBERLCYLHRBERDENFRALCYLGWLHRMUCRTMHAM

AIRPORT PACAACEBERBERDENFRAHAMLCYLCYLGWLHRLHRMUCRTM

1236781449105111213

SELECT * FROMSCOUNTER WHEREAIRPORT = ‘LCY’.

Binäre Suche

Ob ein Index für einen konkreten Zugriff auf eine Tabelle verwendet wird, wird vom Optimizer desDatenbanksystems 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 einenPerformancegewinn bringt. Deshalb kann bei der Indexdefinition im ABAP Dictionary angebenwerden, auf welchen Datenbanksystemen ein Index angelegt werden soll (siehe Sekundärindizesanlegen [Seite 80]).

Alle im ABAP Dictionary vorhandenen Indizes zu einer Tabelle werden beim Anlegen der Tabelleauf der Datenbank standardmäßig mitangelegt, falls dies bei der Indexdefinition für diesesDatenbanksystem nicht ausgeschlossen wurde.

Falls die Indexfelder Schlüsselfunktion besitzen, d.h. jeden Satz der Tabelle bereits eindeutigidentifizieren, kann ein Index als Unique-Index [Seite 68] gekennzeichnet werden.

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

Page 65: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Was sollten Sie bei Sekundärindizes beachten?

April 2001 65

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 selektierendeMenge darstellt. Dies wird am besten durch ein Beispiel veranschaulicht.

Ein Index ist über die Felder FELD1, FELD2, FELD3 und FELD4 einer TabelleBSPTAB in dieser Reihenfolge definiert. Auf diese Tabelle wird zugegriffen mit demSELECT-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 FELD2brauchbar. Greift das Datenbanksystem über diesen Index auf die Daten zu, kann esalso schnell alle Sätze finden, für die FELD1 = X1 und FELD2 = X2 gilt. Aus dieserMenge 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 entscheidendeRolle. An erster Stelle sollten die Felder stehen, die bei vielen Selektionen mit konstanten Wertenbelegt 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 Selektionsignifikant einschränken.

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

SELECT * FROM ADRTAB WHERE TITEL = ‘Prof.’ AND NAME = X ANDVORNAME = Y.

In einem Index über NAME, VORNAME und TITEL würde das Feld TITEL die überName 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 Titelunterscheiden. Es wäre deshalb in diesem Index nicht sinnvoll. Ein Index über dasFeld TITEL allein wäre aber unter Umständen sinnvoll, falls beispielsweise häufigalle Professoren selektiert werden.

Beachten Sie aber, daß zusätzlich angelegte Indizes das System auch belasten können, dadiese bei jeder Änderung des Tabelleninhalts angepaßt werden müssen. Jeder zusätzliche Indexverlangsamt 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 wenigeIndizes besitzen.

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

Page 66: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Was sollten Sie bei Sekundärindizes beachten?

66 April 2001

Sie sollten auch beachten, daß das Anlegen eines zusätzlichen Index Seiteneffektefür die Performance haben kann. Denn ein bisher erfolgreich zur Selektionverwendeter Index wird unter Umständen vom Optimizer nicht mehr verwendet, dader neu angelegte Index vom Optimizer (manchmal fälschlicherweise) als selektivereingeschätzt wird.

Die Indizes zu einer Tabelle sollten deshalb möglichst disjunkt sein, d.h. möglichstwenige Felder gemeinsam haben. Haben zwei Indizes zu einer Tabelle vielegemeinsame Felder, so kann dies die Auswahl des selektivsten Index durch denOptimizer erschweren.

Page 67: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

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

April 2001 67

Wie prüft man, ob ein Index verwendet wird?Vorgehensweise1. 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. alleDatenbankoperationen 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 Aktionmit einer möglichst repräsentativen Datenmenge durchführen. Ein Cost-based Optimizerversucht den besten Index aufgrund von Statistiken zu ermitteln.

4. Wählen Sie im zweiten Modus Trace off und anschließend Trace list.

ErgebnisDas 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 FunktionEXPLAIN auf den kritischen Statements (PREPARE, OPEN, REOPEN) ermitteln.

Page 68: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Unique-Index

68 April 2001

Unique-IndexEin Eintrag in einem Index kann auf mehrere Sätze verweisen, die sich in den Werten für dieIndexfelder nicht unterscheiden. Ein Unique-Index läßt solche mehrfachen Einträge nicht zu. DieIndexfelder eines Unique-Index haben also Schlüsselfunktion, d.h. identifizieren jeden Satz derTabelle bereits eindeutig.

Der Primärindex einer Tabelle ist stets ein Unique-Index, da die Indexfelder den Schlüssel derTabelle bilden und damit jeden Datensatz eindeutig identifizieren.

Beim Anlegen eines Sekundärindex kann man diesen als Unique-Index definieren. Damit kannman sicherstellen, daß es in den im Index enthaltenen Feldern der Tabelle keine doppeltenSätze gibt. Der Versuch, einen Eintrag in die Tabelle einzupflegen, der diese Bedingung verletzt,führt zu einem Abbruch wegen Datenbankfehler.

Datenbank

Tabelle TABF1 F4F3F2 F2 F4

Text1 X12A12 X

Unique-Index zuTAB über F2 und F4

Z Text4 X12

Einfügen wird von DBzurückgewiesen, da eindoppelter Eintrag bzgl. desUnique-Index vorliegt.

Applikation

Duplikate Key bzgl. F2 und F4

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

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

Page 69: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Index-Kennung

April 2001 69

Index-KennungMehrere Indizes zur gleichen Tabelle werden über eine dreistellige Indexkennungunterschieden. Die Indexkennung darf nur aus Buchstaben und Ziffern bestehen. Die Kennung 0ist 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 derName des entsprechenden Index auf der Datenbank.

Da sich die Konvention für die Bildung des Indexnamens auf der Datenbankmehrfach geändert hat, folgen evtl. nicht alle auf der Datenbank vorhandenenIndizes dieser Konvention.

Vor Release 3.0 angelegte Indizes können einen 8-stelligen Namen besitzen. Dabeistehen die ersten 7 Stellen (evtl. aufgefüllt mit Unterstrichen) für den Tabellennamenund 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-stelligenNamen besitzen. Dabei stehen die ersten 10 Stellen (evtl. aufgefüllt mitUnterstrichen) für den Tabellennamen und die 11-te bis 13-te Stelle für diedreistellige Indexkennung (beispielsweise TEST______A).

Page 70: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Customizing-Includes

70 April 2001

Customizing-Includes Ein Customizing-Include ist eine Struktur, die einer speziellen Namenskonvention genügt. DieNamen der Customizing-Includes beginnen mit ‘CI_’ und liegen im Kundennamensraum.

Falls im R/3 Standard schon mögliche Erweiterungen durch kundenspezifische Feldervorgesehen sind, werden in der entsprechenden Standardtabelle bzw. Standardstruktur solcheCustomizing-Includes inkludiert [Seite 17]. Das Customizing-Include (d.h. die Definition derStruktur [Seite 149] selbst) wird in der Regel erst im Kundensystem angelegt und durch spezielleCustomizing-Transaktionen mit Feldern gefüllt.

Dies ermöglicht Kundenerweiterungen an Tabellen bzw. Strukturen des R/3 Standards, ohne dieTabellen- bzw. Strukturdefinition selbst zu modifizieren. Damit besteht auch nicht die Gefahr, daßdie Kundenerweiterungen beim Upgrade verloren gehen. Wird eine Tabelle bzw. Struktur desR/3 Standards über ein Customizing-Include um Kundenfelder ergänzt, so werden dieseKundenfelder 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ß dasaber nicht tun. Ein nicht vorhandenes Customizing-Include verursacht keinen Fehler bei derAktivierung der Tabellen bzw. Strukturen, die dieses inkludieren.

Ein Customizing-Include kann in mehreren Tabellen bzw. Strukturen enthalten sein, so daß diesebei Änderungen des Includes konsistent bleiben.

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

Page 71: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Append-Strukturen

April 2001 71

Append-Strukturen Append-Strukturen dienen für Erweiterungen, die nicht im Standard vorgesehen sind. ZumBeispiel für Sonderentwicklungen, Länderversionen und das Anfügen von Kundenfeldern anbeliebige Tabellen bzw. Strukturen.

Eine Append-Struktur ist eine Struktur, die genau einer Tabelle bzw. Struktur zugeordnet ist. Eskann zu einer Tabelle bzw. Struktur aber mehrere Append-Strukturen geben.

Über eine Append-Struktur können folgende Erweiterungen an einer Tabelle bzw. Struktur TABvorgenommen 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 dieserErweiterungen müssen stets über die Append-Struktur erfolgen.

Beim Aktivieren einer Tabelle bzw. Struktur werden alle Append-Strukturen zur Tabelle gesuchtund die Felder aus diesen Append-Strukturen werden an die Tabelle bzw. Struktur angehängt.Über die Append-Struktur hinzugefügte Fremdschlüssel und Suchhilfeanbindungen werdenebenfalls an die Tabelle angehängt. Wird eine Append-Struktur angelegt oder geändert, so wirdbei ihrer Aktivierung auch die ihr zugeordnete Tabelle bzw. Struktur an diese Änderungenangepaßt.

Da die Feldreihenfolge im ABAP Dictionary von der Feldreihenfolge auf der Datenbankabweichen kann, führt das Anhängen von Append-Strukturen bzw. das Einfügen von Feldern insolche Append-Strukturen nicht zur Umsetzung der Tabelle.

Append-Strukturen werden vom Kunden im Kundennamensraum angelegt und sind damit gegenein Überschreiben beim Upgrade geschützt. Auch die Felder in der Append-Struktur sollten imKundennamensraum liegen, d.h. die Feldnamen sollten mit ZZ oder YY beginnen. Damit werdenNamenskonflikte mit von SAP in die Tabelle eingefügten Feldern verhindert.

Nach einem Upgrade werden die neuen Versionen der Standardtabellen eingespielt und bei derAktivierung werden die in Append-Strukturen enthaltenen Felder, Fremdschlüsseldefinitionenund Suchhilfeanbindungen an die neuen Standardtabellen angehängt.

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

Page 72: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Append-Strukturen

72 April 2001

Feld 1 Feld 2 Feld 3 ZZA ZZB

Tabellendefinition imABAP Dictionary

Feld 2 Feld 3Feld 1 Append-Struktur

Feld ZZA Feld ZZB

Tabellendefinition aufder 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önnenSie diese Felder in einer Include-Struktur ablegen. Dann müssen Sie zu jeder dieserTabellen bzw. Strukturen eine Append-Struktur anlegen und die Include-Struktur dortinkludieren.

� Das Anfügen einer Append-Struktur an eine SAP-Standardtabelle wird durch denModifikationsassistenten [Extern] unterstützt.

� Soll ein Feld, das im nächsten Release mit dem R/3-Standard ausgeliefert wird, vorab imKundensystem eingefügt werden, so ist dieses in der Tabelle selbst als Reparaturaufzunehmen. Wird ein solches Feld in eine Append-Struktur zur Tabelle aufgenommen, sokommt es nach dem Einspielen der neuen Standardtabelle doppelt vor. Dies führt zu einemAktivierungsfehler.

� 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 letztesFeld 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 werdendie Felder der Append-Struktur zu Feldern der Zieltabelle. Über die Append-Strukturangehängte Fremdschlüsseldefinitionen bzw. Suchhilfeanbindungen werden in die Zieltabelleübernommen.

� Fremdschlüssel auf den angefügten Felder müssen innerhalb der Append-Struktur definiertwerden. Dabei dürfen auch Felder der der Append-Struktur zugeordneten Tabelle bzw.Struktur bei der Zuordnung zwischen Schlüsselfeld und Fremdschlüsselfeld angegebenwerden.

Page 73: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Append-Strukturen

April 2001 73

� 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 neueFremdschlüssel bzw. Suchhilfeanbindungen erweitert werden. Es ist also nicht möglich einefü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]

Page 74: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Tabelle anlegen

74 April 2001

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

3. Geben Sie auf der Registerkarte Eigenschaften die Auslieferungsklasse [Seite 82] derTabelle an.

Markieren Sie auf dieser Registerkarte das Kennzeichen Tabellenpflege erlaubt, wennBenutzer mit den entsprechenden Berechtigungen die Daten in der Tabelle über denData Browser (Transaktion SE16) verändern dürfen. Falls die Daten der Tabelle nur überProgramme 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ürjedes Feld der Tabelle die folgenden Schritte aus:

Tragen Sie in der Spalte Felder einen Namen für das Tabellenfeld ein. Der Feldnamedarf nur Buchstaben, Ziffern und Unterstriche enthalten und muß mit einem Buchstabenbeginnen. 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 diesemFall übernimmt das Feld Datentyp, Länge, Dezimalstellen und Kurzbeschreibung ausdiesem Datenelement. Falls noch kein passendes Datenelement existiert, können Siedurch Eintragen eines Namens und Doppelklick darauf in die Datenelementpflege [Seite145] verzweigen.

Über Datenelement/Direkter Typ können Sie Datentyp, Feldlänge, Dezimalstellen undKurzbeschreibung direkt eingeben. Betätigen Sie diese Taste einfach erneut, falls Sie fürweitere Felder wieder Datenelemente eingeben möchten.

Für Felder ohne Datenelemente steht nur eine eingeschränkte Funktionalität zurVerfügung. Es können für solche Felder keine Fremdschlüssel definiert werden, eskö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üssenSie auf der Registerkarte Währungs-/Mengenfelder noch Referenzfeld undReferenztabelle [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 Fallhöchstens die Länge 16 haben dürfen.

5. Pflegen Sie die technischen Einstellungen [Seite 79] zur Tabelle. Sie erreichen dasentsprechende Pflegebild über Springen � Technische Einstellungen.

Page 75: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Tabelle anlegen

April 2001 75

Die technischen Einstellungen sind ein eigenständiges Objekt und können getrennt vonder Tabelle aktiviert und transportiert werden.

6. Pflegen Sie (falls notwendig) die Fremdschlüsselbeziehungen [Seite 77] der Tabelle zuanderen Tabellen.

Sie erreichen das entsprechende Pflegebild, indem Sie den Cursor auf das Prüffeldstellen 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 zuordnenmüssen.

9. Wählen Sie .

ErgebnisBeim Aktivieren wird die Tabelle und alle Indizes (falls dies bei der Definition des Index nichtexplizit ausgeschlossen wurde) zur Tabelle automatisch auf der Datenbank angelegt. Sie könnensich 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 sichdas Laufzeitobjekt über Hilfsmittel � Laufzeitobjekt � Anzeigen anzeigen lassen.

Informationen zum Ablauf der Aktivierung finden Sie im Aktivierungsprotokoll, das Sie sich überHilfsmittel � Aktivierungsprotokoll anzeigen lassen können. Treten beim Aktivieren der TabelleFehler 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 zurVerfügung, die sich auf dieses Feld beziehen. Siehe Anbindung einer Suchhilfe an einTabellen- 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 zurVerfügung, die gegen die Tabelle geprüft werden. Siehe Anbindung einer Suchhilfe an diePrüftabelle [Seite 190].

� Dokumentation erfassen: Sie können über Springen � Dokumentation einen Texterfassen, der die Verwendung der Tabelle und die Pflege der Daten in der Tabelle näherbeschreibt.

� Aktivierungsart zuordnen: Sie können der Tabelle über Zusätze � Aktivierungsart eineAktivierungsart [Seite 84] zuordnen. Dies ist nur für Tabellen der Laufzeitumgebung relevant.

� Daten erfassen oder anzeigen: Falls Sie das Kennzeichen Tabellenpflege erlaubt gesetzthaben, können Sie über Hilfsmittel � Tabelleninhalt � Einträge erfassen Daten in dieTabelle eingeben. Sie können sich vorhandene Daten über Hilfsmittel � Tabelleninhalt �Anzeigen ansehen.

Page 76: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Tabelle anlegen

76 April 2001

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

� Es sind maximal 16 Schlüsselfelder pro Tabelle zulässig. Die maximale Länge desSchlüssels einer Tabelle ist 255.

� Falls die Schlüssellänge größer 120 ist, bestehen Einschränkungen beim Transport vonTabelleneinträgen. Der Schlüssel kann beim Transport nur bis maximal 120 Stellenspezifiziert werden. Ist der Schlüssel größer als 120, müssen Tabelleneinträge generischtransportiert werden.

� Eine Tabelle darf maximal 249 Felder enthalten. Die Summe aller Feldlängen ist auf 1962begrenzt (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 einsolches Feld pro Tabelle erlaubt. Außerdem muß direkt vor einem solchen Feld ein Feld vomTyp INT2 stehen, in das dann die tatsächliche Länge des Feldes durch dieDatenbankschnittstelle eingetragen werden kann.

Siehe auch:Technische Einstellungen [Seite 31]

Indizes [Seite 63]

Fremdschlüssel [Seite 20]

Page 77: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Fremdschlüssel anlegen

April 2001 77

Fremdschlüssel anlegen Vorgehensweise1. 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önnenSie sich vom System einen Vorschlag mit der Wertetabelle als Prüftabelle erstellenlassen. In diesem Fall wird ein Vorschlag für die Feldzuordnung im Fremdschlüsselerzeugt.

Falls die Domäne keine Wertetabelle besitzt oder Sie den Systemvorschlag abgelehnthaben, erscheint das Bild zur Fremdschlüsselpflege ohne Vorschlagswerte. Tragen Siein diesem Fall die Prüftabelle ein und sichern Sie ihre Eingaben. Die Prüftabelle muß einSchlüsselfeld besitzen, dem die Domäne des Prüffeldes zugeordnet ist.

Sie können dann vom System einen Vorschlag für die Zuordnung zwischenFremdschlüsselfeldern und Schlüsselfeldern der Prüftabelle erstellen lassen. Hierbeiversucht das System die Schlüsselfelder der Prüftabelle zu Feldern der Tabelle mitgleicher Domäne zuzuordnen. Falls Sie keinen Vorschlag wünschen, werden dieSchlüsselfelder der Prüftabelle aufgelistet und Sie müssen diesen geeignete Felder derFremdschlü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 dasPflegebild 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üftabelleherausnehmen (siehe Generische und konstante Fremdschlüssel [Seite 23]).

Markieren Sie das Kennzeichen generisch, um ein Feld aus der Prüfung gegen dieSchlüsselfelder der Prüftabelle herauszunehmen. Falls Sie einem Fremdschlüsselfeldeine Konstante zuordnen möchten, müssen Sie diese im Feld Konstante inHochkommata eingeschlossen (Beispiel: ‘Konstante’) eintragen. In beiden Fällenmü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 verwendetwerden, müssen Sie die Markierung im Feld Prüfung erwünscht entfernen. Diese Festlegunggilt für alle Dynpros, auf denen das Feld erscheint! Ein Ausschalten der Prüfung kann zumBeispiel sinnvoll sein, wenn der Fremdschlüssel nur zur Definition von Pflege-Views [Seite120], Help-Views [Seite 118] oder Sperrobjekten [Seite 214] verwendet wird.

� Nachricht zuordnen: Falls die Werteprüfung durch den Fremdschlüssel auf einemBildschirmfeld ergibt, daß eine Eingabe nicht zulässig ist, wird eine Standardnachrichtausgegeben. Diese Standardnachricht kann durch eine beliebige Nachricht ersetzt werden.Hierzu müssen Sie die Nachrichtenklasse der Nachricht im Feld AGeb und dieNachrichtennummer im Feld MsgNr eingeben. Siehe hierzu Fehlernachricht in derFremdschlüsselprüfung [Seite 85].

Page 78: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Fremdschlüssel anlegen

78 April 2001

� Semantische Eigenschaften: Sie können optional die semantischen Eigenschaften [Seite25] 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 Includegeerbt angezeigt. Fremdschlüsseldefinitionen werden im allgemeinen von derinkludierten 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 Markierungzurücknehmen, wird die Verbindung zwischen Fremdschlüssel und inkludierterTabelle 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]

Page 79: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Technische Einstellungen pflegen

April 2001 79

Technische Einstellungen pflegen Vorgehensweise1. 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ätzeden 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 welchePufferungsart Sie wählen sollten, finden Sie in Datenbanktabellen puffern [Seite 45].

4. Markieren Sie Datenänderungen protokollieren, falls Änderungen an Datensätzen derTabelle protokolliert werden sollen (siehe Protokollierung [Seite 42]).

Damit Änderungen protokolliert werden, muß die Protokollierung im System über denProfile-Parameter rec/client eingeschaltet sein. Das Kennzeichen Datenänderungenprotokollieren allein bewirkt keine Protokollierung der Tabellenänderungen!

5. Wählen Sie .

Falls bei der Aktivierung Fehler auftraten, werden diese im Aktivierungsprotokollangezeigt.

Weitere MöglichkeitenFür Pooltabellen (und Tabellen die zu einem früheren Zeitpunkt über dieses Kennzeichen in einetransparente Tabelle umgewandelt wurden) wird noch das Kennzeichen In Transparente Tabelleumwandeln angezeigt. Sie können die Pooltabelle über dieses Kennzeichen zu einertransparenten 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 als500 Stellen umfaßt, ist eine Protokollierung der Tabelle nicht möglich.

Siehe auch:Technische Einstellungen [Seite 31]

Welche Tabellen sollten gepuffert werden? [Seite 55]

Page 80: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Sekundärindizes anlegen

80 April 2001

Sekundärindizes anlegen Vorgehensweise1. Wählen Sie im Pflegebild der Tabelle Indizes.

Falls schon Indizes zur Tabelle existieren, erscheint eine Liste dieser Indizes. WählenSie .

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

4. Wählen Sie die Felder der Tabelle, die Sie in den Index aufnehmen wollen, über dieEingabehilfe zur Spalte Feldname aus.

Beachten Sie, daß die Reihenfolge der Felder im Index wichtig ist! Siehe hierzu Wassollten 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 vondoppelten Einträgen bzgl. der Indexfelder) hat, wird ein Unique-Index beim Aktivierenimmer 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 alleDatenbanksysteme, für ausgewählte Datenbanksysteme oder überhaupt nicht auf derDatenbank angelegt werden soll.

7. Markieren Sie auf ausgewählten Datenbanksystemen, falls der Index nur auf ausgewähltenDatenbanksystemen angelegt werden soll.

Klicken Sie dann auf das Pfeilsymbol hinter den Auswahlknöpfen. Es erscheint einDialogfenster, indem Sie über die Eingabehilfe eine Liste von bis zu 4Datenbanksystemen angeben können. Wählen Sie Auswahlliste, falls der Index nur aufden angegebenen Datenbanksystemen angelegt werden soll. Wählen SieAusschlußliste, wenn der Index auf den angegebenen Datenbanksystemen nichtangelegt werden soll. Wählen Sie

8. Wählen Sie .

ErgebnisDer Sekundärindex wird beim Aktivieren automatisch auf der Datenbank angelegt, falls diezugehörige Tabelle dort schon angelegt ist und das Anlegen des Index für das verwendeteDatenbanksystem nicht ausgeschlossen wurde.

Informationen über den Ablauf der Aktivierung finden Sie im Aktivierungsprotokoll, das Sie überHilfsmittel � Aktivierungsprotokoll aufrufen können. Falls Fehler bei der Aktivierung des Indexauftraten, wird das Aktivierungsprotokoll automatisch angezeigt.

Page 81: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Sekundärindizes anlegen

April 2001 81

Siehe auch:Indizes [Seite 63]

Page 82: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Auslieferungsklasse

82 April 2001

AuslieferungsklasseDie Auslieferungsklasse steuert den Transport von Daten der Tabelle bei Installation, Upgrade,Mandantencopy und beim Transport zwischen Kundensystemen. Die Auslieferungsklasse wirdauch 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 Kundennamensraummuß 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 eigeneTransportobjekte (z.B. R3TR PROG, R3TR TABL, etc) transportiert werden.

Verhalten beim MandantencopyEs 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 denZielmandanten kopiert. Ein Transport solcher Daten ist in der Regel nicht sinnvoll, wird aberunterstützt, um die Übernahme eines gesamten Mandantenumfeldes zu ermöglichen.

Verhalten bei Installation, Upgrade und SprachenimportDas Verhalten unterscheidet sich hier zwischen mandantenabhängigen undmandantenunabhängigen Tabellen.

Mandantenabhängige Tabellen

� Klasse A und C: Daten werden nur in den Mandanten 000 importiert. VorhandeneDatensätze werden überschrieben.

� Klasse E, S und W: Daten werden in alle Mandanten importiert. Vorhandene Datensätzewerden überschrieben.

� Klasse G: Im Mandanten 000 werden vorhandene Datensätze überschrieben. In allenanderen Mandanten werden neue Datensätze eingefügt, aber keine schon vorhandenenDatensätze überschrieben.

� Klasse L: Es werden keine Daten importiert.

Mandantenunabhängige Tabellen

� Klassen A, L und C: Es findet kein Import von Daten statt.

Page 83: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Auslieferungsklasse

April 2001 83

� Klassen E, S, und W: Daten werden importiert. Vorhandene Datensätze mit gleichemSchlüssel werden überschrieben.

� Klasse G: Nicht vorhandene Datensätze werden eingefügt, es werden aber keinevorhandenen Datensätze überschrieben.

Verhalten beim Transport zwischen KundensystemenDatensä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 Zielsystemimportiert (bei mandantenabhängigen Tabellen erfolgt dies für den im Transport angegebenenZielmandanten).

Verwendung der Auslieferungsklasse in der ErweitertenTabellenpflegeDie Auslieferungsklasse wird auch in der Erweiterten Tabellenpflege (SM30) ausgewertet. Die füreine 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 TRESCdefinierten Namensraum verletzen. Falls die Daten den Namensraum verletzen, wird dieEingabe zurückgewiesen.

Page 84: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Aktivierungsart

84 April 2001

Aktivierungsart Die Aktivierungsart legt fest, ob die Tabelle direkt vom ABAP Dictionary aus aktiviert werdenkann 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. DasLaufzeitobjekt muß mittels eines C-Programms erzeugt werden. Anschließend kann dieTabelle 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 Datenstrukturim C-Programm muß also bei einer Änderung an der Tabelle manuell angepaßt werden. ImAktivierungsprotokoll erscheint für solche Tabellen dann ein entsprechender Hinweis.

� Tabellen der Aktivierungsart 10 werden benötigt bevor R3TRANS läuft. Solche Tabellenmü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.

Page 85: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Fehlernachricht in der Fremdschlüsselprüfung

April 2001 85

Fehlernachricht in der FremdschlüsselprüfungBei einer Fremdschlüsselprüfung wird geprüft, ob in der Prüftabelle ein Satz mit dem durch dieWerte 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 desFremdschlüssels durch eine beliebige Nachricht ersetzt werden.

Bei die Gestaltung dieser Nachricht können auch bis zu vier Platzhalter verwendet werden, diedann vom System automatisch mit den Inhalten der Fremdschlüsselfelder und dem Namen derPrüftabelle gefüllt werden.

Die ersten drei Platzhalter werden dabei mit den Inhalten der den ersten drei Schlüsselfeldernder Prüftabelle (das Mandantenfeld ist dabei ausgenommen) zugeordneten Fremdschlüsselfeldergefüllt. In den vierten Platzhalter wird der Name der Prüftabelle gestellt.

Ein Fremdschlüssel zwischen der Fremdschlüsseltabelle FS und der Prüftabelle PTist 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 WerteFELD_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 dieInhalte der zugeordneten Fremdschlüsselfelder in die Platzhalter &1 und &2 gestellt und derdritte Platzhalter enthält den Namen der Prüftabelle.

Page 86: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Änderungen an Tabellen durchführen

86 April 2001

Änderungen an Tabellen durchführenVorgehensweise1. 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ührenkö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]

Page 87: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Append-Struktur anhängen

April 2001 87

Append-Struktur anhängenVorgehensweise1. 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 dasAnhä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-Struktureingeben 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ß imKundennamensraum 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 Siedazu wie beim Anlegen einer normalen Struktur (siehe Struktur anlegen [Seite 151])vorgehen.

Die Felder einer Append-Struktur müssen im Kundennamensraum liegen, d.h. derFeldname muß mit YY oder ZZ beginnen. Damit werden Konflikte mit von der SAP in dieTabelle eingefügten Feldern vermieden.

Eine Append-Struktur muß flach sein, d.h. jedes Feld der Append-Struktur muß entwederauf ein Datenelement verweisen oder direkt mit Datentyp, Länge, Dezimalstellen undKurztext versehen werden.

5. Falls Sie Fremdschlüssel oder Suchhilfeanbindungen zu bereits vorhandenen Feldern derTabelle anlegen wollen, können Sie sich diese Felder über Appendierende einblendenanzeigen lassen. Gehen Sie dann genauso vor, wie wenn Sie den Fremdschlüssel bzw. dieSuchhilfeanbindung in der zugrundeliegenden Tabelle anlegen würden (siehe Tabelleanlegen [Seite 74]).

Falls für ein Feld in der Tabelle selbst schon ein Fremdschlüssel oder eineSuchhilfeanbindung definiert ist, kann diese Definition über die Append-Struktur nichtverändert werden.

6. Wählen Sie .

ErgebnisDie Tabelle wird beim Aktivieren der Append-Struktur ebenfalls aktiviert. Die Felder aus derAppend-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 Tabellevorhandenen 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 Fehlerauftraten, wird das Aktivierungsprotokoll direkt angezeigt.

Page 88: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Append-Struktur anhängen

88 April 2001

Siehe auch:Append-Strukturen [Seite 71]

Page 89: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Include einfügen

April 2001 89

Include einfügenVoraussetzungenIn eine Tabelle können nur flache Strukturen inkludiert werden. In einer flachen Struktur verweistkein Feld auf eine andere Struktur. Alle Felder einer flachen Struktur zeigen also entweder aufein 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 deshalbnur dann in eine Tabelle inkludiert werden, wenn alle Feldnamen in der Struktur nur maximal 16Stellen lang sind.

Vorgehensweise1. 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 (sieheBenannte Includes [Seite 153]) oder einen dreistelligen Suffix eingeben.

Über den Gruppennamen können Sie die Felder im Include in ABAP Programmengemeinsam ansprechen.

Der Suffix kann verwendet werden, um Namenskollisionen zwischen Feldern desIncludes und schon in der Tabelle vorhandenen Feldern aufzulösen. Der Suffix wird analle Felder des Includes angehängt, wobei der Feldname gegebenenfalls erst gekürztwird.

3. Wählen Sie .

In der Feldpflege der Tabelle wird eine Zeile mit .INCLUDE im Feld Felder und demNamen des Includes im Feld Feldtyp eingefügt.

4. Markieren Sie die Spalte Key, wenn alle Felder im Include Schlüsselfelder der Tabelle seinsollen.

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 letztenSchlüsselfeld oder zwischen bereits vorhandenen Schlüsselfeldern der Tabelle einfügen.

Falls Sie die Spalte Key nicht markieren, ist keines der inkludierten Felder einSchlüsselfeld der Tabelle.

5. Wählen Sie .

ErgebnisDie Felder des Includes werden damit auf der Datenbank an die Tabelle angehängt. Falls Sie dieFelder des Includes als Schlüsselfelder eingefügt haben, wird der Primärindex [Seite 63] derTabelle neu aufgebaut.

Informationen zum Ablauf der Aktivierung finden Sie im Aktivierungsprotokoll, das Sie überHilfsmittel � Aktivierungsprotokoll anzeigen lassen können. Treten beim Aktivieren der TabelleFehler auf, wird das Aktivierungsprotokoll direkt angezeigt.

Page 90: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Include einfügen

90 April 2001

Weitere MöglichkeitenSie können sich die in einem Include enthaltenen Felder anzeigen lassen, indem Sie den Cursorauf die Zeile des Includes stellen und wählen. Die Felder des Includes werden nun unterhalbdieser 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 dieswieder rückgängig machen.

Mit Bearbeiten � Include � Komponenten übernehmen können Sie die im Includeenthaltenen Felder direkt in die Tabelle übernehmen. Die Felder des Includes werden dabei zuTabellenfeldern. Sie passen sich damit nicht mehr an Änderungen im Include an.

Siehe auchIncludes [Seite 17]

Page 91: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Neue Felder einfügen

April 2001 91

Neue Felder einfügenVorgehensweise1. 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 Endeder Tabelle mehrere neue Felder anfügen.

Eine leere Zeile erscheint, in der Sie das zusätzliche Feld aufnehmen können. Wie Sieein 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 NULLangelegt werden soll.

In diesem Fall wird beim Aktivieren die gesamte Tabelle durchlaufen und das neue Feldwird mit dem Initialwert [Seite 92] gefüllt. Dies kann bei großen Tabellen sehrlaufzeitaufwendig sein!Schlüsselfelder sind immer als NOT NULL definiert. Beim Einfügen eines neuenSchlüsselfeldes wird der Primärindex der Tabelle auf der Datenbank neu aufgebaut.

3. Wählen Sie .

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

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

Das Einfügen eines Mandantenfeldes führt zur Umsetzung der Tabelle (sieheDatenbank-Strukturen anpassen [Seite 231]). Dabei werden die Daten der Tabelle inalle in der Mandantentabelle T000 aufgeführten Mandanten kopiert.

Falls die Tabelle Prüftabelle eines Fremdschlüssels ist, ist das Einfügen einesMandantenfeldes nicht möglich. Sie müssen in diesem Fall vorher die bestehendenFremdschlüssel löschen.

Page 92: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Initialwerte

92 April 2001

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 Tabellenoder durch Inserts über Datenbank-Views [Seite 110].

Wird ein neues Feld in eine auf der Datenbank bereits vorhandene Tabelle eingefügt, so wirddiese 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 imneuen Feld. Wird ein INSERT auf eine Tabelle über einen Datenbank-View vorgenommen, soentstehen NULL-Werte in allen nicht im View enthaltenen Feldern der Tabelle.

NULL-Werte bringen keine Nachteile mit sich, solange nicht auf das entsprechende Feldselektiert wird. Bei einer Selektion auf ein Feld mit NULL-Werten werden aber eventuell nicht alleEinträge gefunden, auf die die Selektionsbedingung paßt. Der Grund dafür ist, daß NULL-Wertenur die Selektionsbedingung WHERE FIELD IS NULL erfüllen.

Das Feld Feld1 wird in eine Tabelle TAB eingefügt. Wird auf diese Tabelle mit demStatement SELECT... FROM TAB WHERE Feld1 <> 5... zugegriffen, so werdenSä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 Initialdefiniert wird. Das Feld wird damit auf der Datenbank als NOT NULL angelegt. Beim Aktivierenwird die gesamte Tabelle durchlaufen und das neue Feld mit dem Initialwert gefüllt. Dies kannsehr laufzeitaufwendig sein! Sie sollten deshalb das Initial-Kennzeichen nur im Bedarfsfall oderwenn 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 <= 32Kein 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 diedas Initial-Kennzeichen im ABAP Dictionary nicht markiert ist! Ob ein Feld auf der Datenbank alsNOT NULL definiert ist, können Sie im Pflegebildschirm der entsprechenden Tabelle überHilfsmittel � Datenbankobjekt � Anzeigen ermitteln.

Page 93: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Initialwerte

April 2001 93

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

Ist das Initial-Kennzeichen für ein Include [Seite 17] gesetzt, so haben genau dieStrukturfelder mit gesetztem Initial-Kennzeichen diese Eigenschaft auch in derTabelle. Ist das Initial-Kennzeichen nicht gesetzt, sind NULL-Werte für alle Felderdes Includes zugelassen.

Felder mit den Datentypen LCHR, LRAW, RAW sowie NUMC Felder mit Feldlängegrößer 32 können nicht als Initial deklariert werden.

Page 94: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Vorhandene Felder löschen

94 April 2001

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

Falls die Tabelle auf der Datenbank schon Daten enthält, ist nach dem Löschenbestehender Felder eine Umsetzung (siehe Datenbank-Strukturen anpassen [Seite231]) der Tabelle notwendig.

Falls Sie Schlüsselfelder der Tabelle löschen, können bei der Umsetzung Datenverloren gehen. Wenn sich Datensätze in der Tabelle befanden, die sich nur in demgelöschten Schlüsselfeld unterschieden, kann nur einer dieser Datensätze in dieTabelle zurückgeladen werden!

Wird ein Feld in einer anderen Tabelle als Referenzfeld verwendet, ist das Löschendes Feldes nicht möglich. Sie müssen in diesem Fall alle Verwendungen des Feldesals Referenzfeld (siehe Referenzfeld und Referenztabelle [Seite 16]) vorherentfernen.

Falls die Tabelle Prüftabelle ist, ist das Löschen von Schlüsselfeldern der Tabellenicht möglich. Sie müssen in diesem Fall die entsprechenden Fremdschlüssel vorherlöschen.

Sie können alle Tabellen, die die betreffende Tabelle als Prüftabelle oderReferenztabelle verwenden, über ermitteln.

Page 95: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Datentyp und Länge vorhandener Felder verändern

April 2001 95

Datentyp und Länge vorhandener Felder verändern Falls dem Feld ein Datenelement [Seite 143] zugeordnet ist, müssen Sie die technischenFeldeigenschaften (Datentyp, Länge, Anzahl der Dezimalstellen) in der Domäne desDatenelements verändern.

Vorgehensweise bei Feldern mit Datenelement1. 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 sichauf die entsprechende Domäne beziehen! Es können Fremdschlüssel inkonsistentwerden und Umsetzungen erforderlich sein. Sie sollten sich deshalb vor einer Änderungder Domäne über die Auswirkungen dieser Aktion informieren, indem Sie im Pflegebildder 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 derDomäne angepaßt.

Vorgehensweise bei Feldern mit direkter Typeingabe1. 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 eineUmsetzung (siehe Datenbank-Strukturen anpassen [Seite 231]) der Tabelleerforderlich wird.

Page 96: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Tabellenart ändern

96 April 2001

Tabellenart ändernVoraussetzungenAbhä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 Tabellewerden ebenfalls gelöscht.

� Pool-/Cluster in Transparent: Da technische Einstellungen für Pool- bzw. Clustertabellenohne Bedeutung sind, müssen Sie diese vor der Aktivierung der transparenten Tabellepflegen.

� Transparent in Pool/Cluster: Sie müssen noch die Zuordnung zum Tabellenpool bzw.Tabellencluster angeben, in dem die Daten der Tabelle abgelegt werden sollen.

Vorgehensweise1. Wählen Sie in der Feldpflege der Tabelle Zusätze � Tabellenart ändern.

Es erscheint ein Dialogfenster, in dem die momentane Tabellenart (TransparenteDatenbanktabelle, 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, dieMöglichkeit die Tabellenart mit Hilfe des Transparent-Flag [Seite 44] zu ändern.

Eine Änderung einer Pool-/Clustertabelle in eine transparente Tabelle undumgekehrt führt stets zu einer Umsetzung (siehe Datenbank-Strukturen anpassen[Seite 231]) der Tabelle.

Siehe auch:Pool- und Clustertabellen [Seite 269]

Page 97: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Felder verschieben

April 2001 97

Felder verschiebenVorgehensweise1. 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, undwählen Sie .

Das Feld wird an der neuen Position in die Tabelle eingefügt.

Die Feldreihenfolge im ABAP Dictionary kann von der Feldreihenfolge auf derDatenbank abweichen. Eine Vertauschung der Feldreihenfolge (mit Ausnahme vonSchlüsselfeldern) im ABAP Dictionary führt deshalb zu keiner Änderung auf derDatenbank. Insbesondere ist keine Umsetzung (siehe Datenbank-Strukturenanpassen [Seite 231]) der Tabelle notwendig.

Falls die Tabelle Prüftabelle ist, ist die Änderung der Reihenfolge der Schlüsselfeldernicht möglich. Sie müssen in diesem Fall die entsprechenden Fremdschlüssel vorherlöschen.

Page 98: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Felder aus einer anderen Tabelle übernehmen

98 April 2001

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

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

Wenn Sie nur einzelne Felder kopieren wollen, so stellen Sie den Cursor auf dieseFelder und wählen Sie Auswählen.

4. Stellen Sie den Cursor auf das letzte Feld des zu kopierenden Blocks und wählen Sie erneutBlock 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 undSie kehren in die Feldpflege zurück.

6. Stellen Sie den Cursor auf das Feld, vor dem Sie die neuen Felder einfügen wollen, undwählen Sie .

Die vorher markierten Felder werden in die Tabelle eingefügt.

7. Wählen Sie .

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

Page 99: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Felder aus einem Entitätstyp übernehmen

April 2001 99

Felder aus einem Entitätstyp übernehmenVorgehensweise1. 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 denentsprechenden 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 zugeordnetenTabelle in diesen übernommen wurden. D.h. es können nur die Attribute übernommenwerden, 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)

Page 100: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Tabelle löschen

100 April 2001

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

Vorgehensweise1. 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 Programmenoder anderen Objekten des ABAP Dictionary verwendet wird.

2. Wählen Sie .

Es erscheint ein Dialogfenster, in dem Sie aufgefordert werden, den Löschauftragnochmals zu bestätigen. In diesem Dialogfenster wird Ihnen auch mitgeteilt, ob dieTabelle noch Daten enthält.

3. Bestätigen Sie den Löschauftrag.

ErgebnisDie Tabelle wird nun gelöscht, falls Sie nicht mehr in anderen Objekten des ABAP Dictionaryverwendet wird.

Page 101: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Views

April 2001 101

ViewsDaten zu einem Anwendungsobjekt sind oft auf mehrere Tabellen verteilt. Durch die Definitioneines Views kann eine anwendungsspezifische Sicht definiert werden, die diese Datenzusammenfaßt. Die Struktur einer solchen Sicht wird durch die Angabe der am View beteiligtenTabellen und Felder festgelegt. Weiterhin können überflüssige Felder ausgeblendet undSchnittstellen damit minimiert werden. Ein View kann in ABAP Programmen zur Datenselektionverwendet werden.

F3F2F1 F4 F5 F6 F7 F8

Tabelle 3Tabelle 2

Tabelle 1

View auf die Tabellen

Sicht auf Daten, dieauf mehrere Tabellenverteilt sind

F1 F2 F3 F5 F8

Die Daten eines Views werden nicht physisch abgespeichert, sondern aus einer oder mehrerenTabellen abgeleitet. Diese Ableitung von Daten kann im einfachsten Fall darin bestehen, daß einoder mehrere Felder aus einer Basistabelle ausgeblendet werden (Projektion) oder daß nurbestimmte Einträge aus einer Basistabelle in den View übernommen werden (Selektion).Kompliziertere Views können sich aus mehreren Basistabellen zusammensetzen, wobei dieeinzelnen 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ähltwerden. Diese müssen dann im zweiten Schritt durch die Angabe der Join-Bedingungenverknüpft werden. Hierbei besteht auch die Möglichkeit, die Join-Bedingung aus einem zwischenden Tabellen definierten Fremdschlüssel (siehe Fremdschlüsselbeziehung und Join-Bedingung[Seite 107]) zu übernehmen. Im dritten Schritt müssen die Felder der Basistabellen ausgewähltwerden, welche in den View eingehen sollen. Im vierten Schritt können dannSelektionsbedingungen formuliert werden, die die Sätze im View einschränken.

Es werden vier verschiedene Viewtypen unterstützt. Diese unterscheiden sich in der Art derRealisierung des Views und in den möglichen Zugriffsarten auf die Viewdaten.

� Datenbank-Views [Seite 111] werden durch einen äquivalenten View auf der Datenbankrealisiert.

Page 102: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Views

102 April 2001

� Projektions-Views [Seite 117] dienen zum Ausblenden von Feldern aus einer Tabelle (nurProjektion).

� Help-Views [Seite 118] können als Selektionsmethode in Suchhilfen [Seite 177] verwendetwerden.

� Pflege-Views [Seite 120] erlauben es, die auf mehrere Tabellen verteilten Daten zu einemAnwendungsobjekt gemeinsam zu pflegen.

Datenbank-Views realisieren einen Inner Join. Die anderen Viewtypen realisieren einen OuterJoin (siehe Inner Join und Outer Join [Seite 106]).

Die Joinbedingungen können bei Datenbank-Views über Gleichheitsbeziehungen zwischenbeliebigen Basisfeldern formuliert werden. Bei den anderen Viewtypen müssen Sie ausbestehenden Fremdschlüsseln übernommen werden. Tabellen können also nur dann in einemPflege-View oder Help-View zusammengefaßt werden, wenn Sie über Fremdschlüsselmiteinander verbunden sind.

Der Pflegestatus [Seite 108] bestimmt, ob auf den View nur lesend zugegriffen werden kann oderob 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]

Page 103: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Join, Projektion und Selektion

April 2001 103

Join, Projektion und Selektion Dieses Beispiel zeigt den Aufbau eines Views über die relationalen Operatoren Join, Projektionund Selektion.

Wir gehen aus von zwei Tabellen TABA und TABB. Die Tabelle TABA enthält 2 Einträge, dieTabelle TABB enthält 4 Einträge.

Tabelle TABA Tabelle TABB

1 11222

Text 1 Text 3Text 4Text 5

Text 2

Text 6

A

AB

B

Feld 1 Feld 2 Feld 3 Feld 4 Feld 5

Feld 1 Feld 2 Feld 3 Feld 4 Feld 5

1 Text 11 Text 11 Text 11 Text 12 Text 22 Text 22 Text 22 Text 2

1122

Text 3Text 4Text 5Text 6

A

AB

B1122

Text 3Text 4Text 5Text 6

A

AB

B

Kreuzprodukt derTabellen TABAund TABB

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

Join-BedingungenDas gesamte Kreuzprodukt ist in der Regel keine sinnvolle Selektion. Deshalb muß dasKreuzprodukt ü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 alleSätze aus dem Kreuzprodukt entfernt, bei denen der Eintrag in Feld 1 nicht mit dem Eintrag ausFeld 3 identisch ist. Die Spalte für Feld 3 im View wird damit überflüssig.

Page 104: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Join, Projektion und Selektion

104 April 2001

Joinbedingung: TABA - Feld 1 = TABB - Feld 3

Feld 1 Feld 2 Feld 3 Feld 4 Feld 5

1 Text 11 Text 11 Text 11 Text 12 Text 22 Text 22 Text 22 Text 2

1122

Text 3Text 4Text 5Text 6

A

AB

B1122

Text 3Text 4Text 5Text 6

A

AB

B

Reduzieren des Kreuzprodukts um alle Sätze, in denender Eintrag in Feld 1 ungleich dem Eintrag in Feld 3 ist.

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

Feld 1 Feld 2 Feld 4 Feld 5

1 Text 11 Text 12 Text 22 Text 2

Text 3Text 4

AB

Text 5Text 6

AB

Feld 1 Feld 2 Feld 5

1 Text 11 Text 12 Text 22 Text 2

Text 3Text 4Text 5Text 6

Projektion

Auswahl der relevantenFelder

Page 105: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Join, Projektion und Selektion

April 2001 105

SelektionsbedingungenFür einen View können Selektionsbedingungen angegeben werden, die als Filter für dieaufzubauende Sicht verwendet werden.

In Selektionsbedingungen können Restriktionen für die Inhalte der Viewfelder angegebenwerden. Es können dann nur solche Datensätze über den View selektiert werden, die diesenRestriktionen genügen. In einer Selektionsbedingung wird der Inhalt eines Viewfeldes durcheinen Vergleichsoperator mit einer Konstanten verglichen. Mehrere Selektionsbedingungenkö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 denWert 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 formuliertwerden.

Selektionsbedingung: TABB - Feld 4 = ‘A’.

Feld 1 Feld 2 Feld 5

1 Text 11 Text 12 Text 22 Text 2

Text 3Text 4Text 5Text 6

Feld 1 Feld 2 Feld 5

1 Text 11 Text 12 Text 22 Text 2

Text 3Text 4Text 5Text 6

ABAB

Feld 4

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

Page 106: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Inner Join und Outer Join

106 April 2001

Inner Join und Outer JoinDie Datenmenge, die über einen View selektiert werden kann, hängt entscheidend davon ab, obder View einen Inner Join oder einen Outer Join realisiert. Beim Inner Join erhält man nur dieSä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 Viewbeteiligten Tabellen kein Eintrag existiert.

Die über einen Outer Join ermittelte Treffermenge kann also eine echte Obermenge der übereinen Inner Join ermittelten Treffermenge sein.

Datenbank-Views realisieren einen Inner Join. Man erhält über einen Datenbank-View also nursolche Sätze, zu denen in allen am View beteiligten Tabellen ein Eintrag vorhanden ist. Help-Views und Pflege-Views realisieren dagegen einen Outer Join.

Feld 1 Feld 2 Feld 4

A Text 1B Text 2

Text 3Text 4

Feld 1 Feld 2 Feld 4

A Text 1B Text 2

Text 3Text 4

C Text 5

Was wird über den View angezeigt?

Inner Join Outer Join

Tabelle TABA Tabelle TABB

A ABB

Text 1 Text 3Text 4Text 2

Feld 1 Feld 2 Feld 3 Feld 4

C Text 5

Join-Bedingung

Page 107: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Fremdschlüsselbeziehung und Join-Bedingung

April 2001 107

Fremdschlüsselbeziehung und Join-BedingungFalls zwischen zwei am View beteiligten Tabellen schon ein geeigneter Fremdschlüsselvorhanden ist, kann die Verknüpfung dieser Tabellen über die Join-Bedingung aus diesemFremdschlüssel übernommen werden.

Ein View soll über die Tabellen TAB1 und TAB2 gebildet werden. Dabei ist TAB1Primärtabelle des Views. TAB2 ist Sekundärtabelle des Views. TAB1 ist Prüftabellezu TAB2. Die Fremdschlüsselfelder sind den Prüftabellenfeldern wie folgtzugeordnet:

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 ANDTAB2-FELD_2 = TAB1-FELD_B.

Join-Bedingungen können auch aus generischen und konstanten Fremdschlüsseln übernommenwerden. Falls einem Feld im Fremdschlüssel eine Konstante zugeordnet ist, wird diese dem Feldauch in der Join-Bedingung zugeordnet. Für eine generische Beziehung im Fremdschlüsselentfä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 diesemFall wie folgt lauten:

CREATE VIEW ... AS SELECT ... WHERE TAB2-FELD_1 = TAB1-FELD_A ANDTAB2-FELD_2 = ‘C’.

Page 108: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Pflegestatus

108 April 2001

PflegestatusDer Pflegestatus eines Views steuert, ob über den View auch das Ändern bzw. Einfügen vonDatensä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 Viewenthaltenen Tabellen geändert, gelöscht und eingefügt werden.

Für Datenbank-Views [Seite 111], die über mehrere Tabellen definiert sind, sind ausschließlichlesende 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 aberkeine Sätze gelöscht oder eingefügt werden.

� lesen und ändern (zeitabhängige Views): Es dürfen nur Einträge eingefügt werden, diesich im zeitunabhängigen Teil [Seite 109] des Schlüssels nicht von schon vorhandenenEinträgen unterscheiden.

Page 109: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Zeitabhängige Schlüsselteile

April 2001 109

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

Die Preise einer Dienstleistung ändern sich abhängig vom Datum. In einem Viewsind die Dienstleistungskennung, ein Datumsfeld und ein Feld für den Preisenthalten. Das Feld für die Dienstleistungskennung ist damit der zeitunabhängigeSchlüsselbereich und das Datumsfeld der zeitabhängige Schlüsselbereich desViews.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 derDienstleistungskennung mit schon vorhandenen Sätzen übereinstimmen. Es ist alsomöglich für eine vorhandene Dienstleistung ab einem neuen Datum einen neuenPreis einzutragen. Es wäre dagegen nicht möglich, Sätze mit einer noch nichtvorhandenen Dienstleistungskennung einzufügen. Neue Dienstleistungen könnenalso über den View nicht eingefügt werden.

Dienstleistung Datum Preis

010101020204040808

1.1.19971.6.19971.9.19971.6.19971.9.19971.3.19971.7.19971.1.19971.9.1997

10010510820222052177085

1031.11.199701

301.1.199707

Einfügen erlaubt

Einfügen verboten

ZeitabhängigerSchlüssel

ZeitunabhängigerSchlüssel

Page 110: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Inserts über Datenbank-Views

110 April 2001

Inserts über Datenbank-ViewsEnthält ein Datenbank-View nur eine einzelne Tabelle, so können Daten über den View in dieseTabelle eingefügt werden (siehe Pflegestatus [Seite 108]). Für den Inhalt der nicht im Viewenthaltenen Tabellenfelder gibt es dabei folgende Möglichkeiten:

� Ist das Feld auf der Datenbank als NOT NULL mit Initialwert definiert, wird das Feld mitdem entsprechenden Initialwert gefüllt.

� Ist das Feld auf der Datenbank als NOT NULL ohne Initialwert definiert, ist ein Einfügennicht 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-Wertin diesem Feld.

Sie sollten deshalb über einen Datenbank-View nur dann Daten in die Tabelle einfügen, falls füralle 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 [Seite117] werden alle nicht im View enthaltenen Tabellenfelder mit dem Default-Wert des Feldesversehen. Dies geschieht unabhängig davon, ob das Feld auf der Datenbank als NOT NULLdefiniert ist. Damit werden NULL-Werte in diesen Feldern in jedem Fall vermieden.

Page 111: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Datenbank-Views

April 2001 111

Datenbank-ViewsDaten zu einem Anwendungsobjekt sind oft über mehrere Datenbanktabellen verteilt. Über einenDatenbank-View kann eine anwendungsspezifische Sicht auf solche verteilten Daten hergestelltwerden.

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 dieDatenbankschnittstelle zugreifen. Der Zugriff auf die Daten kann in ABAP Programmen sowohlüber OPEN SQL als auch über NATIVE SQL erfolgen. Die eigentliche Datenselektion erfolgtjedoch in der Datenbank. Da in diesem Fall die Join-Operation auf der Datenbank ausgeführtwird, kann man damit die Anzahl der Datenbankzugriffe minimieren. Datenbank-Views realisiereneinen Inner Join (siehe Inner- und Outer Join [Seite 106]).

F3F2F1 F4 F5 F6 F7 F8

Tabelle 3Tabelle 2

Tabelle 1

Viewdefinition im ABAP Dictionary

Viewdefinition aufder Datenbank

F1 F2 F3 F5 F8

Wird beim Aktivierenauf der DB angelegt

ABAP Programm

Datenbank-Schnittstelle

F1 F2 F3 F5 F8

Ist nur eine einzige Tabelle im Datenbank-View enthalten, so kann über den Pflegestatus [Seite108] bestimmt werden, ob auch Datensätze über den View eingefügt werden können. Sindmehrere Tabellen im Datenbank-View enthalten, kann nur lesend auf seine Daten zugegriffenwerden.

Datenbank-Views sollten angelegt werden, wenn logisch zusammenhängende Daten ausunterschiedlichen Tabellen gleichzeitig selektiert werden müssen. Der Zugriff über einenDatenbank-View ist in der Regel schneller als die Einzelzugriffe auf die Tabellen. Auch bei derSelektion über Views sollte sichergestellt sein, daß passende Indizes auf den im Viewenthaltenen Tabellen angelegt sind.

Da ein Datenbank-View auf der Datenbank realisiert wird, können nur transparente Tabellen ineinen Datenbank-View aufgenommen werden.

Page 112: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Datenbank-Views

112 April 2001

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

Page 113: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Includes in Datenbank-Views

April 2001 113

Includes in Datenbank-ViewsIn einen Datenbank-View kann eine ganze Tabelle inkludiert werden. In diesem Fall werden alleFelder der inkludierten Tabelle zu Feldern des Views (wobei es möglich ist bestimmte Felderexplizit herauszunehmen). Werden in die Tabelle neue Felder aufgenommen oder vorhandeneFelder 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.

F 2 F 3F 1 F 5 F 6F 4 F 8F 7

TABB inView

inkludiert

F 1 F 3 F 4 F 5 F 8F 6

Datenbank-View auf TABA, TABB und TABC

TABBTABA TABC

Um eine der Tabellen in den View zu inkludieren, müssen Sie im Pflegebild des Views auf derRegisterkarte Viewfelder im Feld Viewfeld das Zeichen *, im Feld Tabelle den Namen der zuinkludierenden Tabelle und im Feld Feldname erneut das Zeichen * eintragen.

Es ist möglich, einzelne Felder aus einer inkludierten Tabelle auszuschließen. Wenn Sie ein Feldder 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 desauszuschließenden Feldes angeben.

Page 114: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Technische Einstellungen eines Datenbank-Views

114 April 2001

Technische Einstellungen eines Datenbank-ViewsDie von einem ABAP Programm über einen Datenbank-View gelesenen Daten können gepuffertwerden. 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 diePufferung der Viewdaten erlaubt ist (siehe Pufferungserlaubnis [Seite 34]) und wie diesevorgenommen werden soll (siehe Pufferungsart [Seite 35]). Es gibt hier die gleichenEinstellungsmöglichkeiten wie bei der Pufferung von Tabellen.

Die gepufferten Viewdaten werden invalidiert, sobald Daten in einer der Basistabellen des Viewsverändert werden.

Page 115: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Append-Views

April 2001 115

Append-ViewsAppend-Views werden für Erweiterungen von Datenbank-Views des SAP Standards verwendet.Dies betrifft spezielle Entwicklungen, länderspezifische Entwicklungen und Modifikationen durchden Kunden.

Über einen Append-View können Felder aus den Basistabellen des Views modifikationsfrei inden View aufgenommen werden. Dies ist analog zur Erweiterung einer Tabelle durch eineAppend-Struktur.

Append-Views sind ein neuer Viewtyp, der ausschließlich zur Erweiterung bestehenderDatenbank-Views um neue Felder verwendet werden kann. Ein Append-View ist genau einemDatenbank-View zugeordnet. Es können aber mehrere Append-Views zu einem Datenbank-Viewangelegt werden.

Wird ein Datenbank-View aktiviert, so werden alle Append-Views zu diesem View gesucht undderen Felder werden an den Datenbank-View angehängt. Wird ein Append-View angelegt odergeändert, so wird der ihm zugeordnete Datenbank-View beim Aktivieren des Append-View istautomatisch an diese Änderung angepaßt.

Auf den Tabellen A und B ist ein Datenbank-View V definiert. Tabelle A enthält dieFelder 1, 2, und 3. Tabelle B enthält die Felder 4, 5, 6, und 7. Der Datenbank-View Venthä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 denTabellen A und B benutzt. Aufgrund spezieller Anforderungen werden aber für eineSonderentwicklung nicht nur die Inhalte der im View enthaltenen Felder, sondernauch die Inhalte der Felder 6 und 7 aus Tabelle B benötigt. Diese beiden Felder ausTabelle B können nun über einen Append-View D in den View V aufgenommenwerden.

Page 116: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Append-Views

116 April 2001

View V

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

Tabelle A Tabelle B

Joinbedingung

Feld 1 Feld 2 Feld 5

Append-View D

Feld 6 Feld 7

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 inden View aufgenommen werden. Es ist nicht möglich neue Tabellen in den View aufzunehmenoder die Joinbedingungen bzw. Selektionsbedingungen des Views zu modifizieren.

Siehe auch:Append-View anlegen [Seite 136]

Page 117: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Projektions-Views

April 2001 117

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 nurdie tatsächlich benötigten Feldinhalte gelesen und geschrieben.

Ein Projektions-View enthält nur genau eine Tabelle. Selektionsbedingungen können fürProjektions-Views nicht angegeben werden.

Ein Projektions-View hat keine Entsprechung auf der Datenbank. Der Zugriff auf einenProjektions-View wird vom R/3-System in den entsprechenden Zugriff auf seine Basistabelleabgebildet. Über einen Projektions-View kann auch auf Pooltabellen oder Clustertabellenzugegriffen werden.

F3F2F1DB-Tabelle

F1 F2 F3 F4 F5 Tabellendefinition imABAP Dictionary

F1 F2 F5 Projektions-Viewzur Tabelle

F4 F5

Zugriff auf die Daten überdie Datenbank-Schnittstelle

Der Pflegestatus [Seite 108] des Views steuert, wie auf die Daten der Tabelle über denProjektions-View zugegriffen werden kann.

Siehe auch:Projektions-View anlegen [Seite 129]

Page 118: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Help-Views

118 April 2001

Help-ViewsEin 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 dieSuchhilfe Daten aus mehreren Tabellen selektiert werden müssen, sollte in der Regel einDatenbank-View als Selektionsmethode verwendet werden. Ein Datenbank-View realisiertallerdings immer einen Inner Join. Falls für die Selektion der Daten ein View mit Outer Joinbenötigt wird, muß ein Help-View als Selektionsmethode verwendet werden.

Feld 1

Feld 2

. . .

001

F4F4

TAB1 TAB2

Suchhilfe zum Feld

Help-View alsSelektionsmethode

Selektion derTrefferliste

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

Die Funktionalität eines Help-View hat sich zwischen Release 3.0 und Release 4.0grundlegend geändert! In Release 3.0 wurde ein Help-View automatisch bei derEingabehilfe (F4-Hilfe) auf allen Feldern angezeigt, die gegen die Primärtabelle desHelp-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 miteinem Bildschirmfeld verbinden [Seite 187]).

Page 119: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Help-Views

April 2001 119

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

Ein Help-View realisiert einen Outer-Join, d.h. es werden immer alle Inhalte derPrimärtabelle des Help-Views angezeigt. Deshalb ist es nicht sinnvoll, eineSelektionsbedingung auf Felder in einer der Sekundärtabellen des Help-Views zuformulieren. Falls aufgrund dieser Selektionsbedingung Sätze dieserSekundärtabelle nicht gelesen werden können, werden in der Anzeige derbetroffenen Sätze die Inhalte aus den zugehörigen Feldern der Sekundärtabelle denInitialwert erhalten.

Siehe auch:Help-View anlegen [Seite 127]

Page 120: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Pflege-Views

120 April 2001

Pflege-Views Über Pflege-Views können auf einfache Weise Möglichkeiten für die Pflege komplexerAnwendungsobjekte geschaffen werden.

Für den Anwender bilden auf mehrere Tabellen verteilte Daten oft eine logische Einheit, d.h. einAnwendungsobjekt. Die Daten eines solchen Anwendungsobjekts sollen deshalb gemeinsamangezeigt, geändert und angelegt werden können. An der technischen Realisierung desAnwendungsobjekts, d.h. der Verteilung der Daten auf mehrere Tabellen, ist der Anwender in derRegel nicht interessiert.

Ein Pflege-View erlaubt es, die Daten eines Anwendungsobjekts gemeinsam zu pflegen. DieVerteilung der Daten auf die unterliegenden Datenbanktabellen findet automatisch statt. WelcheZugriffe auf die Daten der zugrundeliegenden Tabellen über den Pflege-View möglich sind, wirddurch den Pflegestatus [Seite 108] bestimmt.

Alle in einem Pflege-View zusammengefaßten Tabellen müssen über Fremdschlüssel verknüpftsein, d.h. die Join-Bedingungen werden beim Pflege-View immer aus dem Fremdschlüsselabgeleitet (siehe Fremdschlüsselbeziehung und Join-Bedingung [Seite 107]). Eine direkteEingabe der Join-Bedingungen wie bei Datenbank-Views ist nicht möglich.

Es bestehen einige Einschränkungen bzgl. der Eigenschaften der Fremdschlüssel, über die dieTabellen in einem Pflege-View verknüpft werden können (siehe Einschränkungen für Pflege- undHelp-Views [Seite 122]).

Pflege-View aufdie Tabellen

Anwendungsobjekt

Datenaustausch überden Pflege-View

F3F2F1 F4 F5 F6 F7 F8Tabelle 3Tabelle 2

Tabelle 1

Fremdschlüssel Fremdschlüssel

F1 F2 F3 F5 F8

Es steht eine standardisierte Tabellenpflege-Transaktion (SM30) zur Verfügung, die es erlaubt,Daten aus den Basistabellen eines Pflege-Views gemeinsam zu pflegen.

Page 121: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Pflege-Views

April 2001 121

Pflegemechanismen, wie Dynpros und Verarbeitungsprogramme, müssen dafür über dieTransaktion Generierung Tabellensicht (SE54) aus der Viewdefinition generiert werden. Damit istes 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].

F3F2F1 F4 F5 F6 F7 F8

Fremdschlüssel Fremdschlüssel

Pflege-View auf die Tabellen

A B C DB D E

F1 F2 F3 F5 F8Aus dem Pflege-View generierteEingabemaske

F1

F2 F5

F8F3 E

A

B

C

D

Siehe auch:Pflege-View anlegen [Seite 131]

Pflegestatus [Seite 108]

Page 122: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

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

122 April 2001

Einschränkungen für Pflege- und Help-Views Bei der Auswahl der Sekundärtabellen eines Pflege-Views oder Help-Views bestehen gewisseEinschränkungen. Die Sekundärtabellen müssen zur Primärtabelle bzw. zur transitivvorhergehenden 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 derSekundärtabellen vorhanden ist.

Primärtabelle

Sekundärtabelle 2

Sekundärtabelle 3

Sekundärtabelle 5

Sekundärtabelle 4

Sekundärtabelle 1

N:1 Abhängigkeit

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

N:1 Abhängigkeit

N:1 Abhängigkeit

Eine N:1-Abhängigkeit besteht, wenn die Sekundärtabelle die Prüftabelle im verwendetenFremdschlüssel [Seite 20] ist. Ist die Sekundärtabelle die Fremdschlüsseltabelle, so müssen dieFremdschlüsselfelder Schlüsselfelder einer Texttabelle sein oder der Fremdschlüssel muß dieKardinalität N:1 oder N:C haben (siehe Semantische Eigenschaften eines Fremdschlüssels[Seite 25]).

Page 123: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Views anlegen

April 2001 123

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

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

Page 124: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Datenbank-View anlegen

124 April 2001

Datenbank-View anlegenVorgehensweise1. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.

Sie können später beispielsweise mit dem Infosystem über diesen Kurztext nach demView suchen.

2. Geben Sie auf der Registerkarte Tabellen/Joinbedingungen im Feld Tabellen die Tabellenan, die Sie in den View aufnehmen wollen.

Beachten Sie, daß Sie in einen Datenbank-View nur transparente Tabellen aufnehmenkönnen.

3. Verbinden Sie die aufgenommenen Tabellen über Join-Bedingungen [Seite 103].

Falls zwischen den Tabellen geeignete Fremdschlüssel vorhanden sind, sollten Sie dieJoin-Bedingungen aus diesen Fremdschlüsseln übernehmen (sieheFremdschlüsselbeziehung und Join-Bedingung [Seite 107]).

Stellen Sie hierzu den Cursor auf einen Tabellenamen und betätigen Sie die DrucktasteBeziehungen. Es erscheinen nun alle für die Tabelle definierten Fremdschlüssel zuanderen Tabellen. Markieren Sie den gewünschten Fremdschlüssel und wählen Sie

Übernehmen. Die Join-Bedingung wird nun aus den Angaben im Fremdschlüsselabgeleitet.

Wenn Sie nur die zwischen zwei Tabellen bestehende Fremdschlüsselbeziehung sehenwollen, so müssen Sie diese beiden Tabellen markieren (erste Spalte desEingabebereichs Tabellen anklicken) und dann Beziehungen wählen.

4. Wählen Sie auf der Registerkarte Viewfelder die Felder aus, die Sie in den View übernehmenwollen.

Betätigen Sie die Drucktaste Tabellenfelder. In einem Dialogfenster werden nun alle imView enthaltenen Tabellen angezeigt. Wählen Sie eine Tabelle per Doppelklick aus. Eswerden nun alle in dieser Tabelle enthaltenen Felder angezeigt. Sie können darausFelder übernehmen, indem Sie diese in der ersten Spalte markieren und Übernehmenwählen.

Es ist auch möglich, eine Tabelle vollständig in den View zu includieren (siehe Includesin Datenbank-Views [Seite 113]).

5. Formulieren Sie (optional) auf der Registerkarte Selektionsbedingungen Einschränkungen fürdie über den View anzeigbaren Datensätze (siehe Selektionsbedingung des Views pflegen[Seite 135]).

Die Selektionsbedingungen bestimmen, welche Datensätze über den View selektiertwerden können.

6. Pflegen Sie (optional) über Springen � Technische Einstellungen die technischenEinstellungen 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 (sieheTechnische Einstellungen pflegen [Seite 79]). Beachten Sie, daß für Datenbank-Viewsnur die Einstellungen zur Pufferung pflegbar sind.

Page 125: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Datenbank-View anlegen

April 2001 125

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

Sie können diese Entwicklungsklasse später über Springen � Objektkatalogeintragverändern.

9. Wählen Sie .

ErgebnisBeim Aktivieren eines Datenbank-Views wird der entsprechende View auf der Datenbankautomatisch 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 oderWarnungen auftraten, wird das Aktivierungsprotokoll direkt angezeigt.

Falls die Basistabellen noch nicht auf der Datenbank angelegt sind, wird dies imAktivierungsprotokoll vermerkt. Der View wird im ABAP Dictionary trotzdem aktiv. Sie könnenden zugehörigen View auf der Datenbank in diesem Fall zu einem späteren Zeitpunkt über dasDatenbank-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 Viewsmit ausgegeben.

� Datenelement eines Viewfeldes ändern: Markieren Sie auf der Registerkarte Viewfelderdie Spalte Mod (Modifizieren). Das Feld Datenelement wird nun eingabebereit. Sie könnenhier ein Datenelement eintragen, das auf die gleiche Domäne wie das Datenelement deszugeordneten Tabellenfeldes zeigt. Nehmen Sie die Markierung des Kennzeichens Modzurück, wenn Sie wieder das Datenelement des zugeordneten Tabellenfeldes verwendenwollen.

� 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 sichanzeigen lassen, wie der View auf der Datenbank angelegt würde. Es wird das Statementangezeigt, das beim Anlegen der momentan bearbeiteten Version des Views auf derDatenbank 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 aktivenVersion des Views konsistent ist. Mit Hilfsmittel � Datenbankobjekt � Anzeigen können Siesich die Definition des Views auf der Datenbank anzeigen lassen.

� Laufzeitobjekt des Views prüfen: Über Hilfsmittel � Laufzeitobjekt � Prüfen können Sieermitteln, ob die Definition des Views in der ABAP Dictionary Pflege mit den Angaben imLaufzeitobjekt des Views identisch ist. Mit Hilfsmittel � Laufzeitobjekt � Anzeigen könnenSie sich das Laufzeitobjekt des Views anzeigen lassen.

Page 126: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Datenbank-View anlegen

126 April 2001

Siehe auch:Datenbank-Views [Seite 111]

Page 127: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Help-View anlegen

April 2001 127

Help-View anlegenVorgehensweise1. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.

Sie können später beispielsweise mit dem Infosystem über diesen Kurztext nach demView suchen.

2. Geben auf der Registerkarte Tabellen/Joinbedingungen unter Tabellen die Primärtabelle desViews 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. Siekönnen diese Entwicklungsklasse später über Zusätze � Objektkatalogeintragverä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. Eswerden alle bestehenden Fremdschlüsselbeziehungen der Primärtabelle angezeigt.Markieren Sie die gewünschten Fremdschlüssel und wählen Sie Übernehmen. Die aneinem 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 aufgenommenenSekundärtabellen über einen Fremdschlüssel verbunden sind. Stellen Sie hierzu denCursor auf die Sekundärtabelle und wählen Sie Beziehungen. Gehen Sie dann wie zuvorbeschrieben 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ürPflege- und Help-Views [Seite 122]). Die Fremdschlüssel, für die diese Bedingungenverletzt sind, werden am Ende der Liste unter der Überschrift Beziehungen mitungeeigneter Kardinalität angezeigt.

5. Wählen Sie auf der Registerkarte Viewfelder die Felder aus, die Sie in den View übernehmenwollen. 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 imView enthaltenen Tabellen aufgelistet. Wählen Sie eine Tabelle aus. Die Felder derTabelle werden nun in einem Dialogfenster eingeblendet. Markieren Sie diegewünschten Felder in der ersten Spalte und wählen Sie Übernehmen.

6. Formulieren Sie (optional) auf der Registerkarte Selektionsbedingungen einschränkendeBedingungen an die Datensätze, die über den View angezeigt werden sollen (sieheSelektionsbedingung des Views pflegen [Seite 135]).

Die Selektionsbedingungen bestimmen, welche Datensätze über den View selektiertwerden können.

Page 128: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Help-View anlegen

128 April 2001

7. Wählen Sie .

ErgebnisDer View wird nun aktiviert. Bei der Aktivierung wird ein Protokoll geschrieben, das Sie sich überHilfsmittel � Aktivierungsprotokoll anzeigen lassen können. Falls bei der Aktivierung des ViewsFehler 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 Viewsausgegeben.

� Datenelement eines Viewfeldes ändern: Kreuzen Sie hierzu die Spalte Mod (Modifikation)bei dem Viewfeld an. Das Feld Datenelement wird nun eingabebereit. Tragen Sie dorteinfach das neue Datenelement ein. Sie können hier ein Datenelement eintragen, das auf diegleiche Domäne wie das Datenelement des zugeordneten Tabellenfeldes zeigt. Nehmen Siedie Markierung des Kennzeichens Mod zurück, wenn Sie wieder das Datenelement deszugeordneten Tabellenfeldes verwenden wollen.

� Prüffunktionen: Über Zusätze � Laufzeitobjekt � Prüfen können Sie ermitteln, ob dieDefinition des Views in der ABAP Dictionary Pflege mit den Angaben im Laufzeitobjekt desViews identisch sind. Mit Zusätze � Laufzeitobjekt � Anzeigen können Sie sich dasLaufzeitobjekt des Views anzeigen lassen.

Siehe auch:Help-Views [Seite 118]

Page 129: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Projektions-View anlegen

April 2001 129

Projektions-View anlegenVorgehensweise

1. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.

Sie können später beispielsweise mit dem Infosystem über diesen Kurztext nach demView 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 einemDialogfenster eingeblendet. Sie können daraus Felder übernehmen, indem Sie diese inder ersten Spalte markieren und Übernehmen wählen.

4. Sichern Sie ihre Eingaben.

Sie werden dabei aufgefordert, dem View eine Entwicklungsklasse zuzuordnen. Siekönnen diese Entwicklungsklasse später über Springen � Objektkatalogeintragverändern.

5. Wählen Sie .

ErgebnisDer 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 desViews 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 Viewsausgegeben.

� Datenelement eines Viewfeldes ändern: Markieren Sie die Spalte Mod (Modifikation) beidem betroffenen Viewfeld. Das Feld Datenelement wird nun eingabebereit. Sie können hierein Datenelement eintragen, das auf die gleiche Domäne wie das Datenelement deszugeordneten Tabellenfeldes zeigt. Nehmen Sie die Markierung des Kennzeichens Modzurück, wenn Sie wieder das Datenelement des zugeordneten Tabellenfeldes verwendenwollen.

� Pflegestatus ändern: Der Pflegestatus [Seite 108] bestimmt, wie Sie aus ABAPProgrammen 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 denPflegestatus des Views auswählen können.

� Prüffunktionen: Über Hilfsmittel � Laufzeitobjekt � Prüfen können Sie ermitteln, ob dieDefinition des Views in der ABAP Dictionary Pflege mit den Angaben im Laufzeitobjekt desViews identisch sind. Mit Hilfsmittel � Laufzeitobjekt � Anzeigen können Sie sich dasLaufzeitobjekt des Views anzeigen lassen.

Siehe auch:

Page 130: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Projektions-View anlegen

130 April 2001

Projektions-Views [Seite 117]

Page 131: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Pflege-View anlegen

April 2001 131

Pflege-View anlegenVorgehensweise1. Tragen Sie im Feld Kurzbeschreibung einen erläuternden Kurztext ein.

Sie können später beispielsweise mit dem Infosystem über diesen Kurztext nach demView suchen.

2. Geben Sie auf der Registerkarte Tabellen/Joinbedingungen unter Tabellen die Primärtabelledes Views an.

Es können nur solche Tabellen in den Pflege-View aufgenommen werden, die mit derPrimä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 werdenalle bestehenden Fremdschlüsselbeziehungen der Primärtabelle angezeigt. Kreuzen Siedie gewünschten Fremdschlüssel an und wählen Sie Übernehmen. Die an einemsolchen Fremdschlüssel beteiligte Sekundärtabelle wird in den View übernommen. Dieaus den Fremdschlüsseln abgeleiteten Join-Bedingungen (Fremdschlüsselbeziehungund Join-Bedingung [Seite 107]) werden angezeigt.

Sie können auch Tabellen aufnehmen, die mit einer der bisher aufgenommenenSekundärtabellen über einen Fremdschlüssel verbunden sind. Stellen Sie hierzu denCursor auf die Sekundärtabelle und betätigen Sie Beziehungen. Gehen Sie dann wieoben 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ürPflege- und Help-Views [Seite 122]). Die Fremdschlüssel, für die diese Bedingungenverletzt sind, werden am Ende der Liste unter der Überschrift Beziehungen mitungeeigneter Kardinalität angezeigt.

4. Wählen Sie auf der Registerkarte Viewfelder die Felder aus, die Sie in den View übernehmenwollen.

Betätigen Sie die Drucktaste Tabellenfelder. In einem Dialogfenster werden alle im Viewenthaltenen Tabellen angezeigt. Wählen Sie eine Tabelle aus. Die Felder der Tabellewerden nun in einem Dialogfenster eingeblendet. Sie können daraus Felderübernehmen, indem Sie diese in der ersten Spalte markieren und Übernehmenwählen.

Alle Schlüsselfelder der Primärtabelle müssen in einen Pflege-View aufgenommenwerden. Zusätzlich müssen alle Schlüsselfelder von Sekundärtabellen, die nicht amFremdschlüssel beteiligt sind (d.h. nicht über eine Join-Bedingung mit einem bereits inden View aufgenommenen Schlüsselfeld verbunden sind), in den View aufgenommenwerden.

Damit wird sichergestellt, daß die über einen Pflege-View eingefügten Sätze korrekt indie im View enthaltenen Tabellen geschrieben werden können.

5. Formulieren Sie (optional) auf der Registerkarte Selektionsbedingungen Einschränkungen andie Datensätze, die über den View angezeigt werden können (siehe Selektionsbedingungdes Views pflegen [Seite 135]).

Page 132: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Pflege-View anlegen

132 April 2001

Die Selektionsbedingungen legen fest, welche Datensätze über den View selektiertwerden 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 dieViewdaten 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 ViewsFehler 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ächengenerieren, die die Verteilung der über den View eingegebenen Daten auf dieBasistabellen des Views übernehmen. Genauere Informationen finden Sie in Erstellungeines 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 Viewsausgegeben.

� 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 einDatenelement eintragen, das auf die gleiche Domäne wie das Datenelement deszugeordneten Tabellenfeldes zeigt. Nehmen Sie die Markierung des Kennzeichens Modzurück, wenn Sie wieder das Datenelement des zugeordneten Tabellenfeldes verwendenwollen.

� Auslieferungsklasse des Views angeben: Wählen Sie auf der Registerkarte Pflegestatusdie Auslieferungsklasse [Seite 134] des Pflege-Views.

� Pflegemerkmal eines Viewfeldes angeben: Sie können auf der Registerkarte Viewfelder inder Spalte F das Pflegemerkmal [Seite 133] des Viewfeldes angeben.

� Prüffunktionen: Über Zusätze � Laufzeitobjekt � Prüfen können Sie ermitteln, ob dieDefinition des Views in der ABAP Dictionary Pflege mit den Angaben im Laufzeitobjekt desViews identisch sind. Mit Zusätze � Laufzeitobjekt � Anzeigen können Sie sich dasLaufzeitobjekt des Views anzeigen lassen.

Siehe auch:Pflege-Views [Seite 120]

BC - Generieren Tabellenpflegedialog [Extern]

Page 133: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Pflegemerkmal eines Viewfeldes

April 2001 133

Pflegemerkmal eines ViewfeldesFür ein Feld eines Pflege-Views kann über das Pflegemerkmal gesteuert werden, wie auf dasFeld zugegriffen werden kann. Es sind folgende Pflegemerkmale möglich:

� R : Für ein so gekennzeichnetes Feld sind nur rein lesende Zugriffe erlaubt. Eine Pflege mitder Transaktion SM30 ist für solche Felder nicht möglich.

� S : Ein so gekennzeichnetes Feld dient der Bildung von Teilmengen (Subsets) bei der Pflegevon View-Daten. Dabei wird nur eine Teilmenge von Daten angezeigt, die durch die Eingabeeines 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 Feldermuß individuell gesorgt werden. Standardmäßig bleiben solche Felder sonst leer.

� : Es bestehen keine Einschränkungen bzgl. der Feldpflege.

Page 134: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Auslieferungsklasse eines Pflege-Views

134 April 2001

Auslieferungsklasse eines Pflege-ViewsDie Auslieferungsklasse eines Pflege-Views wird in der Erweiterten Tabellenpflege (SM30)ausgewertet. Falls für den Pflege-View eine Pflegeoberfläche generiert wird, werden bei derEingabe von Viewdaten über diese Oberfläche folgende Informationen ausgewertet:

� Für Pflege-Views der Auslieferungsklassen E bzw. G wird geprüft, ob die eingegebenenDaten 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 undbeim Transport zwischen Kundensystemen behandelt werden, ist ausschließlich durch dieAuslieferungsklasse der entsprechenden Basistabelle [Seite 82] des Views bestimmt.

Page 135: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Selektionsbedingung des Views pflegen

April 2001 135

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

Vorgehensweise1. In jeder Zeile auf der Registerkarte Selektionsbedingungen können Sie eine Bedingung

folgender Form eingeben:

Tabelle, Feldname, Operator, Vergleichswert, AND/OR2. 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. Diezulässigen Operatoren können Sie über die F4-Hilfe ermitteln.

Vergleichswert: Konstanter Wert, mit dem der Feldwert verglichen wird. AlsVergleichswerte sind je nach Datentyp des Feldes Text-Literale, die in Hochkommataeingeschlossen 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, direkteintragen oder über die Drucktaste Tabellenfelder übernehmen.

3. Falls Sie mehrere Selektionsbedingungen eingeben, müssen Sie diese über AND bzw. ORverknüpfen.

OR-Verknüpfungen sind dabei nur zwischen Zeilen zulässig, die sich auf das gleicheFeld beziehen. Beachten Sie, daß deshalb hier OR stärker bindet als AND. DieBedingung <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 Tabellenformulieren. Es spielt dabei keine Rolle, ob diese Felder in den View aufgenommenwurden oder nicht.

Page 136: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Append-View anlegen

136 April 2001

Append-View anlegen1. 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 eintragenmüssen. Dieser Name sollte im Kundennamensraum (bzw. im Namensraum desPartners oder der Sonderentwicklung) liegen.

3. Wählen Sie .

Sie verzweigen ins Pflegebild des Append-Views. Dort sehen Sie im Bereich Tabellen die imView enthaltenen Tabellen aufgelistet. Sie können nun über den Append-View weitere Felderdieser Tabellen in den zugrundeliegenden Datenbank-View aufnehmen. Das Hinzufügen weitererTabellen 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 zugrundeliegendenDatenbank-Views beschreiben.

2. Stellen Sie den Cursor auf den Namen der Tabelle aus der Sie zusätzliche Felder in denAppend-View aufnehmen wollen. Wählen Sie dann Tabellenfelder.

Eine Liste aller Felder der Tabelle erscheint. Bereits im View enthaltene Felder sindin der ersten Spalte markiert.

3. Markieren Sie die Felder, die Sie zusätzlich in den View aufnehmen wollen, in der erstenSpalte. 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 aktiviertund die neuen Felder werden auf der Datenbank an den View angehängt.

Page 137: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Views löschen

April 2001 137

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

Vorgehensweise1. 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öschauftragnochmals zu bestätigen.

3. Bestätigen Sie den Löschauftrag.

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

Page 138: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Beispiel zu Views

138 April 2001

Beispiel zu ViewsReisebü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 dieTabellen SCUSTOM, SBOOK und SPFLI angelegt werden.

Zu einer Kundennummer (ID) aus der Tabelle SCUSTOM können alle Buchungen ermitteltwerden, 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 CARRID CONNID FLDATE BOOKID CUSTOMID ... SBOOK

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

001

001

SCUSTOMMANDT ID CITYNAME ...

122356 Smith New York001 ...

122356

122356

...

...

001

001

New York

TokyoBerlin

BerlinAA

AA

LH

LH

48

324

324

48

...

...

...

...

3689

3690

...

...

...

...

Page 139: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Beispiel zu Views

April 2001 139

Die Joinbedingungen können auch aus den bestehenden Fremdschlüsselbeziehungen zwischenden 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, kannman dies über die Selektionsbedingung SBOOK-CANCELLED <> ‘X’ erreichen.

Struktur des Views SCUS_BOOK für dieFlugbuchungen der Kunden

MANDT ID NAME CITY CARRID CONNID FLDATE BOOKID CITYFROM CITYTO

001

001

122356 Smith New York AA 48 3689 New York Berlin

122356 Smith New York LH 324 3690 Berlin Tokyo

SCUSTOM SBOOK SPFLI

Datenselektion über den View SCUS_BOOKEin View kann in einem ABAP Programm zur Selektion von Daten benutzt werden.

Das folgende Beispielprogramm ermittelt die für einen Kunden bestehenden Flugbuchungen. DieDaten werden dabei über den View SCUS_BOOK selektiert.

Page 140: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Beispiel zu Views

140 April 2001

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.

Page 141: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Typen

April 2001 141

TypenBenutzerdefinierte Datentypen können programmübergreifend im ABAP Dictionary abgelegtwerden. Diese benutzerdefinierten Typen bieten die gleiche Funktionalität, wie die in ABAPProgrammen mit TYPES definierbaren lokalen Typen (siehe Datentypen und Datenobjekte[Extern]).

Die im ABAP Dictionary global definierten Typen sind in ABAP Programmen mit TYPEansprechbar. Auf die im ABAP Dictionary definierten Typen kann auch bei der Typisierung derSchnittstelle eines Funktionsbausteins Bezug genommen werden.

ADRESSEORT

PLZ ORTSNAME

NAMEVORNAME NACHNAME

STRNAME HAUSNR

STRASSE

Strukturierter Typ PERSON im ABAP Dictionary

ABAP Report

...

...

ÜbernimmtTypdefinition aus demABAP Dictionary

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 allenbetroffenen Stellen nachgezogen. ABAP Programme passen sich beispielsweise beimNeugenerieren an die veränderten Typdefinitionen an. Wird ein Typ geändert, so werden bei derAktivierung alle Objekte (z.B. Typen oder Tabellen) ermittelt, die diesen verwenden. Diegefundenen Objekte werden dann automatisch an die Änderung angepaßt.

Alle Typen haben ein Laufzeitobjekt [Seite 245]. Dieses Laufzeitobjekt wird bei der erstmaligenAktivierung des Typs erzeugt und danach bei jeder erneuten Aktivierung an die aktuelleTypdefinition angepaßt.

Bei der Typdefinition im ABAP Dictionary ist es möglich semantische Informationen zu einem Typzu erfassen. Zum Beispiel Texte, die bei der F1-Hilfe angezeigt werden, Texte für dieVerwendung auf Dynpros, Suchhilfen oder auch technische Dokumentation.

Es gibt drei unterschiedliche Arten von Typen:

� Datenelemente [Seite 143] (elementare Typen und Referenztypen).

Page 142: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Typen

142 April 2001

� Strukturen [Seite 149] (strukturierte Typen): Eine Struktur besteht aus Komponenten, dieebenfalls typisiert sind, d.h. auf einen Typ verweisen.

� Tabellentypen [Seite 154]: Ein Tabellentyp beschreibt den Aufbau und die funktionalenEigenschaften einer internen Tabelle. Ein Spezialfall sind die Ranges-Tabellentypen [Seite162].

Alle Typen liegen in einem gemeinsamen Namensraum. Damit kann beispielsweise für einDatenelement keine Struktur bzw. kein Tabellentyp gleichen Namens angelegt werden.

Bei der Verwendung in Programmen verschatten die lokal im Programm definierten Typen diegleichnamigen globalen Typen aus dem ABAP Dictionary.

Page 143: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Datenelemente

April 2001 143

DatenelementeEin Datenelement beschreibt entweder einen elementaren Typ oder einen Referenztyp.

Ein elementarer Typ ist durch den eingebauten Datentyp, die Länge und gegebenenfalls dieAnzahl der Dezimalstellen definiert. Diese Typeigenschaften können entweder direkt beimDatenelement angegeben oder aus einer Domäne [Seite 166] übernommen werden.

Ein Referenztyp dient zur Typisierung von Referenzvariablen, die Zeiger auf Objekte oderInterfaces enthalten. Ein Referenztyp ist durch Angabe einer vorhandenen Klasse oder einesvorhandenen Interfaces definiert. Es ist auch möglich eine generische Referenz auf Objekte oderDatenobjekte anzugeben.

Ein Datenelement kann verwendet werden, um Tabellenfelder, Strukturkomponenten oder denZeilentyp eines Tabellentyps zu typisieren. Ein Datenelement kann auch in ABAP Programmenmit 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. einerStrukturkomponente und Informationen zur Aufbereitung des zugehörigen Feldes auf Dynproszugeordnet werden. Diese Informationen stehen dann automatisch für alle Dynprofelder zurVerfügung, die auf das Datenelement zeigen.

Diese Informationen umfassen die Darstellung des Feldes auf Eingabemasken durchSchlüsselworttexte, Spaltenüberschriften bei Listausgaben des Tabelleninhalts (sieheFeldbezeichner [Seite 148]) und die Aufbereitung der Ausgabe durch Parameter-IDs.

Dies gilt auch für die Online-Felddokumentation. Der bei der Feldhilfe (F1-Hilfe) erscheinendeText (siehe Dokumentation und Doku-Status [Seite 147]) auf einem Feld einer Eingabemaskestammt aus dem entsprechenden Datenelement.

Das Feld CONNID (Flugklasse) der Tabelle SBOOK zeigt auf das DatenelementS_CONN_ID. Dieses Datenelement übernimmt seine technischen Eigenschaften(Datentyp NUMC, Feldlänge 4) aus der Domäne S_CONN_ID. Das DatenelementS_CONN_ID beschreibt die technischen Eigenschaften und die Bedeutung (übereinen zugeordneten Langtext und erklärende Kurztexte) des Feldes CONNID (undaller anderen Felder, die auf dieses Datenelement verweisen).

In einem ABAP Programm kann mit der Anweisung DATA CONNID TYPES_CONN_ID eine Variable vom Typ des Datenelements S_CONN_ID definiertwerden.

Page 144: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Datenelemente

144 April 2001

DomäneS_CONN_ID

DatenelementS_CONN_ID

Tabelle SBOOK Tabelle SFLIGHT Tabelle SPFLICONNID CONNID CONNID

Übernimmt Datentyp, Längeund evtl. Anzahl derDezimalstellen aus Domäne

ÜbernehmenFeldbedeutung ausDatenelement

Siehe auch:Datenelement anlegen [Seite 145]

Page 145: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Datenelement anlegen

April 2001 145

Datenelement anlegenVorgehensweise1. 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 diesesDatenelement verweisen.

4. Definieren Sie auf der Registerkarte Definition den Datentyp [Seite 248], die Zahl der Stellenund gegebenenfalls die Anzahl der Dezimalstellen des Datenelements. Sie können dieseEigenschaften durch Angabe einer Domäne oder durch direkte Typeingabe vornehmen.

Falls das Datenelement die Typeigenschaften einer Domäne übernehmen soll, genügtes Domäne zu markieren und den Namen der Domäne im zugehörigen Feldeinzutragen. Sie können hier auch eine neue Domäne angeben und durch Doppelkick indie Domänenpflege navigieren, um diese anzulegen (siehe Domäne anlegen [Seite173]).

Falls Sie die Typeigenschaften direkt eingeben wollen, markieren Sie DirekteTypeingabe. Damit werden die Felder Datentyp, Zahl der Stellen und Dezimalstelleneingabebereit.

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 desInterfaces im Feld Referenz auf ein. Sie können auch OBJECT oder DATA eintragen,falls das Datenelement eine generische Referenz auf Objekte oder Datenobjekterealisieren 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, dieauf dieses Datenelement verweisen, verwendet werden.

6. Sichern Sie das Datenelement.

Sie werden dabei aufgefordert, dem Datenelement eine Entwicklungsklasse zuzuordnen.

7. Wählen Sie .

ErgebnisDas Datenelement wird aktiviert. Informationen über den Ablauf der Aktivierung finden Sie imAktivierungsprotokoll, das Sie sich über Hilfsmittel � Aktivierungsprotokoll anzeigen lassenkönnen. Falls bei der Aktivierung des Datenelements Fehler auftraten, wird dasAktivierungsprotokoll automatisch angezeigt.

Page 146: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Datenelement anlegen

146 April 2001

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 allenDynprofeldern angezeigt, die auf dieses Datenelement verweisen. Sie sollten deshalb nurdann 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 Dynprofeldernangeboten, die auf dieses Datenelement zeigen (siehe Anbindung einer Suchhilfe an einDatenelement [Seite 188]). Für die Zuordnung der Suchhilfe müssen Sie in derDatenelementpflege deren Namen und im Feld Parameter noch einen Exportparameter derSuchhilfe angeben.

� Parameter-Id zuordnen: Über eine Parameter-Id kann ein Feld mit Vorschlagswerten ausdem SAP-Memory gefüllt werden. Ein Dynprofeld wird nur dann automatisch mit dem unterder 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 kanndieser Buchungskreis zu Beginn einer Transaktion unter der entsprechendenParameter-Id im Memory gespeichert werden. In allen nachfolgendenBildschirmmasken werden Felder, die auf das Datenelement Buchungskreisverweisen, dann automatisch mit dem Wert 001 gefüllt. Hierzu muß nur imDatenelement für den Buchungskreis die entsprechende Parameter-Id eingetragenwerden.

� Default-Komponentenname zuordnen: Sie können beim Datenelement einen Vorschlagfür die Namen der Tabellenfelder bzw. Strukturkomponenten hinterlegen, die auf diesesDatenelement verweisen. Verwenden Sie nach Möglichkeit einen englischsprachigenDefaultnamen. Für Komponenten in BAPI-Strukturen (Strukturen mit festgelegterSchnittstelle) sollte dann stets dieser Defaultname verwendet werden. Dies führt zu einereinheitlicheren Vergabe von Feld- bzw. Komponentennamen.

� Datenelement als relevant für Änderungsbelege kennzeichnen: Die Daten einesbetriebswirtschaftlichen Objekts sind oft auf mehrere Tabellen verteilt. Damit Änderungen andiesem betriebswirtschaftlichen Objekt verfolgt werden können, können diese Tabellen ineinem Änderungsbelegobjekt zusammengefaßt werden. Aus einem solchenÄnderungsbelegobjekt werden Funktionsbausteine generiert, die in die entsprechendenAnwendungsprogramme integriert werden können und die Protokollierung der Änderungenübernehmen. Ein geänderter Feldinhalt wird nur dann protokolliert, wenn beim Datenelementdes Feldes das Kennzeichen Änderungsbeleg markiert ist.

Page 147: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Dokumentation und Doku-Status

April 2001 147

Dokumentation und Doku-StatusDie zu einem Datenelement erfaßte Dokumentation erscheint bei der Betätigung der F1-Hilfe aufjedem Dynprofeld, welches auf dieses Datenelement verweist. Ist keine Dokumentation zumDatenelement vorhanden, so erscheint bei der F1-Hilfe nur der Kurztext des Datenelements.Datenelemente, die auf Eingabemasken verwendet werden, sollten daher in der Regeldokumentiert werden.

CONNID

CLASS

Pflege einer Flugbuchung

Tabelle SBOOK

CONNID

Datenelement S_CONN_IDDokumentation zumDatenelement

...

...

Code der FlugverbindungKurztext

DefinitionVierstelliger Code, dereine Flugverbindungzwischen zwei Städtendefiniert.

Aufruf der F1-Hilfe

Anzeige derDokumentation desDatenelements

Der Doku-Status bestimmt, inwieweit für ein Datenelement schon Dokumentation erfaßt wurdebzw. ob Gründe vorliegen, die dies unnötig erscheinen lassen. Sie können sich den Doku-Statuseines Datenelements im Pflegebild des Datenelements über Springen � Dokumentation �Status anzeigen lassen.

Folgende Statusangaben sind möglich:

� Objekt wird dokumentiert: Standardeinstellung. Dokumentation ist entweder schonvorhanden 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.

Page 148: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Feldbezeichner

148 April 2001

FeldbezeichnerEinem Datenelement können über die Feldbezeichner Textinformationen zugeordnet werden.

Die Feldbezeichner werden zur Darstellung eines Bildschirmfeldes verwendet. Bei der Definitioneines Dynpros im Screen Painter können Strukturkomponenten und Tabellenfelder aus demABAP Dictionary auf die Eingabemaske übernommen werden (Funktion Holen aus Dictionary).Ein Feld kann dabei zusätzlich mit einem Feldbezeichner versehen werden, der aus demDatenelement des Feldes stammt.

Die Texte der Feldbezeichner können mit den Übersetzungswerkzeugen zentral übersetztwerden. Die Texte werden dann in der jeweiligen Anmeldesprache des Benutzers auf derEingabemaske angezeigt.

Kurzer, mittlerer und langer FeldbezeichnerSchlüsselwörter in verschiedenen Längen für die Bezeichnung von Bildschirmfeldern. Da je nachGestaltung einer Eingabemaske mehr oder weniger Platz für solche Texte zur Verfügung stehenkann, können die Textinformationen in drei verschiedenen Längen angegeben werden.

Jedem Feldbezeichner muß eine maximale Länge zugeordnet werden. Diese ist dannObergrenze für die Längen aller Übersetzungen des eingegebenen Textes. Deshalb sollte diemaximale Länge des Feldbezeichners nach Möglichkeit etwas länger als der eingegebene Textin der Originalsprache sein.

ÜberschriftDieser Text wird als Spaltenüberschrift bei der Ausgabe der Feldinhalte als Liste im DataBrowser verwendet. Er kann im Screen Painter ebenfalls einem Feld zugeordnet werden.

Auch der Überschrift muß eine maximale Länge zugeordnet werden. Diese ist dann Obergrenzefü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 derentsprechenden Spalte eingeblendet wird. Deshalb sollte die Länge der Überschrift nachMöglichkeit die Länge des Datenelements nicht überschreiten.

Page 149: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Strukturen

April 2001 149

StrukturenEine Struktur (strukturierter Typ) setzt sich aus Komponenten (Feldern) zusammen. DieKomponenten sind typisiert. Eine Komponente kann dabei auf einen elementaren Typ (über einDatenelement oder durch direkte Angabe von Datentyp und Länge in der Strukturdefinition), eineandere Struktur oder einen Tabellentyp verweisen. Eine Struktur kann also beliebig geschachteltsein.

Strukturen werden zur Definition der Daten an der Schnittstelle von Modulpools und Dynprossowie für die Typisierung der Parameter von Funktionsbausteinen genutzt.

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

PERSON

NAME

ADRESSE

VORNAME

NACHNAME

NAME

STRASSE

ORT

ADRESSE

ORT

ORTSNAME

POSTLEITZAHL

STRASSESTRASSENNAME

HAUSNUMMER

Die zentrale Definition mehrfach genutzter Strukturen ermöglicht deren zentrale Änderung, diedurch das aktive ABAP Dictionary dann an allen betroffenen Stellen nachgezogen wird. ABAPProgramme oder Bildschirmmasken, die eine Struktur verwenden, werden bei einer Änderungder Struktur automatisch angepaßt (siehe Laufzeitobjekte [Seite 245]). Damit wird auch beikomplexen Programmen ein Höchstmaß an Konsistenz der Datendefinition erreicht.

Man kann zwischen flachen, geschachtelten und tiefen Strukturen unterscheiden. Eine flacheStruktur referiert ausschließlich elementare Typen. Eine geschachtelte Struktur referiert

Page 150: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Strukturen

150 April 2001

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

Flache Struktur

Tiefe Struktur

Geschachtelte Struktur

Feld A Feld B

Feld A Feld B

Feld A Feld B

Feld C Feld D

Typreferenz aufandere Struktur

Typreferenz aufTabellentyp

Feld C Feld D

In einer Datenbanktabelle können Sie ausschließlich flache Strukturen alsUnterstruktur inkludieren [Seite 89].

Siehe auch:Struktur anlegen [Seite 151]

Page 151: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Struktur anlegen

April 2001 151

Struktur anlegenVorgehensweise1. 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 derStruktur suchen.

Führen Sie die folgenden Schritte für alle Komponenten durch, die Sie in die Strukturaufnehmen wollen.

Sie können statt einzelner Komponenten auch Strukturen, Tabellen oder Viewsinkludieren. 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 Tabelleaufnehmen wollen, dürfen die Komponentennamen höchstens 16-stellig sein.

5. Tragen Sie im Feld Komponententyp den Namen des Typs ein, dessen Eigenschaften dieKomponente übernehmen soll. Es kann hier ein beliebiger Typ (Datenelement, Struktur oderTabellentyp) eingegeben werden.

Sie können auch Komponenten durch direkte Angabe von Datentyp und Längeaufnehmen. Wählen Sie hierzu Eingebauter Typ. Die Felder DTyp, Länge, DezStellenund Kurzbeschreibung werden nun eingabebereit. Mit Komponententyp können Siewieder auf die Eingabe von Verweisen auf vorhandene Typen umschalten.

Sie können Komponenten mit direkter Angabe des Typs und Komponenten, die durchVerweis auf einen vorhandenen Typ spezifiziert werden, beliebig miteinanderkombinieren.

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 (sieheFremdschlü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. Siekönnen die Entwicklungsklasse später über Springen � Objektkatalogeintrag ändern.

9. Wählen Sie .

Page 152: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Struktur anlegen

152 April 2001

ErgebnisDie Struktur wird nun aktiviert. Dabei wird das Laufzeitobjekt der Struktur erzeugt. Bei derAktivierung wird ein Protokoll geschrieben, das Sie sich über Hilfsmittel � Aktivierungsprotokollanzeigen lassen können. Falls bei der Aktivierung der Struktur Fehler auftraten, wird dasAktivierungsprotokoll 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 mitausgegeben.

� Suchhilfe zuordnen: Sie können der Struktur eine Suchhilfe zuordnen. Diese Suchhilfe wirddann beim Betätigen der Eingabehilfe (F4-Hilfe) auf allen Bildschirmfeldern angeboten, dieauf dieses Strukturfeld zeigen (siehe Anbindung einer Suchhilfe an ein Tabellenfeld [Seite192]). 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 derSuchhilfeparameter zu Strukturfeldern. Hierbei wird versucht einem Suchhilfeparameterein Strukturfeld mit gleicher Domäne zuzuordnen. Falls kein solches Feld existiert, bleibtdie 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 dieSuchhilfe zugeordnet wurde) verändern, indem Sie einem Suchhilfeparameter einStrukturfeld 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 vomABAP Dictionary aus aktiviert werden kann oder ob das Laufzeitobjekt der Struktur vorher miteinem C-Programm erzeugt werden muß. Die Angabe einer Aktivierungsart ist nur fürStrukturen der Laufzeitumgebung wichtig. Sie können die Aktivierungsart über Zusätze �Aktivierungsart angeben.

Page 153: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Benannte Includes

April 2001 153

Benannte IncludesWird zur Definition einer Datenbanktabelle oder Struktur ein Include [Seite 17] verwendet, kannder inkludierten Teilstruktur ein Name zugeordnet werden. Über diesen Namen kann die Gruppeder 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 derStruktur ADDRESS ansprechen. Das inkludierte Feld CITY kann dann alternativ überPERSON-CITY oder PERSON-ADR-CITY angesprochen werden.

Es ist möglich, eine Struktur mehrfach zu inkludieren (z.B. in Periodengruppen). Da hierbei derdirekte Zugriff über Feldnamen zulässig bleiben soll, müssen die inkludierten Feldnamen ausEindeutigkeitsgründen umbenannt werden.

Hierfür läßt sich jeder Gruppe ein Suffix zuordnen, um den die Namen der Gruppenfeldererweitert 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 istdie Privatadresse mit Suffix H und Namen ADRH. Die andere Adresse ist dieGeschäftsadresse mit Suffix W und Namen ADRW. Auf das Feld CITY in derPrivatadresse kann dann über PERSON-CITYH oder PERSON-ADRH-CITYzugegriffen werden.

Die Funktionalität der benannten Includes im ABAP Dictionary entspricht dem ABAP-KonstruktINCLUDE TYPE ... AS ... RENAMING ... .

Page 154: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Tabellentypen

154 April 2001

TabellentypenEin Tabellentyp beschreibt den Aufbau und die funktionalen Eigenschaften einer internen Tabelleim ABAP. Auf einen im ABAP Dictionary definierten Tabellentypen TTYP kann in ABAPProgrammen mit der Anweisung DATA <inttab> TYPE TTYP referiert werden. Dadurch wird imProgramm eine interne Tabelle <inttab> mit den für TTYP im ABAP Dictionary definiertenEigenschaften angelegt.

Ein Tabellentyp ist bestimmt durch:

� seinen Zeilentyp, der Aufbau und Datentypeigenschaften einer Zeile der internen Tabellebestimmt

� die Verwaltung und die Zugriffsmöglichkeiten (Zugriffsart [Seite 159]) auf die Daten derinternen Tabelle

� den Schlüssel (Schlüsseldefinition [Seite 160] und Schlüsselart [Seite 158]) der internenTabelle

Der Zeilentyp wird durch direkte Eingabe von Datentyp, Länge und Zahl der Dezimalstellen oderdurch 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 STRAFeld 1 Feld 2 Feld 3 Feld 4

Feld 1 Feld 2 Feld 3 Feld 4Struktur STRA

Zeilentyp wird durchReferenz auf die StrukturSTRA festgelegt

Zugriffsart und Schlüsselbestimmen, wie die Daten inTABTYPE verwaltet werden undwie auf die Daten zugegriffen wird

Der in der Abbildung dargestellte Tabellentyp TABTYPE kann mit der AnweisungDATA <name> TYPE TABTYPE in ABAP Programmen zur Definition einer internenTabelle <name> verwendet werden.

Mit TYPES <name> TYPE TABTYPE kann im Programm ein lokaler Typ <name>definiert werden, der die Eigenschaften des Typs TABTYPE übernimmt.

Page 155: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Tabellentypen

April 2001 155

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

Siehe auch:Tabellentyp anlegen [Seite 156]

Page 156: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Tabellentyp anlegen

156 April 2001

Tabellentyp anlegenVorgehensweise1. 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 demTabellentyp suchen.

Sie müssen nun den Aufbau einer Zeile des Tabellentyps (Zeilentyp), die Möglichkeitenauf Daten in der dadurch definierten internen Tabelle zuzugreifen (Zugriffsart) und denSchlü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 KennzeichenZeilentyp markieren und den Namen des Typs im dahinterstehenden Feld eintragen.

Falls Sie direkt den Datentyp, die Feldlänge und gegebenenfalls die Anzahl derDezimalstellen eingeben möchten, müssen Sie das Kennzeichen Eingebauter Typmarkieren. Die Felder Datentyp, Zahl der Stellen und Dezimalstellen werden damiteingabebereit.

5. Definieren Sie die Zugriffsart [Seite 159] des Tabellentyps.

Damit legen Sie fest, wie in ABAP Programmen auf die Daten in einer über denTabellentyp 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 dieSchlüsselart [Seite 160] festgelegt.

Falls Sie Schlüsselkomponenten markieren, können Sie den Schlüssel des Tabellentypsim gleichnamigen Eingabebereich direkt angeben. Diese Option ist nur möglich, wennder Zeilentyp des Tabellentyps eine Struktur, eine Tabelle oder ein View ist.

Mit Komponenten auswählen können Sie sich alle Komponenten des Zeilentypsanzeigen lassen. Markieren Sie die Komponenten, die Sie in den Schlüssel übernehmenwollen 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 .

Page 157: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Tabellentyp anlegen

April 2001 157

ErgebnisDer 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, wirddas 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 OnlineHilfesystem 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 desABAP Dictionary konsistent ist.

Page 158: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Schlüsseldefinition eines Tabellentyps

158 April 2001

Schlüsseldefinition eines TabellentypsBei der Definition eines Tabellentyps muß angegeben werden, welcher Schlüssel für denTabellentyp verwendet werden soll.

Es gibt folgende Möglichkeiten:

� Standardschlüssel: Der Aufbau des Schlüssels hängt von der Art des Zeilentyps ab. Beieinem strukturierten Zeilentyp besteht der Standardschlüssel aus allen zeichenartigenKomponenten der Tabellenzeile. Bei einem elementaren Zeilentyp oder einem Referenztypals Zeilentyp besteht der Standardschlüssel aus der gesamten Tabellenzeile. Bei einemTabellentyp als Zeilentyp ist der Standardschlüssel leer. Man beachte, daß nur bei derZugriffsart 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.

Page 159: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Zugriffsart

April 2001 159

ZugriffsartDie Zugriffsart bestimmt, wie auf die Daten in der durch den Tabellentyp definierten internenTabelle bei generischen Schlüsseloperationen (READ TABLE, INSERT TABLE, MODIFYTABLE, 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 derinternen Tabelle ab.

In der Regel sollte über Index-Operationen auf eine Standard-Tabelle zugegriffenwerden.

� Sortierte Tabelle:Die Tabelle wird intern stets nach ihrem Schlüssel sortiert gehalten. Der Schlüsselzugriffauf eine sortierte Tabelle kann damit mit binärer Suche erfolgen. Bei nicht eindeutigemSchlüssel wird auf den Eintrag mit dem niedrigsten Index zugegriffen. Die Zeit, die füreinen Zugriff benötigt wird, hängt logarithmisch von der Anzahl der Einträge der internenTabelle ab.

Auf Sortierte-Tabellen sind auch Index-Zugriffe erlaubt. In der Regel sollte auf eineSortierte-Tabelle aber über ihren Schlüssel zugegriffen werden.

� Hash-Tabelle:Die Tabelle wird intern mit einem Hash-Verfahren verwaltet. Alle Einträge müssen eineneindeutigen Schlüssel besitzen. Die Zeit, die für einen Schlüsselzugriff benötigt wird, istkonstant, 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 übergenerische 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 zurTypisierung von generischen Parametern einer FORM (Unterprogramm) oder einesFunktionsbausteins 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 derSchnittmenge 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 eingenerischer Tabellentyp [Seite 161] der nicht zur Definition von Datenobjekten oderTypen in Programmen verwendet werden kann.

Page 160: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Schlüsselart

160 April 2001

SchlüsselartDie Schlüsselart legt fest, ob die durch den Tabellentyp bestimmte interne Tabelle nur Sätze miteindeutigem 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 eingenerischer 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 einerHash-Tabelle nicht spezifiziert, so muß auch die Schlüsselart nicht spezifiziert gewählt werden.

Page 161: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Generische Tabellentypen

April 2001 161

Generische TabellentypenEin 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 beiFunktionsbausteinen und Forms verwendet.

Wird ein generische Tabellentyp mit Zugriffsart Indextabelle als Parameter einesFunktionsbausteins verwendet, so kann beim Aufruf sowohl eine sortierte Tabelle alsauch 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 Tabelledefinieren, können sie nicht zur Definition von Datenobjekten (mit DATA) oder Typen (überTYPE) verwendet werden.

Page 162: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Ranges-Tabellentypen

162 April 2001

Ranges-TabellentypenEin Ranges-Tabellentyp ist ein Spezialfall eines Tabellentyps. Ein Ranges-Tabellentypbeschreibt die Struktur einer internen Tabelle zur Verwaltung von komplexen Bereichen, d.h. denTyp einer internen Ranges-Tabelle im ABAP.

Ranges-Tabellen können z.B. in logischen Bedingungen (IN-Operator) bei den AnweisungenSELECT, IF, WHILE und CHECK oder zur Übergabe von Daten an Selektionstabellen benutztwerden.

Der Zeilentyp eines Ranges-Tabellentyps hat einen festgelegten Aufbau. Der Zeilentyp bestehtaus 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 einenStandardschlüssel, der non-unique ist.

Siehe auch:Ranges-Tabellentyp anlegen [Seite 163]

Page 163: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Ranges-Tabellentyp anlegen

April 2001 163

Ranges-Tabellentyp anlegen1. 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 demRanges-Tabellentyp suchen.

4. Wählen Sie Bearbeiten � Als Ranges-Tabellentyp definieren.

Es wird nun auf das Pflegebild für Ranges-Tabellentypen umgeschaltet. Zugriffsart [Seite159], 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 zurTypisierung der LOW- und HIGH-Komponente des zugehörigen Zeilentyps angeben.

Falls Sie die LOW- und HIGH-Komponente durch ein vorhandenes Datenelementtypisieren wollen, müssen Sie Datenelement markieren und den Namen desDatenelements im dahinterstehenden Feld eingeben. Sie können auch den Namen einesnoch nicht vorhandenen Datenelements eingeben und per Doppelklick direkt in dieDatenelementpflege verzweigen, um dieses anzulegen.

Sie können den elementaren Typ der LOW- und HIGH-Komponente auch direktangeben. Markieren Sie hierzu Eingebauter Typ. Die Felder Datentyp, Zahl der Stellenund 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ürden Spezialfall von Ranges-Tabellentypen hat dieser Zeilentyp immer eine festvorgegebene Struktur. Deshalb wird in der Pflege die Möglichkeit geboten, den Zeilentypaus dem Pflegebild des Ranges-Tabellentyps heraus zu generieren.

6. Sichern Sie ihre Eingaben.

Sie werden dabei aufgefordert dem Ranges-Tabellentyp eine Entwicklungsklassezuzuordnen. 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-Tabellentypsgenerieren.

Sie verzweigen damit in das Pflegebild für Strukturen. Die Komponenten des Zeilentypssind aufgrund ihrer Angaben zum Bezugstyp für die LOW- und HIGH-Komponentenschon vorgegeben. Sie müssen hier nur noch einen Kurztext für den Zeilentyp angebenund diesen Aktivieren. Wählen Sie dann Zurück.

8. Wählen Sie .

Page 164: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Ranges-Tabellentyp anlegen

164 April 2001

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

Page 165: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Typ löschen

April 2001 165

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

Vorgehensweise1. 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 desTyps. 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öschauftragnochmals zu bestätigen.

3. Bestätigen Sie den Löschauftrag.

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

Page 166: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Domänen

166 April 2001

DomänenEine Domäne definiert einen Wertebereich. Eine Domäne wird einem Datenelement zugeordnet.Alle Tabellenfelder bzw. Strukturkomponenten, die dieses Datenelement verwenden, besitzendann 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 Komponentehergestellt.

Felder bzw. Komponenten, die (über die ihnen zugeordneten Datenelemente) auf dieselbeDomäne verweisen, werden bei einer Änderung der Domäne gleichzeitig mitgeändert. Damit istdie Konsistenz der Wertebereiche dieser Felder bzw. Komponenten sichergestellt. Technischgleichartige Felder bzw. Komponenten können damit durch Verweis auf die gleiche Domänezusammengefaßt werden.

Domäne

Datenelement 1 Datenelement 2

Tabelle 1 Tabelle 2 Tabelle 3

Felder sind bzgl. Datentyp undLänge stets konsistent

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

Eine Personalnummer wird durch das Datenformat NUMC und die Angabe derStellenzahl für diese Personalnummer festgelegt.

Der Wertebereich einer Domäne kann durch die Angabe von Festwerten [Seite 168] weitereingeschränkt werden. Falls alle Felder bzw. Komponenten, die auf die Domäne zeigen, gegeneine 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.

Page 167: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Domänen

April 2001 167

Komponenten, die auf diese Domäne verweisen, übernimmt diese Konvertierungsroutine danndie 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]

Page 168: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Festwerte

168 April 2001

FestwerteDer Wertebereich einer Domäne kann durch die Angabe von Festwerten weiter eingeschränktwerden. Falls Festwerte für eine Domäne definiert wurden, werden diese bei der Eingabeprüfungauf 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 derEingabehilfe (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äneS_CLASS ist festgelegt durch die Festwerte C (Business Class), F (First Class) undY (Economy Class). Für alle Felder, die auf diese Domäne verweisen, können aufBildschirmmasken damit nur die Werte C, F und Y eingegeben werden.

Sie können entweder Festwertintervalle durch Eingabe von Unter- und Obergrenze oder auchEinzelwerte angeben. Wertebereiche und Einzelwerte können beliebig kombiniert werden. Zujedem Einzelwert oder Intervall können Sie einen erläuternden Text erfassen, der dann in derEingabehilfe 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 CHARund NUMC durchgeführt.

Page 169: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Wertetabelle

April 2001 169

WertetabelleIn einigen Fällen ist bei der Definition einer Domäne schon absehbar, daß alle Tabellenfelderbzw. Strukturkomponenten, die auf diese Domäne zeigen, gegen eine bestimmte Tabelle geprüftwerden sollen. Diese Information kann in der Domäne durch den Eintrag einer Wertetabellehinterlegt werden.

Die Wertetabelle wird, beim Versuch einen Fremdschlüssel [Seite 20] für das Feld bzw. dieKomponente zu definieren, vom System als Prüftabelle vorgeschlagen. Dieser Vorschlag kannaber ü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 vorhandenenFluggesellschaften sind in der Tabelle SCARR mit ihrem Kürzel verzeichnet. FürFelder, die auf die Domäne S_CARR_ID zeigen, ist also in aller Regel eine Prüfunggegen die Tabelle SCARR sinnvoll. Deshalb ist SCARR als Wertetabelle für dieDomä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üfunggegen die Wertetabelle wird erst nach Definition eines Fremdschlüssels wirksam.

Page 170: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Eingabe- und Ausgabekonvertierungen

170 April 2001

Eingabe- und AusgabekonvertierungenBeim Umwandeln des Inhalts eines Bildschirmfeldes vom Anzeigeformat in das SAP-interneFormat und umgekehrt erfolgt je nach Datentyp des Feldes eine Konvertierung. Falls dieseStandardkonvertierung ungeeignet ist, kann Sie durch die Angabe einer Konvertierungsroutine inder zugrundeliegenden Domäne übersteuert werden.

Eine Konvertierungsroutine wird über einen fünfstelligen Namen identifiziert und ist als Gruppevon zwei Funktionsbausteinen abgelegt. Die Funktionsbausteine haben dabei eine festgelegteNamenskonvention. Der Konvertierungsroutine xxxxx sind folgende Funktionsbausteinezugeordnet:

� CONVERSION_EXIT_xxxxx_INPUT

� CONVERSION_EXIT_xxxxx_OUTPUT

Der INPUT-Baustein führt die Konvertierung vom Anzeigeformat in das interne Format durch, derOUTPUT-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 dieseKonvertierungsroutine beim Sichern einer Eingabe in dieses Bildschirmfeld oder beim Anzeigenvon Werten über dieses Bildschirmfeld automatisch ausgeführt. Die Konvertierungsroutine derDomäne wird auch bei der Ausgabe des Feldinhalts mittels der ABAP-Anweisung WRITEangestoßen.

Die Tabelle SPFLI im Flugmodell [Seite 312] enthält Informationen zu den von denFluggesellschaften angebotenen Flügen. Zu jedem Flug ist im Feld FLTIME dieFlugdauer vermerkt. Auf Eingabemasken soll die Flugdauer in der Form HHH:MM(Stunden:Minuten) eingegeben und angezeigt werden. Auf der Datenbank soll dieeingegebene Flugdauer aber als Integer-Zahl (Anzahl der Minuten, die der Flugdauert) abgespeichert werden. Die Eingabe 3:27 wird also als 207 (3 Stunden 27Minuten = 207 Minuten) auf der Datenbank abgespeichert.

Das Feld FLTIME zeigt auf die Domäne S_DURA, dem die KonvertierungsroutineSDURA zugeordnet ist. Die beschriebene Wertekonvertierung wird also von denbeiden Funktionsbausteinen CONVERSION_EXIT_SDURA_INPUT undCONVERSION_EXIT_SDURA_OUTPUT durchgeführt.

Page 171: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Eingabe- und Ausgabekonvertierungen

April 2001 171

Flug

Dauer

Flug

Dauer

Eingabe von Werten inBildschirmmaske

Anzeige von Werten inBildschirmmaske

CONVERSION_EXIT_SDURA_INPUTKonvertiert Eingabe in internes Format

CONVERSION_EXIT_SDURA_OUTPUTKonvertiert internes Format in Anzeigeformat

3:27

3:27

207

DauerSPFLI

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

ParameterBeide Funktionsbausteine einer Konvertierungsroutine müssen genau zwei Parameter mit denNamen INPUT und OUTPUT für den zu konvertierenden Wert und den konvertierten Werthaben.

Der INPUT-Parameter bei der INPUT-Konvertierung und der OUTPUT-Parameter bei derOUTPUT-Konvertierung sollten kein Bezugsfeld haben, da der beim Aufruf übergebene Werteine andere Länge als eigentlich erwartet haben kann.

Programmierung von KonvertierungsroutinenABAP 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 erfolgtder Aufruf der Konvertierungsroutine also unter Umständen sehr häufig. Deshalb sollte dieAusgabe-Konvertierung möglichst effizient programmiert sein.

In Konvertierungsroutinen sollten keine externen Performs verwendet werden. Externaufgerufene Programme nutzen die Tabellenarbeitsbereiche des ersten aufrufenden

Page 172: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Eingabe- und Ausgabekonvertierungen

172 April 2001

Hauptprogramms. Dies kann bei Konvertierungsroutinen zu schwer analysierbaren Fehlernführen, da diese zu manchmal unvorhergesehenen Zeitpunkten im Programmablauf aufgerufenwerden.

Page 173: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Domäne anlegen

April 2001 173

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

Vorgehensweise1. 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 derDomä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 dieAnzahl der Dezimalstellen (nur für die Datentypen DEC, FLTP, QUAN und CURRnotwendig).

Beachten Sie, daß einige Datentypen eine feste Länge haben. Zum Beispiel ist derDatentyp CLNT (Mandant) stets dreistellig. Falls Sie für einen solchen Datentyp eineunzulässige Zahl der Stellen eingeben, wird dies vom System nach einer Warnungautomatisch korrigiert.

4. Falls für die Domäne nur bestimmte Eingabewerte zulässig sind, können Sie diese in derRegisterkarte Wertebereich als Festwerte [Seite 168] eintragen.

Sie können in dieser Registerkarte auch eine Wertetabelle [Seite 169] alsVorschlagswert 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 .

ErgebnisDie Domäne wird aktiviert. Informationen zum Ablauf der Aktivierung können Sie demAktivierungsprotokoll entnehmen, das Sie über Hilfsmittel � Aktivierungsprotokoll aufrufenkönnen. Falls bei der Aktivierung der Domäne Fehler auftraten, wird das Aktivierungsprotokollautomatisch 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ängeinklusive Aufbereitungszeichen wie z.B. Kommata oder Dezimalpunkte) wird automatisch ausden Angaben für Datentyp, Zahl der Stellen und Dezimalstellen errechnet. Falls Felder, dieauf diese Domäne verweisen, bei der Ausgabe auf Dynpros oder in Listen nur bis zu einerbestimmten Länge ausgegeben werden sollen, können Sie diesen Wert verkürzen.

Page 174: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Domäne anlegen

174 April 2001

� Groß-/Kleinschreibung unterscheiden: Wenn Sie für die Felder, die auf diese Domäneverweisen, Klein- und Großschreibung unterscheiden wollen, müssen Sie das KennzeichenKleinbuchstaben markieren. Im anderen Fall werden alle eingegebenen Buchstaben auf derDatenbank in Großbuchstaben umgewandelt. Dieses Feld ist nur für die Datentypen CHARund LCHR eingabebereit.

� Konvertierungsroutine zuordnen: Falls die Werte von Feldern bei der Ein- und Ausgabekonvertiert werden müssen, kann eine Konvertierungsroutine [Seite 170] angegeben werden.

� Vorzeichen auf Ausgabe: Falls Felder, die auf diese Domäne verweisen, negative Werteenthalten können, muß das Kennzeichen Vorzeichen markiert werden. Bei der Ausgabe desFeldinhalts 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, kannes bei der Ausgabe auf Dynpros zu Problemen kommen. Dieses Feld ist nur für dieDatentypen DEC, FLTP, QUAN und CURR eingabebereit.

Page 175: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Domäne verändern

April 2001 175

Domäne verändernVorgehensweiseMarkieren Sie im Einstiegsbild des ABAP Dictionary den Objkettyp Domäne, geben Sie denNamen 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 (sieheDatenbank-Strukturen anpassen [Seite 231]). Dies kann bei Tabellen, die viele Sätzeenthalten, 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 Auswirkungender Änderung informieren.

Änderung des Datentyps, der Zahl der Stellen oder der DezimalstellenSie können den Datentyp und die Zahl der Stellen bzw. Dezimalstellen ändern, indem Sie dieentsprechenden Angaben einfach überschreiben. Beachten Sie dabei, daß eine solche Änderungzu einer Umsetzung aller Tabellen führen kann, in denen ein Feld auf die geänderte Domäneverweist!

Ermitteln Sie deshalb vor einer solchen Änderung alle Datenbanktabellen, in denen ein Feld aufdie Domäne verweist. Wählen Sie hierzu und auf dem dann eingeblendeten DialogfensterIndirekte Verwendung. Es erscheint eine Liste. Markieren Sie dort den Eintrag DB-Tabellen undwählen Sie . Es werden alle Datenbanktabellen angezeigt, in denen ein Feld auf die Domäneverweist.

Änderung der AusgabeeigenschaftenEine Änderung der Ausgabeeigenschaften einer Domäne beeinflußt das Dialogverhalten aufallen Dynpros, in denen ein Feld auf diese Domäne verweist.

Sie sollten deshalb vor einer solchen Änderung alle betroffenen Dynpros ermitteln. Wählen Siehierzu und auf dem dann eingeblendeten Dialogfenster Indirekte Verwendung. Es erscheinteine Liste. Markieren Sie dort den Eintrag Dynpros und wählen Sie . Nun werden alle Dynprosaufgelistet, in denen ein Feld auf die Domäne verweist.

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

Page 176: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Domäne löschen

176 April 2001

Domäne löschenVoraussetzungenSie können eine Domäne nur löschen, wenn diese von keinem Datenelement mehr verwendetwird.

Vorgehensweise1. 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öschauftragnochmals zu bestätigen.

3. Bestätigen Sie den Löschauftrag.

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

Page 177: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Suchhilfen

April 2001 177

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

Standardablauf einer EingabehilfeDer Aufruf einer Eingabehilfe durch einen Benutzer besteht aus folgenden Schritten (je nachGestaltung 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 Benutzerwä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 desSuchpfads auf einem Dialogfenster zur Werteselektion angeboten.

3. Der Benutzer gibt (optional) einschränkende Bedingungen ein und startet die Suche.

Flugges.Flugnr.AbflugAnkunft

Dialogfenster zurWerteselektionWertebereich einschränken

...

Datenbank

LH

Selektiert alle Flügeder Gesellschaft LH

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 Ankunft400402

... ... ...

Frankfurt New YorkFrankfurt Berlin

452452

RomeBerlin

BerlinSydney

AuswahleinesEintrags

SingaporeFrankfurt452

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

Page 178: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Suchhilfen

178 April 2001

6. Der Wert des Suchfeldes wird (evtl. zusammen mit anderen Werten) in die Bildschirmmaskezurückgestellt.

Die Schritte 2 und 3 entfallen, falls nur ein einziger Suchpfad zur Verfügung steht. In diesem Fallwird direkt das Dialogfenster zur Werteselektion angeboten. Es ist auch möglich direkt nach demStarten der Eingabehilfe die Liste der Treffer auszugeben. In diesem Fall entfallen die Schritte 2bis 4.

Funktion einer SuchhilfeDieser Standardablauf einer Eingabehilfe kann durch Anlegen einer Suchhilfe im ABAPDictionary vollständig gestaltet werden. Diese Suchhilfe muß dann nur noch denBildschirmfeldern zugeordnet werden, auf denen sie zur Verfügung stehen soll (siehe Suchhilfemit einem Bildschirmfeld verbinden [Seite 187]).

Man muß hierbei zwischen zwei Typen von Suchhilfen unterscheiden:

� Elementare Suchhilfen [Seite 179] beschreiben einem Suchpfad. In der elementarenSuchhilfe muß angegeben werden, woher die Daten der Trefferliste gelesen werden sollen(Selektionsmethode), wie der Werteaustausch zwischen Bildschirmmaske undSelektionsmethode realisiert ist (Schnittstelle der Suchhilfe) und wie der Dialog bei derEingabehilfe gestaltet sein soll (Dialogverhalten der Suchhilfe).

� Sammelsuchhilfen [Seite 183] fassen mehrere elementare Suchhilfen zusammen. Über eineSammelsuchhilfe 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]

Page 179: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Struktur einer elementaren Suchhilfe

April 2001 179

Struktur einer elementaren Suchhilfe Eine elementare Suchhilfe definiert den Standardablauf einer Eingabehilfe. In der Suchhilfekö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 Trefferlisteangezeigt werden sollen (Suchhilfeparameter)

� welche Feldinhalte für die Selektion der Trefferliste berücksichtigt werden können undwelche Werte aus der Trefferliste in Dynprofelder zurückgestellt werden können(Suchhilfeparameter)

� welche Dialogschritte bei der Eingabehilfe ausgeführt werden sollen (Dialogverhalten)

SelektionsmethodeDie auf der Trefferliste angezeigten möglichen Eingabewerte für ein Feld werden zur Laufzeitdurch eine Selektion von der Datenbank ermittelt.

SPFLI

SELECT * FROM SPFLI WHERE CARRID = 'LH'.

Fluggesellschaft

Flugnummer

. . .

Pflege von Flügen

LH

F4F4

SelektionsmethodeSPFLI

Stammen alle auf der Trefferliste benötigten Daten aus einer einzigen Tabelle, so genügt esdiese 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 derEingabehilfe ebenfalls zur Verfügung. Ein Tabelleneintrag wird über den vorhandenenFremdschlüssel mit dem zugehörigen Text verknüpft.

Falls die auf der Trefferliste benötigten Daten aus mehreren Tabellen stammen, müssen dieseTabellen über einen View (Datenbank-View oder Help-View) verknüpft werden. AlsSelektionsmethode muß dann dieser View angegeben werden.

Page 180: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Struktur einer elementaren Suchhilfe

180 April 2001

Sind die zugrundeliegenden Tabellen mandantenabhängig, muß das Mandantenfeld im Viewenthalten sein. Ansonsten würde bei der Eingabehilfe über alle Mandanten selektiert!

SuchhilfeparameterEine 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örigenSelektionsmethode übernommen, d.h. sind stets namensgleich zum entsprechenden Feld derSelektionsmethode.

Wird die Suche über einen Parameter der Suchhilfe eingeschränkt, so wird dies bei derDatenselektion zur Formulierung einer WHERE-Bedingung für das namensgleiche Feld derSelektionsmethode genutzt. Umgekehrt werden die Parameter der Suchhilfe mit den Inhalten dernamensgleichen Felder der Selektionsmethode versorgt.

Die Suchhilfe sollte keinen Parameter für den Mandanten enthalten. Bei der Eingabehilfe wirdautomatisch im Anmeldemandanten des Benutzers selektiert.

Jedem Suchhilfeparameter muß ein Datenelement zugeordnet werden, d.h. dieSuchhilfeparameter sind stets typisiert.

Eine Suchhilfe kann noch weitere Parameter enthalten, die keinem Feld der Selektionsmethodeentsprechen. Dies ist aber in Regel nur dann notwendig, wenn der durch die Suchhilfebeschriebene Standardablauf der Eingabehilfe noch über ein Suchhilfe-Exit [Seite 207]modifiziert werden muß.

Import- und Export-ParameterBeim Aufruf einer Eingabehilfe werden die vom Benutzer auf der Eingabemaske schonvorgenommenen Eingaben berücksichtigt. Ruft ein Benutzer beispielsweise die Eingabehilfe fürFlugnummern auf und hat die Fluggesellschaft schon spezifiziert, so sollen natürlich nur dieNummern zu Flügen dieser Fluggesellschaft angeboten werden.

Wählt der Benutzer umgekehrt eine Zeile der Trefferliste aus, so sollen eventuell mehrere Felderder Eingabemaske mit Daten aus der gewählten Zeile der Trefferliste gefüllt werden. Wirdbeispielsweise die Flugnummer aus der Trefferliste übernommen, so sollen auch gleich dieAbflugsstadt und die Ankunftsstadt in die Bildschirmmaske zurückgestellt werden.

Page 181: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Struktur einer elementaren Suchhilfe

April 2001 181

Fluggesellschaft

Flugnummer

. . .

F4

LH

0*

Nr Abflugsstadt Ankunftsstadt

FluggesellschaftFluggesellschaft

04000400 FrankfurtFrankfurt New YorkNew York

04020402 FrankfurtFrankfurt New YorkNew York

LHLH

Kontextberücksichtigen

Werte zurückstellen

Über die Schnittstelle einer Suchhilfe wird festgelegt, welche Kontextdaten in die Eingabehilfeeingehen 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 prozessiertenEingabemaske (Dynpro) in den Hilfeablauf übernommen werden dürfen.

� Export-Parameter: Parameter, über den Werte aus der Trefferliste auf die Eingabemaskezurückgestellt werden dürfen.

Ein Parameter kann gleichzeitig Import- und Export-Parameter sein. Eine Suchhilfe kann auchParameter enthalten, die weder Import- noch Export-Parameter sind. Solche Parameter könnenz.B. für den internen Ablauf der Eingabehilfe benötigt werden.

Bei der Suchilfeanbindung [Seite 187] wird festgelegt, woher die Import-Parameter der Suchhilfeihre Werte beziehen und in welche Felder die Inhalte der Export-Parameter zurückgestelltwerden. Siehe auch Wertetransport bei der Eingabehilfe [Seite 196].

Beschreibung des DialogverhaltensDas Dialogverhalten bestimmt, welche Dialogschritte beim Ablauf der Eingabehilfe durchlaufenwerden und wie die Trefferliste und das Dialogfenster zur Werteselektion aufgebaut sind.

Über den Dialogtyp [Seite 201] kann entschieden werden, ob das Dialogfenster zurWerteselektion 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 zurWerteselektion und der Trefferliste gestaltet werden. Hier kann z.B. die Position einesParameters auf dem Dialogfenster zur Werteselektion bestimmt werden. Auch die

Page 182: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Struktur einer elementaren Suchhilfe

182 April 2001

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]

Page 183: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Struktur einer Sammelsuchhilfe

April 2001 183

Struktur einer Sammelsuchhilfe Eine Sammelsuchhilfe faßt mehrere elementare Suchhilfen zusammen. Über eineSammelsuchhilfe kann der Benutzer also zwischen mehreren alternativen Suchpfadenauswählen.

Bei der Definition einer Sammelsuchhilfe müssen lediglich diejenigen Suchhilfen angegebenwerden, die über die Sammelsuchhilfe zusammengefaßt werden sollen. Bei der Eingabehilfeerfolgt der Wertetransport zwischen der vom Benutzer gewählten elementaren Suchhilfe und derEingabemaske über die Sammelsuchhilfe. Deshalb besitzt eine Sammelsuchhilfe ebenfalls eineSchnittstelle, über die der Wertetransport vorgenommen werden kann.

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

Feld 1Feld 2

...

Eingabemaske

Schnittstelle derSammelsuchhilfe

Parameter 1

Parameter 2Schnittstelle derelem. Suchhilfe

Parameter A

Parameter B

Zugeordnete SuchhilfenEine Sammelsuchhilfe besteht aus mehreren elementaren Suchhilfen. Sie faßt alle Suchpfadezusammen, die für ein Feld sinnvoll sind.

Die Schnittstellenparameter (Import- und Export-Parameter) der inkludierten Suchhilfen müssenden Parametern der Sammelsuchhilfe zugeordnet werden. Es müssen nicht alle Parameterzugeordnet werden, d.h. die Zuordnung kann für einige der Parameter offen bleiben.

Page 184: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Struktur einer Sammelsuchhilfe

184 April 2001

Schnittstelle derSammelsuchhilfe

Parameter 1Parameter 2

ElementareSuchhilfe A

ElementareSuchhilfe B

ElementareSuchhilfe C

Parameter 1Parameter 2Parameter 3

Parameter 1Parameter 2

Parameter 1Parameter 2Parameter 3

In eine Sammelsuchhilfe können sowohl elementare Suchhilfen als auch andereSammelsuchhilfen inkludiert werden. Sind in einer Sammelsuchhilfe andere Sammelsuchhilfenenthalten, so werden diese beim Aufruf der Eingabehilfe bis auf die Ebene der elementarenSuchhilfen aufgelöst.

Siehe auch:Anlegen einer Sammelsuchhilfe [Seite 204]

Beispiel zu Suchhilfen [Seite 209]

Page 185: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Append-Suchhilfen

April 2001 185

Append-SuchhilfenEine Append-Suchhilfe dient der modifikationsfreien Erweiterung einer Sammelsuchhilfe (die imaktuellen System nicht Original ist) um weitere Suchpfade (elementare Suchhilfen). DieseTechnik kann z.B. von Sonderentwicklungen, Länderversionen, SAP-Partnern oder SAP-Kundengenutzt werden, um an eine Sammelsuchhilfe des SAP-Standards weitere Suchpfadeanzufügen.

Eine Append-Suchhilfe ist einer Sammelsuchhilfe [Seite 183] (ihrer Appendierenden) festzugeordnet. Diese Appendierende wird durch die Append-Suchhilfe erweitert. Der Aufbau einerAppend-Suchhilfe entspricht dem Aufbau einer Sammelsuchhilfe.

Die Append-Suchhilfe übernimmt die Parameter ihrer Appendierenden. Eine Append-Suchhilfewird automatisch in ihre Appendierende inkludiert. Dabei werden die gleichnamigen Paremeterder beiden Suchhilfen einander zugeordnet.

Schnittstelle derSammelsuchhilfe

Parameter 1Parameter 2Parameter 3

Parameter AParameter B

Elem. Suchhilfe A

Append-Suchhilfe

Parameter DParameter E

Elem. Suchhilfe B

Parameter 1Parameter 2Parameter 3

Parameter FParameter G

Elem. Suchhilfe C

Parameter HParameter I

Elem. Suchhilfe D

Parameter CZusätzlicheSuchpfade

Inklusion derAppend-Suchhilfe

Append-Suchhilfen können auch selbst zur Beschreibung einer Eingabehilfe herangezogenwerden. Sie werden dann wie Sammelsuchhilfen behandelt. Einer Append-Suchhilfe kann keinSuchhilfe-Exit zugeordnet werden.

Über eine Append-Suchhilfe können auch modifikationsfrei elementare Suchhilfen aus einerSAP-Sammelsuchhilfe ausgeblendet werden. Hierzu müssen Sie die auszublendende Suchhilfeauch in die Append-Suchhilfe inkludieren und dort die Inklusion ausblenden. Der durch dieseSuchhilfe definierte Suchpfad wird damit in der appendierenden Suchhilfe nicht mehr angeboten.

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

Page 186: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Append-Suchhilfen

186 April 2001

diesem Fall sollten Sie prüfen, ob Sie auch die Zuordnungen zwischen denParametern der Append-Suchhilfe und den in sie inkludierten Suchhilfen verändernwollen.

Eine automatische Änderung der Schnittstelle der Appendierenden wäre nichtsinnvoll, da bei einer Schnittstellenänderung der Sammelsuchhilfe in der Regeleinige der enthaltenen elementaren Suchhilfen an diese Änderung angepaßt werdenmüssen.

Siehe auch:Append-Suchhilfe anlegen [Seite 206]

Page 187: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Suchhilfen mit einem Bildschirmfeld verbinden

April 2001 187

Suchhilfen mit einem Bildschirmfeld verbindenMit einer Suchhilfe kann das Verhalten eines Feldes beim Aufruf der Eingabehilfe beeinflußtwerden. Hierzu muß die Suchhilfe dem Feld zugeordnet werden. Für diese Zuordnung gibt esmehrere 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 derEingabehilfe werden durch eine Hierarchie der Suchhilfeanbindungen [Seite 195] aufgelöst.

Einem Feld ist direkt im Dynpro eine Suchhilfe A zugeordnet. An das zugehörigeTabellenfeld 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 eineSuchhilfe D angebunden.

Feld

...

Dynpro

Suchhilfe A

Suchhilfe C

Suchhilfe B

Suchhilfe D

Anbindung inDynprodefinition

Datenelement

Anbindung anDatenelement

Anbindung anPrüftabelle

Prüftabelle

Anbindungan Feld

Tabelle/Struktur

Page 188: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Anbindung an ein Datenelement

188 April 2001

Anbindung an ein DatenelementDie 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 identischeEingabehilfe.

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 Zeileder Trefferliste aus, so wird der Inhalt dieses Parameters in das entsprechende Bildschirmfeldzurückgestellt. Das Zurückstellen mehrerer Werte wird bei der Anbindung einer Suchhilfe an einDatenelement 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 DISTIDverweist auf das Datenelement S_DISTID. An dieses Datenelement ist dieelementare 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 vonFlugdaten in die Tabelle SPFLI zur Verfügung. Wählt der Benutzer in derEingabehilfe eine Zeile der Trefferliste aus, so wird der Inhalt des ParametersMSEHI in die Bildschirmmaske zurückgestellt.

Suchhilfe S_UNIT_DIST

MSEHI MSEH3 ...

... DISTANCE FLTYPE

Tabelle SPFLI

DISTID

Datenelement S_DISTID

Anbindung der Suchhilfeans Datenelement

...

Distance

Dist. Id....

Datenelement zum Feld

Bezug auf Tabellenfeld im ABAP Dictionary

Ist der dem Datenelement zugeordnete Parameter auch Import-Parameter der Suchhilfe, so wirdder 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 einDatenelement nicht berücksichtigt werden.

Page 189: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Anbindung an ein Datenelement

April 2001 189

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

Page 190: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Anbindung an die Prüftabelle

190 April 2001

Anbindung an die PrüftabelleBesitzt ein Feld eine Prüftabelle, so ist die Menge aller möglichen Eingaben in das Feld durchden Inhalt dieser Prüftabelle (siehe Fremdschlüssel [Seite 20]) bestimmt. Der Inhalt derSchlüsselfelder der Prüftabelle wird daher bei der Eingabehilfe automatisch angeboten. Ist zurPrüftabelle eine Texttabelle [Seite 28] definiert, wird zusätzlich noch der Inhalt des erstenTextfelds dieser Texttabelle in der Anmeldesprache des Benutzers angezeigt.

Diese aus der Prüftabelle stammende Eingabehilfe kann durch Zuordnung einer Suchhilfe zurPrüftabelle weiter aufbereitet werden. Die zugeordnete Suchhilfe steht damit für alleBildschirmfelder zur Verfügung, die gegen die Tabelle geprüft werden.

Wird eine Suchhilfe an eine Prüftabelle angebunden, sollte sie die in dieser Prüftabelleenthaltenen Daten anzeigen. Als Selektionsmethode der Suchhilfe muß in diesem Fall also diePrü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 denSchlüsselfeldern der Prüftabelle und den Parametern der Suchhilfe erfolgen. Ist einemSchlüsselfeld der Prüftabelle ein Export-Parameter der Suchhilfe zugeordnet, so wird der Inhaltdieses Parameters in das entsprechende Bildschirmfeld zurückgestellt, sobald der Benutzer inder Eingabehilfe eine Zeile der Trefferliste auswählt. Ist einem Schlüsselfeld der Prüftabelle einImport-Parameter der Suchhilfe zugeordnet, so wird der Feldinhalt für die Werteselektionverwendet (siehe Wertetransport bei der Eingabehilfe [Seite 196]).

Das Feld CONNID (Nummer der Flugverbindung) der Tabelle SFLIGHT (Flüge) wirdgegen die Tabelle SPFLI (Flugplan) geprüft. Der Tabelle SPFLI ist die elementareSuchhilfe H_SPFLI (Suche nach Flügen über Abflugsstadt und Ankunftsstadt)zugeordnet. Bei der Eingabe von Daten in die Tabelle SFLIGHT steht dieseSuchhilfe damit für das Feld CONNID zur Verfügung.

Die Suchhilfe H_SPFLI enthält kein Mandantenfeld, da bei der Eingabehilfe stets imAnmeldemandanten des Benutzers selektiert wird!

Page 191: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Anbindung an die Prüftabelle

April 2001 191

Tabelle SFLIGHTMANDT CARRID FLDATECONNID ...

Prüftabelle SPFLIMANDT CARRID CONNID ...CITYFROM CITYTO ...

Suchhilfe H_SPFLICARRID CONNID CITYFROM CITYTO

Feldzuordnung im Fremdschlüssel

Schlüsselfelder Zuordnung zwischen Suchhilfeparameternund Schlüsselfeldern der Prüftabelle

...Carrier

Connect....

Bezug auf Tabellenfeld im ABAP Dictionary

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

Page 192: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Anbindung an ein Tabellen- oder Strukturfeld

192 April 2001

Anbindung an ein Tabellen- oder StrukturfeldDie Suchhilfe steht für alle Bildschirmfelder zur Verfügung, die sich auf das Tabellen- oderStrukturfeld beziehen. Bei dieser Art der Anbindung muß eine Zuordnung zwischen denSuchhilfeparametern und den Feldern der Tabelle bzw. Struktur getroffen werden.

Ist einem Tabellenfeld ein Export-Parameter der Suchhilfe zugeordnet, so wird der Inhalt diesesParameters in das entsprechende Bildschirmfeld zurückgestellt, sobald der Benutzer in derEingabehilfe eine Zeile der Trefferliste auswählt. Ist einem Tabellenfeld ein Import-Parameter derSuchhilfe zugeordnet, so wird der Feldinhalt für die Werteselektion verwendet (sieheWertetransport 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 Suchhilfeparameterkann auch eine Konstante oder ein beliebiges anderes Feld zugeordnet werden, welches beimAufruf der Eingabehilfe dann im Modulpool des prozessierten Dynpros gesucht wird.

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

Tabelle STRAVELAG

MANDT NAME ...STREET CITY ...

AGENCYNUM NAME CITY COUNTRY

COUNTRYAGENCYNUM

Suchhilfe STRAVELAG_NAME

Zuordnung zwischenSuchhilfeparameternund Tabellenfeldern

Agencyno.

Name

Street

...

Bezug auf Tabellenfeldim ABAP Dictionary

Page 193: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Anbindung an ein Tabellen- oder Strukturfeld

April 2001 193

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

Page 194: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Anbindung an ein Dynprofeld

194 April 2001

Anbindung an ein DynprofeldEine Suchhilfe kann direkt einem Dynprofeld zugeordnet werden. Die Suchhilfe steht dann nurfür dieses Dynpro zur Verfügung. Wird das gleiche Feld auf mehreren Dynpros benutzt, sollte dieSuchhilfe deshalb in der Regel an das referierte Tabellenfeld bzw. Strukturfeld angebundenwerden (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 dasFeld Suchhilfe eingetragen werden.

� Der Name der Suchhilfe kann für Selektionsbilder in ABAP Reports in der PARAMETERSbzw. SELECT-OPTIONS Anweisung direkt hinter dem Zusatz AS SEARCH PATTERNangegeben 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.

Page 195: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Hierarchie des Suchhilfeaufrufs

April 2001 195

Hierarchie des SuchhilfeaufrufsSuchhilfen können auf mehrere Arten an Bildschirmfelder angebunden [Seite 187] werden.Dadurch können einem Bildschirmfeld mehrere Suchhilfen zugeordnet sein. Konfliktsituationenbeim Aufruf der Eingabehilfe werden durch eine Hierarchie auf den verschiedenen Arten derSuchhilfeanbindung aufgelöst.

Wird die Eingabehilfe für ein Bildschirmfeld aufgerufen, so wird zuerst überprüft, ob über dasDynpro 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 dieseausgeführt. Ist keine programmierte Hilfe vorhanden, wird versucht, die dem Feld im Dynprozugeordnete 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 dasTabellenfeld angebundene Suchhilfe aufzurufen. Ist hier keine Suchhilfe vorhanden, wirdversucht die Prüftabellenhilfe anzuzeigen. Hier sind zwei Fälle zu unterscheiden. Ist an diePrüftabelle eine Suchhilfe angebunden, so wird diese angezeigt. Andernfalls werden nur dieSchlüsselwerte der Prüftabelle angezeigt. Falls eine Texttabelle [Seite 28] zur Prüftabelleexistiert, werden dabei zusätzlich die Texte zum Schlüsselwert in der Anmeldesprache desBenutzers ergänzt.

Ist für das Feld keine Prüftabelle vorhanden, wird versucht die Suchhilfe aus dem Datenelementaufzurufen. Falls auch beim Datenelement keine Suchhilfe vorhanden ist, werden vorhandeneDomänenfestwerte angezeigt. Für Felder mit Datentyp DATS und TIMS stehen schließlich dieKalenderhilfe bzw. Uhrzeithilfe automatisch zur Verfügung.

Suchhilfe aus Dynpro

Suchhilfe zum Feld

Prüftabellenhilfe

Suchhilfe ausDatenelement

Festwerte

Uhrzeit oderKalenderhilfe

Suchhilfe zurPrüftabelle

Prüftabelle mitTexttabelle

Schlüsselwerteder Prüftabelle

nicht vorhanden

vorhanden

PROCESS ONVALUE-REQUEST

Suchhilfe zumDynprofeld

Prüfungen derAblauflogik

FIELD … SELECT

FIELD … VALUES

Eingabehilfe ausDictionary

Eingabehilfe ausABAP Report

Page 196: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Wertetransport bei der Eingabehilfe

196 April 2001

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

Dynpro

ABCDE

AB

CDE

...

referierte Tabellebzw. Struktur

ABCFG

angebundeneSuchhilfe

Import/Export

Import

Export

Import/Export

interner Parameter

A B C F

Trefferliste

Rückstellen der Inhalteder Parameter A und Cbei Auswahl einer Zeileder Trefferliste

Inhalt der Dynpro-Felder A und Bwird für die Selektion der Trefferaus der Selektionsmethodeberücksichtigt

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 Suchhilfemöglich. Vorhandene Inhalte der Dynpro-Felder A und B können für die Selektion der Trefferlisteberücksichtigt werden, da Sie mit einem Import-Parameter der Suchhilfe verbunden sind. Aus derTrefferliste können die Werte der Parameter A und C auf das Dynpro zurückgestellt werden, dadiese Parameter als Export-Parameter der Suchhilfe deklariert sind.

Versorgung der Import-Parameter der SuchhilfeIst die Suchhilfe über ein Datenelement (Anbindung an ein Datenelement [Seite 188]) oder direktim Dynpro (Anbindung an ein Bildschirmfeld [Seite 194]) an das Dynpro-Feld angebunden, so istdiesem nur ein Suchhilfeparameter zugeordnet. Der Wertetransport kann damit nur zwischendem Dynpro-Feld und diesem Parameter stattfinden.

Ist die Suchhilfe an das Tabellenfeld (Anbindung an ein Tabellenfeld [Seite 192]) oder an diePrüftabelle des Feldes (Anbindung an eine Tabelle [Seite 190]) angebunden, so kann einWertetransport für alle Dynpro-Felder stattfinden, die mit einem Parameter der Suchhilfeverbunden sind.

Beim Aufruf der Eingabehilfe wird versucht für jeden Import-Parameter der Suchhilfe, der miteinem Tabellen- bzw. Strukturfeld verbunden ist, ein namensgleiches Feld auf dem Dynpro zu

Page 197: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Wertetransport bei der Eingabehilfe

April 2001 197

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 einemnamensgleichen Feld gesucht.

� Ist in der Step-Loop kein namensgleiches Feld vorhanden, so wird auf dem zugehörigenSub-Screen gesucht.

� Ist kein namensgleiches Feld auf dem Sub-Screen vorhanden, wird auf dem Main Dynprogesucht.

� Falls auch auf dem Main Dynpro kein namensgleiches Feld gefunden wird, wird im Modul-Pool des zugehörigen Dynpros gesucht.

Modul-Pooldes DynprosMain Dynpro

Step-Loop

Sub-Screen

?

?

?

?

Aufruf der Eingabehilfein der Step-Loop

Rückstellen der Werte aus der TrefferlisteDas 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 Werteaus 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 Dynproszurückgestellt.

Die Werte der Trefferliste werden nur in eingabebereite Felder und in solche Felderzurückgestellt, die nur mit einem Export-Parameter der Suchhilfe verbunden sind (dient zurVersorgung von reinen Textfeldern, die nicht in die Selektion eingehen).

Page 198: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Anlegen einer elementaren Suchhilfe

198 April 2001

Anlegen einer elementaren Suchhilfe Vorgehensweise1. 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 derSuchhilfe 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 eineTexttabelle [Seite 28] vorhanden ist, wird der Name der Texttabelle automatisch imentsprechenden Feld eingetragen.

5. Wählen Sie über die Eingabehilfe (F4-Hilfe) auf dem Bereich Suchhilfeparameter Felder derSelektionsmethode als Parameter aus. Sie sollten hier die Felder auswählen, die auf demDialogfenster zur Werteselektion oder in der Trefferliste verwendet werden sollen.

Ist die Selektionsmethode eine Tabelle, zu der eine Texttabelle existiert, so werden beider Eingabehilfe sowohl die Felder der Tabelle als auch die Felder der Texttabelleangeboten.

Das Datenelement des Parameters wird automatisch aus der Selektionsmethodeübernommen. Das Datenelement definiert die Ausgabeeigenschaften und die F1-Hilfedes Parameters auf der Trefferliste und auf dem Dialogfenster zur Werteselektion.

Sie können dem Parameter ein anderes Datenelement zuordnen. Markieren Sie hierzudas Kennzeichen Mod. Das Feld Datenelement wird nun eingabebereit. Wählen Siedann ein Datenelement über die Eingabehilfe (F4-Hilfe) aus. Es können nurDatenelemente zugeordnet werden, die in Datentyp, Länge und Anzahl derDezimalstellen mit dem bisherigen Datenelement übereinstimmen.

Damit wird die Kopplung zwischen dem Datenelement des Suchhilfeparameters unddem Datenelement des namensgleichen Feldes der Selektionsmethode aufgehoben.Wenn Sie die Markierung des Kennzeichens Mod zurücknehmen, wird dasDatenelement 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 Eingabehilfegestalten. Tragen Sie in LPos die Position des Parameters auf der Trefferliste ein. FallsSie hier nichts bzw. den Wert 0 eintragen, wird der Parameter nicht auf der Trefferlisteangezeigt.

Page 199: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Anlegen einer elementaren Suchhilfe

April 2001 199

CARRID

CITYTOCITYFROMCONNID

Parameter LPos1234

LHLHLHAAAA

10367

2418815

BerlinBonnMünchenFrankfurtNew YorkNew York

BerlinBostonMiamiLondon

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

CA CO FROM TO Trefferliste

Suchhilfe H_SPFLISuche nachFlugnummern

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

Suchhilfe H_SPFLI(Suche nach Flugnummern)

CARRID

CITYTOCITYFROMCONNID

Parameter SPos1234

Flugges.Flugnr.AbflugAnkunft

Dialogfenster zurWerteselektion

Markieren Sie das Kennzeichen SAnz, falls der Parameter auf dem Dialogfenster zurWerteselektion ein reines Anzeigefeld sein soll. Damit wird dem Benutzer dieEinschränkung durch den Inhalt des Parameters bekannt gemacht, er kann dieseEinschrä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 Entwicklungsklassezuordnen 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 zurDefinition des Objekts, an das die Suchhilfe angebunden wird.

Page 200: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Anlegen einer elementaren Suchhilfe

200 April 2001

ErgebnisDie Suchhilfe wird aktiviert. Informationen zum Ablauf der Aktivierung können Sie demAktivierungsprotokoll entnehmen, das Sie sich über Hilfsmittel � Aktivierungsprotokollanzeigen lassen können. Falls bei der Aktivierung Fehler auftraten, wird dasAktivierungsprotokoll 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 einerSammelsuchhilfe enthaltenen elementaren Suchhilfen sollten sich bzgl. ihrer Kurzanwahlunterscheiden.

� Suchhilfe-Exit zuordnen: In Ausnahmefällen kann es notwendig sein, den durch dieSuchhilfe 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 einerEingabehilfe über testen. Es erscheint ein Dialogfenster, in dem Sie das Verhalten derSuchhilfe unter verschiedenen Bedingungen simulieren können. Informationen über die aufdiesem Fenster zur Verfügung stehenden Möglichkeiten können Sie über erhalten.

Siehe auch:Struktur einer elementaren Suchhilfe [Seite 179]

Page 201: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Dialogtyp

April 2001 201

Dialogtyp Der Dialogtyp einer elementaren Suchhilfe steuert die Anzeige der Trefferliste beim Aufruf derEingabehilfe.

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änkungwird direkt angeboten. Diese Option sollten Sie wählen, wenn die Liste der möglichenEingaben in der Regel sehr groß ist. Eine Einschränkung der zu verarbeitenden Datenmengedurch den Benutzer erhöht die Übersichtlichkeit der Trefferliste und vermindert dieSystembelastung 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 dasDialogfenster zur Werteeinschränkung angezeigt.

Page 202: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Kurzanwahl

202 April 2001

Kurzanwahl Über die Kurzanwahl kann die Auswahl der elementaren Suchhilfe aus der Sammelsuchhilfe unddie Eingabe der Einschränkungen im Dialogfenster zur Werteeinschränkung direkt vomEingabefeld aus erfolgen. Falls der Benutzer häufig über die gleiche Suchhilfe nach Wertensucht, 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örigenSelektionspopup eingegeben würden. Dabei wird jeder Eintrag generisch interpretiert.

Ankunftsort

Fluggesellschaft

. . .

Suche nach Flügen

AZ*

Flugnummer

Selektionspopup derelementaren Suchhilfe A

Kurzanwahl imEingabefeld

=A.AZ.123.FRA

123*

FRA*

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 indiesem Fall kann auch das erste Trennzeichen ‘.’ weggelassen werden.

Wird die Kurzanwahl ohne Einschränkungen angegeben ( =<Kurzanwahl>) so wird dasDialogfenster zur Werteeinschränkung aufgerufen. Werden Einschränkungen mitgegeben, sowird das Dialogfenster zur Werteeinschränkung übersprungen und die Trefferliste wird direktangezeigt. Falls genau ein Treffer gefunden wird, entfällt auch die Anzeige der Trefferliste. DieWerte des gefundenen Treffers werden in diesem Fall direkt in die Bildschirmmaskezurückgestellt.

Page 203: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Default-Werte für Suchhilfeparameter

April 2001 203

Default-Werte für SuchhilfeparameterEinem 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ürParameter, deren Datentyp eine Aufbereitungsmaske besitzt (z.B. Datum und Zeit), muß dieKonstante in der internen Darstellung angegeben werden. Zum Beispiel ist das Datum01.03.1998 als '19980301' anzugeben.

� Systemfelder, d.h. Felder aus der Struktur SYST, wobei an Stelle des Präfix SYST- auch dasPräfix SY- verwendet werden kann.

� Get-Parameter-Ids, über die der Parameter mit Werten aus dem SAP-Memory versorgtwerden kann.

Der Default-Wert wird dem Parameter im Eingabehilfeablauf in den folgenden Fällenzugewiesen:

� Falls der Parameter kein IMPORT-Parameter ist.

� Falls dem Parameter bei der Suchhilfeanbindung, über die die Suchhilfe an das Dynprofeldangebunden wurde, nichts zugeordnet wurde.

� Falls dem Parameter bei der Suchhilfeanbindung ein Feld zugeordnet wurde, das beimEingabehilfeablauf weder auf dem Dynpro noch in der Ablauflogik vorhanden ist.

� Falls eine Suchhilfe in eine Sammelsuchhilfe inkludiert ist und dabei der Parameter mitkeinem Parameter dieser Sammelsuchhilfe verbunden ist.

Page 204: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Anlegen einer Sammelsuchhilfe

204 April 2001

Anlegen einer SammelsuchhilfeVorgehensweise1. 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 derSuchhilfe 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 Datenelementstypisiert 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 vorgegebenenStandardablauf 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 dieSammelsuchhilfe inkludieren wollen.

Sie können elementare Suchhilfen und Sammelsuchhilfen inkludieren.

Über das Kennzeichen Ausgeblendet können Sie steuern, ob eine inkludierte Suchhilfeauf dem Dialogfenster zur Auswahl der elementaren Suchhilfe erscheinen soll. Falls dasKennzeichen markiert ist, wird die Suchhilfe dort nicht angeboten.

Das Ausblenden von Suchhilfeinklusionen macht Sinn, wenn ein oder mehrere imStandard vorgesehene Suchpfade in einem konkreten R/3 System nicht genutzt werdensollen. Umgekehrt können auch Suchhilfeinklusionen im Standard bereits ausgeblendetenthalten sein, weil sie nur in wenigen R/3 Systemen sinnvoll genutzt werden können. Indiesen ist das entsprechende Kennzeichen zurückzunehmen.

7. Stellen Sie den Cursor nacheinander auf jede zugeordnete Suchhilfe und wählen SieParameterzuordnung.

Geben Sie im folgenden Bild im Feld Bezugsparameter den Parameternamen derEinzelsuchhilfe an, der dem entsprechenden Parameter der Sammelsuchhilfezugeordnet werden soll.

Page 205: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Anlegen einer Sammelsuchhilfe

April 2001 205

Sie können die in der inkludierten Suchhilfe enthaltenen Parameter über die Eingabehilfeauswählen. Über Vorschlag können Sie sich einen Vorschlag für die Zuordnung erstellenlassen.

8. Sichern Sie ihre Eingaben.

Es erscheint ein Dialogfenster, in dem Sie der Suchhilfe eine Entwicklungsklassezuordnen müssen.

9. Wählen Sie .

ErgebnisDie Sammelsuchhilfe wird aktiviert. Informationen zum Ablauf der Aktivierung können Sie demAktivierungsprotokoll entnehmen, das Sie sich über Hilfsmittel � Aktivierungsprotokollanzeigen lassen können. Falls bei der Aktivierung der Sammelsuchhilfe Fehler auftraten, wirddas 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 zurDefinition des Objekts, an das die Suchhilfe angebunden wird.

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

Siehe auch:Struktur einer Sammelsuchhilfe [Seite 183]

Page 206: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Append-Suchhilfe anlegen

206 April 2001

Append-Suchhilfe anlegen4. 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 eintragenmüssen. Dieser Name sollte im Kundennamensraum (bzw. im Namensraum desPartners oder der Sonderentwicklung) liegen.

6. Wählen Sie .

Sie verzweigen ins Pflegebild der Append-Suchhilfe. Sie können nun wie beim Anlegen einerSammelsuchhilfe [Seite 204] fortfahren.

Beachten Sie folgende Besonderheiten:

� Die Sammelsuchhilfe übernimmt stets die Schnittstelle ihrer Appendierenden. Deshalb sinddie Angaben auf der Registerkarte Definition nicht änderbar.

� Wenn Sie über die Append-Suchhilfe eine in der Appendierenden inkludierte Suchhilfeausblenden wollen, müssen Sie diese Suchhilfe auch in die Append-Suchhilfe aufnehmen.Geben Sie dazu den Namen der auszublendenden Suchhilfe auf der RegisterkarteInkludierte Suchhilfen ein und markieren Sie das Kennzeichen Ausgeblendet.

� Beim Aktivieren der Append-Suchhilfe wird die Definition der appendierenden Suchhilfeautomatisch angepaßt. Die Append-Suchhilfe wird dabei automatisch in die Appendierendeinkludiert.

Siehe auch:Append-Suchhilfen [Seite 185]

Page 207: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Suchhilfe-Exit

April 2001 207

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

Der Ablauf der Eingabehilfe sollte sich dem Endbenutzer systemweit möglichsteindeutig präsentieren. Deshalb sollten Suchhilfe-Exits nur in Ausnahmefällenverwendet werden!

Ein Suchhilfe-Exit ist ein Funktionsbaustein, der eine vordefinierte Schnittstelle besitzt. EinSuchhilfe-Exit wird vom Hilfeprozessor zu festgesetzten Zeitpunkten aufgerufen. Über dieSchnittstelle werden dem Suchhilfe-Exit dabei die Verwaltungsdaten des Hilfeprozessorsübergeben.

Im Suchhilfe-Exit kann eigene Programmlogik hinterlegt werden, die diese Verwaltungsdatenmanipuliert. Ü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 derTrefferliste an den Spalteninhalt an. Der Einsatz dieses Suchhilfe-Exits ist sinnvoll,wenn die Spalten der Trefferliste für extreme Fälle sehr breit angelegt werdenmüssen (z.B. für Namensfelder), in der Regel aber mit deutlich kürzeren Wertengefüllt sind.

Jedes Suchhilfe-Exit muß die gleiche Schnittstelle wie der FunktionsbausteinF4IF_SHLP_EXIT_EXAMPLE (dient als Muster für alle anzulegenden Suchhilfe-Exits) besitzen.Genauere Informationen zur Schnittstelle können Sie der Dokumentation diesesFunktionsbausteins entnehmen.

Aufruf des Suchhilfe-ExitsIst einer Suchhilfe ein Suchhilfe-Exit zugeordnet, so wird dieses zu folgenden Zeitpunkten vomHilfeprozessor 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 Mengeder 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 eineTabelle oder einen View realisiert werden kann.

Page 208: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Suchhilfe-Exit

208 April 2001

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 dieWerte angezeigt werden, für die der Aufrufer der Eingabehilfe eine Berechtigung besitzt. DieAnzeige 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 derTransaktion vom gewählten Wert abhängig gemacht werden soll. Ein typisches Beispiel ist dasSetzen von Set-/Get-Parametern.

Die Suchhilfe SFLIGHT dient zur Suche nach Flugdaten. Mitarbeiter in Reisebürosbenötigen in der Regel bei der Suche nach Flügen auch eine Information darüber, obauf dem entsprechenden Flug noch Plätze frei sind. Diese Information ist in derSelektionsmethode der Suchhilfe (View über die Tabellen SCARR, SFLIGHT undSPFLI) nicht direkt enthalten. Die Selektionsmethode enthält lediglich dieInformationen, wie viele Plätze auf dem Flug zur Verfügung stehen und wie vielePlätze schon belegt sind.

Das Suchhilfe-Exit SAPBC_GLOBAL_F4_SFLIGHT berechnet aus diesenInformationen die noch freien Plätze und stellt das Resultat in einen Parameter derSuchhilfe zurück. Damit kann die Anzahl der noch freien Plätze dann auf derTrefferliste dargestellt werden.

Im Suchhilfe-Exit muß also nur eine Aktion für den Aufruf vor dem Anzeigen derTrefferliste programmiert werden.

Flugdatum F4F4

Fluggesellschaft

. . .

Pflege von Buchungen

AZ

Flugnummer

...

...

AbflugstadtAnkunftstadt

Rom

. . .

SELECT * FROM SFLIGHTS...

Suchhilfe-ExitSAPBC_GLOBAL_F4_SFLIGHT

Nr Abflugstadt Frei

FluggesellschaftFluggesellschaft

05550555 RomRom 147147

05550555 RomRom 198198

AlitaliaAlitalia

. . . . . . . . .

. . .

. . .

. . .

. . .

2

3

4

5

Page 209: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Beispiel zu Suchhilfen

April 2001 209

Beispiel zu SuchhilfenJeder Kunde einer Fluggesellschaft (siehe Flugmodell [Seite 312]) bzw. eines Reisebüros besitzteine Kundennummer. Es soll eine Suchmöglichkeit nach dieser Kundennummer bereitgestelltwerden.

Hierbei müssen dem Benutzer zwei verschiedene Suchpfade angeboten werden:

� Der Benutzer soll über die Kundendaten, wie z.B. Name und Adresse, nach derKundennummer suchen können.

� Der Benutzer soll über bereits bestehende Buchungen des Kunden nach der Kundennummersuchen können.

Die gewünschte Suchmöglichkeit kann durch Anlegen einer Sammelsuchhilfe [Seite 183]SCUSTOM bereitgestellt werden. Für die eigentlichen Suchpfade werden zwei elementareSuchhilfen [Seite 179] SCUSTOM_NAME (für die Suche über die Daten des Kunden) undSCUSTOM_BOOK (für die Suche über die bestehenden Buchungen) angelegt. Dieseelementaren Suchhilfen werden dann in die Sammelsuchhilfe aufgenommen.

Elementare Suchhilfe SCUSTOM_NAMEDiese 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. DieTabelle SCUSTOM muß also als Selektionsmethode der elementaren Suchhilfe gewählt werden.

SCUSTOMSelektionsmethodeTabelle SCUSTOM

Straße

Name

Stadt

Land

Werteselektion über die Suchhilfe

Klaus Meier

DE

Nun muß entschieden werden, welche Felder der Selektionsmethode im Ablauf der Eingabehilfebenötigt werden. Das sind die Felder, die entweder auf dem Dialogfenster zurWerteeinschränkung oder auf der Trefferliste erscheinen sollen.

Auf dem Dialogfenster zur Werteeinschränkung soll der Benutzer über den Namen des Kundenund dessen Anschrift, d.h. die Felder für Straße, Stadt und Land, einschränken können. Auf derTrefferliste sollen diese Felder und zusätzlich die Kundennummer (die Information, nach dergesucht wird, muß natürlich immer auf der Trefferliste stehen) angezeigt werden. In die Suchhilfemüssen also die Felder ID, NAME, STREET, CITY und COUNTRY der Tabelle SCUSTOM alsParameter aufgenommen werden.

Der Parameter ID ist als Import-Parameter deklariert. Damit kann ein im zugeordneten Feld einerBildschirmmaske eingegebenes Muster direkt für die Werteselektion ausgenutzt werden.Einschränkungen für die anderen Parameter der Suchhilfe müssen auf dem Dialogfenster zurWerteselektion eingegeben werden.

Page 210: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Beispiel zu Suchhilfen

210 April 2001

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

Elementare Suchhilfe SCUSTOM_BOOKDiese elementare Suchhilfe soll die Suche nach der Kundennummer über bestehendeBuchungen 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 derentsprechenden Tabellen, d.h. die vorhandenen Fremdschlüsselbeziehungen.

SPFLI

SBOOK

SCUSTOM

MANDT CARRID CONNID ...

MANDT CARRID CONNID ...... CUSTOMID

MANDT ID ...

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

SCUS_BOOKSelektionsmethodeView SCUS_BOOK

NameAirline

AbflugAnkunft

Werteselektion über die Suchhilfe

SCUSTOMSBOOK SPFLI

Auf dem Dialogfenster zur Werteeinschränkung soll der Benutzer die Suche nachBuchungsdaten über die Kennung der Airline, den Kundennamen, die Abflugstadt und dieAnkunftsstadt des Fluges einschränken können. Auf der Trefferliste sollen zusätzlich noch dasFlugdatum und natürlich die Kundennummer angezeigt werden. Als Parameter der Suchhilfemüssen also die Felder CARRID, FLDATE, CUSTOMID, NAME, CITYFROM und CITYTO desViews SCUS_BOOK in die elementare Suchhilfe aufgenommen werden.

Der Parameter CUSTOMID ist als Import-Parameter deklariert. Alle Parameter der Suchhilfe sindExport-Parameter.

Page 211: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Beispiel zu Suchhilfen

April 2001 211

Sammelsuchhilfe SCUSTOMDie beiden elementaren Suchhilfen werden nun in die Sammelsuchhilfe inkludiert. Hierbei isteine Zuordnung der Parameter der elementaren Suchhilfen zu den Parametern derSammelsuchhilfe anzugeben.

Sammelsuchhilfe SCUSTOM

ID NAME CITY COUNTRY

Elementare Suchhilfe SCUSTOM_BOOK

CARRID CUSTOMID NAME ...

Elementare Suchhilfe SCUSTOM_NAME

ID STREET CITY COUNTRYNAME

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

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

Anbindung an die Prüftabelle SCUSTOMDie Suchhilfe soll für alle Felder zur Verfügung stehen, die gegen die Tabelle SCUSTOM geprüftwerden. Die Suchhilfe muß deshalb an die Tabelle SCUSTOM angebunden werden. Hierbei isteine Zuordnung der Suchhilfeparameter zu den Schlüsselfeldern der Tabelle SCUSTOMnotwendig.

Bei dieser Feldzuordnung wird dem Feld ID der Tabelle SCUSTOM der Parameter ID derSuchhilfe SCUSTOM zugeordnet. Für alle anderen Parameter der Suchhilfe (NAME, CITY undCOUNTRY) ist keine Zuordnung möglich, da die Tabelle SCUSTOM diese Informationen nichtals Schlüsselfelder enthält.

Page 212: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Beispiel zu Suchhilfen

212 April 2001

Anbindung an ein Feld der Tabelle SCUSTOMDamit die Suchhilfe auch dann zur Verfügung steht, wenn das Feld SCUSTOM-ID direkt auf dieEingabemaske übernommen wurde, ist noch eine Anbindung der Suchhilfe an dieses Feldnotwendig.

Bei dieser Art der Anbindung können alle Parameter der Suchhilfe den entsprechenden Feldernder Tabelle zugeordnet werden.

Tabelle SCUSTOM

MANDT NAME ... CITY ...

Sammelsuchhilfe SCUSTOM

ID NAME CITY COUNTRY

Suchfeld

COUNTRYFORMID

Page 213: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Migration von Help-Views und Matchcodes zu Suchhilfen

April 2001 213

Migration von Help-Views und Matchcodes zuSuchhilfenSuchhilfen wurden zu Release 4.0 neu eingeführt. Zuvor konnten Eingabehilfen durch dasAnlegen von Matchcodes und Help-Views gestaltet werden, die aber deutlich wenigerFunktionalität besaßen. Beim Upgrade auf 4.x werden aus diesen Objekten Suchhilfen mitgleichem Namen erzeugt (ggf. wird dem Namen noch ein Y oder Z vorangestellt). DieUrsprungsobjekte verbleiben aber vorerst im System, auch wenn sie bedeutungslos gewordensind.

Ein Help-View war vor Release 4.0 eine vollwertige Beschreibung einer Eingabehilfe, dieautomatisch an seine Primärtabelle (und nur an diese) angebunden war. Aus jedem Help-Viewwird 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 alsSelektionsmethode den generierten DB-View (bei transparenter Id) bzw. die generiertePooltabelle (bei intransparenter Id) der Matchcode-Id. Im ersten Fall wird der generierte Viewnunmehr als eigenständiges Objekt im ABAP Dictionary verwaltet. Im zweiten Fall hängt diePooltabelle weiterhin an ihrer Matchcode-Id, da die Matchcodetechnik zur Aktualisierung derDaten in dieser Tabelle verwendet wird.

Aus einem Matchcode-Objekt wird eine Sammelsuchhilfe erzeugt. Die Anbindung vonMatchcodes an Eingabefelder erfolgte auf Dynproebene. Diese Anbindungen werden inAnbindungen der erzeugten Sammelsuchhilfen an die entsprechenden Dynprofelderumgewandelt.

Die folgende Abbildung illustriert die Migration für Help-Views und für transparente Matchcodes.

TabelleTSuchhilfe-anbindung

Help-ViewH_NAME

Primärtab. TSekundärtab. 1

...

oder

Help-View

H_NAME

Primärtab. TSekundärtab. 1

...

Sammelsuchh.ABCD

Suchhilfe-inklusionen

El. Suchhilfe

ABCDA

ZABCD1DB-ViewM_ABCD1

DB-ViewM_ABCDA

MC-ObjektABCD

MC-IdA generiert

DB-ViewM_ABCD1

MC-Id1 generiert

Release 3.x

Release 4.x

gehört zu

gehört zuDB-ViewM_ABCDA

El. SuchhilfeH_NAMESelektions-methode

El. Suchhilfe

Selektions-methode

Selektions-methode

Page 214: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Sperrobjekte

214 April 2001

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

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

Tabelle T1

Tabelle T2

Tabelle T3K4 K5 K6 D3 D4

D2K3K2

K1 D1

Fremdschlüssel

Fremdschlüssel

SperrargumenteDas Sperrargument einer Tabelle im Sperrobjekt besteht aus den Schlüsselfeldern der Tabelle.

Die Sperrargumentfelder eines Sperrobjekts werden in den aus der Sperrobjektdefinitiongenerierten Funktionsbausteinen zum Setzen und Freigeben von Sperren als Eingabeparameterverwendet. Beim Aufruf dieser Funktionsbausteine werden die zu sperrenden (bzw.freizugebenden) Tabellenzeilen durch die Angabe bestimmter, unter Umständen auchgenerischer Werte, dieser Felder spezifiziert. Die Sperrargumentfelder bestimmen also, welcheTeilmenge der Tabellenzeilen gesperrt werden soll.

Page 215: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Sperrobjekte

April 2001 215

Sperrargument T1

Sperrargument T2

Sperrargument T3

K1

K6K5K4

K3K2

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

Rote Einträge sind gesperrt!

Aufruf des Sperrfunktionsbausteins mitK1=2 und K3=1 (K6 unspezifiziert)

K1 D1

123...

.........

K2 K3

122

...

...

...

...

D2

33

...

...

11213

K4 K5

122

...

...

...

...

D3

22

...

...

11113

23

D4K6

31

...

...

...

...

...

...

.........

AABCABA

Tabelle T1 Tabelle T2 Tabelle T3

Sperren können über entsprechende Schnittstellen auch von Programmen in anderen Systemengesetzt werden, wenn das Sperrobjekt mit RFC-Erlaubnis definiert wurde.

Für jede Tabelle im Sperrobjekt kann ein Sperrmodus [Seite 217] vergeben werden. Dieserbestimmt, wie andere Benutzer auf einen gesperrten Satz der Tabelle zugreifen können.

Page 216: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Sperrobjekte

216 April 2001

Die Tabelle SFLIGHT im Flugmodell [Seite 312] enthält alle geplanten Flüge einerFluggesellschaft. Im Feld SEATSMAX ist die zur Verfügung stehende Anzahl vonPlä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 odereinem Verkaufsschalter der Fluggesellschaft), muß geprüft werden, ob nochausreichend freie Plätze vorhanden sind. Mit der Buchung wird dann auch die Zahlder belegten Plätze hochgezählt.

Bei diesem Mechanismus muß sichergestellt werden, daß nicht zwei Verkaufsstellengleichzeitig eine Buchung vornehmen und ein Flug damit überbucht wird.

Dies kann durch Anlegen eines Sperrobjekts ESFLIGHT erreicht werden. In diesesSperrobjekt muß nur die Tabelle SFLIGHT aufgenommen werden. Beim Bucheneines Fluges kann (mit den aus dem Sperrobjekt generierten Funktionsbausteinen)dann der Flug gesperrt werden. Will eine andere Verkaufsstelle ebenfalls Plätze fürdiesen 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]

Page 217: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Sperrmodus

April 2001 217

SperrmodusDer Sperrmodus regelt, ob mehrere Benutzer gleichzeitig auf Datensätze zugreifen können. DerSperrmodus kann für jede Tabelle im Sperrobjekt separat vergeben werden. Beim Setzen derSperre wird in der Sperrtabelle [Extern] des Systems pro Tabelle der entsprechende Sperreintragabgelegt.

Man unterscheidet die folgenden Arten, den Zugriff mehrerer Benutzer zu synchronisieren:

� Schreibsperre: Die gesperrten Daten können ausschließlich von einem Benutzer angezeigtbzw. bearbeitet werden. Sowohl die Anforderung einer weiteren Schreibsperre als auch einerLesesperre werden abgewiesen.

� Lesesperre: Mehrere Benutzer können gleichzeitig im Anzeigemodus auf die gesperrtenDaten zugreifen. Die Anforderungen weiterer Lesesperren werden akzeptiert, auch wenndiese von anderen Benutzern kommen. Eine Schreibsperre wird abgewiesen.

� Erweiterte Schreibsperre: Während Schreibsperren mehrfach von der gleichen Transaktionangefordert und sukzessive wieder abgebaut werden können, kann eine ErweiterteSchreibsperre auch von der gleichen Transaktion nur ein einziges Mal angefordert werden.Jede weitere Anforderung einer Sperre wird abgewiesen.

Siehe auch:Kollisionen von Sperren [Extern]

Page 218: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Funktionsbausteine für Sperranforderungen

218 April 2001

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

Die generierten Funktionsbausteine werden automatisch zu Funktionsgruppenzugeordnet. Sie sollten diese generierten Funktionsbausteine und deren Zuordnungzur Funktionsgruppe nicht ändern, da die Funktionsbausteine bei jeder neuenAktivierung des Sperrobjekts wieder neu generiert werden.

Sie sollten die Funktionsgruppen, die die automatisch generiertenFunktionsbausteine enthalten, niemals transportieren! Die generiertenFunktionsbausteine eines Sperrobjekts können im Zielsystem in einer anderenFunktionsgruppe liegen! Transportieren Sie immer die Sperrobjekte! Bei derAktivierung des Sperrobjekts im Zielsystem werden die Funktionsbausteine neugeneriert und korrekt zu Funktionsgruppen zugeordnet.

Parameter der FunktionsbausteineFeldnamen des SperrobjektsHier 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 Xbelegt, erfolgt die Sperre exakt mit dem Initialwert von <Feld>.

Parameter für die Sperrübergabe an den VerbucherEine Sperre wird in der Regel am Ende der Transaktion oder beim Aufruf des entsprechendenDEQUEUE-Funktionsbausteins aufgehoben. Falls die Transaktion Verbuchungsroutinenaufgerufen hat, gilt dies jedoch nicht mehr. In diesem Fall muß das Aufheben von Sperren übereinen Parameter gesteuert werden.

Der Parameter _SCOPE steuert, wie die Sperre bzw. Sperrfreigabe an den Verbucherweitergegeben wird (siehe Das Eigentümerkonzept von Sperren [Extern]). Es gibt folgendeMö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. DieRücknahme der Sperre erfolgt durch den Verbucher. Der Dialog, aus dem heraus die Sperregesetzt wurde, hat keinen Einfluß mehr auf das Sperrverhalten. Dies ist dieStandardeinstellung für den ENQUEUE-Funktionsbaustein.

� _SCOPE = 3: Die Sperre bzw. Sperrfreigabe wird zusätzlich an den Verbucherweitergegeben. Die Sperre muß sowohl im Dialog als auch in der Verbuchung wiederfreigegeben werden. Dies ist die Standardeinstellung für den DEQUEUE-Funktionsbaustein.

Page 219: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Funktionsbausteine für Sperranforderungen

April 2001 219

Parameter für den SperrmodusFür jede Basistabelle TAB des Sperrobjekts existiert ein Parameter MODE_<TAB>. Durch diesenParameter 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 (ErweiterteSchreibsperre).

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 Funktionsbausteinsbeliebig ü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ürden Parameter MODE_<TAB> erfolgen.

Steuerung des Abschickens der SperreOb die Anforderung einer Sperre oder das Aufheben einer Sperre direkt erfolgt oder vorerst nurin 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 Sperrserverabgeschickt.

� X : Die Sperranforderung bzw. Sperrfreigabe wird in den lokalen Sperrcontainer gestellt. Diein diesem Sperrcontainer aufgesammelten Sperranforderungen bzw. Sperrfreigaben könnendann zu einem späteren Zeitpunkt durch Aufruf des Funktionsbausteins FLUSH_ENQUEUEgemeinsam an den Sperrserver abgeschickt werden.

Verhalten bei Sperrkonflikten (nur ENQUEUE)Der ENQUEUE-Funktionsbaustein besitzt noch den Parameter _WAIT. Dieser Parameterbestimmt das Sperrverhalten beim Auftreten eines Sperrkonflikts [Extern].

Es gibt folgende Möglichkeiten:

� Initialwert: Schlägt ein Sperrversuch fehl, weil bereits eine überschneidende Sperre gesetztist, wird die Ausnahme FOREIGN_LOCK ausgelöst.

� X : Schlägt ein Sperrversuch fehl, weil bereits eine überschneidende Sperre gesetzt ist, wirdder Sperrversuch nach einer Wartezeit erneut unternommen. Nur wenn ein bestimmtesZeitlimit seit dem ersten Sperrversuch überschritten wurde, wird die AusnahmeFOREIGN_LOCK ausgelöst. Die Wartezeit und das Zeitlimit werden durch Profile-Parameterbestimmt.

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 ausder Sperrtabelle gelöscht wurde. Andernfalls erfolgt das Löschen asynchron, d.h. wenn sofortnach dem Entsperren die Sperrtabelle gelesen wird, kann unter Umständen der Sperreintragnoch vorgefunden werden.

Ausnahmen des ENQUEUE-Funktionsbausteins

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

Page 220: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Funktionsbausteine für Sperranforderungen

220 April 2001

� SYSTEM_FAILURE: Diese Ausnahme wird ausgelöst, wenn der Sperrserver meldet, daß einProblem beim Setzen der Sperre aufgetreten ist. Die Sperre konnte in diesem Fall nichtgesetzt werden.

Falls die Ausnahmen vom Aufrufer nicht selbst behandelt werden, werden zu allen Ausnahmenentsprechende Nachrichten gesendet.

Bezugsfelder bei RFC-fähigen SperrobjektenEin RFC-fähiger Funktionsbaustein muß vollständig typisiert sein. Die Parameter der generiertenFunktionsbausteine werden deshalb bei RFC-fähigen Sperrobjekten mit den folgendenBezugsfeldern 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]

Page 221: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Bedingungen an die Fremdschlüssel

April 2001 221

Bedingungen an die FremdschlüsselAlle Tabellen, die in ein Sperrobjekt aufgenommen werden, müssen über Fremdschlüssel [Seite20] miteinander verbunden sein. Es existieren eine Reihe von Einschränkungen an diezulässigen Verbindungen:

1. Die Tabellen des Sperrobjekts müssen bzgl. der Fremdschlüsselbeziehungen einen Baumbilden. Die Tabellen bilden die Knoten des Baums. Die Kanten des Baums haben dabei dieBedeutung 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 desSperrobjekts definierten Fremdschlüsselbeziehungen gegen mehr als ein anderes Feldgeprüft werden. Ein Feld darf also weder zweimal als Fremdschlüsselfeld in einer Beziehungvorkommen, noch in zwei verschiedenen Fremdschlüsselbeziehungen gegen zweiunterschiedliche 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ß dieTabelle aus der dieses Feld stammt in einem Teilbaum liegen, der die Prüftabelle dieserFremdschlüsselbeziehung als Wurzel hat.

Diese Bedingungen sind auf jeden Fall erfüllt, wenn der Schlüssel der Fremdschlüsseltabellestets eine Erweiterung des Schlüssels der Prüftabelle ist.

Die Bedingungen 2, 3 und 4 sind unbedeutend, wenn das jeweilige Fremdschlüsselfeld aus derZuordnung zu den Schlüsselfeldern der Prüftabelle herausgenommen wurde, indem es alsgenerisch gekennzeichnet oder als konstant gesetzt wurde [Seite 23]. Dies gilt auch beistrukturübergreifenden Fremdschlüsseln, falls das Fremdschlüsselfeld auf eine nicht imSperrobjekt enthaltene Tabelle zeigt.

Page 222: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Sperrmechanismus

222 April 2001

SperrmechanismusDer Zugriff mehrerer Programme auf dieselben Daten kann über einen logischenSperrmechanismus synchronisiert werden. Dieser Sperrmechanismus erfüllt im wesentlichenzwei Funktionen:

� Ein Programm kann anderen Programmen mitteilen, welche Datensätze es gerade ändertoder liest.

� Ein Programm kann sich davor schützen, Daten zu lesen, die gerade von einem anderenProgramm 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 aufgehobenwird oder das Programm beendet wird. Bei Programmende werden also alle von einemProgramm gehaltenen Sperren aufgehoben.

Programm

EnqueueServer

Sperrtabelle

TrägtSperreein

ZugriffaufDaten

FordertSperre an

Sperregesetzt

Datenbank

1

2

3

4

Beim Zugriff auf Datensätze können die gerade von anderen Programmen bearbeiteten Sätzeanhand des Eintrags in der Sperrtabelle identifiziert werden. Ein solcher Eintrag für die Sperremuß aus der Angabe einer Anzahl voll spezifizierter Schlüsselfelder bestehen, d.h. für dasSchlüsselfeld wird entweder ein Wert übergeben oder die Sperre erfolgt generisch bzgl. diesesFeldes.

Um Sperren zu setzen, muß im ABAP Dictionary ein Sperrobjekt [Seite 214] definiert werden.Beim Aktivieren dieses Sperrobjekts werden zwei Funktionsbausteine (siehe Funktionsbausteinefür Sperranforderungen [Seite 218]) mit den Namen ENQUEUE_<Sperrobjektname> undDEQUEUE_<Sperrobjektname> generiert.

Sollen Datensätze gesperrt werden, so muß der FunktionsbausteinENQUEUE_<Sperrobjektname> aufgerufen werden. Beim Aufruf werden ihm für alle imSperrobjekt enthaltenen Tabellen die Werte der Schlüsselfelder übergeben, die die zusperrenden 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 eineSperre an, wird dies je nach dem Sperrmodus [Seite 217] akzeptiert oder zurückgewiesen (sieheKollisionen von Sperren [Extern]). Das Programm kann dann auf diese Situation reagieren.

Gesperrte Datensätze können durch Aufruf des FunktionsbausteinsDEQUEUE_<Sperrobjektname> wieder entsperrt werden. Hierzu müssen diesem

Page 223: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Sperrmechanismus

April 2001 223

Funktionsbaustein die Schlüsselwerte und der Sperrmodus, die zum Setzen der Sperreverwendet wurden, übergeben werden.

ABAP Programm…call function 'ENQUEUE_E_TAB' exporting mode_tab = 'E' K1 = '1' K2 = ' ' …

Table TABK1 K2 D1 D2

Key fields

Sperrtabelle

TAB E 1 * …

Alle Sätze ausTAB mit K1=‘1’sind gesperrt

Dieses Sperrverfahren setzt natürlich voraus, daß sich alle beteiligten Programme kooperativverhalten. 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 nurdann gegen Änderungen eines anderen Programms geschützt, falls dieses vor dem Zugriff aufdie Daten ebenfalls eine Sperre anfordert!

Es besteht auch die Möglichkeit, Sperranforderungen bzw. Sperrfreigaben nicht direkt in dieSperrtabelle zu schreiben, sondern diese zunächst in einem lokalen Sperrcontainer [Seite 224]aufzusammeln. Diese aufgesammelten Sperren können dann zu einem späteren Zeitpunktgemeinsam abgeschickt werden. Ob eine Sperranforderung bzw. Sperrfreigabe direktabgeschickt wird, kann über einen Parameter des jeweiligen Funktionsbausteins gesteuertwerden.

Weitergehende Informationen zum Sperrkonzept und zur Funktionsweise der Sperrverwaltungfinden Sie in der Dokumentation Das R/3 Sperrkonzept [Extern].

Page 224: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Lokaler Sperrcontainer

224 April 2001

Lokaler Sperrcontainer Sperranforderungen bzw. Sperrfreigaben können in einem lokalen Sperrcontainer aufgesammeltund dann gemeinsam durch Aufruf des Funktionsbausteins FLUSH_ENQUEUE abgeschicktwerden.

Dies hat gegenüber dem direkten Abschicken der Sperraufträge zwei Vorteile:

� Durch das gemeinsame Abschicken der Sperraufträge wird die Kommunikation mit demSperrserver minimiert.

� Die gesammelten Sperraufträge werden gemeinsam behandelt, d.h. nur dann in dieSperrtabelle geschrieben, wenn dies für alle Einzelaufträge möglich ist.

Falls alle gesammelten Sperraufträge ausgeführt werden können, wird der lokale Sperrcontainergeleert, andernfalls bleibt sein Inhalt unverändert.

Lokaler SperrcontainerSammelt alle abgesetztenSperraufträge

Sperrserver

ABAP Programm

CALL FUNCTION ‘ENQUEUE_…’.

CALL FUNCTION ‘ENQUEUE_…’.

CALL FUNCTION ‘DEQUEUE_…’.

CALL FUNCTION ‘FLUSH_ENQUEUE’.

...

...

...

...

...

DEQUEUE ...ENQUEUE ...ENQUEUE ......

...

FLUSH_ENQUEUE schickt alleaufgesammelten Sperraufträgean den Sperrserver

Der lokale Sperrcontainer kann durch Aufruf des Funktionsbausteins RESET_ENQUEUE geleertwerden. Damit werden alle aufgesammelten Sperraufträge bzw. Sperrfreigaben gelöscht. BeiBeendigung 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 Sperranforderungenabgeschickt. Falls alle angeforderten Sperren gewährt werden können, werden dieSperrfreigaben abgeschickt.

Es findet also kein Abgleich von Sperranforderungen und Sperrfreigaben im lokalenSperrcontainer statt. Auch die Reihenfolge, in der die einzelnen Aufträge in den lokalenSperrcontainer geschrieben werden, spielt keine Rolle.

Page 225: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Sperrobjekt anlegen

April 2001 225

Sperrobjekt anlegen Vorgehensweise1. 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 Sperrobjektsuchen.

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 einigeEinschrä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 demSperrobjekt generierten Funktionsbausteine [Seite 218].

5. Wählen Sie Hinzufügen, wenn Sie über das Sperrobjekt Sätze in mehreren Tabellen sperrenwollen.

Es erscheint eine Liste aller mit der Primärtabelle über zulässige Fremdschlüssel [Seite221] verbundenen Tabellen. Wählen Sie die entsprechende Tabelle durch Doppelklickaus. Als Sperrmodus wird der Sperrmodus der Primärtabelle übernommen. Sie könnendiese Einstellung beliebig ändern, d.h. der Sperrmodus kann pro Tabelle vergebenwerden.

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 aufden Namen der Sekundärtabelle und wählen Sie Hinzufügen.

Wird einer Tabelle kein Sperrmodus zugeordnet, so werden für die Einträge dieserTabelle beim Aufruf der generierten Funktionsbausteine keine Sperren gesetzt! Esist sinnvoll keinen Sperrmodus zuzuordnen, falls eine Sekundärtabelle nuraufgenommen wurde, um zwischen Primärtabelle und einer weiterenSekundärtabelle einen Pfad über Fremdschlüssel zu etablieren.

6. Sichern Sie Ihre Eingaben.

Es erscheint ein Dialogfenster, in dem Sie das Sperrobjekt einer Entwicklungsklassezuordnen müssen.

7. Auf der Registerkarte Sperrparameter können Sie (optional) Sperrparameter (sieheSperrobjekte [Seite 214]) aus der Generierung der Funktionsbausteine ausschließen. Das istbeispielsweise sinnvoll, wenn bzgl. eines Parameters immer generisch gesperrt werden soll.

Page 226: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Sperrobjekt anlegen

226 April 2001

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. Fallszwei gleichnamige Felder aus verschiedenen Tabellen in das Sperrobjekt alsSperrparameter aufgenommen wurden, müssen Sie im Feld Sperrparameter für einesder Felder einen neuen Namen wählen.

8. Auf der Registerkarte Eigenschaften können Sie einstellen, ob die aus dem Sperrobjektgenerierten Funktionsbausteine RFC-fähig sein sollen.

Falls Sie das Kennzeichen RFC erlauben markieren, können die generiertenFunktionsbausteine per Remote Function Calls aus einem anderen System herausaufgerufen werden.

Erlauben Sie nachträglich Remote Function Calls bei einem schon bestehendenSperrobjekt, so müssen Sie sicherstellen, daß der Aufruf der generiertenFunktionsbausteine aus einem ABAP Programm heraus mit typgerechten Parameternerfolgt! Überprüfen Sie deshalb alle Programme, die die zugehörigen Funktionsbausteinebenutzen, bevor Sie das Sperrobjekt mit der neuen Option aktivieren!

9. Wählen Sie .

ErgebnisBei der Aktivierung des Sperrobjekts werden aus dessen Definition die beidenFunktionsbausteine ENQUEUE_<Sperrobjektname> und DEQUEUE_<Sperrobjektname> zumSetzen 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 derAktivierung Fehler auftraten, wird das Aktivierungsprotokoll direkt angezeigt.

Page 227: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Sperrobjekte löschen

April 2001 227

Sperrobjekte löschen VoraussetzungenBeim Löschen eines Sperrobjekts werden die beim Aktivieren des Sperrobjekts generiertenFunktionsbausteine [Seite 218] automatisch mitgelöscht. Beachten Sie, daß diese generiertenFunktionsbausteine möglicherweise noch in Programmen oder Klassen verwendet werden.

Ermitteln Sie deshalb vor dem Löschen eines Sperrobjekts alle Programme oder Klassen, diediese Funktionsbausteine enthalten, und entfernen Sie die Aufrufe der Funktionsbausteine.

Vorgehensweise1. 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 nochverwenden. 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ätigenmüssen. Falls die zum Sperrobjekt gehörenden Funktionsbausteine noch inProgrammen oder Klassen verwendet werden, erscheint eine entsprechende Warnung.Sie müssen die betroffenen Programme oder Klassen dann vor dem Löschen desSperrobjekts anpassen.

3. Bestätigen Sie den Löschauftrag.

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

Page 228: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Beispiel zu Sperrobjekten

228 April 2001

Beispiel zu SperrobjektenBei einer Flugbuchung (siehe Flugmodell [Seite 312]) müssen Überbuchungen eines Flugesverhindert werden. Deshalb muß der betreffende Flug für die Dauer der Bearbeitung zusammenmit allen für diesen Flug bestehenden Buchungen gesperrt werden. Dies kann über einSperrobjekt E_BOOKING erreicht werden.

Die Flüge sind in der Tabelle SFLIGHT verzeichnet, die Buchungen zu den Flügen in der TabelleSBOOK. Beide Tabellen sind über einen Fremdschlüssel verbunden. Das SperrobjektE_BOOKING muß also die Tabelle SFLIGHT als Primärtabelle und als weitere Tabelle dieTabelle SBOOK enthalten.

Fremdschlüsseltabelle SBOOK

MANDT CARRID CONNID FLDATE BOOKID CUSTOMID ...

Prüftabelle SFLIGHT

MANDT CARRID CONNID FLDATE ...

Primärschlüssel

Primärschlüssel

Fremdschlüsselzuordnung

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ßlichvon einem Benutzer angezeigt und bearbeitet werden.

Bei der Aktivierung des Sperrobjekts werden aus seiner Definition die folgendenFunktionsbausteine 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.

Page 229: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Beispiel zu Sperrobjekten

April 2001 229

CALL FUNCTION 'ENQUEUE_E_BOOKING' exporting mode_sflight = 'E' mode_sbook = 'E' mandt = sy-mandt carrid = 'LH ' connid = 400 fldate = '19981129' bookid = 0 customid = 0 x_carrid = ' ' x_connid = ' ' x_fldate = ' ' x_bookid = ' ' x_customid = ' ' _scope = '2' _wait = ’X' _collect = ' ' exceptions foreign_lock = 1 system_failure = 2 others = 3.

Sperrmodi

Sperrparameter

Sperrverhalten bei Übergabe des Initialwertes

Sperrübergabe an den VerbucherVerhalten bei KonfliktenSperrcontainer

Durch diesen Aufruf wird der Flug LH 400 am 29.11.1998 in der Tabelle SFLIGHT zusammen mitallen für diesen Flug in der Tabelle SBOOK eingetragenen Buchungen (da für BOOKID undCUSTOMID der Initialwert 0 mitgegeben wird) exklusiv (Sperrmodus E) gesperrt. Die Sperre wirdan den Verbucher weitergegeben (_SCOPE = '2'). Bei einem Sperrkonflikt wird nach einiger Zeiterneut versucht, die Sperre abzusetzen (_WAIT = 'X').

Die gesetzten Sperren können mit dem folgenden Aufruf des FunktionsbausteinsDEQUEUE_E_BOOKING wieder freigegeben werden.

Page 230: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Beispiel zu Sperrobjekten

230 April 2001

CALL FUNCTION 'DEQUEUE_E_BOOKING' exporting mode_sflight = 'E' mode_sbook = 'E' mandt = sy-mandt carrid = 'LH' connid = 400 fldate = ’19981129' bookid = 0 customid = 0 x_carrid = ' ' x_connid = ' ' x_fldate = ' ' x_bookid = ' ' x_customid = ' ' _scope = '3' _synchron = ' '

_collect = ' '.

Sperrmodi

Sperrparameter

Sperrverhalten bei Übergabe des Initialwertes

Sperrübergabe an den Verbucher

SperrcontainerSperreintrag synchron löschen

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

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

Page 231: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Datenbank-Strukturen anpassen

April 2001 231

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

Datenbank

aktive Version

überarbeitete Version

Feld 1 Feld 2 Feld 3

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

Neues Feld muß beimAktivieren auf der DBangehängt werden

Tabelle ist in deraktiven Version aufder DB vorhanden

Bei einigen Änderungen im ABAP Dictionary ist keine Änderung der Datenbank-Strukturnotwendig. 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 imABAP Dictionary nicht mit der Feldreihenfolge auf der Datenbank übereinstimmen muß. Indiesem 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 DictionaryDefinition kann auf drei Arten erfolgen:

� Durch Löschen und Neuanlegen der Datenbanktabelle. Die auf der Datenbank vorhandeneTabelle wird gelöscht. Danach wird die überarbeitete Version der Tabelle im ABAP Dictionaryaktiviert und auf der Datenbank erneut angelegt. In der Tabelle vorhandene Daten gehenhierbei verloren.

� Durch Änderung des Datenbank-Katalogs (ALTER TABLE). Es wird lediglich die Definitionder 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]). DieDatenbanktabelle 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

Page 232: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Datenbank-Strukturen anpassen

232 April 2001

Datenbank angelegt. Danach werden die Daten aus dem temporären Zwischenspeicher indie neue Datenbanktabelle zurückgeladen (mit MOVE-CORRESPONDING) und die Indizeszur 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 undneu angelegt. Sind Daten in der Tabelle vorhanden, so wird versucht die Strukturänderung durchein ALTER TABLE durchzuführen. Falls das verwendete Datenbanksystem die Strukturänderungnicht 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 derStrukturanpassung. Aber auch bei Strukturänderungen durch Änderungen des Datenbank-Katalogs können bei einigen Datenbank-Systemen aufwendige interne Reorganisationen derDaten ablaufen. Details über die in der Datenbank ablaufenden Prozesse beiStrukturänderungen durch ALTER TABLE finden Sie in der Dokumentation Ihres Datenbank-Systems.

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

Siehe auch:Probleme bei Umsetzungen [Seite 238]

Page 233: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Ablauf einer Umsetzung

April 2001 233

Ablauf einer UmsetzungDas folgende Beispiel soll die bei einer Umsetzung notwendigen Schritte verdeutlichen.

AusgangssituationDie 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 Feldeine Länge von 60 Stellen besitzt) und eine überarbeitete Version der Tabelle (in der das Feldnur noch 30 Stellen besitzt) vorhanden.

Auf der Datenbank ist die Tabelle mit der aktiven Version angelegt, d.h. auf der Datenbank hatFeld 3 momentan 60 Stellen. Für die Tabelle sind im ABAP Dictionary zwei Sekundärindizesdefiniert, 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 ineiner Abfolge von 7 Schritten durchgeführt.

Schritt 1: Sperre setzenDie Tabelle wird gegen weitere Strukturänderungen gesperrt. Dieser Sperrmechanismus sollverhindern, daß eine neue Strukturänderung durchgeführt wird, solange die Umsetzung nochnicht korrekt beendet ist. Bricht die Umsetzung nach Ausführung von Schritt 2 und vorBeendigung von Schritt 4 ab, könnte eine erneute Strukturänderung (z.B. durch einen erneutenUmsetzversuch) zu Datenverlust führen.

Schritt 2: Tabelle umbenennenDie auf der Datenbank vorhandene Tabelle wird umbenannt. Alle Indizes zur Tabelle werdendabei gelöscht. Der Name der neuen Tabelle setzt sich aus dem Präfix QCM und demTabellennamen zusammen. Der Name der temporären Tabelle zur Tabelle TAB ist alsoQCMTAB.

Page 234: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Ablauf einer Umsetzung

234 April 2001

QCMTAB

000100001200003000

Umbenennen vonTAB in QCMTAB

Löschen derIndizes

Feld 1NUMC, 6

Feld 2CHAR, 8

Feld 3CHAR, 60

1111A000222B100030B20

Text1...Text2 ...Text3 ...

TAB wird gesperrt

TAB_______1

TAB_______A

Feld 1NUMC, 6

Feld 2CHAR, 8

Feld 3CHAR, 60

000100001200003000

1111A000222B100030B20

Text1...Text2 ...Text3 ...

22

aktive Version von TAB

Feld 2CHAR, 8

Feld 3CHAR, 60

Feld 1NUMC,6

überarbeitete Version von TAB

Feld 2CHAR, 8

Feld 1NUMC,6

Feld 3CHAR, 30

TAB gesperrt 11

TAB

000100001200003000

22

Schritt 3: Tabelle aktivierenDie überarbeitete Version der Tabelle wird im ABAP Dictionary aktiviert. Dabei wird die Tabellemit ihrer neuen Struktur und mit dem Primärindex auf der Datenbank angelegt. Die Struktur derDatenbanktabelle entspricht also nach diesem Schritt der Struktur im ABAP Dictionary. DieDatenbanktabelle enthält aber noch keine Daten.

Zusätzlich wird eine Datenbanksperre für die umzusetzende Tabelle gesetzt. Während derUmsetzung sind damit keine schreibenden Zugriffe von Anwendungsprogrammen auf dieumzusetzende Tabelle möglich.

Page 235: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Ablauf einer Umsetzung

April 2001 235

Aktivieren im ABAP Dictionary

Feld 2CHAR, 8

Feld 1NUMC, 6

Feld 2CHAR, 8

Feld 3CHAR, 60

000100001200003000

1111A000222B100030B20

Text1...Text2 ...Text3 ...

QCMTAB TAB

Feld 1NUMC, 6

Feld 3CHAR, 30

33

TAB gesperrtaktive Version von TAB

Feld 2CHAR, 8

Feld 3CHAR, 60

Feld 1NUMC,6

überarbeitete Version von TAB

Feld 2CHAR, 8

Feld 1NUMC,6

Feld 3CHAR, 30

33

TAB wird auf DB neu angelegt

Schritt 4: Daten zurückladenDie 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 derOriginaltabelle und in der temporären Tabelle vorhanden. Informationen, wie vorhandeneEinträge in einem Feld bei einer Typänderung des Feldes behandelt werden, können Sie derABAP Dokumentation zum Befehl MOVE-CORRESPONDING entnehmen.

Da die Daten während der Umsetzung sowohl in der Originaltabelle als auch in der temporärenTabelle vorhanden sind, entsteht bei der Umsetzung ein erhöhter Platzbedarf. Sie sollten vor derUmsetzung größerer Tabellen deshalb prüfen, ob im betreffenden Tablespace genügend Platzvorhanden ist.

Beim Kopieren der Daten aus der temporären Tabelle in die Originaltabelle wird nach 16MB einDatenbank-Commit abgesetzt. Ein Umsetzprozeß benötigt deshalb 16MB Resourcen imRollback-Segment.

Page 236: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Ablauf einer Umsetzung

236 April 2001

Daten werden in TAB zurückgeladen

TAB

Feld 1NUMC, 6

Feld 2CHAR, 8

Feld 3CHAR, 30

000100001200003000

1111A000222B100030B20

Text1...Text2 ...Text3 ...

Feld 1NUMC, 6

Feld 2CHAR, 8

Feld 3CHAR, 60

000100001200003000

1111A000222B100030B20

Text1...Text2 ...Text3 ...

44

QCMTAB TAB

aktive Version von TAB

Feld 2CHAR, 8

Feld 3CHAR, 30

Feld 1NUMC,6

TAB gesperrt

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

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

Schritt 5: Sekundärindizes zur Tabelle neu anlegenDie im ABAP Dictionary zur Tabelle definierten Sekundärindizes werden auf der Datenbank neuangelegt.

Schritt 6: Löschen der QCM-TabelleDer in der temporären Tabelle (QCM-Tabelle) vorhandene Datenbestand wird nach dem Endeder Umsetzung nicht mehr benötigt. Die temporäre Tabelle wird deshalb gelöscht.

Schritt 7: Zurücknehmen der SperreDie zu Beginn der Umsetzung gesetzte Sperre wird gelöscht.

Page 237: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Ablauf einer Umsetzung

April 2001 237

Sperre löschen 77

Temporäre Tabelle löschen

Feld 1NUMC, 6

Feld 2CHAR, 8

Feld 3CHAR, 60

000100001200003000

1111A000222B100030B20

Text1...Text2 ...Text3 ...

QCMTAB

66 Feld 1NUMC, 6

Feld 2CHAR, 8

Feld 3CHAR, 30

000100001200003000

1111A000222B100030B20

Text1...Text2 ...Text3 ...

TAB_______1

TAB_______A

TAB

Anlegen derIndizes

55

aktive Version von TAB

Feld 2CHAR, 8

Feld 1NUMC,6

Feld 3CHAR, 30

TAB gesperrt

Bricht die Umsetzung ab, so bleibt die Tabelle gesperrt und es wird ein Aufsetzprotokollgeschrieben. Jeder erfolgreich durchgeführte Schritt der Umsetzung wird in diesemAufsetzprotokoll vermerkt. Das Aufsetzprotokoll wird nach dem erfolgreichen Ablauf derUmsetzung zusammen mit der Sperre gelöscht. Falls der Umsetzprozeß abbricht (sieheProbleme 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 dieTabelle zugreifen, laufen sonst möglicherweise nicht mehr korrekt. Hierzu muß der Grund für denAbbruch (z.B. Überlauf des entsprechenden Tablespace) ermittelt und bereinigt werden. Danachmüssen Sie die abgebrochene Umsetzung fortsetzen (siehe Abgebrochene Umsetzungenfortsetzen [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 ausdem physischen Tabellenpool/Tabellencluster gelöscht. Abschließend werden dieDaten aus der QCM-Tabelle gemäß der neuen Tabellendefinition in den physischenTabellenpool-/Tabellencluster zurückkopiert.

Siehe auch:Probleme bei Umsetzungen [Seite 238]

Auffinden abgebrochener Umsetzungen [Seite 242]

Page 238: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Probleme bei Umsetzungen

238 April 2001

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

Abbruch wegen TablespaceüberlaufDa die Daten während der Umsetzung sowohl in der Originaltabelle als auch in der temporärenTabelle (QCM-Tabelle) vorhanden sind, entsteht bei der Umsetzung ein erhöhter Platzbedarf. Siesollten deshalb vor der Umsetzung größerer Tabellen prüfen, ob im betreffenden Tablespacegenügend Platz vorhanden ist.

Falls der Tablespace beim Zurückladen der Daten aus der temporären Tabelle in dieOriginaltabelle überläuft, bricht die Umsetzung an dieser Stelle ab. Sie müssen in diesem Fallden Tablespace erweitern und die Umsetzung im Datenbank-Utility dann mit Anpassungfortsetzen (siehe Abgebrochene Umsetzungen fortsetzen [Seite 240]) erneut starten. DasSystem setzt die Umsetzung dann an der Abbruchstelle fort.

Löschen eines MandantenfeldesWird das Mandantenfeld aus einer mandantenabhängigen Tabelle entfernt, so unterscheidensich Sätze aus unterschiedlichen Mandanten möglicherweise nicht mehr bzgl. des neuenSchlü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 istalso nicht garantiert, daß die zurückgeladenen Sätze nur aus einem Mandanten stammen. Siesollten in einem solchen Fall die Tabelle vor der Umsetzung bereinigen.

Datenverlust bei SchlüsselverkürzungenWird der Schlüssel einer Tabelle verkürzt (z.B. durch Entfernen oder Verkürzung der Feldlängevon Schlüsselfeldern) können vorhandene Sätze der Tabelle sich bzgl. des neuen Schlüsselsnicht mehr unterscheiden. Beim Zurückladen der Daten aus der temporären Tabelle kann nureiner dieser Sätze (da die Datenbank keine Duplicate Records zulässt) in die Tabellezurückgeladen werden.

Welcher der Sätze zurückgeladen werden kann, ist nicht vorhersehbar. Falls Sie bestimmteSätze übernehmen wollen, müssen Sie die Tabelle vor der Umsetzung bereinigen!

Typkonvertierung nicht möglichBei einer Umsetzung werden die Daten mit dem ABAP Befehl MOVE-CORRESPONDING ausder temporären Tabelle in die Datenbanktabelle zurückkopiert. Bei einer Umsetzung sind nursolche Typänderungen möglich, die durch MOVE-CORRESPONDING durchgeführt werdenkönnen. Falls die Typänderung eines Feldes nicht über MOVE-CORRESPONDING abgebildetwerden 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 denalten Zustand vor der Umsetzung wiederherstellen.

Hierzu müssen Sie im ersten Schritt mit Datenbankmitteln die Datenbanktabelle löschen und dieQCM-Tabelle wieder auf den ursprünglichen Namen umbenennen. Im zweiten Schritt müssenSie im Datenbank-Utility die Sperre durch Tabelle entsperren aufheben. Im dritten Schritt müssen

Page 239: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Probleme bei Umsetzungen

April 2001 239

Sie das Laufzeitobjekt zur Tabelle mit dem Datenbank-Utiltity rekonstruieren (sieheDatenbanktabellen und Indizes bearbeiten [Seite 255]) und die Tabellendefinition im ABAPDictionary wieder auf den Stand vor der Umsetzung bringen. Als letzten Schritt müssen Sie dieTabelle im ABAP Dictionary aktivieren.

Beachten Sie bitte auch, daß Probleme bei Typkonvertierungen abhängig vom Inhalt desbetreffenden 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 demKomma belegt sind, kommt es beim Zurückladen der Sätze in die Tabelle zu einemAbbruch. Sind dagegen keine solchen Einträge vorhanden, kann das Zurückladendurchgeführt werden.

Abbruch bei Umsetzungen von Pool-/ClustertabellenBei der Umsetzung einer Pool-/Clustertabelle (siehe Pool- und Clustertabellen [Seite 269]) wirddie 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 eineObergrenze für die Feldanzahl einer Datenbanktabelle.

Deshalb ist eine Umsetzung bei Pool- und Clustertabellen nicht möglich, falls die Feldanzahl derPool-/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]

Page 240: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Abgebrochene Umsetzungen fortsetzen

240 April 2001

Abgebrochene Umsetzungen fortsetzenVoraussetzungenFalls eine Umsetzung abbricht, bleibt der im ersten Schritt gesetzte Sperreintrag für die Tabellestehen (siehe Ablauf einer Umsetzung [Seite 233]). Die Tabelle kann damit nicht mehr mit denPflegewerkzeugen 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 mehrlesen und reagieren damit falsch bzw. laufen nicht.

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

Sie verzweigen ins Pflegebild für Datenbanktabellen.

3. Wählen Sie Anpassung analysieren.

Im Folgebild wird aufgelistet, welche Schritte der Umsetzung korrekt abgearbeitetwerden konnten. Weiterhin wird der Zustand der an der Umsetzung beteiligten Tabellen(Tabelle mit alter Struktur, QCM-Tabelle und Tabelle mit neuer Struktur) angezeigt. Überdieses Bild können Sie sich auch die vorhandenen Syslog-Einträge oder vorhandeneKurzdumps anzeigen lassen.

4. Wählen Sie Objektprotokoll.

Dem Objektprotokoll können Sie in der Regel die genaue Ursache des Abbruchsentnehmen. 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 gefundeneFehlerursache (siehe hierzu Probleme bei Umsetzungen [Seite 238]).

Die Umsetzung kann in der Regel erst dann fortgesetzt werden, wenn die zum Abbruchführende Ursache beseitigt wurde!

6. Gehen Sie auf das vorhergehende Pflegebild zurück und setzen Sie dort die Umsetzung mitAnpassung fortsetzen fort.

ErgebnisDas System versucht nun die Umsetzung an der Abbruchstelle fortzusetzen.

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

Page 241: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Abgebrochene Umsetzungen fortsetzen

April 2001 241

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

Page 242: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Auffinden abgebrochener Umsetzungen

242 April 2001

Auffinden abgebrochener UmsetzungenVorgehensweise1. 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 erstenSpalte der Liste können Sie den Tabellennamen entnehmen.

3. Über Doppelklick auf der entsprechenden Zeile verzweigen Sie für die betroffene Tabelle insPflegebild des Datenbank-Utilities.

Dort können Sie die Abbruchursache analysieren und die abgebrochene Umsetzungfortführen. Siehe hierzu Abgebrochene Umsetzungen fortsetzen [Seite 240].

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

Page 243: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Aktivierung

April 2001 243

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

Die Informationen zu einer Tabelle sind im ABAP Dictionary auf Domänen,Datenelemente, Felddefinitionen und die Tabellendefinition verteilt. DasLaufzeitobjekt der Tabelle faßt diese Informationen in einer optimierten Formzusammen.

Tabelle Informationzur Tabelle

Feldinformation

Laufzeitobjektzur Tabelle

Feld 2 Feld 3Feld 1

Daten-element 1

Daten-element 1

Domäne 1Domäne 1

ABAPInterpreter

Daten-element 2

Daten-element 2

Daten-element 3

Daten-element 3

Domäne 2Domäne 2 Domäne 3Domäne 3

ABAP Programme und Dynpros ermitteln die benötigten Informationen zu ABAP DictionaryObjekten aus deren Laufzeitobjekten. Änderungen an ABAP Dictionary Objekten werden überZeitstempelvergleiche (siehe Laufzeitobjekte [Seite 245]) ermittelt. Damit werden Änderungen anABAP Dictionary Objekten zum Zeitpunkt der Aktivierung in allen Systemkomponenten wirksam.

Bei der Aktivierung eines Objekts werden auch alle von diesem Objekt abhängigen Objekte neuaktiviert.

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

Page 244: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Aktivierung

244 April 2001

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

Tabelle 5Tabelle 4Tabelle 3Tabelle 2Tabelle 1

Datenelement 1Datenelement 1

Domäne DomäneDomäne

AbhängigeDatenelemente

AbhängigeTabellen

Datenelement 2Datenelement 2 Datenelement 3Datenelement 3

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, welcheAuswirkungen diese Aktion hat. Alle von einem Objekt abhängigen Objekte können Sie sich überden Verwendungsnachweis im Pflegebild des Objekts anzeigen lassen.

Es besteht auch die Möglichkeit, eine größere Anzahl von Objekten gleichzeitig mit demMassenaktivierer [Seite 246] zu aktivieren.

Wenn bei einer Aktivierung aufgrund einer großen Anzahl abhängiger Objekte mit einer langenLaufzeit zu rechnen ist (z.B. wenn eine Domäne aktiviert werden soll, die in vielen Tabellenverwendet wird), sollten Sie das Objekt im Hintergrund aktivieren [Seite 247].

Page 245: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Laufzeitobjekte

April 2001 245

LaufzeitobjekteTabellen, Views und Typen (Datenelemente, Strukturen und Tabellentypen) besitzenLaufzeitobjekte, die die für ABAP Programme oder Dynpros relevanten Informationen zumObjekt zusammenfassen. Das Laufzeitobjekt (Nametab) wird bei der erstmaligen Aktivierungeines Objekts erzeugt und danach bei weiteren Aktivierungen an den neuesten Stand desObjekts angepaßt. Die Laufzeitobjekte sind gepuffert, so daß ABAP Programme oder Dynprosschnell auf die für sie relevanten Informationen zugreifen können.

Über Zeitstempel wird sichergestellt, daß ABAP Programme oder Dynpros stets auf dieaktuellsten Informationen zugreifen. Bei der Aktivierung eines Objekts im ABAP Dictionary wirdsowohl der Zeitstempel des Laufzeitobjekts als auch der Zeitstempel aller Programme bzw.Dynpros angepaßt, die dieses Objekt verwenden. Die Anpassung der Zeitstempel abhängigerProgramme bzw. Dynpros erfolgt allerdings nur, wenn bei der Aktivierung eine für Programmebzw. Dynpros relevante Änderung eintrat.

Beim nächsten Aufruf des Programms oder des Dynpros kann durch einen Vergleich derZeitstempel ermittelt werden, ob das Programm bzw. das Dynpro direkt ausgeführt werden kannoder ob neu generiert werden muß. Durch diesen Mechanismus werden unnötige Generierungenvermieden und mehrere aufeinanderfolgende Änderungen an einem Objekt können in einemGenerierungsschritt erledigt werden.

Aktivierung einesverwendeten ABAP Dictionary Objekts

Aufruf des Programms

Nein

Ja

ZS Source neuerals ZS Load

Ausführen

generieren

Zeitstempel derSource erhöhen

Programm-SourceZeitstempel Source

generiertes Programm

Zeitstempel Load

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

Page 246: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Massenaktivierung

246 April 2001

MassenaktivierungSoll eine größere Menge von Objekten gleichzeitig aktiviert werden, z.B. nach einem Import, sobesteht die Möglichkeit der Massenaktivierung mit Hilfe des Programms RADMASG0. DiesesProgramm wird im folgenden Text auch Massenaktivierer genannt.

Der Massenaktivierer wird nach dem Einspielen eines Transportauftrags in ein Systemautomatisch 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änderungenbetroffen, 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 derAktivierung einer Tabelle müssen z.B. erst alle Domänen und Datenelemente, auf die Felderder 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 inihrer Struktur mit der Tabelle TACOB übereinstimmen. Die Tabelle TACOB selbst kannnatü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 desMassenaktivierers über eine Eingabemaske eingegeben werden.

Sie müssen den Massenaktivierer über das Reporting (SE38) aufrufen. Der Massenaktivierer hatmehrere Eingabeparameter. Deren Bedeutung und die möglichen Eingabewerte können Sie derF1- und F4-Hilfe entnehmen.

Page 247: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Aktivieren im Hintergrund

April 2001 247

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

Vorgehensweise1. 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 denObjektnamen 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 derTabelle TACOB über den Massenaktivierer [Seite 246] (Aufruf des Reports RADMASG0)einplanen.

Page 248: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Datentyp im ABAP Dictionary

248 April 2001

Datentyp im ABAP DictionaryDer Datentyp im ABAP Dictionary ist die Sicht des Benutzers auf die Daten, d.h. dasDatenformat an der Benutzeroberfläche. Dieses Datenformat ist vom verwendeten Datenbank-System unabhängig. Beim Anlegen einer im ABAP Dictionary definierten Tabelle auf derDatenbank werden die im ABAP Dictionary definierten Datentypen in die Datentypen des jeweilsverwendeten Datenbank-Systems überführt.

Wird ein ABAP Dictionary Objekt (Datenelement, Struktur, Tabellentyp, Tabelle, View) in einemABAP Programm verwendet, so werden die Dictionary-Datentypen der Objekt-Felder in dieentsprechenden ABAP-Datentypen konvertiert.

CLNT CARRID ...CONNID

Tabellendefinition im ABAP Dictionary

S_CONN_IDDatenelementDatentyp NUMCLänge 4

SPFLI

Feld CONNID mit DB-Typ VARCHAR2 (beiORACLE) und Länge 4

ABAP Programm

CLNT CARRID CONNID ...

TYPES CONN TYPE S_CONN_ID.

Legt Typ CONN mitABAP-Typ N undLänge 4 an

Tabelle SPFLI

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

Vorhandene DatentypenACCP: Buchungsperiode. Die Länge ist bei diesem Datentyp auf 6 Stellen festgelegt. DasFormat ist JJJJMM. Bei der Ein- und Ausgabe wird ein Punkt zwischen Jahr und Monateingefü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 255haben. Sollen längere Character-Felder in Tabellen benutzt werden, ist der Datentyp LCHR zuwä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.

Page 249: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Datentyp im ABAP Dictionary

April 2001 249

CURR: Währungsfeld. Entspricht einem Betragsfeld DEC. Ein Feld dieses Typs muß auf ein Felddes Typs CUKY (Referenzfeld) zeigen. Die maximale Länge beträgt bei diesem Datentyp 31Stellen.

DATS: Datum. Die Länge ist bei diesem Datentyp auf 8 Stellen festgelegt. Die Ausgabemaskekann über das Benutzerprofil festgelegt werden.

DEC: Rechen- oder Betragsfeld mit Komma, Vorzeichen und Tausenderpunkten. Ein DEC Felddarf maximal 31 Stellen lang sein.

FLTP: Gleitpunktzahl. Die Länge (inklusive Dezimalstellen) ist bei diesem Datentyp auf 16Stellen festgelegt.

INT1: 1-Byte-Integer; Zahlbereich 0 bis 255. Die Länge ist bei diesem Datentyp auf 3 Stellenfestgelegt.

INT2: 2-Byte-Integer; Zahlbereich -32767 bis 32767. Felder dieses Typs sollten nur alsLängenfelder verwendet werden. Solche Längenfelder stehen direkt vor einem langen Feld (TypLCHR, 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 diesemDatentyp auf 5 Stellen festgelegt.

INT4: 4-Byte-Integer; Zahlbereich -2177483647 bis 2177483647. Die Länge ist bei diesemDatentyp auf 10 Stellen festgelegt.

LANG: Sprachenschlüssel. Eigenes Feldformat für Sonderfunktionen. Dieser Datentyp hat stetsdie Länge 1. Der Sprachenschlüssel wird an der Benutzeroberfläche zweistellig angezeigt, istaber auf der Datenbank nur einstellig abgelegt. Die Konvertierung zwischen der Anzeige auf derBenutzeroberfläche und der Datenbank erfolgt über das Konvertierungsexit ISOLA. DiesesKonvertierungsexit wird einer Domäne mit Datentyp LANG automatisch beim Aktivierenzugeordnet.

LCHR: Beliebig lange Zeichenketten mit mindestens 256 Zeichen. Felder dieses Typs müssenbei transparenten Tabellen am Ende stehen und ein voranstehendes Längenfeld vom Typ INT2besitzen. Beim INSERT oder UPDATE in ABAP Programmen muß dieses Längenfeld mit dertatsä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 Typsmüssen bei transparenten Tabellen am Ende stehen und ein voranstehendes Längenfeld vomTyp INT2 besitzen. Beim INSERT oder UPDATE in ABAP Programmen muß dieses Längenfeldmit der tatsächlich gewünschten Länge gefüllt werden. Felder dieses Typs können nicht in derWHERE-Bedingung eines SELECT-Statements verwendet werden.

NUMC: Langes Character-Feld, in das nur Ziffern eingegeben werden können. Die Länge einesFeldes dieses Typs ist auf maximal 255 Stellen begrenzt.

PREC: Genauigkeit eines QUAN Feldes. Die Länge ist bei diesem Datentyp auf 2 Stellenfestgelegt.

QUAN: Menge. Entspricht einem Betragsfeld DEC. Ein Feld dieses Typs muß stets auf einEinheitenfeld mit Format UNIT (Referenzfeld) zeigen. Die maximale Länge beträgt bei diesemDatentyp 31 Stellen.

RAW: Uninterpretierte Byte-Folge. Felder vom Typ RAW dürfen in Tabellen nur die maximaleLänge 255 haben. Sollen längere Raw-Felder in Tabellen benutzt werden, ist der DatentypLRAW zu wählen.

Page 250: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Datentyp im ABAP Dictionary

250 April 2001

RAWSTRING: Uninterpretierte Byte-Folge variabler Länge. Dieser Typ kann nur in Typen(Datenelementen, Strukturen, Tabellentypen) und Domänen verwendet werden. EineVerwendung in Datenbanktabellen ist nicht möglich. Im ABAP ist dieser Typ als Referenz aufeinen 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 inDatenbanktabellen ist nicht möglich. Im ABAP ist dieser Typ als Referenz auf einenSpeicherbereich 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. DieLänge dieses Datentyps ist auf 2 oder 3 Stellen festgelegt.

VARC: Variabel langes Characterfeld. Das Neuanlegen von Feldern dieses Datentyps wird abRelease 3.0 nicht mehr unterstützt. Bestehende Felder mit diesem Datentyp können aberweiterhin verwendet werden. Felder dieses Typs können nicht in der WHERE-Bedingung einesSELECT-Statements verwendet werden.

Bei Verwendung der numerischen Datentypen CURR, DEC, FLPT, INT2, INT4 undQUAN können Sie wählen, ob ein Vorzeichen auf Dynpros ausgegeben werden solloder nicht.

Bei den Datentypen CURR, DEC und QUAN werden Tausenderpunkte undDezimalpunkte vom System gesetzt. Die Ausgabelänge (Zahl der Stellen plus dieZahl der notwendigen Aufbereitungszeichen wie Tausenderpunkte undDezimalzeichen) ist deshalb höher als die gewählte Länge.

Das System läßt Aufbereitungszeichen weg, wenn die in der Domänenpflegeangegebene Ausgabelänge zu klein ist.

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

Page 251: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Abbildung auf den ABAP-Datentyp

April 2001 251

Abbildung auf den ABAP-Datentyp Die ABAP-Datentypen werden vom ABAP-Prozessor in den Arbeitsbereichen für Datenverwendet.

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 denentsprechenden ABAP-Datentyp konvertiert.

Abbildung der Datentypen zwischen ABAP Dictionary undABAP-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)

Page 252: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Abbildung auf den ABAP-Datentyp

252 April 2001

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

Page 253: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Das Datenbank-Utility

April 2001 253

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 ausObjekten des ABAP Dictionary abgeleitete Datenbankobjekte bearbeitet (angelegt, gelöscht undan Änderungen ihrer Definition im ABAP Dictionary angepaßt) werden.

...T3T2 T1 Tn

T1T2

T3Tn

ABAP Dictionary

DB-UTILITYDB-UTILITY

Datenbank

Bearbeiten von DatenbankobjektenSie können das Datenbank-Utility aus dem Einstiegsbild des ABAP Dictionary über Hilfsmittel �Datenbank-Utility (Transaktion SE14) aufrufen. Sie gelangen damit ins Einstiegsbild desDatenbank-Utilties.

Mit dem Datenbank-Utility können Sie alle Datenbankobjekte bearbeiten, die aus Objekten desABAP Dictionary generiert werden. Dies sind Datenbanktabellen, die aus transparenten Tabellenoder 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 proObjekttyp ein eigenes Pflegebild angeboten. Sie können durch Eingabe des Objektnamens undmarkieren des Objekttyps im Einstiegsbild des Datenbank-Utilities in das entsprechendePflegebild verzeigen. Sie erreichen dieses Bild auch direkt aus dem Pflegebild des Objekts imABAP Dictionary über Hilfsmittel � Datenbank-Utility.

Zur Benutzung des Datenbank-Utilities ist eine Berechtigung für dasBerechtigungsobjekt S_DDIC_OBJ erforderlich, z. B. S_DDIC_ALL.

Page 254: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Das Datenbank-Utility

254 April 2001

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 fortsetzenFalls eine Umsetzung [Seite 233] abbricht, kann über das Datenbank-Utility die Abbruchursacheanalysiert werden. Die Umsetzung kann dann nach Beseitigung dieser Abbruchursache mit demDatenbank-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änderungenDas Datenbank-Utility bietet eine Reihe von Möglichkeiten zur Administration bzw. Überwachungvon Aufträgen zu Datenbankänderungen. Sie können diese Funktionen direkt im Einstiegsbilddes 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 überwachenDie inkrementelle Tabellenumsetzung ermöglicht eine Reorganisation und strukturelleVeränderung von Tabellen. Diese bleiben im Gegensatz zur Standardumsetzung während derZeit des Datentransfers für das System uneingeschränkt nutzbar. Auf diese Weise steht für denDatentransfer erheblich mehr Zeit zur Verfügung, und es können weit größerer Datenmengenumgesetzt werden als mit der Standardumsetzmethode. Lediglich während der Initialisierung derinkrementellen Umsetzung und beim Übergang auf die neue Tabelle kommt es zu kurzenEinschrä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 derinkrementellen Umsetzung hinter dem Info-Button. Für die Durchführung einer inkrementellenUmsetzung steht Ihnen ein Assistent zur Verfügung.

Siehe auch:Datenbank-Strukturen anpassen [Seite 231]

Aktivierung [Seite 243]

Page 255: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Tabellen und Indizes auf der Datenbank bearbeiten

April 2001 255

Tabellen und Indizes auf der Datenbank bearbeitenGrundfunktionenFür transparente Tabellen stehen die Funktionen Datenbanktabelle anlegen, Datenbanktabellelöschen und Aktivieren und Datenbank anpassen zur Verfügung. Sie können eine solcheFunktion ausführen, indem Sie die Verarbeitungsart [Seite 261] markieren und denentsprechenden Druckknopf betätigen.

� Datenbanktabelle anlegen: Die Tabelle wird mit ihrer aktiven Version und dem Primärindexauf der Datenbank angelegt. Aktive Sekundärindizes werden ebenfalls auf der Datenbankangelegt, falls dies bei der Definition des Index nicht explizit ausgeschlossen wurde (sieheauch Sekundärindizes anlegen [Seite 80]).

� Datenbanktabelle löschen: Die Tabelle wird auf der Datenbank einschließlich aller Indizeszur Tabelle gelöscht.

� Aktivieren und Datenbank anpassen: Die überarbeitete Version der Tabelle wird aktiviertund 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 wirddie Tabelle auf der Datenbank gelöscht und mit der neuen Definition wieder angelegt. In derTabelle vorhandene Daten gehen dabei verloren. Bei Daten erhalten wird versucht, dieAnpassung durch ein ALTER TABLE durchzuführen. Ist dies nicht möglich, wird eineUmsetzung [Seite 233] der Tabelle angestoßen.

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

Funktionen für IndizesSie erreichen das Pflegebild für Indizes über Springen � Indizes. Es erscheint eine Liste allerim ABAP Dictionary vorhandenen Indizes zur Tabelle. Wählen Sie den gewünschten Index durchDoppelklick aus. Auf dem Folgebild stehen folgende Funktionen zur Verfügung:

� Datenbankindex anlegen: Anlegen eines Sekundärindex oder des Primärindex einertransparenten Tabelle auf der Datenbank.

� Datenbankindex löschen: Löschen eines Sekundärindex einer transparenten Tabelle aufder Datenbank. Der Primärindex einer auf der Datenbank angelegten transparenten Tabellekann 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 neuangelegt und aufgebaut.

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

Page 256: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Tabellen und Indizes auf der Datenbank bearbeiten

256 April 2001

� Speicherparameter pflegen: Für transparente Tabellen können Speicherparameter [Seite262] gepflegt werden, die Datenbankeinstellungen (z.B. Extentgrößen) zur Tabellebeeinflussen. Sie gelangen über den Druckknopf Speicherparameter in den entsprechendenPflegebildschirm.

� Konsistenz prüfen: Über Zusätze � Datenbankobjekt � Prüfen können Sie die Definitionder 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 derDatenbank verglichen. Über Zusätze � Laufzeitobjekt � Prüfen können Sie dasLaufzeitobjekt der Tabelle mit den in der ABAP Dictionary Pflege eingegebenen Informationvergleichen. Beide Definitionen werden angezeigt. Die gefundenen Unterschiede werdendabei farblich hervorgehoben. In der Anzeige der Prüfergebnisse kann in beiden Fällenzwischen Deltadarstellung (nur Unterschiede) und Volldarstellung (alle Informationen)umgeschaltet werden.

� Existenz von Daten prüfen: Mit Tabelle � Daten vorhanden? können Sie prüfen, ob dieTabelle 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 derTabelle auf der Datenbank und die zur Tabelle definierten Indizes über Zusätze �Datenbankobjekt � Anzeigen auflisten lassen. Über Zusätze � Laufzeitobjekt �Anzeigenkönnen Sie sich das Laufzeitobjekt der Tabelle anzeigen lassen. Nähere Informationen zurInterpretation der angezeigten Daten finden Sie über den -Button.

� Umsetzung erzwingen: Sie können über Zusätze � Umsetzung erzwingen eineUmsetzung [Seite 233] der Tabelle anstoßen. Diese Funktion ist z.B. sinnvoll, wenn nur dieSpeicherparameter [Seite 262] bzw. die technischen Einstellungen [Seite 31] der Tabellegeändert wurden, die Struktur der Tabelle aber gleich geblieben ist. Einige der geändertenEinstellungen können sich erst nach einer Umsetzung der Tabelle auf der Datenbankauswirken. Über die Funktion Aktivieren und Datenbank anpassen kann in diesem Fall keineUmsetzung der Tabelle angestoßen werden, da sich die Struktur der Tabelle nicht veränderthat.

� Rekonstruieren: Sie können über Tabelle � Rekonstruieren ein zur Datenbanktabellepassendes Laufzeitobjekt [Seite 245] erzeugen. Dieses Laufzeitobjekt enthält nur die auf derDatenbank verfügbaren Informationen zur Tabelle, z.B. Feldnamen und Datentypen. ImABAP Dictionary vorhandene zusätzliche Informationen zur Tabelle, wie z.B. Angaben zurPufferung, sind nicht enthalten. Die Berechtigung für das Ausführen dieser Funktion besitztnur der Benutzer DDIC. Sie sollten diese Funktion nur zum temporären Beheben vonSchiefständen (Abweichung zwischen Datenbankzustand und Laufzeitobjekt) nutzen und aufjeden Fall die Tabelle später regulär im ABAP Dictionary anpassen und dort aktivieren.

Page 257: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Views auf der Datenbank bearbeiten

April 2001 257

Views auf der Datenbank bearbeiten GrundfunktionenFür die Bearbeitung von Datenbank-Views [Seite 111] stehen im Datenbank-Utility dieFunktionen Datenbank-View anlegen, Datenbank-View löschen und Aktivieren und Datenbankanpassen zur Verfügung. Sie können eine solche Funktion ausführen, indem Sie eineVerarbeitungsart [Seite 261] auswählen und den entsprechenden Druckknopf betätigen.

� Datenbank-View anlegen: Ein im ABAP Dictionary definierter Datenbank-View wirdphysisch 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 derDatenbank neu angelegt.

Weitere FunktionenDas 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 dieDefinition des Views auf der Datenbank mit dem Laufzeitobjekt [Seite 245] des Viewsvergleichen. Über Zusätze � Laufzeitobjekt � Prüfen können Sie das Laufzeitobjekt desViews mit den in der ABAP Dictionary Pflege angegebenen Information zum Viewvergleichen. Beide Definitionen werden angezeigt. Die gefundenen Unterschiede werdendabei farblich hervorgehoben. In der Anzeige der Prüfergebnisse kann in beiden Fällenzwischen Deltadarstellung (nur gefundene Unterschiede) und Volldarstellung (alleInformationen) unterschieden werden.

� Anzeige der Viewdefinition auf der Datenbank: Sie können sich die Definition des Viewsauf der Datenbank über Zusätze � Datenbankobjekt � Anzeigen auflisten lassen.

� Anzeigen des Laufzeitobjekts: Über Zusätze � Laufzeitobjekt � Anzeigen können Siesich die im Laufzeitobjekt zum View vorhandenen Informationen auflisten lassen. NähereInformationen zur Interpretation der angezeigten Daten finden Sie über den -Button.

Siehe auch:Views [Seite 101]

Page 258: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Matchcodes auf der Datenbank bearbeiten

258 April 2001

Matchcodes auf der Datenbank bearbeiten Funktionen für Matchcode-ObjekteFür die Bearbeitung von Matchcode-Objekten stehen im Datenbank-Utility die FunktionenDatenbanktabelle 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-IdsWollen Sie einzelne Matchcode-Ids bearbeiten, so können Sie über Springen � Matchcode-Iddie zum Matchcode-Objekt definierten Matchcode-Ids anzeigen lassen. Es erscheint eine Listealler Matchcode-Ids zum Matchcode-Objekt, aus der Sie dann die gewünschte Id durchDoppelklick auswählen können.

Die angebotene Funktionalität unterscheidet sich zwischen transparenten und physischrealisierten Matchcode-Ids.

Funktionen für physisch realisierte Matchcode-IdsFür physisch realisierte Matchcode-Ids (Aktualisierungsarten A, S, P) werden die folgendenFunktionen 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 beidieser 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 zurMatchcode-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ältalso keine Daten zur Matchcode-Id.

Funktionen für transparente Matchcode-IdsFür transparente Matchcode-Ids (Aktualisierungsart I) werden die folgenden Funktionenunterstü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 Aktiviereneiner 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.

Page 259: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Matchcodes auf der Datenbank bearbeiten

April 2001 259

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

Page 260: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Pools und Cluster auf der Datenbank bearbeiten

260 April 2001

Pools und Cluster auf der Datenbank bearbeitenGrundfunktionenFür die Bearbeitung von Pool- und Clustertabellen [Seite 269] stehen im Datenbank-Utility dieFunktionen Datenbanktabelle anlegen und Datenbanktabelle löschen zur Verfügung. Sie könneneine solche Funktion ausführen, indem Sie eine Verarbeitungsart [Seite 261] auswählen und denentsprechenden Druckknopf betätigen.

� Datenbanktabelle anlegen: Anlegen des physischen Pools bzw. Clusters auf derDatenbank.

� Datenbanktabelle löschen: Löschen des physischen Pools bzw. Clusters auf derDatenbank.

Weitere FunktionenDas Datenbank-Utility bietet für Pool- und Clustertabellen noch eine Reihe von Prüffunktionen:

� Speicherparameter pflegen: Über Springen � Speicherparameter könnenSpeicherparameter [Seite 262] zu Pool- bzw. Clustertabellen gepflegt werden, die dieDatenbank-Einstellungen der Tabelle (z.B. Extentgrößen) beeinflussen.

� Konsistenz prüfen: Über Zusätze � Datenbankobjekt � Prüfen können Sie dieDefinition des Pools bzw. Clusters auf der Datenbank mit dem Laufzeitobjekt [Seite 245] desPools bzw. Clusters vergleichen. Über Zusätze � Laufzeitobjekt � Prüfen können Siedas Laufzeitobjekt des Pools bzw. Clusters mit den in der ABAP Dictionary Pflegeeingegebenen Information vergleichen. In der Anzeige der Prüfergebnisse kann in beidenFällen zwischen Deltadarstellung (nur Unterschiede) und Volldarstellung (alle Informationen)unterschieden werden.

� Anzeigen von Laufzeitobjekt und Definition auf der Datenbank: Sie können sich dieStruktur des Pools bzw. Clusters auf der Datenbank über Zusätze � Datenbankobjekt �Anzeigen auflisten lassen. Über Zusätze � Laufzeitobjekt �Anzeigen können Sie sich dieim Laufzeitobjekt vorhandenen Informationen auflisten lassen. Nähere Informationen zurInterpretation der angezeigten Daten finden Sie über den -Button.

Siehe auch:Pool- und Clustertabellen [Seite 269]

Page 261: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Verarbeitungsart

April 2001 261

VerarbeitungsartDie über das Datenbank-Utility durchgeführten Änderungen an Datenbankobjekten können inmehreren Verarbeitungsarten ausgeführt werden.

DirektDie gewünschten Datenbankänderungen werden sofort durchgeführt.

Bei der Umsetzung großer Tabellen ist diese Verarbeitungsart ungeeignet. Erstens wird dasSystem durch eine Umsetzung stark belastet. Zweitens kann die Umsetzung aufgrund einerLaufzeitbeschränkung abbrechen. Wählen Sie deshalb für die Umsetzung großer Tabellen stetsdie Verarbeitungsart Hintergrund.

HintergrundFür die gewünschten Datenbankänderungen wird ein Hintergrundjob eingeplant.

Sie können den Zeitpunkt für die Hintergrundverarbeitung bestimmen. Es besteht insbesonderedie Möglichkeit, die Hintergrundverarbeitung sofort zu starten. Dies hat gegenüber derVerarbeitungsart Direkt den Vorteil, daß die Operation nicht aufgrund einerLaufzeitbeschränkung abbrechen kann.

Zur Massenverarbeitung eintragenBei dieser Verarbeitungsart werden Einträge mit der entsprechenden Funktion in einerSystemtabelle (TBATG) erzeugt. Die in dieser Tabelle gesammelten Aufträge können imHintergrund zu festgesetzten Zeitpunkten (i.A. nachts) abgearbeitet werden. DerHintergrundprozeß 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 ausgehendvom Eingangsbild des Datenbank-Utilities durch DB-Aufträge � Massenverarbeitung anzeigenlassen. Die Interpretation der angezeigten Liste ist in Aufträge zur Massenverarbeitung anzeigen[Seite 264] beschrieben.

Das Hintergrundprogramm schreibt Meldungen in eine Protokolldatei. Diese Tagesprotokollekönnen Sie ausgehend vom Eingangsbild des Datenbank-Utilities mit der Funktion Zusätze �Protokolle anzeigen. Die Interpretation der angezeigten Liste ist beschrieben in Protokolle derMassenverarbeitung anzeigen [Seite 267].

Page 262: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Speicherparameter

262 April 2001

SpeicherparameterFür Datenbanktabellen (transparente Tabellen, Tabellenpools, Tabellencluster) könnenSpeicherparameter eingestellt werden. Diese Parameter beeinflussen die Art, wie die Tabelle aufder Datenbank behandelt wird. Über die Speicherparameter wird beispielsweise bestimmt, inwelchem Tablespace die Tabelle auf der Datenbank angelegt wird und welche Größe für dieExtents der Tabelle gewählt wird.

Die vorhandenen Speicherparameter und die jeweiligen Einstellungsmöglichkeiten sind vomjeweils verwendeten Datenbanksystem abhängig. Welche Parameter für ein Datenbanksystemeinstellbar sind, ist aus der jeweiligen Systemdokumentation des Datenbanksystems zuentnehmen.

Welche Speicherparameter sind für eine Tabelle wirksam?Wird eine Tabelle erstmalig aktiviert, werden die Speicherparameter zur Tabelle aus dentechnischen Einstellungen der Tabelle berechnet (falls keine technischen Einstellungenvorhanden sind, werden die Default-Werte des Datenbanksystems verwendet) und die Tabellewird mit diesen Speicherparametern auf der Datenbank angelegt.

Wird die Tabelle später von der Datenbank gelöscht und neu angelegt (dies kann beispielsweisedurch eine Umsetzung [Seite 233] der Tabelle passieren), so werden die anzuwendendenSpeicherparameter in einer festen Hierarchie ermittelt.

Falls benutzerdefinierte Speicherparameter vorhanden sind, werden diese verwendet. Sind keinebenutzerdefinierte Speicherparameter vorhanden, werden die vorher auf der Datenbank gültigenParameter benutzt. Sind auch solche Parameter nicht vorhanden (z.B. wenn die Tabelle vorhereine Pool- oder Clustertabelle war, die durch die Umsetzung in eine transparente Tabelleumgewandelt wird), werden die Speicherparameter aus den technischen Einstellungenberechnet. Sind auch keine technischen Einstellungen zur Tabelle vorhanden, werden dieDefaultwerte des Datenbanksystems verwendet.

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

Anzeige und Pflege der SpeicherparameterVerzweigen Sie im Datenbank-Utility in die Pflege der Tabelle. Über Speicherparameter könnenSie sich die momentan für die Tabelle und deren Indizes gültigen Speicherparameter anzeigenlassen.

Welche Parameter hier angezeigt werden, ist abhängig vom verwendeten Datenbanksystem.Informationen zur Bedeutung der eingeblendeten Parameter finden Sie, indem Sie denParameter markieren und die F1-Taste betätigen.

Sie können einige Speicherparameter direkt verändern. Wählen Sie . Die änderbarenParameter werden nun eingabebereit. Machen Sie ihre Änderungen und wählen Sie dann

Anwenden. Damit werden die geänderten Einstellungen auf der Datenbank aktiv.

Page 263: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Speicherparameter

April 2001 263

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 vorhandenenExtents hat diese Änderung keinen Einfluß.

Der Tablespace, in dem die Tabelle liegt, kann nicht direkt verändert werden. Einesolche Änderung erfordert es, die Tabelle im alten Tablespace zu löschen und imneuen Tablespace neu anzulegen.

Über Techn. Einstellung können Sie sich anzeigen lassen, welche Speicherparameter aus denmomentanen Werten der technischen Einstellungen berechnet würden.

Sie können die Speicherparameter, die beim nächsten Anlegen der Tabelle oder eines Index derTabelle verwendet werden sollen, auch explizit angeben. Dies kann beispielsweise notwendigsein, wenn Sie die technischen Einstellungen der Tabelle geändert haben und sicherstellenwollen, daß diese geänderten Einstellungen bei einer Umsetzung [Seite 233] der Tabelleangewendet 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. Siekönnen hierbei entscheiden, ob Sie als Vorlage die aktuell auf der Datenbank gültigenSpeicherparameter, 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 diegewü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]

Page 264: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Aufträge zur Massenverarbeitung anzeigen

264 April 2001

Aufträge zur Massenverarbeitung anzeigenVorgehensweise zum Anzeigen der AufträgeMit DB-Aufträge � Massenverarbeitung im Einstiegsbild des Datenbank-Utilities erhalten Sieeine Liste aller von Ihnen selbst eingeplanten und noch nicht abgearbeiteten Einträge zurMassenverarbeitung. Hier werden nur Aufträge angezeigt, für deren Bearbeitung noch kein Jobeingeplant wurde, die noch laufen oder die abgebrochen sind.

Die Liste aller im System eingeplanten und noch nicht bearbeiteten Aufträge erhalten Sie, indemSie in dieser Liste den Druckknopf Alle Aufträge betätigen. Mit Eigene Aufträge können Sie dannwieder 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 vonObjekten aus einem anderen System entstandenen Einträge zur Massenverarbeitung, welchenoch nicht erfolgreich abgearbeitet wurden.

Informationen in den ListenDiesen 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 Indexbearbeitet wird, steht hier die Indexkennung.

� Funktion: Funktion, die für das Objekt auf der Datenbank ausgeführt werden soll. MöglicheEinträge sind CRE (Anlegen), DEL (Löschen), DNA (Löschen des Objekts auf der Datenbankund 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-<Datumder Jobeinplanung>.

� Jobcount: Kennung, mit der mehrere am gleichen Tag eingeplante Jobs unterschiedenwerden 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 Jobnamenoch 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ünschtenEinträge in der ersten Spalte markieren und den Druckknopf Markierte einplanen betätigen. Es

Page 265: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Aufträge zur Massenverarbeitung anzeigen

April 2001 265

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

Löschen von eingeplanten AufträgenSie können eingeplante Aufträge löschen, indem Sie die entsprechende Zeile markieren und denDruckknopf Markierte betätigen.

Page 266: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Jobs für die Massenverarbeitung einplanen

266 April 2001

Jobs für die Massenverarbeitung einplanenVoraussetzungenFalls Sie für eine Aktion des Datenbank-Utilities die Verarbeitungsart Zur Massenverarbeitungeintragen wählen, wird die Aktion nicht direkt ausgeführt. Es werden statt dessen Einträge mitder entsprechenden Funktion in einer Systemtabelle (TBATG) erzeugt. Die in dieser Tabellegesammelten Aufträge werden im Hintergrund zu festgesetzten Zeitpunkten abgearbeitet. DerHintergrundprozeß muß dabei explizit als Job eingeplant werden.

Vorgehensweise1. 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ürden 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 bestimmtenBetriebsarten oder nach Beendigung eines anderen Jobs gestartet werden.

Betätigen Sie dazu bitte die entsprechenden Drucktasten und machen Sie die benötigtenEingaben.

3. Falls Sie den Job periodisch einplanen möchten, müssen Sie das Kennzeichen Jobperiodisch ausführen markieren.

Sie müssen in diesem Fall noch die Periodenwerte wählen. Wählen Sie hierzuPeriodenwerte. 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ägeeintragen 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 einzelnenParameter 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 Massenverarbeitungeingeplanten Aufträge (TBATG-Einträge), auf die die Selektionsbedingungen passen.

Siehe auch:Verarbeitungsart [Seite 261]

Page 267: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Protokolle der Massenverarbeitung anzeigen

April 2001 267

Protokolle der Massenverarbeitung anzeigen VorgehensweiseMit Zusätze � Protokolle im Einstiegsbild des Datenbank-Utilities erhalten Sie die Protokollealler im Hintergrund abgearbeiteten Aufträge zur Massenverarbeitung.

Informationen auf der ListeDieser Liste können Sie folgende Informationen entnehmen:

� Protokollname: Name des Hintergrundjobs.

� Severity: Maximale Fehlerschwere (' ' = kein Fehler, W = Warnung, E = Fehler) einesVerarbeitungsschritts 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 ListeSie 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 Namenskopieren über Bearbeiten � Kopieren.

� Löschen eines Protokolls: Markieren Sie hierzu die zu löschenden Protokolle und wählenSie .

Page 268: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Temporäre Tabellen ohne Aufsetzprotokolle anzeigen

268 April 2001

Temporäre Tabellen ohne Aufsetzprotokolle anzeigen VorgehensweiseMit Zusätze � Ungültige temp. Tab. können Sie sich die in ihrem System vorhandenentemporä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ärenTabelle gesichert. Nachdem die Tabelle mit ihrer neuen Struktur auf der Datenbank angelegtwurde, werden die Daten in die Originaltabelle zurückgeladen. Falls die Umsetzung fehlerfreiablä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 Umsetzunggelöscht. Vor Release 3.0 blieben diese Tabellen auch nach dem erfolgreichen Ablauf derUmsetzung 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 diesemFall wird das vorhandene Aufsetzprotokoll gelöscht. Falls die Umsetzung zu einemZeitpunkt abgebrochen wurde, in dem die Daten nur noch in der temporären Tabellevorhanden waren, droht hier Datenverlust.

Falls Sie sich nicht sicher sind, ob ein solcher Fall vorliegt, sollten Sie vor demLöschen der temporären Tabelle prüfen, ob die Originaltabelle auf der Datenbankvorhanden ist und das erwartete Datenvolumen enthält.

Page 269: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Pool- und Clustertabellen

April 2001 269

Pool- und Clustertabellen Tabellenpools (Pools) und Tabellencluster (Cluster) sind spezielle Tabellentypen im ABAPDictionary. In einem Tabellenpool bzw. Tabellencluster können die Daten mehrererunterschiedlicher 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 internerSteuerinformationen (Dynprofolgen, Programmparameter, temporäre Daten, fortlaufende Textewie z.B. Dokumentation) genutzt werden. Alle betriebswirtschaftlich relevanten Daten werdenausschließlich in transparenten Tabellen abgelegt!

TabellenpoolEinem Tabellenpool entspricht eine Tabelle auf der Datenbank, in der alle Sätze der demTabellenpool zugeordneten Pooltabellen abgelegt werden.

Die Definition eines Pools besteht im wesentlichen aus zwei Schlüsselfeldern (Tabname undVarkey) 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 Satzesder 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 derPooltabelle, max. Länge n ist abhängig vom verwendetenDatenbanksystem

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

Page 270: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Pool- und Clustertabellen

270 April 2001

Pooltabelle TABA

Pooltabelle TABB

A B C

D E F

Key

Key

Daten

Daten

Tabellenpool auf der Datenbank

Tabname Varkey DataLn Vardata

TABA

TABB

A B C

D E F

Aufgrund der Struktur eines Tabellenpools bestehen einige Restriktionen für die Pooltabellen, dieihm 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.

TabellenclusterIn einem Tabellencluster können mehrere logische Datensätze aus mehreren verschiedenenClustertabellen in einem physischen Satz zusammengefaßt abgespeichert werden.

Der Schlüssel eines Clusters besteht aus einer Reihe von frei definierbaren Schlüsselfeldern undeinem Feld (Pageno) zur Unterscheidung von Fortsetzungssätzen. Weiterhin enthält ein Clusterein langes Feld (Vardata), das die Inhalte der Datenfelder der Clustertabellen zu diesemSchlüssel enthält. Falls die Daten nicht in das lange Feld passen, werden Fortsetzungssätzeangelegt. An den Anfang des Vardata-Feldes werden weiterhin Steuerinformationen zur Strukturdes 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

Page 271: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Pool- und Clustertabellen

April 2001 271

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 derzugeordneten Clustertabellen, die max. Länge n ist abhängigvom verwendeten Datenbanksystem

Die Sätze aller Clustertabellen mit gleichem Schlüssel werden unter einem Schlüssel imzugeordneten Tabellencluster abgelegt. Die Werte der Schlüsselfelder werden in denentsprechenden Schlüsselfeldern des Tabellenclusters abgelegt. Die Werte aller Datenfelder derzugeordneten Clustertabellen werden als String in das Vardata-Feld des Tabellenclustersgeschrieben. Der Datenstring enthält neben den eigentlichen Datenwerten noch Informationendazu, welche Struktur die Daten haben und aus welcher Tabelle sie kommen. Falls der String diemaximale Länge des Vardata-Feldes überschreitet, wird mit den gleichen Schlüsselwerten einFortsetzungssatz geschrieben. Die Fortsetzungssätze zu einem Schlüssel werden durch ihreWerte im Feld Pageno unterschieden. Die tatsächliche Länge des im Vardata-Feld stehendenStrings wird von der Datenbankschnittstelle im Feld Pagelg abgelegt.

Clustertabelle TABA

Clustertabelle TABB

A B C

A B E

Key

Key

Daten

Daten

Tabellencluster auf der Datenbank

Key Pageno Vardata

A B G

D

F

H

A B

A B

0

1

C DD E

F G H

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

Siehe auch:Tabellenpool/Tabellencluster anlegen [Seite 273]

Tabellenpool/Tabellencluster löschen [Seite 275]

Pooltabellen/Clustertabellen anlegen [Seite 276]

Page 272: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Pool- und Clustertabellen

272 April 2001

Pool/Clustertabellen ändern [Seite 277]

Page 273: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Tabellenpool/Tabellencluster anlegen

April 2001 273

Tabellenpool/Tabellencluster anlegenVorgehensweise1. 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 einenTabellenpool 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 bereitsautomatisch eingetragen, da die Struktur eines Tabellenpools festliegt. Sie sollten dieseStandardeinstellungen nach Möglichkeit nicht ändern.

Auch Tabellencluster haben eine weitgehend festgelegte Struktur. Beim Anlegen werdendeshalb bereits gewisse Felder vorgeschlagen. Sie können diesen Vorschlag an ihreErfordernisse anpassen, z.B. indem Sie zusätzliche Schlüsselfelder aufnehmen. HaltenSie 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 [Seite84] des Tabellenpools/-clusters.

5. Erfassen Sie über Springen � Dokumentation Dokumentation zum Tabellenpool/-cluster.

Diese Dokumentation soll beschreiben für welche Zwecke der Tabellenpool/-clusterverwendet wird. Die Dokumentation wird beim Drucken des Tabellenpool/-cluster mitausgegeben.

6. Über Springen � Technische Einstellung verzweigen Sie in die Pflege der technischenEinstellungen.

Im Gegensatz zur Tabellenpflege können Sie hier nur die Größenkategorie [Seite 33]des Tabellenpools/-clusters angeben. Alle anderen Attribute der technischenEinstellungen sind festgelegt.

7. Aktivieren Sie den Tabellenpool/-cluster über .

ErgebnisDer Tabellenpool/-cluster wird aktiviert. Über Hilfsmittel � Aktivierungsprotokoll können Sie sichdas Protokoll des Aktivierungsvorgangs ansehen. Falls bei der Aktivierung Fehler auftraten, wirddas 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).

Page 274: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Tabellenpool/Tabellencluster anlegen

274 April 2001

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

Page 275: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Tabellenpool/Tabellencluster löschen

April 2001 275

Tabellenpool/Tabellencluster löschenVoraussetzungenBeachten Sie bitte, daß Sie einen Tabellenpool bzw. Tabellencluster erst löschen können, wenner 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 einemDialogfenster darüber informiert. Falls keine Daten vorhanden sind, erscheint einDialogfenster, in welchem Sie gebeten werden, den Löschauftrag zu bestätigen.

Sind dem Tabellenpool bzw. Tabellencluster noch Pool- bzw. Clustertabellenzugeordnet, ist ein Löschen nicht möglich.

4. Bestätigen Sie den Löschauftrag.

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

Page 276: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Pooltabellen/Clustertabellen anlegen

276 April 2001

Pooltabellen/Clustertabellen anlegenVorgehensweise1. 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 TabellentypTransparente Tabelle gewählt.

2. Machen Sie auf der Registerkarte Eigenschaften die notwendigen Eingaben in den FeldernKurzbeschreibung 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-Tabellebzw. 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äßigvorhandenen 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ängedes zugeordneten Tabellenpools nicht überschreiten darf. Der Schlüssel einerClustertabelle muß mit dem Schlüssel des zugeordneten Tabellenclustersübereinstimmen.

6. Verfahren Sie im weiteren wie beim Anlegen einer transparenten Tabelle (siehe Tabelleanlegen [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 TechnischenEinstellungen [Seite 31] pflegbar. Auf diese Attribute wird jedoch erst zugegriffen,wenn die Tabelle in eine transparente Tabelle umgewandelt wird.

Page 277: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Pool/Clustertabellen ändern

April 2001 277

Pool/Clustertabellen ändernVorgehensweiseUm eine Pool- bzw. Clustertabelle zu ändern, können Sie wie bei transparenten Tabellenbeschrieben vorgehen (siehe Änderungen an Tabellen durchführen [Seite 86]).

Auswirkungen von ÄnderungenEs 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 derTabelle notwendig. Die neuen Felder sind automatisch als NOT NULL definiert (siehe Initialwerte[Seite 92]). Deshalb wird beim Aktivieren der geänderten Tabelle die gesamte Tabelledurchlaufen 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 derFeldreihenfolge führt, anders als bei transparenten Tabellen, stets zur Umsetzung [Seite 233] derTabelle.

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 nichtumgesetzt werden. Änderungen an solchen Tabellen, die eine Umsetzungerforderlich machen (z.B. Einfügen von Feldern, Ändern der Feldreihenfolge,Löschen von Feldern), sind deshalb nicht möglich. Neue Felder müssen bei solchenTabellen also immer ans Ende der Tabelle angehängt werden.

Page 278: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Matchcodes

278 April 2001

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.0automatisch in Suchhilfen migriert [Seite 213]. Ein Matchcode-Objekt wird dabei ineine gleichnamige Sammelsuchhilfe [Seite 183] umgewandelt. Jede Matchcode-Iddes Matchcode-Objekts wird in eine gleichnamige elementare Suchhilfe [Seite 179]umgewandelt und der aus dem Matchcode-Objekt entstandenen Sammelsuchhilfezugeordnet.

Ein Matchcode ist ein Hilfsmittel, um im System abgelegte Datensätze zu suchen. DieMatchcode-Definition im ABAP Dictionary erfolgt zweistufig:

� In einem Matchcode-Objekt werden zunächst die relevanten Tabellen und Felder für dieSuche festgelegt. Ein Matchcode-Objekt beschreibt die Menge aller möglichen Suchpfade füreinen Suchbegriff.

� Zu einem Matchcode-Objekt können dann eine oder mehrere Matchcode-Ids angelegtwerden. Eine Matchcode-Id beschreibt einen speziellen Suchpfad für einen Suchbegriff. Inder Matchcode-Id wird festgelegt, über welche Felder bzw. Feldkombinationen gesuchtwerden soll.

Auf einem Bildschirmfeld wird die Eingabe einer Materialnummer verlangt. Da nichterwartet werden kann, daß der Benutzer diese Nummer kennt, muß eine Möglichkeitder Suche nach dieser Nummer über Eigenschaften des entsprechenden Materialsvorhanden sein.

Für diese Suche sind mehrere Suchpfade denkbar. Die Materialnummer kann z.B.alternativ über die Materialbezeichnung, die Materialklasse oder den Hersteller desMaterials gesucht werden.

Das entsprechende Matchcode-Objekt würde damit aus den FeldernMaterialnummer, Materialbezeichnung, Materialklasse und Hersteller bestehen.Jedem Suchpfad entspricht dann eine Matchcode-Id. Beispielsweise könnte die Id Adie Suche nach der Materialnummer über den Hersteller des Materials beschreiben.Diese Id würde damit nur die Felder Materialnummer und Hersteller enthalten.

Matchcode-ObjektIn ein Matchcode-Objekt werden die für die Suche relevanten Tabellen aufgenommen. Bei derTabellenauswahl wird von einer Primärtabelle ausgegangen. Zu dieser können weitere mit derPrimärtabelle über Fremdschlüssel verknüpfte Sekundärtabellen hinzugenommen werden. Ausden gewählten Basistabellen können dann die Felder des Matchcode-Objekts ausgewähltwerden.

Ein Matchcode-Objekt wird nicht physisch abgespeichert, sondern beschreibt eine umfassendelogische Sicht auf eine oder mehrere Tabellen.

Page 279: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Matchcodes

April 2001 279

Matchcode-IdsZu einem Matchcode-Objekt können mehrere Matchcode-Ids angelegt werden. Die Matchcode-Ids werden aus dem Matchcode-Objekt durch Projektion (Feldauswahl) und Selektion (Angabeeiner Selektionsbedingung) abgeleitet.

Eine Matchcode-Id muß innerhalb eines Matchcode-Objekts durch einen Buchstaben oder eineZiffer identifiziert werden, so daß maximal 36 Matchcode-Ids (26 Buchstaben und 10 Ziffern) proMatchcode-Objekt definierbar sind.

Für jede Matchcode-Id können Selektionsbedingungen angegeben werden, die als Filter fürden aufzubauenden Matchcode verwendet werden. In diesen Selektionsbedingungen könnenRestriktionen für alle Felder aus den Basistabellen der betreffenden Matchcode-Id angegebenwerden.

Weiterhin ist eine Aktualisierungsart [Seite 280] anzugeben. Die Aktualisierungsart bestimmt, wieder Zugriff auf die Daten erfolgt und wie sich der Matchcode an Änderungen der Daten in den imMatchcode enthaltenen Tabellen anpaßt.

Siehe auch:Matchcodes anlegen [Seite 283]

Matchcodes ändern [Seite 302]

Page 280: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Aktualisierungsart

280 April 2001

Aktualisierungsart Die Aktualisierungsart einer Matchcode-Id legt fest, wie der Matchcode aufgebaut ist und wie derMatchcode an Änderungen an den Datensätzen der Basistabellen angepaßt wird. Zu einemMatchcode-Objekt können Ids mit unterschiedlichen Aktualisierungsarten gewählt werden.

Aufbau eines MatchcodesEs gibt zwei Möglichkeiten, einen Matchcode aufzubauen:

Logischer Aufbau: Die Matchcode-Daten werden temporär zum Zeitpunkt des Zugriffs auf den Matchcodeaufgebaut. Die Realisierung erfolgt in diesem Fall durch einen Datenbank-View. Man bezeichnetdies auch als transparente Ablage von Matchcodes.

Physischer Aufbau: Die Matchcode-Daten werden redundant als eigene Tabelle im System abgelegt. Es muß hierfestgelegt werden, wie sich die Datenbestände in dieser redundanten Tabelle an Änderungen inden 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 Aktivierungder ersten physisch realisierten Id des Matchcode-Objekts automatisch im ABAP Dictionary undauf der Datenbank angelegt. Zu jeder Matchcode-Id wird bei der Aktivierung eine Pooltabelle (mitNamen M_<Matchcode-Objekt><Matchcode-Id>) im ABAP Dictionary erzeugt, die demTabellenpool des Matchcode-Objekts zugeordnet wird.

AktualisierungsartenAktualisierungsart ADie 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 desMatchcode-Utilities aufgebaut. Der unter Umständen aufwendige Aufbau der Matchcode-Datenkann damit in Zeiten geringer Systembelastung erfolgen, beispielsweise im Laufe der Nacht.

Bei der Matchcode-Suche kann damit nicht immer auf aktuelle Daten zugegriffen werden. ImZusammenhang mit der Online-Suchhilfe kann diese Ungenauigkeit aber in der Regel in Kaufgenommen werden.

Aktualisierungsart SDie 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 automatischaktualisiert, ohne daß dies von der Anwendung explizit veranlaßt werden muß. Allerdings kostetdie automatische Aktualisierung auch Performance.

Aktualisierungsart PDie Matchcode-Daten werden redundant als eigene Tabelle im System abgelegt. Die Matchcode-Daten werden vom Anwendungsprogramm selbst aktualisiert, so daß dieses

Page 281: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Aktualisierungsart

April 2001 281

Anwendungsprogramm und auch andere Programme stets auf aktuelle Matchcode-Datenzugreifen können.

Hierzu wird bei der Aktivierung einer Matchcode-Id ein Funktionsbaustein mit dem NamenMC_UPDATE_<Matchcode-Objekt-Name> generiert. Beim Aufruf dieses Funktionsbausteinsdurch das Anwendungsprogramm werden die Matchcode-Daten aktualisiert.

Aktualisierungsart IDie Matchcode-Daten werden logisch als Datenbank-View realisiert. In transparente Matchcodesdü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-IdDefinition angegebenen Felder (in genau derselben Reihenfolge) sowie die eventuell definierteMatchcode-Selektionsbedingung als View-Selektionsbedingung enthält. Bei kundendefiniertenMatchcode-Ids sollte zur Unterstützung des Viewzugriffs ein entsprechender Datenbank-Indexangelegt werden.

Die transparenten Matchcodes sind insbesondere bei Modifikationsoperationen wesentlicheffizienter als z.B. die synchron gepflegten, da keinerlei zusätzliche Datenbankzugriffe anfallenund in einer Client/Server-Umgebung damit der Kommunikationsaufwand mit einem entferntenDatenbankserver reduziert wird. Die Matchcodeselektion selbst ist vergleichbar mit demSelektionsverhalten der physisch abgelegten Matchcodes, sofern geeignete Indizes auf derDatenbank existieren.

Aktualisierungsart KKlassifikationsmatchcodes sind anwendungsspezifische Suchpfade, die wie alle anderenMatchcodes auch über die Eingabehilfe F4 angesprochen werden können, für die jedoch keineeigenen Matchcode-Daten fortgeschrieben werden (logischer Aufbau). Die Datenbeschaffungerfolgt über einen Funktionsbaustein. Dieser muß bei der Matchcode-Id Definition angegebenwerden und wird bei der Matchcodeselektion aufgerufen.

Page 282: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Besonderheiten bei programmgesteuerten Matchcodes

282 April 2001

Besonderheiten bei programmgesteuerten Matchcodes Ein programmgesteuerter Matchcode (Aktualisierungsart P) wird physisch realisiert, d.h. dieMatchcode-Daten werden redundant als eigene Tabelle im System abgelegt. Die Matchcode-Daten werden vom Anwendungsprogramm selbst aktualisiert, so daß diesesAnwendungsprogramm und auch andere Programme stets auf aktuelle Matchcode-Datenzugreifen können.

Hierzu wird bei der Aktivierung einer Matchcode-Id ein Funktionsbaustein mit dem NamenMC_UPDATE_<Matchcode-Objekt-Name> generiert. Beim Aufruf dieses Funktionsbausteinsdurch das Anwendungsprogramm werden die Matchcode-Daten aktualisiert.

Eine Umstellung eines programmgesteuerten Matchcodes auf transparente Ablage erfordertdeshalb 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 programmgesteuerteMatchcode-Id enthält, kann zu Problemen führen. Denn es existiert nur ein Funktionsbaustein füralle programmgesteuerten Ids des Objekts. Dieser zieht seine Informationen direkt aus demMatchcode-Objekt. Deshalb muß bei einer Änderung der Basistabellen des Objekts dieSchnittstelle zu diesem Funktionsbaustein angepaßt werden, auch wenn die Änderung dieprogrammgesteuerte Id nicht direkt betrifft.

Page 283: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Matchcodes anlegen

April 2001 283

Matchcodes anlegen Vorgehensweise1. 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 vierstelligenObjektnamen ein. Wählen Sie dann Anlegen.

Sie verzweigen ins Pflegebild für Matchcode-Objekte. Alle weiteren Schritte sindausgehend von diesem Pflegebild beschrieben.

Um einen Matchcode anzulegen, müssen Sie zuerst ein Matchcode-Objekt und zu diesem dannein oder mehrere Matchcode-Ids anlegen.

Vorgehensweise zum Anlegen eines Matchcode-Objekts1. 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-Id1. 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]

Page 284: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Eigenschaften des Matchcode-Objekts angeben

284 April 2001

Eigenschaften des Matchcode-Objekts angeben Vorgehensweise1. 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 dieserTabelle im Feld Primärtabelle ein.

4. Sichern Sie Ihre Eingaben.

5. Es erscheint ein Dialogfenster, in dem Sie dem Matchcode-Objekt eine Entwicklungsklassezuordnen müssen.

Weitere InformationenIm Bild Matchcode-Objekt pflegen (Eigenschaften) sind zusätzlich folgende Informationenangezeigt:

SekundärtabellenMit der Primärtabelle über Fremdschlüssel verbundene Tabellen.

Matchcode-PoolHier wird der automatisch bestimmte Name des zum Matchcode-Objekt gehörendenTabellenpools (siehe Pool- und Clustertabellen [Seite 269]) angezeigt, nachdem Sie die erstephysisch realisierte Id (siehe Aktualisierungsart [Seite 280]) des Matchcode-Objekts aktivierthaben.

Die Definition des Tabellenpools wird bei der Aktivierung der ersten physisch realisierten Id desMatchcode-Objekts automatisch im ABAP Dictionary und auf der Datenbank angelegt. Der Namedes 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 BeispielM_TEST.

Nächste Aktion beim Anlegen eines Matchcodes:Sekundärtabellen des Matchcode-Objekts auswählen [Seite 285]

Page 285: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Sekundärtabellen des Matchcode-Objekts auswählen

April 2001 285

Sekundärtabellen des Matchcode-Objekts auswählen Vorgehensweise1. 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. Imoberen Teil des Bildes werden alle bereits in das Objekt übernommenen Tabellenaufgelistet.

Wurden bereits Sekundärtabellen angegeben, sind die zwischen den Tabellenbestehenden Fremdschlüssel [Seite 20] in tabellarischer Form in der unteren Bildhälfteaufgelistet. Sie erhalten dort Informationen zu referierter Tabelle, abhängiger Tabelle undverwendetem Prüffeld.

Sie können sich die Definition des Fremdschlüssels anzeigen lassen, indem Sie denCursor auf die entsprechende Zeile positionieren und Bearbeiten � Fremdschlüsselwählen.

2. Wollen Sie weitere Sekundärtabellen aufnehmen, stellen Sie den Cursor auf einenTabellennamen (Primär- oder eine der bereits aufgenommenen Sekundärtabellen) undwählen Sie Bearbeiten � SekTab auswählen.

Sie erhalten in einem Dialogfenster eine Liste aller mit der ausgewählten Tabelle überFremdschlüssel verbundenen Tabellen.

3. Stellen Sie den Cursor auf eine Tabelle, die Sie als Sekundärtabelle übernehmen möchtenund wählen Sie Auswählen. Die Tabelle wird farbig unterlegt. Wiederholen Sie dies für alleTabellen, 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 alsSekundärtabellen übernommen und die betreffenden Fremdschlüssel angezeigt.

Fehlerhaft aufgenommene Sekundärtabellen können Sie löschen, indem Sie den Cursorauf 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]

Page 286: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Felder des Matchcode-Objekts auswählen

286 April 2001

Felder des Matchcode-Objekts auswählen Vorgehensweise1. 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. DieSchlü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 Cursorauf 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 entsprechendenEintrag anklicken und Auswählen betätigen.

Der Eintrag wird farbig unterlegt. Fehlerhaft markierte Felder können Sie wiederentfernen, 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 markierthaben.

Die ausgewählten Felder werden damit in das Matchcode-Objekt übernommen.

Die Reihenfolge der Felder im Matchcode-Objekt ist bedeutungslos. Haben zwei Felderaus unterschiedlichen Tabellen den gleichen Namen, so muß in der Spalte MC-Feldzumindest 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 zwischeneinem Feld auf einem Bild und einem Matchcodefeld hergestellt werden. DieseVerbindung wird über das Suchfeld hergestellt, das standardmäßig an das ersteSchlüsselfeld der Primärtabelle vergeben wird.

Bei einer Matchcodeselektion im Rahmen der Online-Hilfe wird der Wert des Suchfeldesin 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]

Page 287: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Matchcode-Objekt aktivieren

April 2001 287

Matchcode-Objekt aktivierenBevor 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. Siekönnen sich das Aktivierungsprotokoll über Hilfsmittel � Protokoll anzeigen � Aktivierenanzeigen lassen. Falls Fehler bei der Aktivierung auftraten, wird das Aktivierungsprotokollautomatisch angezeigt.

Nächste Aktion beim Anlegen eines Matchcodes:Matchcode-Ids anlegen [Extern]

Page 288: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Eigenschaften der Matchcode-Id angeben

288 April 2001

Eigenschaften der Matchcode-Id angebenVorgehensweise1. 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 alsKennung der Matchcode-Id eingeben können. Für Kunden sind die Ziffern von 0 bis 9 fürdiese 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 eineandere 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 Einstellungenvornehmen wollen.

Weitere MöglichkeitenSystem-Matchcode

Ist dieses Kennzeichen angekreuzt, so nutzt die SAP-Software diesen Matchcode. Er darf vomKunden nicht geändert werden.

Berechtig.Prüf.Ist dieses Kennzeichen angekreuzt, so werden Berechtigungsprüfungen durchgeführt, dieeventuell an einzelne Matchcodesätze geknüpft sind. Dabei wird bei der Matchcode-Anzeige vorder Ausgabe eines gelesenen Matchcode-Satzes ein User-Exit aufgerufen, in dem eineanwendungsspezifische 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 AktualisierungsartAktualisierungsart A, S oder P (physische Matchcodes):

� MC-Pooltabelle: Falls die Matchcode-Id bereits aktiviert wurde, ist hier die entsprechendePooltabelle 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 desMatchcode-Objekts TEST wäre der entsprechende Name also M_TEST1.

� Löschvormerkung: Markieren Sie dieses Flag, wenn beim Löschen eines Satzes einerBasistabelle die betroffenen Matchcode-Sätze nicht direkt physisch gelöscht, sondern nur mit

Page 289: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Eigenschaften der Matchcode-Id angeben

April 2001 289

einem Löschkennzeichen versehen werden sollen. Bei einem späteren generellenLöschvorgang werden alle so gekennzeichneten Sätze auch physisch gelöscht. BeachtenSie bitte, daß mit einem Löschkennzeichen versehene Sätze bis zum Ablauf diesesgenerellen Löschvorgangs bei der Matchcode-Anzeige noch erscheinen.

Für Matchcode-Ids der Aktualisierungsart P darf das Löschkennzeichen nicht gesetztwerden.

Aktualisierungsart I:

� MC-Viewname: Falls die Matchcode-Id bereits aktiviert wurde, ist hier der entsprechendeViewname aufgeführt. Der Viewname setzt sich zusammen aus dem Präfix M_, dem Namendes Matchcode-Objekts und der Matchcode-Id Kennung. Für die Id 1 des Matchcode-ObjektsTEST wäre der entsprechende Name also M_TEST1.

� Tabellenname, Indexkennung: Sie können hier die Tabelle und die Indexkennung des vonIhnen zur Unterstützung der Viewselektion angelegten Index angeben. Diese Felder habenim Augenblick rein dokumentarische Funktion.

Aktualisierungart K:

� Funktion: Bei Matchcode-Ids der Aktualisierungsart K erfolgt die Suche über einenFunktionsbaustein, der bei der Auswahl der Id angestoßen wird. Dieser Eintrag zeigt denNamen 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]

Page 290: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Sekundärtabellen einer Matchcode-Id auswählen

290 April 2001

Sekundärtabellen einer Matchcode-Id auswählen Vorgehensweise1. 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 aufgelistetsind, die mit der gewählten Tabelle über Fremdschlüssel verbunden sind.

2. Markieren Sie im Dialogfenster die gewünschten Sekundärtabellen. Fehlerhaft markierteTabellen können Sie durch erneutes Markieren wieder entfernen.

Für transparente Matchcodes (Aktualisierungsart I) dürfen nur transparente Tabellenselektiert werden.

Aus Performance-Gründen gelten für Matchcodes der Aktualisierungsart S (synchroneAktualisierung) einige Einschränkungen bei der Tabellenauswahl.

Bei den abhängigen Tabellen sind für synchrone Matchcode-Ids ausschließlichSchlüsselerweiterungen erlaubt. Die ausgewählten Tabellen müssen also inhierarchischen Beziehungen zueinander stehen.

Die Tabelle T2 ist von Tabelle T1 abhängig und eine weitere Tabelle T3 ist wiederumvon T2 abhängig. Dann stehen die Tabellen genau dann in hierarchischerBeziehung, wenn der Schlüssel von T2 den Schlüssel von T1 an erster Stelle enthältund der Schlüssel von T3 den Schlüssel von T2 an erster Stelle enthält. Nur beidieser Art der Beziehung könnten T2 und T3 als Sekundärtabellen zur PrimärtabelleT1 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 T1nur eine der Tabellen in eine synchrone Matchcode-Id aufgenommen werden. EineAusnahme von dieser Regel bilden Texttabellen. Handelt es sich bei T2 oder T4 um eineTexttabelle [Seite 28] zu T1, so können beide in die Matchcode-Id aufgenommenwerden.

3. Wählen Sie Weiter.

Sie kehren ins Pflegebild zurück. Die ausgewählten Sekundärtabellen werden damit indie 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]

Page 291: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Felder einer Matchcode-Id auswählen

April 2001 291

Felder einer Matchcode-Id auswählen Vorgehensweise1. 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 � Felderauswä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 entsprechendenEintrag anklicken und Auswählen betätigen. Der Eintrag wird farblich unterlegt. Fehlerhaftmarkierte Felder können Sie wieder entfernen, indem Sie den Cursor auf das betreffendeFeld stellen und Feld Löschen wählen.

Wählen Sie Übernehmen, nachdem Sie alle benötigten Felder auf diese Weise markierthaben. Die ausgewählten Felder werden damit in die Matchcode-Id übernommen.

Die Selektionsreihenfolge entspricht genau der Reihenfolge, in der die Felder in derMatchcode-Id aufgeführt werden. Die Feldreihenfolge in der Matchcode-Id ist für dasspätere Zugriffsverhalten, z.B. im Zusammenhang mit der Eingabehilfe F4, vonentscheidender Bedeutung. An erster Stelle sollten die Felder stehen, über die amhäufigsten zugegriffen wird.

4. Sichern Sie die Feldauswahl, falls Sie keine der unten beschriebenen optionalenEinstellungen vornehmen wollen.

EinschränkungenIn 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 auszwei Tabellen aufzunehmen, die nur über eine nicht in der Matchcode-Id enthaltene dritte Tabelleverbunden sind. In einem solchen Fall muß diese verbindende Tabelle über ein Schlüsselfeld indie Matchcode-Id einfließen.

Die Daten einer Matchcode-Id der Aktualisierungsart A, S und P werden in Pooltabellenabgespeichert. Es wird versucht, alle Felder der Matchcode-Id im Schlüssel der entsprechendenPooltabelle 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 derPooltabelle untergebracht werden können. Um die Eindeutigkeit der Sätze einer Matchcode-Idgewä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 derersten 110 Bytes liegen.

Bei Matchcode-Ids der Aktualisierungsart S müssen die Felder der Id jeden Satz eindeutigidentifizieren. Es müssen jedoch nicht alle Schlüsselfelder der an der Id beteiligten Tabellenaufgenommen werden. Als weitere Einschränkung gilt, daß zumindest ein Schlüsselfeld einer ander Id beteiligten Tabelle in der Id enthalten sein muß, auch wenn die restlichen Felder jedenSatz schon eindeutig bestimmen.

Page 292: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Felder einer Matchcode-Id auswählen

292 April 2001

Weitere MöglichkeitenSpeicherungHier 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. Indiesem Fall müssen Sie in der Spalte Datenelement ein passendes Datenelement (diereferierte 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ß/Kleinschreibungberücksichtigt werden soll. Wird hier keine Angabe gemacht, so erfolgt bei Matchcode-Idsder Aktualisierungsart [Seite 280] A, S oder P der Aufbau und damit auch die Ausgabe derMatchcode-Sätze in Großbuchstaben. Die Suche ist damit nicht Case Sensitive. BeiMatchcode-Ids der Aktualisierungsart I ist dieses Feld nicht relevant, da keine eigenenMatchcode-Sätze geschrieben werden (Suche erfolgt über einen View).

AnzeigeHier 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 istmaximal 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-Selektionverwendet. Es erscheint damit nicht in der Feldeingabeliste bei der F4-Hilfe und wird nicht imMatchcode-Suchstring ausgewertet.

ParameterHier steuern Sie, ob Werte aus Matchcodesätzen, die über die Online-Hilfe selektiert wurden, indas globale SAP-Memory gestellt werden bzw. ob Werte für die Matchcodeselektion aus demMemory geholt werden.

� PId: Parameteridentifikation, über die im Benutzerstammsatz Vorschlagswerte für ein Feldfestgelegt werden können.

� SP: Markieren Sie das Flag SP, wenn der aus dem selektierten Matchcode-Satz geleseneFeldwert in das Memory gestellt werden soll.

� GP: Markieren Sie das Flag GP, wenn der Feldwert für die Matchcode-Auswertung aus demMemory 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 demBildschirm eingeben muß.

Page 293: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Felder einer Matchcode-Id auswählen

April 2001 293

Datenelement ändernDem Matchcode-Feld wird vom System das Datenelement des entsprechenden Tabellenfeldeszugeordnet. Sie können dieses Datenelement ändern. Dies kann z.B. notwendig sein, wenn Siedas Matchcode-Feld mit einer anderen Dokumentation versehen wollen.

Überschreiben Sie einfach den Namen des Datenelements im Feld Datenelem. Das neueDatenelement muß auf eine Domäne mit gleichem Datentyp und gleicher Länge wie dasursprüngliche Datenelement verweisen.

Nächste Aktion beim Anlegen eines Matchcodes (optional):Selektionsbedingungen einer Matchcode-Id angeben [Seite 294]

Page 294: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Selektionsbedingungen einer Matchcode-Id angeben

294 April 2001

Selektionsbedingungen einer Matchcode-Id angebenVoraussetzungenNachdem Sie die Struktur der Matchcode-Id festgelegt und die zur Id gehörigen Felderangegeben haben, können Sie über die Angabe einer Selektionsbedingung die Ergebnismengeder Matchcode-Suche einschränken. Bei dem Aufbau der Matchcode-Sätze werden dann nur dieEinträge übernommen, die diese Bedingung erfüllen.

Vorgehensweise1. 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 OffsOp Konstante AND/OR eingeben.

3. Eine Liste aller möglichen Felder erhalten Sie durch Auswahl von Bearbeiten � Felderauswä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ählenbetä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 werdenhier 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 sindText-Literale, die in Hochkommata eingeschlossen werden müssen, und Zahlen erlaubt.

� AND/OR: Verknüpfung zweier Zeilen der Selektionsbedingung. Beachten Sie, daß hier ORstä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 nurzwischen Zeilen zulässig, die sich auf dasselbe Feld beziehen.

Die Feldbedingungen müssen sich nicht notwendigerweise nur auf die zurMatchcode-Id gehörenden Felder beziehen, sondern sie können für beliebige Felderaus dem Matchcode-Objekt angegeben werden. Sie können also beliebige Felderaus dem Matchcode-Objekt in die Selektionsbedingung aufnehmen, ohne Sie alsFelder in die Id zu übernehmen.

Page 295: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Selektionsbedingungen einer Matchcode-Id angeben

April 2001 295

Nächste Aktion beim Anlegen eines Matchcodes:Matchcode-Id aktivieren [Seite 296]

Page 296: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Matchcode-Id aktivieren

296 April 2001

Matchcode-Id aktivieren Die Matchcode-ID aktivieren Sie ausgehend vom Pflegebild der Eigenschaften der Matchcode-Iddurch MC-Id � Aktivieren.

Bei Matchcode-Ids der Aktualisierungsart I wird der zugehörige Datenbank-View beim Aktivierenauf der Datenbank angelegt. Weiterhin wird beim Aktivieren geprüft, ob ein entsprechender Indexzur Unterstützung der Viewselektion auf der Datenbank existiert. Ist dies nicht der Fall, wird eineentsprechende Warnung ausgegeben.

Informationen zum Ablauf der Aktivierung können Sie dem Aktivierungsprotokoll entnehmen. Siekönnen sich das Aktivierungsprotokoll über Hilfsmittel � Protokoll anzeigen � Aktivierenanzeigen lassen. Falls Fehler oder Warnungen bei der Aktivierung auftraten, wird dasAktivierungsprotokoll 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]

Page 297: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Matchcode-Daten aufbauen

April 2001 297

Matchcode-Daten aufbauen VoraussetzungenBei physischen Matchcodes (Aktualisierungsart A, S oder P) werden die Matchcode-Datenredundant 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. DerAufbau bzw. das Löschen dieser Tabellen erfolgt mit Hilfe des Matchcode Utilities (ReportSAPMACO). Der Aufbau der Tabellen erfolgt für alle physischen Aktualisierungsarten (A, S oderP) auf die gleiche Weise.

Das Matchcode Utility arbeitet mandantenübergreifend. Ein Parameter steuert, ob Matchcodesfür einen spezifischen Mandanten oder für alle Mandanten aufgebaut bzw. gelöscht werdensollen. Zusätzlich bietet das Utility die Möglichkeit, Matchcodes für alle Matchcodeobjekte ineinem Lauf aufbauen zu lassen.

Vorgehensweise1. 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 dieEingabemaske ausfüllen müssen. Führen Sie den Report aus.

3. Prüfen Sie, ob die Matchcode-Daten korrekt aufgebaut wurden. Siehe hierzu Anzeigen deraufgebauten Matchcode-Daten [Seite 298].

Transparente Matchcode-Ids (Aktualisierungsart I) und Klassifikations-Matchcode-Ids (Aktualisierungsart K) werden nicht physisch gespeichert. Deshalb macht eskeinen Sinn, solche Ids mit dem Matchcode-Utility aufzubauen.

Page 298: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Anzeigen der aufgebauten Matchcode-Daten

298 April 2001

Anzeigen der aufgebauten Matchcode-Daten Vorgehensweise1. 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ählenbetätigen.

Es erscheint das Dialogfenster Wertebereich einschränken, in welchem Sie denWertebereich der auszugebenden Sätze durch Eingabe von Selektionsbedingungen fürdie 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 Idanzeigen lassen. Wählen Sie hierzu Hilfsmittel � MC-Daten anzeigen. Es erscheintdirekt das Dialogfenster Wertebereich einschränken. Verfahren Sie weiter wie obenbeschrieben wurde.

Page 299: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Matchcode-Index anlegen

April 2001 299

Matchcode-Index anlegen Bei der Aktivierung einer transparenten Matchcode-Id wird überprüft, ob für diese Id einpassender Datenbankindex existiert. Ein solcher Index ist in aller Regel erforderlich, um dieMatchcodeselektion zu unterstützen. Falls kein entsprechender Index existiert, kann es zuerheblichen Performanceproblemen bei der Matchcodeselektion kommen.

Das System geht davon aus, daß das erste Feld in der Matchcode-Definition (beimandantenabhängigen Matchcodes das erste Feld nach dem Mandantenfeld) das für diesenMatchcode relevante Suchfeld ist, d.h. daß dieses Feld bei der Matchcode-Suche vom Benutzerdurch die Eingabe eines Selektionswertes eingeschränkt wird. Als passender Index wird deshalbein Index angesehen, der das relevante Matchcodesuchfeld (eventuell nach einemMandantenfeld) enthält.

Falls kein solcher passender Datenbankindex existiert, wird bei der Aktivierung der Matchcode-Ideine entsprechende Warnung ausgegeben. Für das weitere Vorgehen werden zwei Fälleunterschieden:

� Falls der Matchcode-View auf der Datenbank (unter Berücksichtigung derSelektionsbedingung) weniger als 1000 Datensätze enthält, ist das Anlegen eines Index inder 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 Felderstehen, über die mit Gleichheit gesucht wird (Mandant, Sprache oder allgemeiner alle Felder fürdie 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 vomunterliegenden Datenbanksystem zur Datenselektion verwendet wird. Welcher Index konkretverwendet 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 angelegtePrimärindex der entsprechenden Tabelle.

Sie können wie folgt überprüfen, ob der von Ihnen angelegte Index zur Unterstützung derMatchcodeselektion 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 absetzenkö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 diesemExplain-Plan entnehmen, wie das für die Sucheingabe verwendete SELECT-Statementaufgebaut ist und wie es in der Datenbank abgearbeitet wird. Insbesondere kann dem

Page 300: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Matchcode-Index anlegen

300 April 2001

Explain-Plan entnommen werden, welche Indizes beim Lesen der Daten aus denBasistabellen 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-Systemabhängig. Genauere Informationen zum Explain-Plan finden Sie in der Dokumentationdes von Ihnen verwendeten Datenbank-Systems.

Page 301: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Funktionsbaustein für Matchcode-Id

April 2001 301

Funktionsbaustein für Matchcode-Id Für Matchcodes der Aktualisierungsart K erfolgt die Suche bei der F4-Hilfe über einenFunktionsbaustein, der bei der Matchcode-Id Definition angegeben werden muß und der bei derMatchcodeselektion aufgerufen wird. Dieser Funktionsbaustein muß folgende Schnittstelleaufweisen:

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 FeldesFLDLG(6) TYPE N = die Länge des zu transportierenden FeldesVALUE(79) TYPE C = der anzugebende Wert

In der aktuellen Realisierung wird nach der Rückkehr aus dem Funktionsbaustein nur eine Zeileder VALUES-Tabelle ausgewertet. Es wird prinzipiell immer nur das in der Definition desMatchcode-Objekts angegebene Suchfeld (auf dem die Matchcodeselektion ausgelöst wurde) indas Dynpro transportiert. Der zurückgegebene Wert muß bereits in das externe Formatkonvertiert sein.

Page 302: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Matchcodes ändern

302 April 2001

Matchcodes ändernVorgehensweise1. 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 vierstelligenObjektnamen 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]

Page 303: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Matchcode-Objekt ändern

April 2001 303

Matchcode-Objekt ändern Im folgenden wird beschrieben, was Sie bei Änderungen an einem vorhandenen Matchcode-Objekt beachten sollten.

Primärtabelle ändernSie können die Primärtabelle einfach durch Eintragen eines neuen Tabellennamens im FeldPrimärtabelle ändern.

Haben Sie schon Sekundärtabellen bzw. Felder ausgewählt, wird eine Warnungausgegeben. Falls Sie die Änderung der Primärtabelle durch Datenfreigabebestä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 entfernenUm eine Sekundärtabelle aus dem Matchcode-Objekt zu entfernen, stellen Sie den Cursor aufdie Tabelle und wählen Bearbeiten -> SekTab löschen.

Das Löschen einer Tabelle aus dem Matchcode-Objekt entfernt gleichzeitig auch alleTabellen, die über die gelöschte Tabelle mit der Primärtabelle verbunden sind.

Weitere Sekundärtabellen aufnehmenWollen Sie weitere Sekundärtabellen aufnehmen, stellen Sie den Cursor auf einenTabellennamen und wählen Sie Bearbeiten � SekTab auswählen. Sie erhalten eine Liste allermit der ausgewählten Tabelle über Fremdschlüssel verbundenen Tabellen.

Stellen Sie den Cursor auf eine Tabelle, die Sie als Sekundärtabelle übernehmen möchten undwählen Sie Auswählen. Die Tabelle wird farblich unterlegt. Wiederholen Sie dies für alleTabellen, 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 alsSekundärtabellen übernommen und die betreffenden Fremdschlüssel angezeigt. Sichern Sie dieTabellenauswahl, falls Sie alle benötigten Tabellen aufgenommen haben.

Felder löschenUm ein Feld zu löschen, positionieren Sie den Cursor auf das betreffende Feld und wählenBearbeiten � 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 einemFehler! Sie können diesen beheben, indem Sie das betreffende Feld aus allen Ids

Page 304: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Matchcode-Objekt ändern

304 April 2001

des Matchcode-Objekts löschen oder indem Sie das Feld einfach wieder in dasMatchcode-Objekt aufnehmen.

Felder einfügenUm ein Feld einzufügen, positionieren Sie den Cursor auf ein schon eingetragenes Feld undwählen Bearbeiten � Feld einfügen. Direkt über der Zeile, in der der Cursor steht, wird danneine neue Zeile eröffnet, in der Sie die notwendigen Eingaben machen können.

Suchfeld ändernUm Matchcodes als Online-Hilfe einsetzen zu können, muß eine Verbindung zwischen einemFeld auf einem Bild und einem Matchcodefeld hergestellt werden. Diese Verbindung wird überdas Suchfeld hergestellt, das standardmäßig an das erste Schlüsselfeld der Primärtabellevergeben wird.

Bei einer Matchcodeselektion im Rahmen der Online-Hilfe wird der Wert des Suchfeldes in dasDynpro übernommen. Wollen Sie ein anderes Suchfeld wählen, so genügt es, dieses in derentsprechenden Spalte zu markieren.

Es darf nur ein Feld als Suchfeld markiert sein!

Page 305: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Matchcode-Id ändern

April 2001 305

Matchcode-Id ändern Im folgenden wird beschrieben, was Sie bei Änderungen an einer vorhandenen Matchcode-Idbeachten sollten.

Ändern der AktualisierungsartSie können die Aktualisierungsart [Seite 280] ändern, indem Sie den bestehenden Eintrag imFeld Aktualisierungsart überschreiben. Falls Sie physisch abgelegte Matchcode-Ids auftransparente Matchcode-Ids umstellen wollen, beachten Sie bitte die Informationen in Umstellungauf transparente Matchcodes [Seite 307].

Beachten Sie, daß Sie vor einer Änderung der Aktualisierungsart alle abhängigenObjekte der bestehenden Id löschen müssen. Wollen Sie z.B. die Aktualisierungsartvon I nach A ändern, müssen Sie erst den auf der Datenbank angelegtenMatchcode-View löschen.

Sekundärtabellen entfernenDas Entfernen einer bereits für die Matchcode-Id selektierten Tabelle erfolgt durch nochmaligeSelektion der betreffenden Tabelle.

Stellen Sie den Cursor auf die Tabelle, über welche die zu entfernende Tabelle mit derPrimärtabelle verbunden ist. Wählen Sie Bearbeiten � Sektab.auswählen. Es erscheint einDialogfenster, in dem die mit der Tabelle über Fremdschlüssel verbundenen Tabellen aufgelistetsind. 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ärtabellenwerden damit aus der Id gelöscht. Sichern Sie die Auswahl der Sekundärtabellen.

Die bereits in die Matchcode-Id übernommenen Felder dieser Tabelle werden dabeinicht automatisch entfernt, sondern müssen in der Feldpflege der Matchcode-Idgelöscht werden! Das Entfernen einer Sekundärtabelle aus der Id entferntgleichzeitig alle über diese Tabelle mit der Primärtabelle verbundenen Tabellen ausder Matchcode-Id.

Sekundärtabellen aufnehmenStellen Sie den Cursor auf eine Basistabelle. Wählen Sie Bearbeiten � Sektab.auswählen. Eserscheint ein Dialogfenster, in dem die mit der Tabelle über Fremdschlüssel verbundenenTabellen 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ärtabellenwerden damit in die Id übernommen. Sichern Sie die Auswahl der Sekundärtabellen.

Beachten Sie, daß für transparente Ids nur transparente Tabellen selektiert werdendürfen. Weiterhin sind aus Performancegründen bei den abhängigen Tabellensynchroner Matchcodes (Aktualisierungsart S) ausschließlich hierarchischeBeziehungen erlaubt.

Page 306: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Matchcode-Id ändern

306 April 2001

Felder löschenUm ein Feld zu löschen, positionieren Sie den Cursor auf das betreffende Feld und wählenBearbeiten � Feld löschen.

Bei synchronen Matchcode-Ids (Aktualisierungsart S) sollten Schlüsselfelder nurdann gelöscht werden, wenn die restlichen Felder den Satz noch eindeutigidentifizieren. Andernfalls funktioniert die synchrone Matchcode-Pflege nicht mehrkorrekt. 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 Versionneben der geänderten erhalten. Sie müssen in diesem Fall die Matchcode-Sätzeerneut mit Hilfe des Matchcode-Utilities aufbauen.

Felder einfügenUm ein Feld einzufügen, positionieren Sie den Cursor auf ein schon eingetragenes Feld undwählen Bearbeiten � Feld einfügen. Direkt über der Zeile, in der der Cursor steht, wird danneine 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 Pmüssen die Matchcode-Daten umgesetzt werden. Die vorhandenen Matchcode-Daten werdenhierbei gelöscht und anschließend wieder neu aufgebaut. Werden die Felder einer Matchcode-Idder Aktualisierungsart I geändert, wird der auf der Datenbank vorhandene Matchcode-View beimAktivieren 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 dergeänderten Version sowie alle Felder der neu eingespielten Version, d.h. beim Upgrade wird dieVereinigungsmenge der Felder beider Versionen der Id gebildet.

Datenelement ändernDem Matchcode-Feld wird vom System das Datenelement des entsprechenden Tabellenfeldeszugeordnet. Sie können dieses Datenelement ändern. Dies kann z.B. notwendig sein, wenn Siedas Matchcode-Feld mit einer anderen Dokumentation versehen wollen.

Überschreiben Sie einfach den Namen des Datenelements im Feld Datenelem. Das neueDatenelement muß auf eine Domäne mit gleichem Datentyp und gleicher Länge wie dasursprüngliche Datenelement verweisen.

Selektionsbedingung ändernBei einer Änderung der Selektionsbedingung einer Matchcode-Id der Aktualisierungsart A, Soder P müssen die Matchcode-Daten erneut mit Hilfe des Matchcode-Utilities aufgebaut werden.

Page 307: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Umstellung auf transparente Matchcodes

April 2001 307

Umstellung auf transparente Matchcodes VoraussetzungenDamit 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 Fallmöglicherweise Anwendungsprogramme angepaßt werden müssen (siehe Besonderheiten beiprogrammgesteuerten Matchcodes [Seite 282]).

Vorgehensweise1. Sie müssen zuerst die auf der Datenbank vorhandenen Matchcode-Daten löschen.

Falls Sie alle physisch realisierten Matchcode-Ids eines Matchcode-Objekts auftransparente Ablage umstellen wollen, sollten Sie den Matchcode-Pool auf derDatenbank löschen. Verzweigen Sie hierzu aus der Pflege des Matchcode-Objekts überHilfsmittel � Datenbank-Utility ins Datenbank-Utility. Wählen Sie dannDatenbanktabelle � Löschen. Der Matchcode-Pool wird nun auf der Datenbankgelöscht.

Falls Sie nur eine physisch realisierte Matchcode-Id eines Matchcode-Objekts auftransparente Ablage umstellen wollen, müssen Sie die für diese Id auf der Datenbankvorhanden Matchcode-Daten löschen. Sie können dies erreichen, indem Sie dasMatchcode-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 indieser Liste die gewünschte Id und wählen Sie Ausführen. Die Matchcode-Daten werdennun 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 derDatenbank 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]

Page 308: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Auswirkungen der Umstellung auf transparente Ids

308 April 2001

Auswirkungen der Umstellung auf transparente IdsNach der Umstellung einer physisch realisierten Matchcode-Id auf transparente Ablage ergebensich folgende Änderungen:

Suche wird Case-SensitiveDie Suche über eine transparente Id ist Case-Sensitive, d.h. bei Eingeben einer Suchbedingungwird in Textfeldern Groß-/Kleinschreibung berücksichtigt.

Treffermenge bei einer Suche kann kleiner werdenDie Treffermenge einer Suche über eine transparente Id kann eine echte Teilmenge derTreffermenge 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 physischrealisierten Ids ein Outer Join gebildet wird.

Bei der Suche über eine transparente Id werden Sätze der Primärtabelle, zu denen keinentsprechender Eintrag in den Fremdschlüsselfeldern einer Sekundärtabelle existiert, nichtgefunden.

Eine Id realisiert die Suche nach der Personalnummer eines Mitarbeiters überdessen Namen und Abteilung. Die Basistabelle enthält Angaben zur Nummer undzum Namen. Die Sekundärtabelle enthält die Abteilungen und deren Mitarbeiter. FürMitarbeiter, die keiner Abteilung zugeordnet sind, existiert also kein Eintrag in derSekundärtabelle. Solche Mitarbeiter können beim Zugriff über eine transparente Idmit den Feldern Nummer, Name und Abteilung nicht ermittelt werden. Dagegenwerden beim Zugriff über eine physisch realisierte Id gleicher Struktur solcheMitarbeiter gefunden.

Anpassung bei TeilfeldernFalls für die Id Teilfelder definiert waren, mußten diese Definitionen bei der Umstellung auftransparente Ablage zurückgenommen werden. Sie können über die Ausgabegestaltung dasvorherige Format der Ausgabeliste wiederherstellen.

Page 309: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Matchcode-Id deaktivieren

April 2001 309

Matchcode-Id deaktivieren In Anwendungen werden standardmäßig viele Matchcode-Ids angelegt, die aber in einigenBereichen nur selten genutzt werden. Diese unnötigen Ids belasten unter Umständen dasSystem.

Die Funktion Deaktivieren im Menü MC-Id des Pflegebildes der Eigenschaften der Matchcode-Iderlaubt es, diese Belastung zu reduzieren. Im Gegensatz zum Löschen bleibt beim Deaktivierendie Definition der Id im ABAP Dictionary erhalten. Wird die Id später erneut benötigt, kann sieeinfach erneut aktiviert werden.

Die Funktion Deaktivieren kann nur für aktive Matchcode-Ids ausgeführt werden. Bevor eineMatchcode-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 einerdeaktiven Id nicht automatisch an Änderungen der Daten angepaßt werden. Nach dem erneutenAktivieren 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 Auswahlangeboten werden.

Das Deaktivieren ist eine reine Customizingfunktion, d.h. keine transportierbareEigenschaft. Falls eine deaktivierte Matchcode-Id beim Upgrade erneut ausgeliefertwird, ist sie nach dem Upgrade wieder aktiv.

Page 310: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Matchcode-Id löschen

310 April 2001

Matchcode-Id löschen VoraussetzungenBeachten Sie bitte, daß Sie eine Matchcode-Id erst löschen können, nachdem alle zugehörigenDatenbank-Objekte zu dieser Id gelöscht wurden. Sie müssen also folgende Aktionendurchfü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-Utilityaufgebauten Matchcode-Daten löschen. Hierzu genügt es, den Matchcode-Pool mit Hilfe desDatenbank-Utilities auf der Datenbank zu löschen.

Vorgehensweise1. 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 zubestä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 imLöschprotokoll aufgezeichnet. Sie können sich dieses über Hilfsmittel � Protokolleanzeigen � Löschen anzeigen lassen.

Beachten Sie bitte, daß es in vielen Fällen günstiger ist, eine Matchcode-Id nur zudeaktivieren. Im Gegensatz zum Löschen bleibt beim Deaktivieren [Seite 309] dieDefinition der Id im ABAP Dictionary erhalten. Wird die Id später erneut benötigt,kann sie einfach erneut aktiviert werden.

Page 311: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Matchcode-Objekt löschen

April 2001 311

Matchcode-Objekt löschenVoraussetzungenBeachten Sie bitte, daß beim Löschen eines Matchcode-Objekts alle Ids zu diesem Objektmitgelöscht werden. Deshalb ist das Löschen eines Matchcode-Objekts erst möglich, falls alleIds 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örigenMatchcode-Views mehr auf der Datenbank existieren.

Vorgehensweise1. 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, fallsfür die zum Matchcode-Objekt gehörenden Matchcode-Ids keine abhängigen Objektemehr existieren.

Page 312: BC - ABAP Dictionary (v4.6c)

BC - ABAP Dictionary SAP AG

Flugmodell

312 April 2001

Flugmodell Das Flugmodell ist Grundlage aller Beispiele in dieser Dokumentation. Alle in den Beispielenerwähnten Tabellen des Flugmodells sind in ihrem System vorhanden, so daß Sie die Beispieledirekt im System nachvollziehen können.

Dem Flugmodell liegt das Datenmodell BC_TRAVEL zugrunde, daß Sie sich in Ihrem System mitdem Data Modeler ansehen können.

Vorgehensweise zum Anzeigen des Flugmodells1. 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 derDokumentation zum Data Modeler [Extern].

Flugmodell (vereinfachte Darstellung)

Mandant

Währung

Flugplan Flug Buchung

Geschäfts-partner

Reisebüro

Kunde

Fluggesell-schaft Verkaufsstelle

Das Flugmodell beschreibt auf vereinfachte Weise die Buchung von Platz inPassagierflugzeugen durch Flugkunden. Die Buchung erfolgt entweder über eine Verkaufsstelleeiner Fluggesellschaft oder über ein Reisebüro.

Page 313: BC - ABAP Dictionary (v4.6c)

SAP AG BC - ABAP Dictionary

Flugmodell

April 2001 313

Grundlage einer Flugbuchung sind einzelne Flugverbindungen, die im Flugplan genaubeschrieben sind. Zu jeder Flugverbindung gibt es konkrete Flüge.

Zugeordnete Tabellen im ABAP DictionaryZu jedem Entitätstyp des Flugmodells gehört eine Tabelle im ABAP Dictionary, in der die Datender 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, Nummerder 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 TabellenDie Tabelle SBUSPART enthält alle Geschäftspartner zu einer Fluggesellschaft. In dieserTabelle ist ein Geschäftspartner über seine Nummer identifiziert. Weiter sind noch die Daten desAnsprechpartners bei diesem Geschäftspartner hinterlegt. Ein Geschäftspartner kann einReisebü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 inder Tabelle SCUSTOM abgelegt. Zu jedem Eintrag in der Tabelle SBUSPART existiert also einEintrag mit gleichem Schlüssel entweder in der Tabelle STRAVELAG oder in der TabelleSCUSTOM.

Die Tabelle SCARR enthält die Kennungen und Bezeichnungen der Fluggesellschaften. JedeFluggesellschaft bedient eine Reihe von Flugverbindungen. Diese Flugverbindungen sind in derTabelle SPFLI hinterlegt. Die konkreten Flugdaten für jede Flugverbindung stehen in der TabelleSFLIGHT. 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 Verkaufsschaltersind in der Tabelle SCOUNTER verzeichnet. Die Nummer des Kunden bzw. des Reisebüros, fürdas 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ätzlichbei den Buchungsdaten in der Tabelle SBOOK eingetragen.