cancel
Showing results for 
Search instead for 
Did you mean: 

Generating ABAP Proxy gives error

peter_wallner2
Active Contributor
0 Kudos

Dear experts,

We are on PI 7.3 and I have to generate an ABAP Proxy in our SAP ERP system. It is needed for ABAP Proxy --> PI --> SOAP receiver. I had posted a question already

I prepared the PI configuration and went into transaction SPROXY in SAP ERP.
I am trying to create the Proxy on the outbound interface but after giving Package name, Request/Task and Prefix I get the following error:


Cannot generate proxy (object <portType name="IM_SHOPRITE_GETNEWORDERS_OUT">

missing in WSDL, see long text)

   

Message no. SPRX084

The Service interface I created from an External Definition (WSDL) and the WSDL for the Service Interface looks like this:


<wsdl:definitions

    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

    xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"

    xmlns:p2="https://b2bqa.shoprite.co.za/b2b/"

    xmlns:p1="http://xxxxx.com/za/partner/shoprite"

    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"

    name="IM_SHOPRITE_GETNEWORDERS_OUT" targetNamespace="http://xxxxx.com/za/partner/shoprite">

    <wsdl:documentation>

        xxxxx ZA: SOAP request for Shoprite webservice to retrieve new Orders

    </wsdl:documentation>

    <wsp:UsingPolicy wsdl:required="true" />

    <wsp:Policy wsu:Id="OP_IM_SHOPRITE_GETNEWORDERS_OUT" />

    <wsdl:types>

        <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="https://b2bqa.shoprite.co.za/b2b/" targetNamespace="https://b2bqa.shoprite.co.za/b2b/">

            <xsd:element name="getNewOrders">

                <xsd:complexType />

            </xsd:element>

            <xsd:element name="getNewOrdersResponse">

                <xsd:complexType />

            </xsd:element>

        </xsd:schema>

    </wsdl:types>

    <wsdl:message name="p2.getNewOrders">

        <wsdl:documentation />

        <wsdl:part xmlns="" name="getNewOrders" type="getNewOrders" />

    </wsdl:message>

    <wsdl:message name="p2.getNewOrdersResponse">

        <wsdl:documentation />

        <wsdl:part xmlns="" name="getNewOrdersResponse" type="getNewOrdersResponse" />

    </wsdl:message>

    <wsdl:portType name="IM_SHOPRITE_GETNEWORDERS_OUT">

        <wsdl:documentation>

            xxxxx ZA: SOAP request for Shoprite webservice to retrieve new Orders

        </wsdl:documentation>

        <wsdl:operation name="IM_SHOPRITE_GETNEWORDERS_OUT">

            <wsdl:documentation />

            <wsp:Policy>

                <wsp:PolicyReference URI="#OP_IM_SHOPRITE_GETNEWORDERS_OUT" />

            </wsp:Policy>

            <wsdl:input message="p1:p2.getNewOrders" />

            <wsdl:output message="p1:p2.getNewOrdersResponse" />

        </wsdl:operation>

    </wsdl:portType>

    <wsdl:binding name="IM_SHOPRITE_GETNEWORDERS_OUTBinding" type="p1:IM_SHOPRITE_GETNEWORDERS_OUT">

        <SOAP-ENV:binding xmlns:SOAP-ENV="http://schemas.xmlsoap.org/wsdl/soap/" style="document" transport="http://schemas.xmlsoap.org/soap/http" />

        <wsdl:operation name="IM_SHOPRITE_GETNEWORDERS_OUT">

            <SOAP-ENV:operation xmlns:SOAP-ENV="http://schemas.xmlsoap.org/wsdl/soap/" soapAction="http://sap.com/xi/WebService/soap1.1" />

            <wsdl:input>

                <SOAP-ENV:body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/wsdl/soap/" use="literal" />

            </wsdl:input>

            <wsdl:output>

                <SOAP-ENV:body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/wsdl/soap/" use="literal" />

            </wsdl:output>

        </wsdl:operation>

    </wsdl:binding>

</wsdl:definitions>

The port type "IM_SHOPRITE_GETNEWORDERS_OUT" is in that WSDL, also the namespace I created the Service Interface in is the correct one.

In a different namespace I tried creating a ABAP Proxy and that worked so my thought is that something is wrong with the WSDL?

Thank you for any ideas on this.

Best regards,

Peter

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Peter,

Usually this means that the WSDL is not completely correct.

A WDSL online validation (i.e. here: Online WSDL Viewer and Validator) returns the following error:

WSDL Parsing Error:

The type reference ':getNewOrdersResponse' could not be resolved. There is no such type declared in the namespace ''.

You can also validate and compare the WSDL with the SAP supported XML schema:

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/2089f29b-b10a-2a10-5297-e258df0c1...

Best Regards

Harald

peter_wallner2
Active Contributor
0 Kudos

Hello Harald,

Thank you. Thanks also for the link to the validator. I never expected that because the WSDL was generated by PI.

Anyways I changed my strategy and composed an XSD file and imported that as an ED. And then in the Service Interface the WSDL got created successfully and correctly.

Now the ABAP Proxy works too. Well, I have to check user, password in the SOAP receiver but that is another chapter.

Best regards,

Peter

Answers (2)

Answers (2)

Harish
Active Contributor
0 Kudos

Hi Peter,

Please check the schema definition of the complex types "getNewOrders" and getNewOrdersResponse. Please check if you are using xsd:any type in the schema definition. this tags are not supported.

regards,

Harish

iaki_vila
Active Contributor
0 Kudos