Odata-Creación EntitySet a partir de un BOR



Creación de EntitySet a partir de un BOR.


1 – En este ejemplo localizaremos una BAPI del módulo de PM para listar las ordenes de mantenimiento. Ejecutamos la transacción BAPI y navegamos hasta el módulo localizando la bapi y nos copiamos el Object Name.


2 – Ejecutamos la transacción SEGW y en el Proyecto->Data Model pulsamos el botón derecho, import -> RFC/BOR Interface.




3 – Ahora comienza el wizard de 3 pantallas donde comenzaremos pegando el nombre del objeto copiado en el paso 1 en el apartado Data Source Attributes/ Name, pulsamos la ayuda de búsqueda para localizar la BAPI dentro del BOR.



En la segunda pantalla seleccionaré solamente la tabla resultado ya que lo único que quiero realizar es una llamada a la bapi que me devuelva todos los datos con un filtro hardcodeado en el getEntitySet.


En la siguiente pantalla se marcará la primary key que queremos y pulsaremos finish.

Devuelve mensaje de todo correcto y ha generado un Entity type y un par de Complex type.


Los siguientes pasos se detallan de manera muy simple:
·         Crearse el entitySet a mano pulsando botón derecho sobre  indicando un nombre y el Entity type creado
·         Generar los artifactos  copiar el nombre del servicio
·         Registrar dicho servicio en la transacción /IWFND/MAINT_SERVICE pulsando el botón "Add Service" eligiendo el alias y introduciendo el nombre del servicio en Technical Service Name, luego enter se abre pantalla, se rellena paquete y ok.

5 – Redefino el método Get_EntitySet (ejemplo chorra) para que me traiga todo desde una fecha fijada (Esto se puede dinamizar utilizando el IT_FILTER_SELECT_OPTIONS pero en este caso lo ponemos así de momento para realizar la llamada y ver que devuelve los datos para ver si tenemos que modificar la definición de alguna property.
method ORDERLISTSET_GET_ENTITYSET.

    
DATARANGO TYPE TABLE OF BAPI_ALM_ORDER_LISTHEAD_RANGES,
          lv_l_rango 
like line of RANGO,
         MENSAJE 
TYPE TABLE OF BAPIRET2.

    lv_l_rango
-FIELD_NAME 'SHOW_DOCS_WITH_FROM_DATE'.
    lv_l_rango
-OPTION 'I'.
    lv_l_rango
-SIGN 'GT'.
    lv_l_rango
-LOW_VALUE '20171201'.

    
APPEND lv_l_rango TO RANGO.

    
CALL FUNCTION 'BAPI_ALM_ORDERHEAD_GET_LIST'
*     EXPORTING
*       DISPLAY_PARAMETERS       =
*     IMPORTING
*       NAVIGATION_DATA          =
      
TABLES
        IT_RANGES                
RANGO
        ET_RESULT                
ET_ENTITYSET
*       ET_TEMPLATE              =
        
RETURN                   MENSAJE
              
.



  
endmethod.

Si al probar el getentityset nos sale el siguiente error lo más seguro es que tengas que realizar algún tratamiento con campos fechas o campos hora. Para saber cuál es el campo en cuestión ir a la transacción /IWFND/ERROR_LOG.

<?xml version="1.0" encoding="UTF-8"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><code>005056A509B11ED1B9BF9F46AA8E82ED</code><message xml:lang="en">In the context of Data Services an unknown internal server error occured</message></error>









Comentarios

Entradas populares de este blog

Creación de Schema Base de Datos HANA + Tablas en el HCP Trial

Creación de oData utilizando el HANA del HCP Trial + Consumirlo en el WebID