Skip to Content
author's profile photo Former Member
Former Member

OData: Unable to create working get_entity method (RFC nore ABAP)

Hello,

I have created a simple table for testing purposes...

and wan to implement the get_entity method in SEGW for this.

I have a RFC that gets the 2 key's and returns the matching entry.


SELECT SINGLE * FROM ZORDER

INTO ORDERRETURN

WHERE ORDERADVENCO = ORDERADVENCOINPUT and POSITIONADVENCO = POSITIONADVENCOINPUT.


I attempt to call it with /sap/opu/odata/sap/ZORDER_RFC_SRV/OrderSet(Orderadvencoinput='10100', Positionadvencoinput='10') , but get

the error 400: Bad request.

My metadata returns the following:

<?xml version="1.0" encoding="UTF-8"?>
<edmx:Edmx xmlns:sap="http://www.sap.com/Protocols/SAPData" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" Version="1.0">


-<edmx:DataServices m:DataServiceVersion="2.0">


-<Schema xml:lang="en" xmlns="http://schemas.microsoft.com/ado/2008/09/edm" sap:schema-version="1" Namespace="ZORDER_RFC_SRV">


-<EntityType sap:content-version="1" Name="Order">


-<Key>

<PropertyRef Name="Orderadvencoinput"/>

<PropertyRef Name="Positionadvencoinput"/>

</Key>

<Property Name="Orderreturn" Nullable="false" Type="ZORDER_RFC_SRV.Orderreturn"/>

<Property Name="Orderadvencoinput" Nullable="false" Type="Edm.String" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:label="Char" MaxLength="60"/>

<Property Name="Positionadvencoinput" Nullable="false" Type="Edm.String" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:label="Char" MaxLength="60"/>

</EntityType>


-<ComplexType Name="Orderreturn">

<Property Name="Orderadvenco" Nullable="false" Type="Edm.String" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:label="Char" MaxLength="60"/>

<Property Name="Positionadvenco" Nullable="false" Type="Edm.String" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:label="Char" MaxLength="60"/>

<Property Name="Outcome" Nullable="false" Type="Edm.String" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:label="Char" MaxLength="60"/>

<Property Name="Plantitem" Nullable="false" Type="Edm.String" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:label="Char" MaxLength="60"/>

<Property Name="Progress" Nullable="false" Type="Edm.String" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:label="Char" MaxLength="60"/>

<Property Name="Status" Nullable="false" Type="Edm.String" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:label="Char" MaxLength="60"/>

<Property Name="Targetquantity" Nullable="false" Type="Edm.Int32" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:label="INT"/>

<Property Name="Targettime" Nullable="false" Type="Edm.String" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:label="Char" MaxLength="60"/>

<Property Name="Unit" Nullable="false" Type="Edm.String" sap:filterable="false" sap:sortable="false" sap:updatable="false" sap:creatable="false" sap:label="Char" MaxLength="60"/>

</ComplexType>


-<EntityContainer Name="ZORDER_RFC_SRV_Entities" sap:supported-formats="atom json xlsx" m:IsDefaultEntityContainer="true">

<EntitySet sap:content-version="1" Name="OrderSet" sap:updatable="false" sap:creatable="false" sap:pageable="false" sap:deletable="false" EntityType="ZORDER_RFC_SRV.Order"/>

</EntityContainer>

<atom:link xmlns:atom="http://www.w3.org/2005/Atom" href="http://vhcala4hci.wdf.sap.corp:50000/sap/opu/odata/sap/ZORDER_RFC_SRV/$metadata" rel="self"/>

<atom:link xmlns:atom="http://www.w3.org/2005/Atom" href="http://vhcala4hci.wdf.sap.corp:50000/sap/opu/odata/sap/ZORDER_RFC_SRV/$metadata" rel="latest-version"/>

</Schema>

</edmx:DataServices>

</edmx:Edmx>

I have also attempted to code the method myself:


  method ORDERSET_GET_ENTITY.

DATA:  lt_keys TYPE /iwbep/t_mgw_tech_pairs,
        ls_key TYPE /IWBEP/S_MGW_TECH_PAIR,
        lv_ORDERADVENCO   TYPE zorder-ORDERADVENCO,
        lv_POSITIONADVENCO  TYPE zorder-POSITIONADVENCO,
        ls_order TYPE  zorder.

        lt_keys = io_tech_request_context->get_keys( ).

        READ TABLE lt_keys with key name = 'Orderadvenco' into ls_key.
         lv_ORDERADVENCO = ls_key-value.

        READ TABLE lt_keys with key name = 'Positionadvenco' into ls_key.
         lv_POSITIONADVENCO = ls_key-value.

  SELECT SINGLE *
  FROM ZORDER
  INTO ls_order
  WHERE ORDERADVENCO = lv_ORDERADVENCO and POSITIONADVENCO = lv_POSITIONADVENCO.

 IF sy-subrc = 0.

    er_entity-ORDERADVENCO = ls_order-ORDERADVENCO.

  ENDIF.

endmethod.










But in this case the lv_ORDERADVENCO and lv_POSITIONADVENCO dont seem to get any value. This making the sy-subrc = 4, and thus failing.

pastedImage_0.png (17.4 kB)
Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

2 Answers

  • Best Answer
    author's profile photo Former Member
    Former Member
    Posted on Sep 30, 2016 at 01:02 PM

    One thing that also confuses me are the values isnside the Orderadvenco and Positionadvenco....

    I tryed converting them from hex to text, but nothing readable.


    SAP.PNG (84.9 kB)
    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Sep 30, 2016 at 09:22 AM

    Okay the problem was in the call.... The parameter names were wrong. I corrected that but it still does not work.

    My call:

    /sap/opu/odata/SAP/ZORDER_RFC_SRV_01/OrderSet(Orderadvenco='10100',Positionadvenco='10')

    My error:

    <code>/IWBEP/CX_MGW_BUSI_EXCEPTION</code>

    <message>Resource not found for segment 'Order'</message>

    My debugger:

    The values for Orderadvenco and Positionadvenco are those weired 200200200200... values.

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.