Lokale Generierung

Unter bestimmten Bedingungen ist es manchmal notwendig, die Generierung auszusetzen.

Innerhalb der Generierungsmethode können 2 Methoden eingesetzt werden:

Die Methode IS_CALL_METHODS_ACTIVE wird vor dem Start der Generierung aufgerufen. Im Standard liefert diese Methode immer "True" zurück.

Bei Bedarf kann diese Methode redefiniert werden, um komplette Generierungsklassen zu deaktivieren.

Die Methode IS_METHOD_ACTIVE wird vor jeden Aufruf einer Public-Methode der Klasse aufgerufen, im Standard liefert diese Methode immer "True" zurück.

Bei Bedarf kann diese Methode redefiniert werden, um bestimmten Generierungsmethoden zu deaktivieren.

Globale Generierung

Nach jeder Aktion ( manuelle Eingabe, BUS-Aufruf, Builder...) wird die globale Generierung aufgerufen um einen konsistenten Zustand zu gewährleisten.

Wenn mehrere Aktionen sequenziell abgearbeitet werden müssen ( z.B ein Programm ruft 3 Mal eine BUS-Methode auf:  BUS→CHANGE dann BUS→CREATE_REL und anschließen BUS→ACTIVITY ), ist es - aus Performance Gründen - kontraproduktiv, die globale Generierung jedes mal laufen zu lassen.

Es reicht eigentlich aus, wenn alleine die letzte Aktion die globale Generierung auslöst. Deswegen verfügen die BUS-Methoden über ein Parameter iv_suppress_globgen. Dies ermöglicht, die globale Generierung komplett auszusetzen.

Die 2 ersten Aktionen könnten mit dem Parameter iv_suppress_globgen = abap_true aufrufen werden.

Dafür wird aber an dem geänderten QPPD-Objekt eine Fehlernachricht automatisch generiert: "Die globale Generierung muss noch aktiviert werden" ( Nachrichtenklasse /SCT/QP  Message 190 ).

Wird bein der dritte Aktion das Parameter iv_suppress_globgen wegelassen, dann wird die globale Generierung anschliessend gestartet und die Fehlermeldung gelöscht.