Ansicht
Dokumentation

ABENABAP_OBJECTS_DIFF_TYPES_DATA - ABAP OBJECTS DIFF TYPES DATA

ABENABAP_OBJECTS_DIFF_TYPES_DATA - ABAP OBJECTS DIFF TYPES DATA

TXBHW - Original Tax Base Amount in Local Currency   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

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 )