cancel
Showing results for 
Search instead for 
Did you mean: 

Errors using the new PI 7.1 WS Adapter

Former Member
0 Kudos

I have create a simple interface in a sandpit environment that reads a file from the PI filesystem maps the message to another message type and calls an ABAP proxy in ECC (on NW 7.0 SP18) via the XI adapter/protocol (async EO).

This interface works fine and inserts a row in a custom table in ECC.

My approach was to then change the receiver communication channel to use the new WS adapter. The output of my testing was to determine the additional complexity/benefit in setting up this type of receiver and eventually explore some of the more advanced features of the WS Adapter in more complex integration scenarios (eg SAML, WS-RM/TUCC).

I have exposed the ABAP proxy in SOAMANAGER and can see the WSDL is published. I am getting errors is the IE pipleline on the PI server in SXI_MONITOR. Here is the error from the Call Adapter step SOAP header...

"System error while calling web service adapter: Error in WSDL access: Error in WSDL access for task ID "000000000000000013"; read the long text"

Can anybody shed any light on this error and where best to start investigating.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

first test it using Altova XML spy/tcp gateway, you will gate the exact msg

Answers (5)

Answers (5)

Former Member
0 Kudos

WSTASKCHECK returned no pending tasks on either PI or ECC. I was confused as to whether this should be run on the PI or ECC server.

Yes I am using an async message therefore not expecting a reponse message from the ECC server.

The QRFC exception is "An exception occurred that was not caught" in SXMS_ASYNC_EXEC. After some abap debugging I see it is being raised and not handled after pipeline processing and attmepting perform the commit work in

CL_XMS_EXEC.SYNC_EXEC.

Further down the stack it looks like it is failing in managing WS Sequences (terminating the sequence).

Does this give you and clues.

kkram
Contributor
0 Kudos

WS sequences can be monitored using SOAMANAGER. You may check the link http://help.sap.com/saphelp_nw70/helpdata/en/9b/dad1ae3908ee44a5caf57e10918be9/frameset.htm to know more on how to monitor and debug sequences in WS-RM.

On another note, have you configured the WS runtime correctly. You may want to run report SRT_ADMIN_CHECK (using SA38) in both PI and ECC to see if the WS runtime has been set up correctly. If you receive some errors, then you should set up the runtime preferably using cilent 000 using report SRT_ADMIN.

Hope this helps

Thanks

KK

Former Member
0 Kudos

Hi Mark,

did you get yor ws adapter working? I am struggling with my ws scenario. In my case, everything looks good in PI, but in the receiver system, the message is stuck in the XI engine, in MONI of receiver the message appears as "released for processing (WS)". You have any clue?

Thanks

Eric

Former Member
0 Kudos

Hi Jayson,

Did you fix your issue? I'm having the same problem.

My message is getting stuck with the status Released for Processing (ws).

Please, let me know how to fix this.

Thanks in advance,

Ricardo.

Former Member
0 Kudos

Jayson, Ricardo,

have you resolved the issue? I'm having the same problem (on the outbound side though, but the solution would be the same I think)

Thanks,

Olian

Former Member
0 Kudos

Hi.

I am now having the same problem - was this problem resolved?

Former Member
0 Kudos

Thanks for your suggestions KK. I jump straight to trying to switch to a Non-SAP target system and entering the WSDL path

/sap/bc/srt/wsdl/bndg_DD579287FDB21BF19EAC005056C00008/wsdl11/allinone/ws_policy/document?sap-client=700

Is this the one I should use i.e the WDSL for the binding.

When I tried this my message is getting stuck at the QRFC level trying to execute SXMS_ASYNC_EXEC. It is raising an exception that is not being handled.

I will try and progess your other suggestions to see if this all comes back to config.

I cannot run WSTASKCHECK with my PI user (requesting access now).

The only scheduled SRT jobs in the receiving system is SAP_SOAP_RUNTIME_MANAGEMENT. There are no pending config jobs to be processed so I assume that the endpoint is ready and configured.

kkram
Contributor
0 Kudos

Mark

The URL for Non-SAP system looks fine. What is the exception you are getting? I tried a synchronous interface and didn't face any issue. Yours looks like asynchronous, so don't know if it has got to do with WS-RM. Let me know the exception.

Regarding your user ID not having access to WSTASKCHECK, is it the same user ID you are using in the receiver agreement? If yes, then that is the problem as well. Please have your user ID allotted with role SAP_BC_WEBSERVICE_PI_CFG_SRV.

Thanks

KK

kkram
Contributor
0 Kudos

Mark

Further to my earlier message, I simulated you scenario in our system and I received the same error. Either we both are missing some config or there is a bug in SAP code.

To test if there is an issue in the config, in the receiver communication channel, I unchecked the target system type to be 'SAP system'. This will enable the field URL access path which is nothing but the WSDL document link (without the host name) from SOA manager. When I did this, the WSDL was resolved correctly and the interface worked correctly.

Give it a shot to see if it works.

KK

kkram
Contributor
0 Kudos

Mark

Go to transaction code WSTASKCHECK in the PI ABAP stack and check if you have some entries displayed. If it does, then check the URL you have against your WSDL. Double click on the WSDL link and you browser should show the WSDL document. If it doesn't then the WSDL was not properly generated and that is the issue.

If the WSDL opens up properly, then use TCODE SM37 and check if job SAP_SRT_CFG_PENDING_TASKS has been scheduled and running. This job will be running under the user that was provided in the receiver agreement in PI. If the job has a status scheduled then provide the user with role SAP_BC_WEBSERVICE_PI_CFG_SRV.

If the jobs in SM37 are running properly then check the user ID that is against WSDL Access user. Check if this user is locked. Also check the password provided in the receiver agreement.

