on 10-19-2007 3:35 PM
When we execute a SAP transaction through xMII, xMII server is brought down.
I looked in the cms.log file and found this:
<b><i><i>2007-10-16 11:07:23,355 [JCO.ServerThread-1] ERROR SERVER-EXCEPTION - [null,null,null,] com.sap.mw.jco.JCO$Exception: (129) JCO_ERROR_SERVER_STARTUP: Server startup failed at Tue Oct 16 11:07:23 EDT 2007.
This is caused by either a) erroneous server settings, b) the backend system has been shutdown, c) network problems. Will try next startup in 64 seconds.</i></i></b>
When I try to log back onto xMII, I see the following:
<b><i>Error Executing Transaction Status (500) Internal Server Error.</i></b>
I created a Business Logic Services transaction within XMII. This BLS extracts data from AFPO Order Item table. A Repeater loops through the RESPONSE output table, and executes a SAP Query to load the data into Oracle tables.
I also have a BLS that executes BAPI_PRODORD_GET_LIST.
When I execute either one of these transactions, the system will fail with the above error when the amount of data being extracted reaches a specific number.
I have simplified the BLS to run a JCO block for BAPI_PRODORD_GET_LIST and a tracer block. When I execute the BLS that executes BAPI_PRODORD_GET_LIST to retrieve 2,000 production orders, the transaction hangs. After 30 minutes, I terminate the transaction so it wont take the xMII server down again. However, had I had a repeater to loop through the output and load into the oracle tables, the server goes down.
Thats my problem. My other question to the problem is this.
What are the limitations to the amount of data that can be extracted from SAP via xMII? Excel spreadsheets can download 40,000 records. You can write a SELECT * in any language and pull down 40,000 records. What is going on?
What version of xMII are you on? Also SAP R/3 version?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
David,
Just an FYI the error message that you have found is not connected to your BLS transaction but rather the default IDoc listener trying to connect to something that doesn't exist. This listener will automatically start each time xMII starts, as a result you can set it up to connect to an RFC destination or delete the default configuration and it will go away.
Now onto your issue; How many Production Orders are being returned from the BAPI? How are you loading each of them into Oracle? How much memory is allocated to ServletExec vs. How much is available on the machine? By default xMII will limit all SQL/Tag queries to their <b>RowCount</b> with a max at 250k rows but this does not apply to the JCo call.
My suggestion here is to look for the other error message that pertains to your transaction which may reside in the ServletExec logs and not xMII, they can be found on your xMII machine here: http://localhost/servletexec/admin/login.jsp
Hope this helps.
Sam
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Now onto your issue; How many Production Orders are being returned from the BAPI?
-
I was getting so frustrated that i created a simple bls that had 2 blocks. A JCO block calling that bapi and a tracer block to display the response.
I was trying to retreive 2,000 rows from that bapi when it just hanged on me.
David,
This is because the XML that is being returned in order to be displayed in the Console Window has to be XML encoded with will 4x or more the size of the response. As a result use the Web -> XMLSaver action block and write the ResponseXML to a file. This will allow you to trace the operation without placing a huge load on it. Hope this helps.
Sam
David,
The problem is not in receiving the 2k records but in the fact that it has to XML encode the entire dataset and insert the encoded value into and XML structure and then XML Decode the dataset to display it properly in the Console Logger. The JCo call itself and the processing of the XML data in BLS is fine, but the presentation aspect of it during design time in the editor is what is causing your bottleneck. Also, on a side note, mobile devices will not process the data as XML but as binary which is much smaller but also less flexible. Hope this helps.
Sam
David,
ServletExec memory allocation can be found here:
C:\ServletExec AS\se-xMII\StartServletExec.bat
For example if the file contains this: -Xmx1024m then there is 1GB of memory allocated to ServletExec and as a result to xMII as well. There is an SAP Note posted on how to adjust this if it is low. You can go into the Windows task manager under the Performance Tab -> Physical Memory -> Total for the total system memory. We usually recommend allocating half of the total system memory to ServletExec up to 1.5GBs. Hope this helps.
Sam
If you are still having trouble after checking what Sam suggested, as an alternative look @ tCode POIT in R/3 for downloading prod orders to the shopfloor from R/3.
I would suggest that IDOCs would be a better approach in this case as POIT allows you to specify the duration for which you need the prod orders (in addition to the other criterias) while the BAPI you are using does not.
This way you can minimize the volume of records coming back from R/3 and to a certain extent you can avoid duplicating records in your shop floor DB.
The good news is that a BAPI exists which can trigger POIT so you do not need to rely on R/3 to decide when the IDOCs are to be send over.
Only thing is in this case you have to maintain a few more configurations both on the xMII and the R/3 side. But I would say its worth taking a look @.
I understand the IDOCS. I have configured those before on our sandbox.
I believe removing all Tracer Action Blocks is helping me alot. I am putting the response in an xml file.
As for POIT. Can I set up a way to send over IDOCs when there is a change/create of a new production order? Or must I create a Z process code and add fields to the message type and Create a Z function module that calls the standard function module that POIT uses to create the IDOCS?
I understand removing the TRACER blocks and putting in that XML Saver block.
Here is the follow up on this. What about loading it into the SQL table using SQL Query?
Right now, I use a REPEATER block to loop through the RESPONSE from the JCO and insert the row into the table. This calls the SQL Query several times. Is there a way to insert multiple rows into the SQL Query within my BLS?
User | Count |
---|---|
10 | |
5 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.