cancel
Showing results for 
Search instead for 
Did you mean: 

[JCO.ServerThread-1] ERROR SERVER-EXCEPTION - [null,null,null,] com.sap.mw

Former Member
0 Kudos

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 won’t 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.

That’s 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?

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

What version of xMII are you on? Also SAP R/3 version?

Former Member
0 Kudos

11.5.3 b66

Plugin Version: Sun Microsystems Inc. 1.5.0_11

0 Kudos

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

Former Member
0 Kudos

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.

0 Kudos

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

Former Member
0 Kudos

I will keep that in mind; however, if you are retrieving only 2,000 records, the bls should not be hanging. Cell phones can download 2,000 records. Is there a problem between the SAP database/server and the xmii/oracle server? Is there a connection issue or configuration?

0 Kudos

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

Former Member
0 Kudos

Are you saying if I run just the JCO block and no tracer that my JCO block should be able to handle thousands of records coming back?

0 Kudos

Yes, provided your machine meets the recommended specs. What is the memory allocated to ServletExec? and What is the Total System Memory?

Sam

Former Member
0 Kudos

I'm looking at Java Runtime Status Panel

MaxMemory 1,598,226

Totalmemory 528,007

FreeMemory 61,587

UsedMemory 468,521 (fluxuates)

Processors 4

ActiveThreads 45

ActiveGroups 1

Where do I find Memory for ServletExec and Total System Memory?

0 Kudos

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

Former Member
0 Kudos

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 @.

Former Member
0 Kudos

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?

0 Kudos

David,

Yes you can, but to do this you have to implement "Change Pointers" in order to trigger the IDoc push to the RFC destination. However if you want help on this you should open up another thread and set this one as answered. Hope this has been helpful.

Sam

Former Member
0 Kudos

It was very helpful. I'll make another thread if I need more information.

Thank you.

Former Member
0 Kudos

Probably you can.

I guess you would need to search for CHANGE POINTERS in the other forums.

Former Member
0 Kudos

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?