Ansicht
Dokumentation

ABENEXPRESSION_GUIDL - EXPRESSION GUIDL

ABENEXPRESSION_GUIDL - EXPRESSION GUIDL

rdisp/max_wprun_time - Maximum work process run time   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Ausdrücke

Ein Ausdruck ist ein Teil einer ABAP-Anweisung, der ein Resultat liefert. Ein Ausdruck besteht aus einem oder mehreren Operanden in Kombination mit Operatoren oder speziellen ABAP-Wörtern. Mögliche Ausdrücke sind aus relationalen Ausdrücken zusammengesetzte logische Ausdrücke und Rechenausdrücke. Letztere sind wiederum in arithmetische Ausdrücke, Bit-Ausdrücke und Zeichenkettenausdrücke unterteilt. Als Operanden von Ausdrücken können Datenobjekte, passende andere Ausdrücke sowie Aufrufe eingebauter Funktionen und funktionaler Methoden verwendet werden. In der Zeichenkettenverarbeitung kommt noch die Verwendung regulärer Ausdrücke für Suchen und Musterabgleiche hinzu.

Die genannten Ausdrücke können sehr vielfältig kombiniert und geschachtelt werden. Für funktionale Methoden sind geschachtelte und verkettete Aufrufe möglich. Die maximale Schachtelungstiefe von Ausdrücken ist durch den ABAP Compiler auf 32 begrenzt.

Komplexität von Ausdrücken einschränken

Setzen Sie Ausdrücke an Operandenpositionen so ein, dass ein Programm lesbar und verständlich bleibt.

Die vielfältigen Möglichkeiten für Ausdrücke machen die Verwendung von Hilfsvariablen an vielen Stellen überflüssig. Die Verwendung von Ausdrücken und funktionalen Aufrufen an Operandenpositionen ist unter folgenden Voraussetzungen sinnvoll:

  • Das Resultat eines Ausdrucks oder einer Berechnung wird nur einmal benötigt. Falls ein Zwischenergebnis mehrere Male benötigt wird, sollte es nur einmal berechnet und in einer Hilfsvariablen gespeichert werden. (Der ABAP Compiler übernimmt diese Aufgabe derzeit nicht implizit.)
  • Der Datentyp des Ergebnisses passt zur Operandenposition oder die Konvertierungsregeln für einen an einer Operandenposition verwendeten Ausdruck oder Aufruf sind für die durchzuführende Aufgabe geeignet. Falls spezielle Typkonvertierungen durchgeführt werden müssen, wie zum Beispiel für Datums- oder Zeitfelder, sind eventuell Hilfsvariablen eines passenden Typs notwendig.

Dabei muss aber immer auch die Lesbarkeit eines Programms im Auge behalten werden. Man sollte nie zu ehrgeizig sein und alles, was nur möglich wäre, in einen einzigen Ausdruck pressen. Falls ein Ausdruck zu komplex wird, sollte er an geeigneten Stellen aufgeteilt und die Zwischenergebnisse in Hilfsvariablen gespeichert werden. Dies gilt insbesondere für die Zeichenkettenverarbeitung mit Zeichenketten-Templates und mit regulären Ausdrücken, die auf der einen Seite sehr mächtig sind, auf der anderen Seite ein Programm aber sehr schnell auch unlesbar machen können. Auch Kommentare können helfen, die Funktionalität eines komplexen Ausdrucks zu erläutern.

Folgender Quelltext zeigt einen arithmetischen Ausdruck in einem relationalen Ausdruck in einer Schleife. Die gleiche Summe muss bei jedem Schleifendurchgang erneut berechnet werden.

LOOP AT itab ASSIGNING wa>.
  IF oref->meth( wa> )  sy-tabix * ( offset + length ).
    ...
  ENDIF.
ENDLOOP.

Folgender Quelltext hat die gleiche Funktionalität wie obiges Beispiel. Die Summe wird aber nur einmal vor der Schleife berechnet.

limit = offset + length.
LOOP AT itab ASSIGNING wa>.
  IF oref->meth( wa> )  sy-tabix * limit.
    ...
  ENDIF.
ENDLOOP.






rdisp/max_wprun_time - Maximum work process run time   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 4101 Date: 20240523 Time: 174223     sap01-206 ( 94 ms )