Ich habe mal versucht ein schon lang bestehendes Script mit welchem ich Daten von Kunden auslese mit der neuen Open Call Schnittstelle zu realisieren. Es hat gezeigt, dass nebst weniger Codingzeilen durch aus ein Perfomancegewinn erzielt werden konnte:
Alte Version
Set Text[IDRANGE] "" Set Text[Adressdaten] "" Set Text[Kundenliste] "" Set V[IDRANGE] "" Set V[K_*] "" Set V[U_Kunde_von](1-10) "00000000000&V[18C_Kunde_von]" -alignright Set V[U_Kunde_bis](1-10) "00000000000&V[18C_Kunde_bis]" -alignright // Setzen der Werte für IDRANGE Set V[IDRANGE](BAPICUSTOMER_IDRANGE-SIGN) "I" Set V[IDRANGE](BAPICUSTOMER_IDRANGE-OPTION) "BT" Set V[IDRANGE](BAPICUSTOMER_IDRANGE-LOW) "&V[U_Kunde_von]" Set V[IDRANGE](BAPICUSTOMER_IDRANGE-HIGH) "&V[U_Kunde_bis]" CopyText toText="IDRANGE" fromString="IDRANGE" // Lesen der Kundendaten anhand von BAPI call "BAPI_CUSTOMER_GETLIST" In.MAXROWS="9999" Table.IDRANGE="IDRANGE" Table.ADDRESSDATA="Adressdaten" // Abfüllen der Werte in einzelne Variablen Set V[i] 1 Set V[K_*] "" Label Abfüllen_Kunden CopyText fromText="Adressdaten" toString="String" Line="&[i]" if Q[ok] Set V[K_CUSTOMER_&[i]] "&V[String](BAPICUSTOMER_ADDRESSDATA-CUSTOMER)" Set V[K_CUSTOMER_&[i]] "&V[K_CUSTOMER_&[i]]" + 0 // führende Nullen entfernen Set V[K_NAME_&[i]] "&V[String](BAPICUSTOMER_ADDRESSDATA-NAME)" Set V[K_COUNTRY_&[i]] "&V[String](BAPICUSTOMER_ADDRESSDATA-COUNTRY)" Set V[K_PLZ_&[i]] "&V[String](BAPICUSTOMER_ADDRESSDATA-POSTL_COD1)" Set V[K_CITY_&[i]] "&V[String](BAPICUSTOMER_ADDRESSDATA-CITY)" Set V[K_STREET_&[i]] "&V[String](BAPICUSTOMER_ADDRESSDATA-STREET)" Set V[K_TEL_&[i]] "&V[String](BAPICUSTOMER_ADDRESSDATA-TEL1_NUMBR)" set V[i] &[i] + 1 goto Abfüllen_Kunden endif
Da erfolgten 3 RFC Zugriffe mit einer totalen Laufzeit von 0.46 sec. Es benötigt 29 Codingzeilen.
Neue Version (Open Call Inerface)
createstructure V[idrangerow] sign option low high createTable V[idrange] Include=V[idrangerow] Set V[idrange.sign.1] "I" Set V[idrange.option.1] "BT" Set V[idrange.low.1] "&V[18C_Kunde_von]" Set V[idrange.high.1] "&V[18C_Kunde_bis]" Set V[maxrows] 9999 CreateStructure V[Adressdata] CUSTOMER NAME COUNTRY POSTL_COD1 CITY STREET TEL1_NUMBR CreateTable V[K] Include=V[Adressdata] call "BAPI_CUSTOMER_GETLIST" export.maxrows="maxrows" export.idrange="idrange" import.ADDRESSDATA="K"
Da war nur noch ein RFC Zugriff nötig mit einer Laufzeit von 0.13 sec . Es benötigt nur noch 10 Codingzeilen.
Selber ausprobieren / Voraussetzungen / Dokumentation
Versuchen Sie es doch gleich selber mal aus?
Voraussetzung ist, dass sie den von der Synactive zur Verfügung gestellten Transportauftrag in Ihr System importiert haben.
Der Transportauftrag ist mit folgendem Link downloadbar: http://synactive.com/download/sap.trans.guixtutilities.zip
Im weiteren ist die Umfangreiche Doku dazu zu empfehlen. Wie in gewohnter Weise beeinhaltet die Doku auch sehr viele hilfreiche Beispiele.
Doku ist nur in Englisch vorhanden.