‎2005 Oct 26 7:48 AM
Hi Folks,
My client wants me to write a BAPI for retrieving data from SAP. He would like to call this BAPI from an external non-SAP system. The data retrieved by this BAPI is very huge, would vary from 10,000 to 10,00,000 records. Is BAPI suggested for this huge volume of data? What are the limitations of BAPI?
I would want to suggest my client to use flat file method, instead of BAPI. Downloading the data to a flat file from SAP and use the same in his application. But I need to justify my suggestion.
‎2005 Oct 26 8:03 AM
what you are looking for is not a BAPI but a RFC function module.
BAPI is more to do with exposing the functionality of a business object....which does not seem to be the case in your requirement.
you will need to consider the following points...
1) if amount of data is huge...dont run in foreground, rather try and schedule it as a background job
2) if you use files, there can be a limitation on the size of the file that needs to be created...and if this activity has to be done regularly...u need enough storage space.
3) if it is a one time job, try exploring the option of migrating data in small chunks if using files. How about using a data-backup kind of utility?
rgds,
PJ
‎2005 Oct 26 8:07 AM
Hi,
Let me put my question this way.
My client wants a BAPI to retrieve data on a large scale. He would like to call this asynchronously. Please suggest if BAPI is a right method to achieve this.
‎2005 Oct 26 8:18 AM
BAPI is always an RFC call to SAP system which is run in dialog workprocess. So if your BAPI can run within the limitation of dialog workprocess maximum time ( in most of the system 20 mins) there will be no issue. But yes it will occupy one dialog process . So you need to see how long does the BAPI runs and at what frequency . 10000 lines of data doesnot necessarily mean that it will take long runtime if the BAPI itself is highly optimized . Is it a standard BAPI*GET_LIST which you are trying to use .
Cheers.
‎2005 Oct 26 8:21 AM
read thru this link....this should give you an idea as to what BAPIs really are and what they are actually meant for...
http://help.sap.com/saphelp_erp2004/helpdata/en/7e/5e114a4a1611d1894c0000e829fbbd/frameset.htm
if you are comfortable in OOPS, there is a SAP Business Object (store in Business Object Repository) which is an entity and carries some functionality. this functionality is exposed by SAP through BAPIs.
let's get the terminology correct....what you are looking for is a RFC FM and not a BAPI...
rgds,
PJ
‎2005 Oct 26 8:22 AM
Sanjay,
Thanks for your answer. You have answered it considering the load on the SAP application server. Is it feasible to call this BAPI from other system? I mean transfering that huge amount of data from SAP to this system.
‎2005 Oct 26 8:33 AM
Hi!
The limitation is defined by the total memory you need. 10 mio lines of a char4 field is 'just' 40MB, but if your structure has one 1kb per line (like table MARC), you need 10GB RAM - that would be to much.
So calculate the maximum memory requirement. Depending on your system, 500MB can be the maximum (but some installations allow 1GB RAM per session).
If your below - fine BAPI (or RFC-FM) is OK. If your above - you need something else. E.g. file download and reading the data in chunks.
Regards,
Christian
‎2005 Oct 26 8:49 AM
On top of RAM also there is limitation of memory allocated for internal tables which may be an issue if your internal table is huge . So you can call but will depend on which BAPI you are using ( which you have not specified thus far in the thread ) and what are the memory settings of your application server.
For testing you can write a report program which calls this BAPI and fethches those 10,00,000 records .
Run this report online. If you can execute online ( no timeout ) then I guess there should be no issue when you call it as RFC .
Cheers.