1

ネイティブのAndroidアプリケーションからデプロイされたMBO用に生成されたAndroidコードを使用しようとしています。

実行する手順は次のとおりです。

  1. SAP BAPIを使用して作成されたMBO(BAPI_FLIGHT_GETLIST)

  2. 有線サーバーにデプロイしました

  3. コードを生成しました

  4. コードをAndroidプロジェクトにコピーしました

  5. 生成されたコードを使用して、次の手順を使用してMBOからデータにアクセスしました

    i)アプリケーションの詳細を設定する

        Application app = Application.getInstance();
    
        app.setApplicationIdentifier("FlightSearch");
    
        app.setApplicationContext(<android context>);
    
        FlightSearchDB.setApplication(app);
    

    ii)認証資格情報を設定する

        ConnectionProperties connProps = app.getConnectionProperties();
    
        LoginCredentials loginCredentials = new LoginCredentials(USERNAME, PASSWORD);
    
    
    
        connProps.setLoginCredentials(loginCredentials);
    
        connProps.setServerName(HOST);
    
        connProps.setPortNumber(PORT);
    

    iii)レジスタ接続

       if (app.getRegistrationStatus() != RegistrationStatus.REGISTERED)
    
        {
    
            app.registerApplication(TIMEOUT);
    
        }
    
        else
    
        {
    
            app.startConnection(TIMEOUT);
    
        }
    

    iv)同期パラメータを設定する

       ConnectionProfile profile = FlightSearchDB.getSynchronizationProfile();
    
        profile.setServerName(HOST);
    
        profile.setPortNumber(2480);
    
        profile.setNetworkProtocol("http,https");
    
        profile.setDomainName("default");
    
        profile.setAsyncReplay(true);
    
        profile.save();
    

    v)同期を開始する

      FlightSearchDB.synchronize(new MySyncStatusListener());
    

MySyncStatusListenerのobjectSyncStatus()メソッドでステータスを確認できます。

最初にデータをアップロードしようとしましたが、最初の実行ではローカルデータがないため、いくつかのnull値を送信し、サーバーからのackを待ちます。APPLICATION_SYNC_RECEIVING_UPLOAD_ACKステータスを長時間取得し、サーバーからACKを取得しないため、データ同期がデッドロックになります。

その間に、サーバーログを確認しようとしましたが、次のように表示されます。

2012-06-21 02:03:26.135CONSOLEMMSプール-1-スレッド-18-/registration/ RegistrationServlet [com.sybase.sup.server.Console] 6146

2012-06-21 02:03:25.491CONSOLEMMSプール-1-スレッド-16-/registration/ RegistrationServlet [com.sybase.sup.server.Console] 6038

コードの同期部分を無効にすると、次のコードを実行できますが、同期なしではローカルデータが利用できないため、結果は常に0になります。

 vi) Access Database

       if(!FlightSearchDB.databaseExists()){

            FlightSearchDB.createDatabase();

        }

        FlightSearchDB.openConnection();



        GenericList<Flight> flights = Flight.findAll();

データにアクセスするために解決する必要のあるコード/構成の問題に問題がある場合は、誰かに知らせてもらえますか?

4

1 に答える 1

0

問題は構成にありました。

私はsupサイトで与えられた例に従いました。( http://scn.sap.com/docs/DOC-8803 ) 問題はコードではなく、エミュレーターで使用していたサーバー構成とユーザー プロファイルにありました。

作業コードについては、私の投稿 ( http://scn.sap.com/message/13405735#13405735 ) を参照してください。

于 2013-02-26T18:53:52.323 に答える