og:locale:alternate: de-DE
og:type: article
og:article:author: Sebastian Holzschuh
og:image:type: image/jpeg
og:image:width: 1170
og:image:height: 613
og:email: info@allvisual.ch
og:site_name: https://www.xmii.de

Oft muss bei der Ausführung von SAP MII Funktionalität darauf geachtet werden, dass einzelne Applets geladen wurden, bevor die eigentliche Funktionalität beginnen kann, da Objektzugriffe aus JS heraus sonst nicht funktionieren. Um einen reibungslosen Ablauf gewährleisten zu können, muss man die notwendigen Applets registrieren. Erst, wenn alle Applets registriert sind, wird die Funktionalität ausgeführt.

Benötigte Initialisierungsvariablen

Zur Realisierung der Registrationslogik werden lediglich zwei Variablen benötigt. Applets gibt die Anzahl der zu registrierenden Applets an. Die Variable StartFunction beinhaltet die aufzurufende JavaScript Funktion, die nach der erfolgreichen Registration aller Applets ausgeführt werden soll.
		var Applets = 0;
		var StartFunction = '';
	


Die Registrations Initialisierung

Die Variable "FunctionName" setzt die auszuführende Funktion nach dem Erreichen der gewünschten Anzahl registrierter Applets. "AppletCount" setzt die Anzahl der erwarteten Applets zur Registrierung.
		function RegisterSettings( FunctionName, AppletCount ) {
			StartFunction = FunctionName;
			Applets = AppletCount;
		}
	


Registrationsaufruf

SAP MII Applets, unter Benutzung des "CreationEvent" können sich mit der Funktion "RegisterApplet" somit Registrieren.
		function RegisterApplet() {
			AppletIdentifier.Dec();
		}
	


Die eigentliche Logik

Für die tatsächliche Logik werden insgesamt drei kleine JavaScript Funktionen benötigt. Die Funktion Dec reduziert die Anzahl der insgesamt zu initialisierenden Applets jeweils um eins, sobald das SAP MII Applett die Funktion auslöst. Die Check Funktion prüft ob alle Applets initialisiert wurden. Ist die Anzahl der zu initialisierenden Applets bei 0 angekommen, löst die Funktion Finish die Callback Logik aus.
		var AppletIdentifier = {

			Dec : function() {
				Applets = Number( Applets ) - 1;
				this.Check();
			},

			Check : function() {
				if( Applets == 0 ) this.Finish();
			},

			Finish : function() {
				setTimeout( StartFunction + '()', 0 );
			}

		}
	


Beispiel

		<body onload="RegisterSettings( jDoSth, 2 );
		 ...
		 <applet id="applet1 ...
			 <param name="CreationEvent" value="RegisterApplet" />
		 ...
		 <applet id="applet2 ...
			 <param name="CreationEvent" value="RegisterApplet" />
		...
	

Im Beispiel wird die Funktion jDoSth ausgeführt, nachdem sich beide Applets registriert haben. Damit ist sichergestellt, dass für die in SAP MII implementierte JS Logik alle Applet-Funktionen zur Verfügung stehen.