Hi Albert,
We use the "SAP-Java-Connector" to read and write Date from SAP. You can download this software from the SAP-Service-Marketplace (
https://websmp102.sap-ag.de/support) Put the files (sapjco3.jar, sapjco3.pdb, sapjco3.dll, sapjcomanifist.mf) to your Servoy-beens-Folder.
To access Date from SAP you need also a valid SAP-User /pw and the connection-Datas (Systemid, etc.). To read date from SAP you need a SAP-RFC-Function. With SAP-Transaction SE37 you'l find given functions or build own RFC-function's.
My sample connect to sap and read a list from Companys.
Hendrick Kurland
DataBit GmbH
- Code: Select all
* Enthält True wenn Java-Klassen geladen wurden
* @type {Boolean}
* @properties={typeid:35,uuid:"055804CC-6A27-4CC3-A5EB-2A47FB5C9B59",variableType:-4}
*/
var ApiIsLoaded = false ;
/**
* Enthält True wenn das Verbindungsfile erstellt wurde
* @type {Boolean}
* @properties={typeid:35,uuid:"176FD4E7-0F51-435B-A308-2B470D4ECBA4",variableType:-4}
*/
var VerbFileCreated = false ;
/**
* Lädt JAVA und ABAB-Klassen
* @author Kurland
* @SuppressWarnings(undeclared)
* @properties={typeid:24,uuid:"1CDCEE3A-1BC9-4D61-A0E9-2BB229299129"}
*/
function load_api(){
if (ApiIsLoaded == false){
importClass(Packages.java.io.File);
importClass(Packages.java.io.FileOutputStream);
importClass(Packages.java.util.Properties);
importClass(Packages.java.util.concurrent.CountDownLatch);
importClass(Packages.com.sap.conn.jco.AbapException);
importClass(Packages.com.sap.conn.jco.JCoContext);
importClass(Packages.com.sap.conn.jco.JCoDestination);
importClass(Packages.com.sap.conn.jco.JCoDestinationManager);
importClass(Packages.com.sap.conn.jco.JCoException);
importClass(Packages.com.sap.conn.jco.JCoField);
importClass(Packages.com.sap.conn.jco.JCoFunction);
importClass(Packages.com.sap.conn.jco.JCoFunctionTemplate);
importClass(Packages.com.sap.conn.jco.JCoStructure);
importClass(Packages.com.sap.conn.jco.JCoTable);
importClass(Packages.com.sap.conn.jco.ext.DestinationDataProvider);
ApiIsLoaded = true
}
}
/**
* Erstellt ein Verbindungsfile und gibt TRUE zurück wenn erfolgreich
* @author Kurland
* @properties={typeid:24,uuid:"FA77097A-3CFF-40DF-8A14-85ED9151E754"}
*/
function create_verbindungsfile() {
if (VerbFileCreated == true){
return true ; // Verbindungsfile besteht bereits
}
connectProperties = new java.util.Properties;
connectProperties.setProperty(Packages.com.sap.conn.jco.ext.DestinationDataProvider.JCO_ASHOST, lcHostName);
connectProperties.setProperty(Packages.com.sap.conn.jco.ext.DestinationDataProvider.JCO_SYSNR, lcSysNr);
connectProperties.setProperty(Packages.com.sap.conn.jco.ext.DestinationDataProvider.JCO_CLIENT, lcMandant);
connectProperties.setProperty(Packages.com.sap.conn.jco.ext.DestinationDataProvider.JCO_USER, lcUserName);
connectProperties.setProperty(Packages.com.sap.conn.jco.ext.DestinationDataProvider.JCO_PASSWD, lcPasswd);
connectProperties.setProperty(Packages.com.sap.conn.jco.ext.DestinationDataProvider.JCO_LANG, lcSprache);
//connectProperties.setProperty(Packages.com.sap.conn.jco.ext.DestinationDataProvider.JCO_R3NAME, lcSystemId);
var cfg = new java.io.File(lcConnectName + "." + "jcoDestination" );
try {
var fos = new java.io.FileOutputStream(cfg, false);
connectProperties.store(fos, "jcoDestination");
fos.close();
VerbFileCreated = true ;
} catch (e) {
VerbFileCreated = false ;
application.output('Fehler: Verbindungsdatei kann nicht angelegt werden')
}
return VerbFileCreated ;
}
/**
* Baut Verbindung zum SAP auf
* @return {Boolean}
* @properties={typeid:24,uuid:"B17D545F-B4CB-4BEC-BADC-75322E34808D"}
*/
function logon_sap() {
if (loSap != null){
return true ; // Verbindung ist bereits initialisiert
}
//... API laden
load_api() ;
//... Verbindungsfile erzeugen
create_verbindungsfile() ;
var loDM = Packages.com.sap.conn.jco.JCoDestinationManager ;
loSap = Packages.com.sap.conn.jco.JCoDestination ;
loSap = loDM.getDestination(lcConnectName); // throws JCoException) ;
if (loSap == null){
application.output('Login SAP gescheitert')
return false ; // Fehler bei Verbindungsaufbau
}
loSap.getDestinationName()
application.output('*** Login SAP-System: '+loSap.getDestinationName()+' erfolgreich aufgebaut ! ****')
return true ;
}
/**
* Diese Funktion ruft die Buchungskreise ab
* @properties={typeid:24,uuid:"8A901F15-9355-4586-B587-D509F1F395BE"}
*/
function test_sap(){
var llRetval = logon_sap() ;
if (llRetval == false){
return ; // Kein Logon möglich
}
//... Lesen Buchungskreise
var loFunc = loSap.getRepository().getFunction("BAPI_COMPANYCODE_GETLIST");
loSap.getRepository().getRecordMetaData('COMP_NAME')
//application.output(loSap.getRepository().getFunctionInterface('BAPI_COMPANYCODE_GETLIST')) ;
llRetval = loFunc.execute(loSap);
//... Tabelle
var loTable = loFunc.getTableParameterList().getTable('COMPANYCODE_LIST'); //Referenz auf SAP-Tabelle
//... Abfrage Spalten in SAP-Tabelle
application.output('*** Feldnamen SAP-Tabelle ****') ;
var laFields = getSapTableColToArray(loTable) ;
for (var i2 = 0; i2 < laFields.length;i2++ ){
application.output(laFields[i2]);
}
application.output(' ') ;
//... Umwandeln SAP-Tabelle in DataSet
application.output('*** Datensätze in SAP-Tabelle ****') ;
var loDs = getSapTable_to_Ds(loTable,[]);
for (var i = 0 ; i < loDs.getMaxRowIndex(); i++){
application.output(loDs.getValue(i+1,1)+' '+ loDs.getValue(i+1,2)) ;
}
logoff_sap() ;
}
/**
* @properties={typeid:24,uuid:"9400AE24-F86F-4BA7-B231-2F66EF883F2D"}
*/
function logoff_sap(){
application.output('*** Logout SAP-System: '+loSap.getDestinationName()+' ****')
loSap.getRepository().clear()
loSap = null ;
}