Probleme
Wenn komplexe Vorschriften aufgebaut werden (z.B. mit verschiedenen Unterknoten mit vielen gegenseitige Abhängigkeiten), ist der Ablauf der globalen Generierung schwierig nachzuvollziehen.
Die globale Generierung produziert einen Fehler Nr. 276
“Inkonsistente globale Generierung: max von ??? gen.Knoten erreicht” .
Diese Meldung deutet darauf hin, dass die Generierung nicht stabil läuft: Knoten werden ständig neu generiert und abwechselnde Ergebnisse werden zurückgegeben. Dies führt dazu, dass die Generierung endlos laufen würde. Diese Fehlermeldung erscheint wenn das Abbruchkriterium erreicht wurde. Das Objekt ist dann in einem inkonsistenten Zustand.
Die globale Generierung ist langsam
Wenn Knoten zu oft (und unnötig) generiert werden, kann dies einen negativen Einfluss auf die Performance haben.
Lösungsansatz
Ein Analysewerkzeug kann für Entwickler aktiviert werden :
QPPD-Parameter /SCT/QP_GLOBGENLOG auf 'X' setzen. Damit wird die Protokollierung der globalen Generierung aktiviert.
Es ist nicht empfohlen, diesen Parameter für alle Benutzer zu aktivieren, da die Funktionalität lediglich im Debugger verfügbar ist.
Ein Break-point am Ende der Methode
/SCT/QP_CL_QV_MODEL->DO_GLOBGENLOG_END
ermöglicht es, den Inhalt der Tabelle mt_globgenlog anzusehen.
Diese Tabelle protokolliert :
welche Knoten zur Generierung markiert wurden (EVENT = ‘zu generierende Base:’)
welche Knoten generiert werden (INDEX wird hochgezählt)
welche Objekttypen dazu geführt haben, dass Knoten weiter bzw. erneut zur Generierung markiert werden. Dazu werden change_send und change_level ebenfalls protokolliert
Ein Ausführungszeitstempel sowie den Zeitunterschied (in ms) zum vorherigen Protokolleintrag
Damit kann man herausfinden:
welcher Muster (Generierungsabfolge) sich wiederholt, um eine Endlosschleife zu korrigieren
welche Knoten/Objekttypen zu oft generiert werden, um eventuell das Customizing zu (Senden/Empfangen) anzupassen
welche Knoten besonders lang dauernde Generierungsmethode haben