Skip to Content
0
Former Member
Sep 29, 2016 at 11:02 AM

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

159 Views

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.

Attachments

pastedImage_0.png (17.4 kB)