Archiv des Intrexx Live! Forums

Hier sehen Sie die Foreneinträge aus dem Intrexx Live! Forum. Bis November 2016 war es das Forum für alle Fragen rund um die Software Intrexx von United Planet.
Seit November 2016 gibt es ein neues moderiertes Forum, das Intrexx Community Forum. Nutzen Sie bitte unbedingt dieses für aktuelle Fragen, Antworten und Informationen.

Wichtig: Dieses Forum dient als Archiv. Die Einträge beziehen sich oft auf ältere Versionen von Intrexx und entsprechen nicht mehr den aktuellen technischen Gegebenheiten.
Daher sollten alle Inhalte ausschließlich von Experten genutzt werden. Bei unsachgemäßer Anwendung kann es zu zeitaufwändigen Problemen oder Datenverlust kommen.
Übersicht > Intrexx Connectoren und Add-ons: SAPAdapter > Objektorientierung im Business Adapter

Objektorientierung im Business Adapter

Hallo zusammen,


wir haben eine Anbindung von Intrexx an unser SAP ERP System über den Business Adapter eingerichtet. In der Hauptsache lesen wir Daten aus dem SAP über GENERIC_VIEWS, denen wir eigene Handlerklassen zugeordnet haben. Konkret werden bestimmte Daten aus dem SAP ermittelt, die im ersten Schritt in einer Tabelle angezeigt werden, in denen dann zusätzlich aber noch über mehrere Filterkriterien gefiltert werden kann. INTREXX ruft dann - zumindest in unserer Konfiguration - für jedes Dropdown für die Filterkriterien erneut den Business Adapter und somit die Handlerklasse auf.
Um die Daten ermitteln können werden und Logs zu schreiben etc. werden innerhalb der Handlerklassen Objekte erzeugt, die die Datenermittlung übernehmen und die Daten, wenn einmal ermittelt, in Attributen halten. Die Objekte selbst hinterlege möchte ich als Attribute in den Handlerklassen hinterlegen.


Nun zum Problem bzw. der Frage:


Ich war davon ausgegangen, dass ich in der Handlerklasse meine erzeugten Objekte hinterlegen kann und diese innerhalb einer Session erhalten bleiben. Dies ist momentan allerdings nicht der Fall, bei jedem Aufruf des Adapters sind die Attribute wieder initial, was dazu führt, dass immer wieder neue Objekte erzeugt und alle Daten neu zusammengesucht werden. Dies beeinträchtigt die Performance enorm, vor allem, wenn man 4-6 Filterkriterien definiert hat und insgesamt 5-7 mal der BA gerufen wird.


In der Dokumentation habe ich gelesen, dass es schon möglich sein soll, bereits gelesene Daten in Attributen zu speichern, gelungen ist es mir aber nicht.
Gibt es hier einen Ansatz zu?


Vielen Dank bereits und viele Grüße!

moesman
16.05.2012 08:38 von moesman
Hallo,

nein, leider bleiben die SAP Objektinstanzen über die Session nicht erhalten. Da die Aufrufe aus dem Intrexx über eine RFC-Verbindung geht, welche unweigerlich eine neue Instanz im SAP erzeugt. Das heißt, sowohl die "GET_LIST" wie auch die "GET_DETAIL" Funktionalität bilden eigene Instanzen, die von einander nichts wissen.

Um die Performance beim Selektieren zu verbessern, gibt es mehrere Wege:
Zum Einen kann im SAP der SharedMemory genutzt werden, um frisch selektierte Daten zu speichern und beim erneuten Aufruf, sich draus zu bedienen.
Zum Anderen lassen sich die selektierten Daten kurz vor der Ausgabe ins Intrexx in eine ZTabele schreiben, welche die IX Session beinhaltet. Diese ZTabelle kann beim "Detailsatz aufrufen" oder bei der Neuselektion wieder genutzt und ergänzt werden. Periodische Jobs können die Tabelle wieder leeren, wenn die Sessions veraltet sind.
Die Intrexx Session steht in den Klassenattributen "IX_CONTROL":

IX_SESSION /IATL/POPI_IXAPI_SESSION CHAR 40 0 IXA: Session
IX_USER /IATL/POPI_IXAPI_USER CHAR 30 0 IXA: intrexx Benutzer
IX_LANGUAGE /IATL/POPI_IXAPI_LANGUAGE CHAR 2 0 IXA: aktuelle Sprache des Intrexx Users

Viele Grüße
Carsten Richter
23.05.2012 06:54 von Carsten Richter
Hallo,

nein, leider bleiben die SAP Objektinstanzen über die Session nicht erhalten. Da die Aufrufe aus dem Intrexx über eine RFC-Verbindung geht, welche unweigerlich eine neue Instanz im SAP erzeugt. Das heißt, sowohl die "GET_LIST" wie auch die "GET_DETAIL" Funktionalität bilden eigene Instanzen, die von einander nichts wissen.

Um die Performance beim Selektieren zu verbessern, gibt es mehrere Wege:
Zum Einen kann im SAP der SharedMemory genutzt werden, um frisch selektierte Daten zu speichern und beim erneuten Aufruf, sich draus zu bedienen.
Zum Anderen lassen sich die selektierten Daten kurz vor der Ausgabe ins Intrexx in eine ZTabele schreiben, welche die IX Session beinhaltet. Diese ZTabelle kann beim "Detailsatz aufrufen" oder bei der Neuselektion wieder genutzt und ergänzt werden. Periodische Jobs können die Tabelle wieder leeren, wenn die Sessions veraltet sind.
Die Intrexx Session steht in den Klassenattributen "IX_CONTROL":

IX_SESSION /IATL/POPI_IXAPI_SESSION CHAR 40 0 IXA: Session
IX_USER /IATL/POPI_IXAPI_USER CHAR 30 0 IXA: intrexx Benutzer
IX_LANGUAGE /IATL/POPI_IXAPI_LANGUAGE CHAR 2 0 IXA: aktuelle Sprache des Intrexx Users

Viele Grüße
Carsten Richter
Hallo Herr Richter,

vielen Dank, der Hinweis auf die Shared Objects war sehr gut! Ich habe das direkt so umgesetzt und der Performancegewinn war schon beträchtlich.

Viele Grüße,
moesman
10.07.2012 07:23 von moesman
Zurück | Alles über Intrexx | Impressum | Datenschutzerklärung

Über United Planet
© 2019 United Planet GmbH
Schnewlinstraße 2
79098 Freiburg