Show TOC

Synchronisation der Automation QueueLocate this document in the navigation structure

Verwendung

Bei der Kommunikation zwischen dem OO Control Framework und dem Automation Server spielt die Automation Queue eine zentrale Rolle. In ihr werden die Automation-Aufrufe gepuffert und zu speziellen Synchronisationszeitpunkten vom Backend an das Frontend übertragen. Nach Abarbeiten der Automation Queue am Frontend wird dann das Resultat an das Backend zurückgeschickt.

Die Anzahl der Synchronisationszeitpunkte ist entscheidend für die Performance der Anwendung. Informationen dazu bieten Ihnen der Automation Trace und der Performance-Monitor. Beide Werkzeuge werden in Services rund um die Automation Queue beschrieben.

Prozess

Die Synchronisation der Automation Queue wird zu bestimmten Zeitpunkten automatisch vom System durchgeführt:

  • am Ende jedes PBO-Ereignisses:

    Achtung

    Die Synchronisation durch das System erfolgt erst nach dem Feldtransport zum Dynpro. Daher können Ergebnisse aus Methodenaufrufen, die durch die automatische Synchronisation abgearbeitet werden, nicht auf dem Dynpro angezeigt werden.

  • nach dem Verlassen der Behandlermethode für Systemereignisse .

Weiterhin können Sie die Synchronisation der Automation Queue auch manuell durchführen. Dazu steht Ihnen die Methode flush der Klasse CL_GUI_CFW zur Verfügung.

Hinweis

Durch geeignete Programmierung können Sie die letzte explizite Synchronisation durch das System implizit durchführen lassen.

Arbeiten mit gepufferten Operationen zur Performance-Optimierung

Die Performance kann anhand des folgenden einfachen Schemas generell optimiert werden. Hierzu sollten hinsichtlich der Ablauflogik am Backend, also pro PBO- / PAI-Schritt, die Aufrufe an alle vorhandenen Controls zweigeteilt werden:

  • Abrufen von Eigenschaften der Controls

    • Gepufferte Methodenaufrufe zum Abrufen aller benötigten Control- Eigenschaften

    • Synchronisation der Automation Queue

  • Bearbeitung / Berechnungen

  • Setzen von Eigenschaften der Controls

    • Gepufferte Methodenaufrufe zum Setzen von Eigenschaften auf den Controls

    • Synchronisation der Automation Queue

Somit werden nur zwei Synchronisationszeitpunkte für alle Controls zusammen benötigt. Es kann allerdings sein, dass es mehrere Abschnitte "Abrufen von Eigenschaften der Controls" geben muss. Wenn zum Beispiel erst nach dem Erhalt einer bestimmten Information entschieden werden kann, welche weiteren Informationen noch benötigt werden, müssten die Informationen in zwei Schritten abgerufen werden.

Wiederverwenden von Werten in der Queue

Wenn Sie eine Methode aufrufen, die Ergebnisse zurückliefert, können Sie die erhaltenen Werte in einem nachfolgenden Methodenaufruf innerhalb derselben Queue verwenden, ohne die Queue zu synchronisieren . Einzige Voraussetzung dafür ist, dass die Parameter die selbe ABAP-Variable verwenden.

Gepufferte Methodenaufrufe zum Abrufen von Control-Eigenschaften

Beim gepufferten Abrufen von Control-Eigenschaften ist Folgendes zu beachten: Die Adressen der ABAP-Variablen, in welche die abzurufendenWerte geschrieben werden sollen, werden in der Automation Queue vermerkt. Die Wertübergabe an die Variablen erfolgt erst beim Synchronisationszeitpunkt. Bis zu diesem Zeitpunkt müssen die Adressen dieser Variablen gültig sein. Ist eine lokale Variable nicht mehr vorhanden (z.B. lokale Variable einer Formroutine), löst die Synchronisation einen Laufzeitfehler aus. Beachten Sie, dass ein solcher Fehler im Debugger mit der Einstellung Automation Controller: Aufträge immer synchron verarbeiten nicht angezeigt wird..

Der sicherste Weg, mit zurückgelieferten Werten zu arbeiten, ist die Verwendung von Objektattributen, da eine Instanz eines Objekts so lange sichtbar bleibt, wie eine Referenzvariable auf sie verweist.

Hinweis

Sicherheit bringt die Abfrage von Control-Eigenschaften in einer Formroutine, die am Ende und bei jedem EXIT eine Synchronisation der Automation Queue durchführt.

Beim Auswerten von Ereignissen macht es Sinn, die Eigenschaften des auslösenden Controls im Ereignisbehandler abzurufen und die Automation Queue danach zu synchronisieren.

Hinweis

(Pseudo-Syntax): Der selektierte Knoten eines Tree Controls und der selektierte Text eines TextEdit Controls sollen gelesen werden:

FORM GET_CONTROL_PROPERTIES.
DATA: tree_selected_node, combobox_selected_node.
CALL METHOD tree->GET_SELECTED_NODE
IMPORTING
NODE_KEY = tree_selected_node
        <Error handling>
CALL METHOD textedit-> GET_SELECTION_POS
IMPORTING
FROM_LINE = from_line
        FROM_POS = from_pos
        TO_LINE = to_line
        TO_POS = to_pos.
<Error handling> 
CALL METHOD CL_GUI_CFW=>FLUSH
<Error handling>
ENDFORM.