It is suggested in SAP's documentation to configure the provider part completely before setting up the receiver agreements in PI. That is the end points should have been configured in SOA manager before setting up the receiver agreement in PI. When you configure the receiver agreement in PI, if the end points are not configured in the provider system, then PI creates an entry as "Pending configuration" and schedules a job in background with name "SAP_SRT_CFG_PENDING_TASKS". This job will check if an end point has been created in the target system regularly and once done will complete the configuration.

For me this whole setup looks complicated and I am assuming there is a very valid reason why SAP developers made it this complex.

Let me know if this helps.

KK

Former Member
0 Kudos

Hi KK,

I am also having ws adapter problem. in MONI I got error System error while calling Web service adapter: Error when initializing SOAP client application. In WSTASKCHECK, there is one pending task. The WSDL in wstaskcheck is just http://host:port, nothing more. So in the CC, I unchecked the SAP system and provided the URL access path corresponding to the abap backend web servie. Now in wstaskcheck I can see the whole wsdl link in the line of WSDL, double click on it, after providing username/password, the wsdk can be successfully retrieved. So why I still have the pending task? The user name provided in the receiver agreement has SAP_ALL. You also suggest to check SRT_ADMIN_CHECK, basis said it's all configured. Do you have more hints?

Basically

1) why if I check the SAP systme in the CC, I only have http://host:port as WSDL in wstaskcheck?

2) After uncheck SAP System, why still can not call the web service? Alwasy same error System error while calling Web service adapter: Error when initializing SOAP client application

Thanks

Eric

kkram
Contributor
0 Kudos

Mark

In transaction SOAMANAGER, are you able to access the WSDL? You should have a link in the SOAMANAGER screen where you create the end points. Try accessing the WSDL as well as testing the webservice using SOAMANAGER or WSNAVIGATOR. If it doesn't work there, it will lead you to some answers.

KK

Former Member
0 Kudos

I can definately access the WSDL from SOAMANAGER. I tried testing the web service using WSNAVIGATOR but an error indicating dynamic proxys were not supported. I was unsure what that meant.

As far as other tests external to PI I have created a simple WS client in Developer Studio (pulling the Service Interface definition from ESR and using the Web Service wizard to generate the stubs). I will attempt using XML Spy but if anybody has any thoughts in the meantime this would be good.

Code without the generated stubs is (modified here to remove real system references)

-


package Test;

import java.util.Map;

import java.net.MalformedURLException;

import javax.xml.ws.BindingProvider;

import com.namespace.SIEmpIA;

import com.namespace.SIEmpIAService;

import com.namespace.DTEmpIn;

public class InsertZemp {

/**

  • @param args

*/

public static void main(String[] args) {

SIEmpIAService service = null;

try {

service = new SIEmpIAService();

} catch (MalformedURLException e) {

e.printStackTrace();

}

SIEmpIA port = service.getSI_Emp_IA_Port();

System.out.println( service.getWSDLDocumentLocation().toString());

Map m = ((BindingProvider)port).getRequestContext();

m.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://ecchostname:8001/sap/bc/srt/xip/sap/zsi_emp_ia/700/zsi_emp_in/zsi_emp_in?sap-client=700");

m.put(BindingProvider.USERNAME_PROPERTY, "username");

m.put(BindingProvider.PASSWORD_PROPERTY,"password");

DTEmpIn message = new DTEmpIn();

message.setID("4");

message.setName("Test SOAP");

message.setLocation("Here");

message.setProject("PI 71 Test");

message.setEmail("Test_at_Test.com");

message.setOU("ABC");

System.out.println(message.getName());

try {

port.siEmpIA(message);

} catch (Exception e) {

e.printStackTrace();

}

}

}

-


Unfortunately getting a different error so not sure if this is related different (did a bit of ABAP debugging in the ECC system when the WS call is made and I can see the attempt to process the message which fails at trying the "reflect" the call to the Proxy implementation.

javax.xml.ws.soap.SOAPFaultException: CX_SY_REF_IS_INITIAL:Exception CX_SOAP_ROOT occurred (program: CL_SOAP_RUNTIME_ROOT==========CP, include: CL_SOAP_RUNTIME_ROOT==========CM004, line: 110)..An exception with the type CX_SY_REF_IS_INITIAL occurred, but was neither handled locally, nor declared in a RAISING clause.Dereferencing of the NULL reference

at com.sap.engine.services.webservices.espbase.client.bindings.impl.JAXWSUtil.processFault(JAXWSUtil.java:341)

at com.sap.engine.services.webservices.espbase.client.bindings.impl.SOAPTransportBinding.call_SOAP(SOAPTransportBinding.java:985)

at com.sap.engine.services.webservices.espbase.client.bindings.impl.SOAPTransportBinding.callWOLogging(SOAPTransportBinding.java:703)

at com.sap.engine.services.webservices.espbase.client.bindings.impl.SOAPTransportBinding.call(SOAPTransportBinding.java:649)

at com.sap.engine.services.webservices.espbase.client.jaxws.core.WSInvocationHandler.processTransportBindingCall(WSInvocationHandler.java:167)

at com.sap.engine.services.webservices.espbase.client.jaxws.core.WSInvocationHandler.invokeSEISyncMethod(WSInvocationHandler.java:120)

at com.sap.engine.services.webservices.espbase.client.jaxws.core.WSInvocationHandler.invokeSEIMethod(WSInvocationHandler.java:83)

at com.sap.engine.services.webservices.espbase.client.jaxws.core.WSInvocationHandler.invoke(WSInvocationHandler.java:64)

at $Proxy16.siEmpIA(Unknown Source)

at Test.InsertZemp.main(InsertZemp.java:42)