2012-06-21 34 views
1

訪問數據我一直在嘗試使用生成的Android代碼從本地Android應用程序中部署MBO。如何從SAP創建的MBO使用SUP

的步驟,隨後是如下:

  1. MBO使用SAP BAPI(BAPI_FLIGHT_GETLIST)創建

  2. 部署入未接線服務器

  3. 生成的代碼

  4. 將代碼複製到Android項目

  5. 使用所生成的代碼,以使用以下步驟

    ⅰ)設置應用程序的詳細信息

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

    ⅱ)設置的認證證書

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

    ⅲ)寄存器連接

    從MBO訪問數據
    if (app.getRegistrationStatus() != RegistrationStatus.REGISTERED) 
    
        { 
    
         app.registerApplication(TIMEOUT); 
    
        } 
    
        else 
    
        { 
    
         app.startConnection(TIMEOUT); 
    
        } 
    

    ⅳ)設置同步參數

    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()); 
    

我可以看到在objectSyncStatus(狀態MySyncStatusListener的)方法。

最初它試圖上傳數據,因爲第一次運行時沒有本地數據,它會發送一些空值,然後等待服務器的確認。我獲得了很長時間的APPLICATION_SYNC_RECEIVING_UPLOAD_ACK狀態,並且從來沒有從服務器得到確認,因此數據同步進入死鎖。

在平均時間我試圖檢查服務器日誌和它表明:

2012-06-21 02:03:26.135 CONSOLE MMS池-1-螺紋-18 - /註冊/ RegistrationServlet [COM。 sybase.sup.server.Console] 6146

2012-06-21 02:03:25.491 CONSOLE MMS pool-1-thread-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(); 

任何人都可以讓我知道,如果用代碼/配置問題,我需要解決訪問數據的任何問題。

回答