cancel
Showing results for 
Search instead for 
Did you mean: 

Cosuming web service using consumer proxy - not getting the output

Former Member
0 Kudos

Hello All,

I am not getting the consumer proxy output structue filled though the web service is successfully executed. I did the following steps.

1. Created a webservice form RFC BAPISDORDER_GETDETAILEDLIST

2. Created a consumer proxy for the above created WSDL document.

3. Tested the service by executing the proxy directly by feeding the input in the XML (sales document and partner view). it is working fine

4. Created a program to access the consumer proxy by passing the input(same input as per XML). I am not getting the output in the proxy output structure ( but I can see the RFC is successfully executed and having the right values in the debugging mode).

Is this the issue is due to the date fields (XML cannot consider a blank date )?

Please note: the partner output table parameter in the bapi (output I am looking for ) is not having any date fields.

Please help me to sort out this issue.

Thanks,

Gopi

Accepted Solutions (1)

Accepted Solutions (1)

Former Member

Hi Gopi,

From your description, I assume you used the SE37 transaction's menu option Utilities -> More Utilities -> Create Web Service -> From the Function Module, to expose the BAPI concerned as a Web Service.

If this is the case, then it is possible that you are falling foul of your SAP User ID not having the necessary Remote Function Call authorization to execute the BAPI.

A prerequisite for successfully calling an RFC-enabled Function Module (which is what a BAPI is) is that the User ID used to call the function module must have the required RFC authorization (Authorization Object S_RFC). For example, when calling function module BAPI_CUSTOMER_GET_ROOT, if the User ID lacks the requisite authorization in the target system, the following error message will be received by the Consuming application:

User <User ID> has no RFC authorization for function group V02HBAPI.

Notice, as you can see from the above message, RFC execution authorization is implemented at the Function Group level, not at the Function Module level. In othere words, granting a user the authorization to a function group (authorization object S_RFC) enables the user to execute all RFC-enabled function modules contained within that function group.

I am guessing the BAPI works for you in debug mode because you are not calling the BAPI remotely.

Let me know if this helps.

Best Regards,

Andy.

Former Member
0 Kudos

Hi Andy,

Thanks for your reply.

My user id has authorization to run RFC. I didn't run the BAPI indepently. I called the BAPI through the webservice by calling the consumer proxy in SE38 program. I set a breakpoint in the BAPI and saw that BAPI returning all the required values.

Regards,

Gopi

Answers (2)

Answers (2)

Former Member
0 Kudos

>Tested the service by executing the proxy directly by feeding the input in the XML (sales document and partner view). it is working fine

If you can test proxy successfully then everything is ok with authorization, logical portal etc (I hope you are using correct LP while testing directly and in ABAP program).

Can you investigate if there are some exceptions in Catch block in your code.

Regards,

Gourav

Former Member
0 Kudos

I didn't get any exceptions though. the problem is due to data fields - XML is not able to handle to the blank date fields. I checked with a different FM converted to webservice

Thanks for you reply

former_member183908
Active Contributor
0 Kudos

Hi Gopi,

-->Did you create the Logical Port in SOAMANAGER?

-->I think you have SOAMANAGER t-code instead of LPCONFIG(is obsolete for higher releases).

-->Try to create the Logical port and provide the name of the Logical Port in the Program in which you are calling the client proxy.

-->Hope you followed the drag and drop option for creating the program and calling the client proxy.If not,after creating the client proxy save and activate it and create the program(in same package) and drag the client proxy into the program window.

Thanks

Former Member
0 Kudos

Hi Pavan,

I created logical port using SOAMANAGER and used in my se38 program.

TRY.

CREATE OBJECT lo_display (ref to client proxy object)

EXPORTING

logical_port_name = 'ZPORTSD'.

CATCH cx_ai_system_fault .

ENDTRY.

wa_so-vbeln = '0010003899'.

APPEND wa_so TO int_so.

wa_input-sales_documents-item = int_so.

wa_input-ibapi_view-partner = 'X'.

TRY.

CALL METHOD lo_display->bapisdorder_getdetailedlist

EXPORTING

input = wa_input

IMPORTING

output = wa_output .

CATCH cx_ai_system_fault .

CATCH cx_ai_application_fault .

ENDTRY.

Thanks,

Gopi