Соединение Sap и android через jco
Я пытаюсь соединить ANDROID с SAP (RFC). .....Это возможно? Я думаю, что это возможно, потому что это видео показывает связь, но я не знаю, почему jco версия (он использует странные классы) https://www.youtube.com/watch?v=hJSkqS-dxkw
Я работаю на Windows 7 (x86) и ECLIPSE IDE.
Я добавил sapjco.jar в проект библиотеки,
добавил эти файлы в папку SYSTEM32 (sapjcorfc.dll, librfc32.dll)
Это мой код:
пакет com.example.jco32;
импорт android.app.Activity; импорт com.sap.mw.jco.*; импорт android.os.Bundle; импорт android.view.Menu; импорт android.view.MenuItem; импорт android.view.View; import android.view.View.OnClickListener; импорт android.widget.Button;
импорт android.widget.Toast;открытый класс MainActivity расширяет Activity {
JCO.Client client = null;
JCO.Function funcion = null;
JCO.Table t_spfli = null;
IRepository repositorio = null;
IFunctionTemplate ftemplate = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button clickButton = (Button) findViewById(R.id.button1);
clickButton.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ejecutarjco();
}
});
}
public void ejecutarjco () {
System.out.println("i entered to hte method");
try {
client = JCO.createClient("100",
"USER",
"PASS",
"EN",
"/H/111.22.52.198/W/TESTING/H/172.25.10.21",
"02");
//abre la conexion
System.out.print("BEFORE CONNECT()");
client.connect();
Toast.makeText(getApplicationContext(),
"connected", Toast.LENGTH_LONG).show();
System.out.print("connected");
} catch (Exception e) {
System.out.println("Error:" +e.getMessage());
}
}
}
К сожалению, я получил следующую ОШИБКУ:
09-26 02:03:48.934: E/AndroidRuntime(670): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной 09-26 02:03:48.934: E/AndroidRuntime(670): java.lang.ExceptionInInitializerError 09-26 02:03:48.934: E/AndroidRuntime(670): на com.example.jco32.MainActivity.ejecutarjco(MainActivity.java:46) 09-26 02:03:48.934: E/AndroidRuntime(670): на com.example.jco32.MainActivity$1.onClick(MainActivity.java:34) 09-26 02:03:48.934: E/AndroidRuntime(670): на android.view.View.performClick(View.java:3511) 09-26 02:03:48.934: E/AndroidRuntime(670): на android.view.View$PerformClick.run(View.java:14105) 09-26 02:03:48.934: E/AndroidRuntime(670): на android.os.Handler.handleCallback(Handler.java):605) 09-26 02:03:48.934: E/AndroidRuntime(670): на android.os.Handler.dispatchMessage(Handler.java:92) 09-26 02:03:48.934: E/AndroidRuntime(670): в android.os.Looper.loop(Looper.java:137) 09-26 02:03:48.934: E/AndroidRuntime(670): в android.app.ActivityThread.main(ActivityThread.java:4424) 09-26 02:03:48.934: E/AndroidRuntime(670): на java.lang.reflect.Method.invokeNative(собственный метод) 09-26 02:03:48.934: E/AndroidRuntime(670): в java.lang.reflect.Method.invoke(Method.java:511) 09-26 02:03:48.934: E/AndroidRuntime(670): на com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-26 02:03:48.934: E/AndroidRuntime(670): на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 09-26 02:03:48.934: E/AndroidRuntime(670): at dalvik.system.NativeStart.main(собственный метод) 09-26 02:03:48.934: E/AndroidRuntime(670): вызвано: java.lang.ExceptionInInitializerError: JCO.classInitialize(): не удалось загрузить слой промежуточного программного обеспечения 'com.sap.mw.jco.rfc.MiddlewareRFC' 09-26 02:03:48.934: E/AndroidRuntime(670): ноль 09-26 02:03:48.934: E/AndroidRuntime(670): на com.sap.mw.jco.JCO.(JCO.java:776) 09-26 02:03:48.934: E/AndroidRuntime(670): ... еще 13
Я надеюсь на вашу помощь. С уважением
2 ответа
Это не сработает. JCo требует встроенной библиотеки, которая недоступна для платформ Android.
Вы можете просто написать веб-сервис REST/SOAP, который соединяется через JCo с SAP, и затем вам просто нужно отправить стандартный HTTP-запрос на ваш WS, там вы получаете данные из SAP и возвращаете их в Android в виде ответа JSON/XML.