Ansicht
Dokumentation

ABENPROGRAM_ATTRIBUTE_GUIDL - PROGRAM ATTRIBUTE GUIDL

ABENPROGRAM_ATTRIBUTE_GUIDL - PROGRAM ATTRIBUTE GUIDL

RFUMSV00 - Advance Return for Tax on Sales/Purchases   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Programmattribute

Jedes ABAP-Programm hat neben weiteren, weniger wichtigen Eigenschaften einen Satz von Programmattributen, die bestimmte Aspekte des Programmverhaltens und der Syntaxprüfschärfe steuern. Diese sind:

  • ABAP-Sprachversion
zur Einstellung der ABAP-Sprachversion
  • Festpunktarithmetik
für die Berücksichtigung des Dezimaltrennzeichens in Operationen mit gepackten Zahlen
  • Logische Datenbank
zur Verknüpfung eines ausführbaren Programms mit einer logischen Datenbank

Die Programmeigenschaften werden beim Anlegen eines Programms im entsprechenden Werkzeug (Class Builder, Function Builder, ABAP Editor) festgelegt und können auch nachträglich noch geändert werden.

Standardeinstellungen für Programmattribute übernehmen

Setzen Sie die Programmattribute für neue Programme wie folgt:

  • ABAP-Sprachversion ist oder höher
  • Festpunktarithmetik eingeschaltet
  • keine Zuordnung zu einer logischen Datenbank

Diese Einstellungen entsprechen den Vorschlagswerten beim Anlegen eines neuen Programms, die daher ohne Änderungen übernommen werden sollen. Einmal gesetzte Programmattribute sollten nachträglich nicht mehr abgeändert werden.

Verschiedene Verhaltensweisen oder Prüfschärfen werden nur noch aus Kompatibilitätsgründen angeboten, um bestehende Programme weiterhin kompilier- und ausführbar zu halten. Neue Programme sollen in keinem Fall von veralteten Einstellungen Gebrauch machen.

  • Beim Anlegen eines neuen Programms ist das Attribut ABAP-Sprachversion als Standardeinstellung auf gesetzt. Dieses Attribut darf niemals auf zurückgesetzt werden. Da im aktuellen Release nur noch Unicode-Systeme unterstützt werden, sind solche Programme nicht mehr verwendbar. Höhere ABAP-Sprachversionen umfassen die Unicode-Prüfungen und sind daher möglich.
  • Beim Anlegen eines neuen Programms ist das Attribut Festpunktarithmetik bereits als Standardeinstellung gesetzt. Dieses Attribut darf niemals zurückgesetzt werden. Bei ausgeschalteter Festpunktarithmetik wird die Stellung des Dezimaltrennzeichens von gepackten Zahlen (Typ p) nur bei der Ausgabe auf dem klassischen Dynpro bei Zuweisungen an Felder der Typen c und string und bei der Formatierung mittels WRITE TO berücksichtigt, nicht jedoch bei Berechnungen. Ein solches Verhalten wird heute nur in den seltensten Fällen den Erwartungen des Entwicklers entsprechen. Soll mit gepackten Zahlen ohne Nachkommastellen gerechnet werden, ist dies über den Zusatz DECIMALS 0 bei der Deklaration anzugeben.
  • Beim Anlegen eines neuen ausführbaren Programms ist das Attribut Logische Datenbank leer. Durch dieses Attribut werden ausführbare Programme einer logischen Datenbank zugeordnet, wodurch das Selektionsbild und der Programmablauf des Programms mit dem Selektionsbild und dem Ablauf der logischen Datenbank kombiniert werden. Eine logische Datenbank ist ein spezielles Entwicklungsobjekt, das im Logical Database Builder bearbeitet wird und anderen ABAP-Programmen Daten aus den Knoten einer hierarchischen Baumstruktur zur Verfügung stellt. Eine logische Datenbank verfügt über eine hierarchische Struktur, ein in ABAP geschriebenes Datenbankprogramm und ein eigenes Standardselektionsbild. Logische Datenbanken sollten nicht mehr verwendet werden, da sie auf der programmübergreifenden Nutzung globaler Daten, einem impliziten Unterprogrammaufruf und der Reporting-Ereignissteuerung beruhen und damit modernen Konzepten zuwiderlaufen. Der Zugriff auf bestehende logische Datenbanken kann bei Bedarf über den Funktionsbaustein LDB_PROCESS erfolgen, der beispielsweise aus einer Methode heraus aufgerufen werden kann. Neue logische Datenbanken sollen nicht mehr angelegt werden. Stattdessen soll ein entsprechender Service über eine globale Klasse angeboten werden.

Da eine nachträgliche Änderung von Programmeigenschaften potenziell mit Umstellungsaufwand verbunden ist, sollten die richtigen Eigenschaften von Anfang an eingestellt und nicht mehr geändert werden.

Im Folgenden gehen wir davon aus, dass nur noch mit eingeschalteter Festpunktarithmetik und ohne logische Datenbanken gearbeitet wird.

Hinweis

Die strikten Modi der Syntaxprüfung von erfordern ab Release 740, SP05 Programme der ABAP-Sprachversion , in denen die Programmeigenschaft Festpunktarithmetik eingeschaltet ist.

Beispiel

Im folgenden Quelltext wird ein schreibender Teilfeldzugriff über zwei numerische Komponenten einer Struktur hinweg ausgeführt.

METHOD ...
  DATA:
    BEGIN OF struct,
      comp1 TYPE i,
      comp2 TYPE i,
    END OF struct.
  struct+2(4) = 'XXXX'.
ENDMETHOD.

Dies war nur Programmen der obsoleten ABAP-Sprachversion möglich. Dort wird ein implizites Casting des Teilbereichs auf den Typ c stattfindet. Das Ergebnis in den Komponenten ist abhängig von Ausrichtungslücken, der internen Darstellung numerischer Werte (Bytereihenfolge) sowie der verwendeten Codepage und damit extrem plattformabhängig. Ein produktives Programm darf keinesfalls solchen Code enthalten. Es führt in der Regel zu fehlerhaften Daten oder zu schwer nachvollziehbaren Laufzeitfehlern.

Bei einem ABAP-Programm, das in den Programmeigenschaften nach obiger Regel als oder höher definiert ist, führt obiger Code zu einem Syntaxfehler. Unerwünschte Teilfeldzugriffe sind wie andere unerwünschte Zugriffe auf Strukturen oder andere Teile des Arbeitsspeichers verboten. Falls bei der Syntaxprüfung nicht erkennbar, führen solche Zugriffe während der Programmausführung zu einem Laufzeitfehler mit einem aussagekräftigen Kurzdump.






ABAP Short Reference   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 7947 Date: 20240523 Time: 090458     sap01-206 ( 136 ms )