cancel
Showing results forย 
Search instead forย 
Did you mean:ย 

Calling SAP BAPI "BAPI_FLIGHT_GETLIST" from native Android application

Former Member
0 Kudos

Hello experts,

I try to develop a simple native Android application that calls the SAP BAPI "BAPI_FLIGHT_GETLIST". I created the MBO and generated the Java Object API code. I tried the SUP tutorial (http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc01734.0213/doc/html/title...) and it was successfull. Afterwards I tried to simplify the code and adapt it to call my BAPI_FLIGHT_GETLIST MBO. However, it does not work for some reason. I debugged it several times but do not find the reason ๐Ÿ˜ž

Do you have an idea whats wrong? A tutorial or working sample native Android applications that calls SAP BAPIs would also be very helpful. I saw already this discussion thread (http://scn.sap.com/thread/3195793). This did also not work ๐Ÿ˜ž

My Generic List is always empty ๐Ÿ˜ž

Here is my code:

------------------------------

package com.example.testandroid;

import android.app.Activity;

import android.app.ProgressDialog;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

import com.sybase.collections.GenericList;

import com.sybase.mobile.Application;

import com.sybase.mobile.ConnectionProperties;

import com.sybase.mobile.RegistrationStatus;

import com.sybase.persistence.ConnectionProfile;

import com.sybase.persistence.LoginCredentials;

import com.sybase.persistence.Query;

import com.sybase.persistence.QueryResultSet;

import com.sybase.persistence.SynchronizationGroup;

import com.sybase.persistence.SynchronizeException;

import de.tum.sup.android.mbo.SAPFlights;

import de.tum.sup.android.mbo.SAPFlightsMBODB;

public class MainActivity extends Activity {

    private static String username = "supAdmin";

    private static String password = "secret";

    private static String host = "my sup server address";

    private static int port = 5001;

    private static int sync_port = 2480;

    private static int timeout = 60;

    boolean initializationDone = false;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        initializeApplication();

    }

    private void initializeApplication() {

        Application app = Application.getInstance();

        app.setApplicationIdentifier("SAPFlightsMBO");

        app.setApplicationContext(MainActivity.this);

        Thread dataThread = new Thread(new DataThread());

        dataThread.start();

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

        Log.d("Flight Log", "Size " + flights.size());

    }

    public class DataThread implements Runnable {

        public void run() {

            try {

                Application app = Application.getInstance();

                SAPFlightsMBODB.setApplication(app);

                ConnectionProperties connProps = app.getConnectionProperties();

                LoginCredentials loginCredentials = new LoginCredentials(

                        username, password);

                connProps.setLoginCredentials(loginCredentials);

                connProps.setServerName(host);

                connProps.setPortNumber(port);

                if (app.getRegistrationStatus() != RegistrationStatus.REGISTERED) {

                    app.registerApplication(timeout);

                } else

                {

                    app.startConnection(timeout);

                }

                ConnectionProfile cp = SAPFlightsMBODB.getSynchronizationProfile();

                cp.setServerName(host);

                cp.setPortNumber(sync_port);

                cp.setNetworkProtocol("http");

                cp.setAsyncReplay(true);

                cp.setDomainName("default");

                cp.save();

                if (!SAPFlightsMBODB.isSynchronized("default")) {

                    SAPFlightsMBODB.synchronize();                   

                }

            } catch (Exception e) {

                Log.d("Flight Log", e.toString());

            } finally {

                initializationDone = true;

            }

        }

    }

}

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

I am facing the same problem ... have you fixed yours ?

Former Member
0 Kudos

Log Cat shows a message: fsync failed: EBADF (Bad file number). Maybe that is the reason for my issue ...