Die von Ihnen im Class Builder angelegten globalen Klassen und Interfaces werden in der Klassenbibliothek abgelegt und vom Repository verwaltet. Sie haben denselben Namensraum wie alle anderen Repository-Objekte (Datenbanktabellen, Strukturen, Datenelemente etc.). Es ist deswegen notwendig, Namenskonventionen für Objekttypen und ihre Komponenten festzulegen und sie innerhalb der Programmentwicklung einheitlich zu verwenden.
Die folgenden Namenskonventionen sollten innerhalb des SAP-Namensraums verwendet werden. Werden Namenskonventionen für Objekttypen (Klassen und Interfaces) nicht eingehalten, können Konflikte auftreten.
Den gleichen Namensraum innerhalb einer Klasse teilen sich:
● alle Komponenten der Klasse selbst (Attribute, Methoden, Ereignisse, Konstruktoren, Interfaces, klasseninterne Datentypen und Aliases)
● alle öffentlichen und geschützten Komponenten aller Oberklassen
Innerhalb der Methodenimplementierung gibt es einen lokalen Namensraum. Die Namen der lokalen Variablen können die Namen der Klassenkomponenten überdecken.
Bei Wahl der Bezeichner von Entwicklungsobjekten sind folgende Grundsätze einzuhalten:
● Verwenden Sie englische Namen.
● Verwenden Sie Glossarbegriffe, wenn vorhanden.
Zum Beispiel: CL_COMPANY_CODE anstelle von BUKRS.
● Bei zusammengesetzten Bezeichnern ist der Unterstrich ( _ ) als Trennzeichen zu wählen. Da die Groß- und Kleinschreibung nicht unterstützt wird, ist nur der Unterstrich das einzig freie Zeichen zur Trennung.
Zum Beispiel: CL_COMPANY_CODE, CL_GENERAL_LEDGER_ACCOUNT.
● Bezeichnungen sollen inhaltlich beschreiben, um was es sich handelt und nicht wie es implementiert ist.
Beispiel: PRINT_RECTANGLE statt RECTANGLE_TO_SPOOL.
Klassen- und Interface-Namen der Klassenbibliothek liegen im gleichen Namensraum wie Datenelemente, Tabellen, Strukturen und Typen. Sie werden zentral in der Tabelle TADIR verwaltet.
Klasse in der Klassenbibliothek |
CL_<Klassenname> Der Klassenname soll aus Substantiven bestehen und im Singular gehalten sein. CL_COMPANY_CODE, CL_GENERAL_LEDGER_ACCOUNT |
Interfaces in der Klassenbibliothek |
IF_<Interface-Name> Für Interfaces gelten die gleichen Namenskonventionen wie für Klassen. IF_STATUS_MANAGEMANT, IF_CHECKER |
Programmlokale Klasse (Empfehlung) |
LCL_<Klassenname> Der Klassenname soll aus Substantiven bestehen und im Singular gehalten sein. LCL_TREE_MANAGEMENT |
Programmlokales Interface (Empfehlung) |
LIF_<Interface-Name> Für Interfaces gelten die gleichen Namenskonventionen wie für Klassen. LIF_PRINTER |
Die Verwendung der angegebenen Präfixe ist nicht zwingend vorgeschrieben. Wenn Sie jedoch Präfixe benutzen, sollten Sie die oben beschriebenen zu verwenden.
Methodenname |
<Methodenname> Der Methodenname sollte mit einem Verb beginnen. GET_STATUS, CREATE_ORDER, DETERMINE_PRICE |
Ereignisse |
<Ereignisname> Ereignisnamen sollten in der Form <Substantiv>_<Verb im Partizip> benannt werden. BUTTON_PUSHED, COMPANY_CODE_CHANGED, BUSINESS_PARTNER_PRINTED |
Klassenlokale Typdefinitionen (Empfehlung) |
TY_<Typname> TY_INTERNAL_TYPE, TY_TREE_LIST |
Datendefinitionen (Variable) |
<Variablenname> Bei der Bezeichnung von Variablen innerhalb einer Klasse (CLASS-DATA oder DATA) sollten Sie die Verwendung von Verben am Anfang zu vermeiden (um Konflikte mit Methodennamen zu vermeiden). LINE_COUNT, MARK_PRINTED, MARK_CHANGED, STATUS |
Datendefinition (Konstante) (Empfehlung) |
CO_<Konstantenname> CO_MAX_LINE, CO_DEFAULT_STATUS, CO_DEFAULT_WIDTH, CO_MAX_ROWS |
Die Verwendung der angegebenen Präfixe ist nicht zwingend vorgeschrieben. Wenn Sie jedoch Präfixe für Klassen- und Interface-Namen benutzen, sollten Sie die oben beschriebenen zu verwenden.
Attributzugriff |
SET_<Attributname>, GET_<Attributname> Methoden, die auf Attribute jedweder Art zugreifen, sollte GET_ oder SET_ vorangestellt werden. GET_STATUS, SET_USE_COUNT |
Ereignisbehandlermethoden |
ON_<Ereignisname> Methoden, die ein Ereignis behandeln, sollten mit ON beginnen, gefolgt vom Namen des Ereignisses, das sie behandeln. ON_BUTTON_PUSHED, ON_BUSINESS_PARTNER_PRINTED |
Methoden, die Typkonvertierungen durchführen |
AS_<neuer Typ> AS_STRING, AS_ISOCODE |
Methoden, die einen boolschen Wert zurückliefern
|
IS_<Adjektiv> IS_OPEN, IS_EMPTY, IS_ACTIVE Die Methoden liefern möglicherweise keine Ausnahmen.
Verwenden Sie SPACE und X zur Kennzeichnung von falsch und wahr. |
Prüfmethoden |
CHECK_<Ziel> CHECK_AUTHORIZATION, CHECK_PROCESS_DATE |
Die Parameter werden aus der Sicht der sie implementierenden Methode betrachtet:
IMPORTING-Parameter |
IM_<Parametername> |
EXPORTING-Parameter |
EX_<Parametername> |
CHANGING-Parameter |
CH_<Parametername> |
RESULT |
RE_<Ergebnis> |
Die Verwendung von Präfixen ist nicht zwingend vorgeschrieben. Sollten allerdings Präfixe benutzt werden, dann sind die oben beschriebenen Präfixe zu verwenden.
Im Folgenden ist eine Tabelle von sinnvollen Ausnahmenamen angegeben, die auch generisch angewendet werden können. Beispiel: ...NOT_FOUND könnte zu DATE_NOT_FOUND werden.
EXCEPTION |
Bedeutung |
ACTION_NOT_SUPPORTED |
Die angeforderte Aktion oder Funktionscode wird nicht unterstützt. |
CANCELLED |
Sie können diese Ausnahme setzen, wenn eine Methode einen Dialog verwendet, um zu ermitteln, was zu tun ist (Beispiel: eine Auswahlliste) und der Benutzer die Option Abbrechen wählt. |
EXISTING |
Ein neu anzulegendes Objekt existiert bereits auf der Datenbank. |
FAILED |
Die Methode konnte ihre Aufgabe aufgrund der aktuellen Umgebung nicht ausführen. Diese Ausnahme ist für Fälle gedacht, in denen sich das Umfeld temporär eine Konstellation aufweist, die das Ausführen der Methode unmöglich macht |
..._FAILED |
Eine Teilfunktion der Methode konnte aufgrund der aktuellen Umgebung nicht ausgeführt werden. (OPEN_FAILED, CLOSE_FAILED, SELECTION_FAILED, AUTHORIZATION_FAILED) |
FOREIGN_LOCK |
Die Daten werden gerade von einem anderen Benutzer gesperrt. |
INCONSISTENT |
Die Objektdaten auf der Datenbank sind inkonsistent. |
..._INCONSISTENT |
Die Teilobjektdaten für ... eines Objekts auf der Datenbank sind inkonsistent. |
INVALID |
Die eingegebenen Objektdaten sind nicht korrekt - z.B. der Buchungskreis ist nicht vorhanden. Vergleiche NOT_QUALIFIED. |
..._INVALID |
Die eingegebenen Teilobjektdaten sind nicht korrekt. Vergleiche NOT_QUALIFIED. |
INTERNAL_ERROR |
Der letzte Ausweg. Nur wenn der Fehler nicht weiter eingegrenzt werden kann, soll diese Ausnahme verwendet werden. |
NOT_AUTHORIZED |
Der Benutzer hat die Berechtigung nicht. |
NOT_CUSTOMIZED |
Das angeforderte Objekt ist nicht korrekt benutzerdefiniert. |
..._NOT_CUSTOMIZED |
Das Teilobjekt … des angeforderten Objekts ist nicht korrekt benutzerdefiniert. |
NOT_FOUND |
Das angeforderte Objekt kann nicht gefunden werden. |
..._NOT_FOUND |
Das Teilobjekt ... des angeforderten Objekts kann nicht gefunden worden. |
NOT_QUALIFIED |
Die Kombination der Eingabeparameter reicht nicht aus, um die Funktion der Methode auszuführen. Vergleiche INVALID. |
..._NOT_QUALIFIED |
Ein Parameter der Methode ist nicht qualifiziert. |
NUMBER_ERROR |
Fehler bei der Nummernvergabe. |
SYSTEM_ERROR |
Diese Ausnahme wird gesetzt, wenn das System eine unerwartete Fehlermeldung liefert. |