如何使用SUP从SAP创建的MBO访问数据



我一直在尝试使用生成的Android代码来从本地Android应用程序部署MBO。

接下来的步骤如下:

  1. 使用SAP BAPI(BAPI_FLIGHT_GETLIST(创建的MBO

  2. 将其部署到未部署的服务器中

  3. 生成代码

  4. 将代码复制到安卓项目

  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((方法中看到状态。

最初它试图上传数据,因为第一次运行时没有本地数据,所以它发送一些空值,然后等待来自服务器的ack。我得到APPLICATION_SYNC_RECEIVING_UPLOAD_ACK状态很长一段时间,从未从服务器得到ACK,因此数据同步进入死锁。

与此同时,我试图检查服务器日志,它显示:

2012-06-21 02:03:26.135控制台MMS池-1-thread-18-/registration/RegistrationServlet[com.sybase.server.Consolet]6146

2012-06-21 02:03:25.491控制台MMS池-1-thread-16-/registration/RegistrationServlet[com.sybase.server.Consolet]6038

如果我禁用代码的同步部分,我可以运行以下代码,但结果总是0,这是显而易见的,因为如果没有同步,就没有可用的本地数据。

 vi) Access Database
       if(!FlightSearchDB.databaseExists()){
            FlightSearchDB.createDatabase();
        }
        FlightSearchDB.openConnection();

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

如果我需要解决访问数据的代码/配置问题,有人能告诉我吗。

问题出在配置上。

我遵循了supsite中给出的例子。(http://scn.sap.com/docs/DOC-8803)问题不在于代码,而在于服务器配置和我在模拟器中使用的用户配置文件。

你可以参考我的帖子(http://scn.sap.com/message/13405735#13405735)用于工作代码。

最新更新