訪問數據我一直在嘗試使用生成的Android代碼從本地Android應用程序中部署MBO。如何從SAP創建的MBO使用SUP
的步驟,隨後是如下:
MBO使用SAP BAPI(BAPI_FLIGHT_GETLIST)創建
部署入未接線服務器
生成的代碼
將代碼複製到Android項目
使用所生成的代碼,以使用以下步驟
ⅰ)設置應用程序的詳細信息
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();
任何人都可以讓我知道,如果用代碼/配置問題,我需要解決訪問數據的任何問題。