Ansicht
Dokumentation
ABENABAP_OBJECTS_DIFF_TYPES_DATA - ABAP OBJECTS DIFF TYPES DATA
TXBHW - Original Tax Base Amount in Local Currency Fill RESBD Structure from EBP Component StructureDiese Dokumentation steht unter dem Copyright der SAP AG.
Syntaxverschärfungen bei Typdefinitionen und Datendeklarationen
Neue Namenskonventionen
-
Die Namen von Komponenten in Klassen, also Attribute, Methoden und Ereignisse, dürfen nur aus
den Zeichen "A-Z", "0-9" und "_" aufgebaut werden. Außerdem dürfen sie nicht mit einer
Ziffer beginnen. Die Zeichen "/" für Namensraumpräfixe müssen als Paare auftreten
und ein Namensraumpräfix muss mindesten 3 Zeichen lang sein. Dies gilt seit Release 7.0 auch außerhalb von Klassen.
In ABAP Objects Fehlermeldung bei:
DATA: field-name TYPE ...,
1name TYPE ...
Korrekte Syntax:
DATA: field_name TYPE ...,
name1 TYPE ...
Grund:
Sonderzeichen sollen nicht in Namen verwendet werden, da sie oft eine besondere Bedeutung haben. Die neuen Namenskonventionen entsprechen denen anderer Programmiersprachen.
Verbot der Anweisung TABLES
-
Das Anlegen von Tabellenarbeitsbereichen mit der Anweisung TABLES ist in ABAP Objects verboten.
In ABAP Objects Fehlermeldung bei:
TABLES dbtab.
Korrekte Syntax:
DATA wa TYPE dbtab.
Grund:
Die Semantik der Anweisung TABLES ist mehrdeutig.
Statt impliziter Tabellenarbeitsbereiche sollen bei Datenbankzugriffen explizite Arbeitsbereiche angegeben werden.
Gemeinsame Schnittstellen-Arbeitsbereiche zur Datenübergabe zwischen Programmen und
Prozeduren werden
in ABAP Objects nicht unterstützt. In Klassen dienen nur die einem Verwender sichtbaren Komponenten
als Schnittstelle, also sichtbare Attribute und die Schnittstellenparameter von Methoden und Ereignissen.
Der Datentransport zwischen ABAP-Programmen und
logischen Datenbanken oder
Dynpros über globale Tabellenarbeitsbereiche ist in ABAP Objects nicht vorgesehen und wird durch andere Konzepte ersetzt.
Verbot der Anweisung NODES
-
Das Anlegen von Knoten-Arbeitsbereichen mit der Anweisung NODES ist in ABAP Objects verboten.
In ABAP Objects Fehlermeldung bei:
NODES struc.
Korrekte Syntax:
DATA wa TYPE struc.
Grund:
Die bisherige Art der Verarbeitung
logischer
Datenbanken wird von ABAP Objects nicht unterstützt. Der Datentransport zwischen ABAP-Programmen und logischen Datenbanken über globale Arbeitsbereiche ist in ABAP Objects nicht vorgesehen.
Verbot gemeinsamer Datenbereiche
-
Das Anlegen von gemeinsamen Datenbereichen
mit dem Zusatz COMMON PART der Anweisung DATA ist in ABAP Objects verboten.
In ABAP Objects Fehlermeldung bei:
DATA BEGIN OF COMMON PART c,
...
DATA END OF COMMON PART.
Grund:
Gemeinsame Schnittstellen-Arbeitsbereiche zur Datenübergabe zwischen Programmen und
Prozeduren werden
in ABAP Objects nicht unterstützt. In Klassen dienen nur die einem Verwender sichtbaren Komponenten als Schnittstelle, also sichtbare Attribute und die Schnittstellenparameter von Methoden und Ereignissen.
Kein LIKE-Bezug auf Dictionary-Typen
-
In Klassen kann man sich nur mit dem TYPE-Bezug auf Datentypen im ABAP Dictionary beziehen. Der
LIKE-Bezug ist nur auf lokale Datenobjekte erlaubt. In lokalen Klassen zählen hierzu die Attribute der Klasse und die Datenobjekte des
Rahmenprogramms.
In globalen Klassen ist nur der Bezug auf die Attribute der Klasse möglich. Dies bezieht sich sowohl auf Datendeklarationen als auch auf
Typisierungen von Schnittstellenparametern und Feldsymbolen.
In ABAP Objects Fehlermeldung bei:
DATA f LIKE dbtab.
Korrekte Syntax:
DATA f TYPE dbtab.
Grund:
Der TYPE-Zusatz soll das einzige Konstrukt sein, das einen Bezug auf Datentypen erlaubt, während der LIKE-Zusatz nur für Datenobjekte da ist. Die
Repository-Objekte
im ABAP Dictionary sind Datentypen, aber keine Datenobjekte. Außerhalb von ABAP Objects ist der LIKE-Bezug auf Datenbanktabellen und
flache Strukturen des ABAP Dictionarys noch aus Kompatibilitätsgründen zu vorhergehenden Releases erlaubt.
Keine implizite Angabe von Typ, Länge und der Dezimalstellen
-
In der Anweisung TYPES muss in ABAP Objects beim Typ C der Typ und bei den Typen C, N, P und X die Länge und, bei Typ P, die Anzahl der
Dezimalstellen explizit angegeben werden.
In ABAP Objects Fehlermeldung bei:
TYPES: t1,
t2 TYPE p.
Korrekte Syntax:
TYPES: t1(1) TYPE c,
t2(8) TYPE p DECIMALS 0.
Grund:
Die vollständige Typdefinition ist die Voraussetzung dafür, später
einmal nicht vollständig definierte Typen als generische Typen anzusehen. In der Anweisung DATA werden Kurzformen nach wie vor vervollständigt.
Falsche Längenangabe bei Deklaration
-
Bei Typisierung mit
Datentyp D, F, I, T in den Anweisungen TYPES, DATA, CLASS-DATA, STATICS und CONSTANTS sind in ABAP Objects keine Längenangaben erlaubt.
In ABAP Objects Fehlermeldung bei:
DATA: f1(8) TYPE d, f2(4) TYPE i.
Korrekte Syntax:
DATA: f1 TYPE d, f2 TYPE i.
Grund:
Die eingebauten elementaren Typen D, F, I und T haben fest vorgegebene, unveränderliche
Längen. Die Angabe anderer Längen ist ohnehin nicht erlaubt. Die Angabe der vorgegebenen Längen ist überflüssig.
Keine operationalen Anweisungen in Strukturdefinitionen
-
Innerhalb der Definition eines strukturierten Datentyps bzw. Datenobjekts mit TYPES, DATA,
CLASS-DATA, STATICS und CONSTANTS dürfen in ABAP Objects und seit Release 7.0 auch außerhalb von Klassen keine anderen Anweisungen stehen.
In ABAP Objects Fehlermeldung bei:
TYPES: BEGIN OF line,
col1 TYPE i.
MOVE 'X' TO a.
TYPES: col2 TYPE i,
END OF line.
Korrekte Syntax:
TYPES: BEGIN OF line,
col1 TYPE i,
col2 TYPE i,
END OF line.
MOVE 'X' TO a.
Grund:
Die Definition einer Struktur zwischen BEGIN OF und END OF stellt einen in sich geschlossenen Block da, in dem nur die Komponenten der Struktur deklariert werden dürfen.
Keine anonymen Komponenten in Strukturen
-
Innerhalb der Definition eines strukturierten Datenobjekts mit DATA, CLASS-DATA, STATICS und CONSTANTS dürfen in ABAP Objects keine anonymen Komponenten deklariert werden.
In ABAP Objects Fehlermeldung bei:
DATA: BEGIN OF struc,
'Text Literal',
space(10) [TYPE c],
text(10) TYPE c VALUE 'Text Field',
END OF struc.
Korrekte Syntax:
DATA: BEGIN OF struc,
text1(12) TYPE c VALUE 'Text Literal',
blanks(10) TYPE c VALUE IS INITIAL,
text2(10) TYPE c VALUE 'Text Field',
END OF struc.
Grund:
Alle Komponenten einer Struktur sollen explizit adressierbar sein. Wenn innerhalb einer
Strukturdefinition Literale oder der spezielle Name space angegeben sind, werden an dieser Stelle
aber namenlose Textfelder als Komponenten eingebaut. Der Initialwert und die Länge dieser Komponenten
richten sich bei der Angabe von Literalen nach deren Inhalt. Bei der Angabe space wird ein mit
Leerzeichen gefülltes Textfeld angelegt. Solche anonymen Textfelder können im Programm
nicht explizit angesprochen werden. Insbesondere gibt es in Strukturen nie eine Komponente mit dem Namen
space. Auf die anonymen Komponenten kann nur über den Namen der Struktur und entsprechende
Offset-/Längenangaben zugegriffen werden. Die anonymen Komponenten können problemlos durch
benannte Komponenten ersetzt werden. Benannte Komponenten erweitern die Funktion der anonymen Komponenten um die explizite Zugreifbarkeit, ohne deren Rolle, z.B. als reine Füllfelder, einzuschränken.
Verbot von NON-LOCAL
-
Der Zusatz NON-LOCAL der Anweisungen DATA, STATICS und CONSTANTS ist in ABAP Objects verboten.
In ABAP Objects Fehlermeldung bei:
METHOD|FUNCTION|FORM ...
DATA f TYPE ... NON-LOCAL.
...
ENDMETHOD|ENDFUNCTION|ENDFORM.
Korrekte Syntax:
DATA f TYPE ...
METHOD|FUNCTION|FORM ...
...
ENDMETHOD|ENDFUNCTION|ENDFORM.
Grund:
Der undokumentierte Zusatz NON-LOCAL verwandelt die Attribute einer Klasse oder die lokalen Datenobjekten einer
Prozedur in globale Datenobjekte des
Rahmenprogramms. Globale Datenobjekte dürfen aber grundsätzlich nur im Rahmenprogramm deklariert werden. Insbesondere darf ein
Class-Pool überhaupt
keine globalen Datenobjekte enthalten, was durch den Zusatz NON-LOCAL umgangen werden könnte.
Keine Definition von Feldgruppen in Methoden
-
Die Anweisung FIELD-GROUPS ist in Methoden verboten.
In Methoden Fehlermeldung bei:
METHOD ...
...
FIELD-GROUPS fg.
...
ENDMETHOD.
Grund:
Ein Extraktdatenbestand ist zurzeit ausschließlich als globales Objekt des
Rahmenprogramms
vorhanden. Die Definition der Feldgruppen darf deshalb auch nur global im Rahmenprogramm erfolgen. Die
Definition der Feldgruppen-Struktur, die zur Laufzeit mit der Anweisung INSERT ... INTO fg erfolgt, darf jedoch auch in Methoden ausgeführt werden.
Verbot von FIELDS
-
Die Anweisung FIELDS wird verboten.
In ABAP Objects Fehlermeldung bei:
FIELDS f.
Korrekte Syntax:
Neuer Pseudo-Kommentar für die erweiterte Programmprüfung.
Grund:
FIELDS hat keine operationale Bedeutung mehr, sondern wirkt nur noch als Hinweis für die erweiterte Programmprüfung.
Verbot von STATICS in Instanzmethoden
-
Die Anweisung STATICS ist in Instanzmethoden verboten.
In ABAP Objects Fehlermeldung bei:
METHOD ...
STATICS s ...
...
ENDMETHOD.
Grund:
Die Anweisung STATICS in einer Methode entspricht einer CLASS-DATA Anweisung,
wobei die Sichtbarkeit der deklarierten Datenobjekte jedoch auf die Methode beschränkt ist. Bei Instanzmethoden stellt dies eine potenzielle Quelle von Missverständnissen dar.
Vendor Master (General Section) PERFORM Short Reference
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 15385 Date: 20240523 Time: 173514 sap01-206 ( 210 ms )