Schlüsselbefehl Define (Makros)

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Ein sehr alter Schlüsselbefehl ist DEFINE, bzw. END-OF-DEFINITION.

Der Befehl ist heute nicht mehr üblich, aber man findet es gelegentlich noch in alten Programmen oder es gibt vereinzelt Entwickler, die gern mit diesen Makros arbeiten.


Vorsicht: Verwendung von Makros

  • Makros können dem Entwickler Schreibarbeit sparen, aber Makros sind vielen SAP-Entwicklern nicht oder kaum bekannt, verwirren sie und die Syntax ist ungewohnt.
  • Makros können nicht debuggt werden. Man kommt beim Debuggen nur bis zum Aufruf des Makros, aber nicht in die eigentliche Ersetzung der Parameter im Makro.
  • Empfehlung: Man solte eher auf die Verwendung von Makros verzichten. Meist überwiegen die Nachteile der Verständlichkeit und mangelnde Debugbarkeit den Vorteilen eines Makros. SAP rät auch in modernen Programmen von der Verwendung von Makros ab.

Makros in SE80

  • In der Transaktion SE80 gibt es innerhalb von einem Report einen eigenen Ordner "Makros". In diesem Projektbeispiel gibt es 5 Makros zum Programm SAPMZQMSDM (Modulpool).
  • Im Makro sollte man vor allem auf die Platzhalter/Parameter achten, wie hier "&1" und "&2", die zur Laufzeit im Makro durch die Aufrufparameter ersetzt werden.

Makro2.JPG


Auf das Makro kann man auch einen Verwendungsnachweis machen.

Makro5.JPG


Hier sieht man den mehrfachen Aufruf vom Makro SET_WERKS mit der Übergabe von jeweils 2 Parametern.

Makro4.JPG

Beispiel Typgruppe ICON

In der Typgruppe ICON ist ein Include >ICON< eingebunden.

Define1.jpg

In einer Befehlszeile stehen nun lediglich 3 Werte hintereinander, z. B.

ICON_2   ICON_DUMMY   '@00@'.    "PlaceholderIcon


Die Bedeutung dieser Syntax wird erst ersichtlich, wenn man das Include >ICON< öffnet.

Define2.jpg

Es wird hier u. a. ein Makro mit dem Namen ICON_2 erzeugt.

DEFINE ICON_2.
  ...
END-OF-DEFINITION.

Im Makro wird eine Konstante angelegt mit dem Namen des ersten Platzhalters, typisiert auf das Datenelement ICON_L2 und hat den Wert des zweiten Platzhalters.

CONSTANTS: &1 TYPE ICON_L2 VALUE  &2.


Also

*NameMakro  1.Platzhalter  2.Platzhalter  Kommentar
ICON_2      ICON_DUMMY     '@00@'.        "PlaceholderIcon


Wird nun im Report die Typgruppe ICON eingebunden, dann können die Ikonen mit den Konstantennamen ICON_SONDERZEICHEN, ICON_DUMMY etc. angesprochen werden.

Type-Pools: Icon.

...

ikonenwert = icon_sonderzeichen.

Anwendungsbeispiel Makro

  • Im Tricktresor gibt es ein sinnvolles Beispiel für die Anwendung eines Makros.

Tabelle TRMAC

  • In der Tabelle TRMAC sieht man die global definierten Makros, wie z. B. das globale Makro "BREAK", dem der Benutzernamen als Parameter übergeben wird.

Makro6.JPG

  • Auch wenn es einen Warnhinweis gibt, kann die Tabelle TRMAC mit der Tabellenpflege SM30 editiert werden, bzw. um global gültige Makros ergänzt werden.

Web-Links