My company has Material information in SAP system whose database is hosted on a linux server. I am designing new application that has drawings information and now I want to assign material to drawings. Older applications in company exported material data from SAP and imported into the application. But this means data duplication and maintenance of data in two different places.
Now that we are designing new system where we want to have material information in SAP only, and connect our new applications (being developed in C#, ASP.NET, ADO.NET, LINQ) to SAP database to ready material information. SAP access in our application will be purely READONLY.
How can I connect to the SAP system/database from my application?
EDIT: I am able to directly connect with the SAP database through Oracle's SQL Developer and browse the required tables, which means I can connect to these tables now using C# -> Entity Framework. Is this ok? Remember I will be accessing them in my application with READONLY access.
you can either develop a web service within the SAP system, as mkysoft already explained. The other alternative would be using the SAP .Net Connector, a library from SAP themselves, provided for SAP customers free of charge. It allows you to call RFC enabled function modules like BAPIs or act as an RFC server or RFC client.
If you need the SAP access only in your .Net based application, the SAP NCo is probably the easier solution, as you can just call any remote capable function module without any modification in the SAP system. If you need access to that data from multiple systems, some of them without an equivalent to the SAP .Net connector, a platform independent solution like web services would be the better solution.
Accessing the SAP ERP database directly is technically possible, it is just not recommended. First, there are table types (specifically cluster and pool tables) you can't directly access as database tables in the same way you can access them through ABAP/function modules. You also circumvent the business logic within the application server. If this is an issue for your specific case is difficult to answer. If you only access a couple of material master tables, don't modify anything and don't need to consider existing business logic (or are comfortable with recreating that logic in your application), you could access the database directly without running into any problem.