Соединение 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.

Другие вопросы по тегам