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.

http://synactive.com/docu_d/index_docu_d.html?opentip=Tips,%20Tricks%20and%20Samples%20(English);Open%20Call%20Interface;tip_oci_1.html

 

Empfehlen